How -Alf Updates Dwarf - HP eld Manual

Table of Contents

Advertisement

TNS/E Native Object Files
R_IA_64_REL64MSB implicitly applies to all the non-zero entries in the initialization
and termination routines created by the linker, whose addresses are indicated by fi
in the .tandem_info section, and to each half of each official function descriptor found
in the .fptr section.
Note that, when this type of relocation occurs, the runtime loader and the -alf option of
the linker are only capable of updating the relocation site for rebasing, not for
calculating its contents from scratch. So, in all the situations mentioned above, the
linker must always fill in the correct values at the relocation sites, even if the linker is
not presetting the output loadfile.
R_IA_64_IPLTMSB -- Local Function Descriptor
This only occurs in loadfiles. When the linker creates a local function descriptor in a
loadfile it puts this relocation table entry into the loadfile to tell the runtime loader about
it. It indicates that the local function descriptor needs to be filled in with the address of
the indicated procedure and the GP value for the loadfile that contains it.
R_IA_64_LTOFF22X and R_IA_64_LDXMOV --
Optimizable 22-Bit GP-Relative .got Section Access
This pair of relocation types applies to the same situation as when the compiler or
assembler might use R_IA_64_LTOFF22, as explained above. The difference is that
the use of R_IA_64_LTOFF22X on that instruction, and the use of R_IA_64_LDXMOV
on other related instructions, gives the linker permission to do an optimization.
Specifically, the R_IA_64_LTOFF22X relocation table entry would be on an instruction
with the format of addl, to compute the address of a .got entry by adding a 22-bit offset
to the GP register. The R_IA_64_LDXMOV relocation table entry would be on every
related instruction that used the address set up by the addl in one register to load the
contents of that .got entry into another register.
If the linker doesn't do this optimization then it treats the R_IA_64_LTOFF22X as
synonymous with R_IA_64_LTOFF22, and ignores all the corresponding
R_IA_64_LDXMOV entries.

How -alf Updates DWARF

The .debug_relocs section is only found in DLL's. Its purpose is to provide information
so that the -alf option of the linker can update the places within DWARF that contain
code and data addresses. The -alf option does this when it rebases a DLL. The
.debug_relocs section is not needed in programs, because the -alf option does not
rebase programs. The .debug_relocs section is not needed in import libraries,
because the -alf option does not work on import libraries.
In the section header for the .debug_relocs section, the type is SHT_PROGBITS, the
sh_addralign fi
The .debug_relocs section is an array of 64-bit entries, one for each code or data
address found in other DWARF sections. Within the 64-bit entry, the high-order byte
is 8, and the sh_entsize fi
eld
eld Manual—527255-009
is 8.
eld
A-24
How -alf Updates DWARF
s
eld

Advertisement

Table of Contents
loading

Table of Contents