[llvm-dev] [LLD] Is there any reason to add _GLOBAL_OFFSET_TABLE_ to .dynsym?
Rui Ueyama via llvm-dev
llvm-dev at lists.llvm.org
Tue Feb 9 16:43:15 PST 2016
I think that there's no reason to add that symbol to .dynsym. If it is
causing a problem, we should remove that.
On Mon, Feb 8, 2016 at 6:22 AM, Simon Atanasyan <simon at atanasyan.com> wrote:
> When LLD builds a shared library for x86_64 it puts
> _GLOBAL_OFFSET_TABLE_ to the both .symtab and .dynsym and defines it
> as a GLOBAL symbol. If later this shared library participates in
> executable file linking and GNU BFD linked is used for that, this
> linker shows an error:
>
> /usr/bin/ld: a.out: hidden symbol `_GLOBAL_OFFSET_TABLE_' in
> /usr/lib/x86_64-linux-gnu/crt1.o is referenced by DSO
>
> Gold linker does not show any error, but it is anyway strange that we
> make _GLOBAL_OFFSET_TABLE_ globally visible and add it to dynamic
> symbol table.
>
> Both BFD and Gold linker do not put _GLOBAL_OFFSET_TABLE_ to the
> dynamic symbol table and defines this symbol as follows:
>
> BFD:
> Num: Value Size Type Bind Vis Ndx Name
> 42: 0000000000200990 0 OBJECT LOCAL DEFAULT ABS
> _GLOBAL_OFFSET_TABLE_
>
> Gold:
> Num: Value Size Type Bind Vis Ndx Name
> 19: 0000000000001a18 40 OBJECT LOCAL HIDDEN 19
> _GLOBAL_OFFSET_TABLE_
>
> --
> Simon Atanasyan
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160209/f3f9982f/attachment.html>
More information about the llvm-dev
mailing list