[PATCH] D26133: [ELF] Allow relative relocations to absolute symbols in PIC

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 8 15:45:01 PST 2017


On Wed, Mar 8, 2017 at 10:52 AM Cary Coutant <ccoutant at gmail.com> wrote:

> No, symbols in an ET_EXEC or ET_DYN object always have
> already-relocated values. The section index is irrelevant other than
> to indicate that the symbol is not absolute or undefined. That's the
> point of the paragraph I quoted from the end of the symbol table
> chapter from the ELF spec. In gold, I try to find a section that
> belongs to the segment that the symbol is associated with, but setting
> st_shndx to 1 would be just as effective.
>

I think this is an issue in LLD. I started experimenting with the solution
proposed by Peter which is to replace that linker script with:

PROVIDE_HIDDEN(_base = ADDR(.text) - ABSOLUTE(ADDR(.text)));

In LLD, this symbol would be processed as a synthetic symbol with value 0
and .text section, which is correct. The problem is that LLD assumes that
all synthetic symbols are section relative, so when emitting that symbol,
LLD would adjust its address by the address of .text, so the final value is
going to be whatever the .text address is rather than image base.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170308/9b5b7e1d/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4843 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170308/9b5b7e1d/attachment.bin>


More information about the llvm-commits mailing list