[PATCH] PR ld/18720: Properly merge hidden versioned symbol
H.J. Lu
hjl.tools@gmail.com
Mon Feb 1 20:47:00 GMT 2016
More information about the Binutils mailing list
Mon Feb 1 20:47:00 GMT 2016
- Previous message (by thread): [PATCH] PR ld/18720: Properly merge hidden versioned symbol
- Next message (by thread): [PATCH] PR ld/18720: Properly merge hidden versioned symbol
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Feb 1, 2016 at 12:22 PM, Mike Frysinger <vapier@gentoo.org> wrote: > On 01 Aug 2015 07:07, H.J. Lu wrote: >> On Sun, Jul 26, 2015 at 03:15:50PM -0700, H.J. Lu wrote: >> > The non-default versioned symbol can only be merged with the versioned >> > symbol with the same symbol version. _bfd_elf_merge_symbol should >> > check the symbol version before merging the new non-default versioned >> > symbol with the existing symbol. _bfd_elf_link_hash_copy_indirect can't >> > copy any references to the non-default versioned symbol. We need to >> > bind a symbol locally when linking executable if it is locally defined, >> > non-default versioned, not referenced by shared library and not exported. >> > --- >> > bfd/ >> > >> > PR ld/18720 >> > * elf-bfd.h (elf_link_hash_entry): Add nondeflt_version. >> > * elflink.c (_bfd_elf_merge_symbol): Add a parameter to indicate >> > if the new symbol matches the existing one. The new non-default >> > versioned symbol symbol matches the existing symbol if they have >> > the same symbol version. Update the existing symbol only if they >> > match. >> > (_bfd_elf_add_default_symbol): Update call to >> > _bfd_elf_merge_symbol. >> > (elf_link_add_object_symbols): Override a definition only if the >> > new symbol matches the existing one. >> > (_bfd_elf_link_hash_copy_indirect): Don't copy any references to >> > the non-default versioned symbol. >> > (elf_link_output_extsym): Bind a symbol locally when linking >> > executable if it is locally defined, non-default versioned, not >> > referenced by shared library and not exported. >> >> Here is the upated patch which uses the existing "hidden" field in >> elf_link_hash_entry. Any objections, comments? > > this breaks asan. simple test case: > $ echo 'main() { fork(); }' > test.c > $ gcc -fsanitize=address -c test.c > $ gcc -fsanitize=address test.o > ld: /usr/lib/gcc/x86_64-pc-linux-gnu/5.3.0/libasan.so: undefined reference to symbol 'fork@GLIBC_2.2.5' > /lib64/libpthread.so.0: error adding symbols: DSO missing from command line > collect2: error: ld returned 1 exit status > > i'm guessing this will also break any library that links against pthread > but the main app itself doesn't. > -mike Please open a binutils bug. Thanks. -- H.J.
- Previous message (by thread): [PATCH] PR ld/18720: Properly merge hidden versioned symbol
- Next message (by thread): [PATCH] PR ld/18720: Properly merge hidden versioned symbol
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list