[llvm-dev] [LLD] Can't create dynamic relocation R_X86_64_64 against local symbol in readonly segment

Martin Richtarsky via llvm-dev llvm-dev at lists.llvm.org
Thu Mar 23 05:23:24 PDT 2017


Hi,

the attached example works with bfd-ld and with gold, but not with lld:

$ cat rodatareloc.s
...
.align 16
    leaq    .JTab(%rip), %r10
    jmp     *(%r10, %rdx, 8)
...
.section .rodata
.JTab:
    .quad .L00, .L01, .L02, .L03, .L04, .L05, .L06, .L07
    .quad .L08, .L09, .L10, .L11, .L12, .L13, .L14, .L15, .L16

$ gcc -o rodatareloc.s.o -c rodatareloc.s
$ lld -o rodatareloc.so -shared rodatareloc.s.o

ld: error: rodatareloc.s.o:(.rodata+0x0): can't create dynamic relocation
R_X86_64_64 against local symbol in readonly segment defined in
rodatareloc.s.o


Changing the section from .rodata to .data fixes it, but I guess this
should be supported also for .rodata. Should I open a bug?

Best regards,
Martin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: lld_rodata_dynamic_relro.tar.gz
Type: application/x-gzip
Size: 807 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170323/2aaf9665/attachment.bin>


More information about the llvm-dev mailing list