Specifications
Copy Relocation
The R_NIOS2_COPY relocation is used to mark variables allocated in the executable that are defined in a
shared library. The variable’s initial value is copied from the shared library to the relocated location.
Jump Slot Relocation
Jump slot relocations are used for the PLT.
For information about the PLT, refer to "Procedure Linkage Table" section.
Related Information
• Procedure Linkage Table on page 7-20
• Procedure Linkage Table on page 7-20
Thread-Local Storage
The Nios II processor uses the Variant I model for thread-local storage.
The end of the thread control block (TCB) is located 0x7000 bytes before the thread pointer. The TCB is
eight bytes long. The first word is the dynamic thread pointer (DTV) pointer and the second word is
reserved. Each module’s dynamic thread pointer is biased by 0x8000 (when retrieved using
__tls_get_addr). The thread library can store additional private information before the TCB.
In the GNU Linux toolchain, the GOT pointer (_gp_got) is always kept in r22, and the thread pointer is
always kept in r23.
In the following examples, any registers can be used, except that the argument to __tls_get_addr is
always passed in r4 and its return value is always returned in r2. Calls to __tls_get_addr must use the
normal position-independent code (PIC) calling convention in PIC code; these sequences are for example
only, and the compiler might generate different sequences. No linker relaxations are defined.
Example 7-4: General Dynamic Model
addi r4, r22, %tls_gd(x) # R_NIOS2_TLS_GD16 x
call __tls_get_addr # R_NIOS2_CALL26 __tls_get_addr
# Address of x in r2
In the general dynamic model, a two-word GOT slot is allocated for x, as shown in "GOT Slot for General
Dynamic Model" example.
Example 7-5: GOT Slot for General Dynamic Model
GOT[n] R_NIOS2_TLS_DTPMOD x
GOT[n+1] R_NIOS2_TLS_DTPREL x
Example 7-6: Local Dynamic Model
addi r4, r22, %tls_ldm(x) # R_NIOS2_TLS_LDM16 x
call __tls_get_addr # R_NIOS2_CALL26 __tls_get_addr
addi r5, r2, %tls_ldo(x) # R_NIOS2_TLS_LDO16 x
# Address of x in r5
7-14
Copy Relocation
NII51016
2015.04.02
Altera Corporation
Application Binary Interface
Send Feedback