Hello,

I am building an ELF image using aarch64-linux-gnu-ld from linaro:

GNU ld (crosstool-NG linaro-1.13.1-4.8-2014.02 - Linaro GCC 2014.02)
2.24.0.20131220

I am linking in the libstc++.a, which contains in particular a GOT
entry for __gthread_active_ptr that is of interest to me, pointing to
__pthread_key_create, used for detecting pthread support for
std::thread,

and while I get the relocations for the GOT itself in a .rela.dyn
section, and a nice pointer to it from the dynamic section (RELA), the
dynamic RELASZ entry contains zero:

Here is the comparison of the Dynamic section (note RELASZ) with the
following .rela.dyn relocations:

loader.elf:     file format elf64-littleaarch64
loader.elf
architecture: aarch64, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x00000000400b0000

Program Header:
    LOAD off    0x0000000000000000 vaddr 0x0000000040090000 paddr
0x0000000040090000 align 2**16
         filesz 0x0000000000407084 memsz 0x00000000004aa504 flags rwx
     TLS off    0x0000000000407080 vaddr 0x0000000040497080 paddr
0x0000000040497080 align 2**3
         filesz 0x0000000000000004 memsz 0x0000000000000580 flags rw-
 DYNAMIC off    0x0000000000001000 vaddr 0x0000000040091000 paddr
0x0000000040091000 align 2**3
         filesz 0x0000000000000120 memsz 0x0000000000000120 flags rw-
EH_FRAME off    0x00000000003ce5fc vaddr 0x000000004045e5fc paddr
0x000000004045e5fc align 2**2
         filesz 0x000000000000bae4 memsz 0x000000000000bae4 flags r--
    NOTE off    0x0000000000000000 vaddr 0x0000000000000000 paddr
0x0000000000000000 align 2**3
         filesz 0x0000000000000000 memsz 0x0000000000000000 flags ---

Dynamic Section:
  NEEDED               dummy-shlib.so
  INIT_ARRAY           0x00000000404841b8
  INIT_ARRAYSZ         0x0000000000000330
  HASH                 0x000000004044bd58
  STRTAB               0x00000000403e3320
  SYMTAB               0x00000000403a4110
  STRSZ                0x0000000000068a33
  SYMENT               0x0000000000000018
  DEBUG                0x0000000000000000
  RELA                 0x00000000404780c0
  RELASZ               0x0000000000000000
  RELAENT              0x0000000000000018
private flags = 0:

...
 10 .rela.dyn     00002058  00000000404780c0  00000000404780c0  003e80c0  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
...
and now the .rela.dyn.relocations from aarch64-linux-gnu-readelf -r
loader.elf :

Relocation section '.rela.dyn' at offset 0x3e80c0 contains 345 entries:
  Offset          Info           Type           Sym. Value    Sym. Name + Addend
0000404832d0  002b00000401 R_AARCH64_GLOB_DA 00000000405339c8
_ZNSt8time_getIwSt19is + 0
0000404832d8  004400000401 R_AARCH64_GLOB_DA 000000004047e450
_ZTISt7codecvtIcc11__m + 0
0000404832e0  004b00000401 R_AARCH64_GLOB_DA 00000000405338c8
_ZGVNSt8numpunctIcE2id + 0
0000404832e8  005800000401 R_AARCH64_GLOB_DA 000000004047c460
_ZTISt8messagesIcE + 0
0000404832f0  006200000401 R_AARCH64_GLOB_DA 000000004047df40
_ZTVSt9strstream + 0
0000404832f8  007200000401 R_AARCH64_GLOB_DA 00000000402870dc
_ZNSt17bad_function_ca + 0
000040483300  008500000401 R_AARCH64_GLOB_DA 0000000040534e58
_ZGVN9__gnu_cxx16bitma + 0
000040483310  00c300000401 R_AARCH64_GLOB_DA 0000000040533a18
_ZNSt6locale2id11_S_re + 0
000040483318  00dd00000401 R_AARCH64_GLOB_DA 000000004047c160
_ZTISt5ctypeIwE + 0
000040483320  00ea00000401 R_AARCH64_GLOB_DA 0000000040534e18
_ZZN9__gnu_cxx9free_li + 0
000040483328  011700000401 R_AARCH64_GLOB_DA 0000000040533968
_ZGVNSt8time_getIwSt19 + 0
000040483330  013500000401 R_AARCH64_GLOB_DA 000000004047cfd8
_ZTISt7num_getIwSt19is + 0
000040483338  017300000401 R_AARCH64_GLOB_DA 000000004021d51c
__pthread_key_create + 0

...

^^...note the __pthread_key_create relocation I am interested in...

I would expect the RELASZ in the dynamic section to be 0x2058 instead of 0.

Any tips to what could be wrong?

Thank you,

Claudio Fontana

_______________________________________________
linaro-toolchain mailing list
linaro-toolchain@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-toolchain

Reply via email to