SPRAB89A September 2011 – March 2014
Use of the DSBT model is optional under the bare-metal dynamic linking model. Without DSBT, a program has a single DP which points to the data segment base address (first DP-relative segment) of the executable. The executable itself can use near DP-relative addressing to refer to its own data. Data in libraries must be addressed using far addressing modes (either far DP-relative or absolute). This applies both to an executable addressing imported data, and to a library addressing its own data (since the DP belongs to the executable). Without a DSBT, a library cannot have .bss, .neardata, or .rodata sections.
With DSBT enabled, each separately built component can have its own DP-relative segment(s).
Position-independent data via GOT-based addressing is also optional in the bare-metal dynamic linking model. Without GOT-based addressing, references to imported addresses are encoded into the code segment, either as absolute addresses, or, optionally for non-DSBT executables, as offsets from the executable's DP. Such code cannot access separate preprocess copies of libraries' data segments, so although separately linked libraries are supported, shared libraries are not. Code compiled without position independence is likely to require load-time fixups.
The linker shall enforce consistent use of the DSBT and GOT models.