On 11 March 2014 20:51, Claudio Fontana <hw.clau...@gmail.com> wrote:
Hi Claudio, > 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? I can't see any obvious way this could happen from looking at the linker code. Do you have a method for reproducing the problem you could share? Or could you send me the binary? Thanks, -- Will Newton Toolchain Working Group, Linaro _______________________________________________ linaro-toolchain mailing list linaro-toolchain@lists.linaro.org http://lists.linaro.org/mailman/listinfo/linaro-toolchain