HP eld Manual page 265

Table of Contents

Advertisement

TNS/E Native Object Files
Relocation Tables
In both cases, if the IP-relative branch was a 21-bit variety, it might not be possible for
it to reach its destination. In such a case the linker would allocate a branch stub that
was close enough. The branch stub would use a code sequence that enabled it to
reach the target procedure or import stub, and the original instruction would be
updated to reach the branch stub.
R_IA_64_LTOFF_FPTR22 --
22-Bit GP-Relative Address of the .got Section Entry for an Official Function Descriptor.
This applies to the situation when code assigns a value to a procedure pointer. The
compiler or assembler generates code that adds a signed 22-bit offset to the GP
register in order to get the address of an entry in the .got section, which contains the
address of the official function descriptor. The linker would allocate the .got entry and
fill in the 22-bit operand by subtracting the value of the GP register for this loadfile from
the address of that .got entry. This relocation table entry is not present in loadfiles.
The linker would instead generate a relocation table entry of type
R_IA_64_FPTR64MSB to describe the .got entry.
R_IA_64_SEGREL64MSB -- Segment-Relative Address
This indicates a value that is an offset from the start of the same segment of the same
loadfile.
This is the relocation type that is used for the fi
s in the stack unwinding sections of
eld
linkfiles. Actually, the relocation type is not important for this, because the linker will
change the format of these sections.
This (or its 32-bit variation) is also the relocation type that the linker internally uses for
filling in addresses in the DWARF symbol table sections, although they are marked as
R_IA_64_DIRx in linkfiles.
This relocation type does not occur in loadfiles because, by definition, such relocation
sites would never need updating at load time or by the -alf option of the linker.
R_IA_64_SECREL* -- Section-Relative Address
According to the standard, this indicates a value that is an offset from the start of the
same section of the loadfile. The only expected use of this is when one DWARF
section points at another DWARF section.
If someone wants to use SECREL in the future, to point between different code and
data sections, it won't work as specified. It will put in the distance from the start of the
section containing the reference site, rather than the start of the section containing the
target symbol.
R_IA_64_RELx -- Runtime Rebasing Address
In a DLL, this indicates an address that needs to be updated by the amount that this
DLL is rebased in memory at load time, or an address that needs to be updated by the
amount that the segment containing the address is moved by the -alf option of the
linker. There is no target symbol, so the target symbol index is always 0.
eld Manual—527255-009
A-23

Advertisement

Table of Contents
loading

Table of Contents