[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/22471] libraries using version scripts can cause undefined refer
From: |
cvs-commit at gcc dot gnu.org |
Subject: |
[Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols |
Date: |
Tue, 28 Nov 2017 12:28:00 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=22471
--- Comment #4 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot
gnu.org> ---
The master branch has been updated by Alan Modra <address@hidden>:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=165f707ac88916aedecc96fa518be8879704d6da
commit 165f707ac88916aedecc96fa518be8879704d6da
Author: Alan Modra <address@hidden>
Date: Mon Nov 27 13:40:43 2017 +1030
PR22471, undefined reference to linker-defined symbols
This patch processes linker script assignment statements before ld
opens DT_NEEDED libraries, in order to define symbols like __bss_start
that might also be defined by a library, falsely triggering an error
about "DSO missing from command line".
The initial value won't be correct when assigning a symbol from dot,
and I make no attempt to handle all expressions. For example, an
assignment like "_start_foo = ADDR (.foo)" isn't valid until sections
are laid out, so won't define _start_foo early. What's here should be
enough for most common scripts, and hopefully won't perturb fragile
scripts.
bfd/
PR 22471
* elflink.c (_bfd_elf_merge_symbol): Allow weak symbols to override
early passes over linker script symbols.
* linker.c (_bfd_generic_link_add_one_symbol): Allow symbols to
override early passes over linker script symbols. Clear ldscript_def
on symbol definitions.
ld/
PR 22471
* ldexp.c (struct definedness_hash_entry): Delete "by_script". Make
"iteration" an 8-bit field, and update mask in all uses.
(definedness_newfunc): Don't init "by_script".
(update_definedness): Test ldscript_def rather than by_script.
(is_sym_value): Likewise.
(fold_name <DEFINED>): Return a result for first phase. Test
ldscript_def.
(fold_name <NAME>): Return a result for first phase.
* ldlang.c (open_input_bfds): Process all assignments, not just
defsym.
(lang_process): Increment lang_statement_iteration before
open_input_bfds.
* testsuite/ld-mips-elf/tlsdyn-o32-1.d: Adjust for larger .dynsym.
* testsuite/ld-mips-elf/tlsdyn-o32-1.got: Likewise.
* testsuite/ld-mips-elf/tlsdyn-o32-2.d: Likewise.
* testsuite/ld-mips-elf/tlsdyn-o32-2.got: Likewise.
* testsuite/ld-mips-elf/tlsdyn-o32-3.d: Likewise.
* testsuite/ld-mips-elf/tlsdyn-o32-3.got: Likewise.
--
You are receiving this mail because:
You are on the CC list for the bug.
- [Bug ld/22471] New: libraries using version scripts can cause undefined reference to symbol '__bss_start', james410 at cowgill dot org.uk, 2017/11/21
- [Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols, hjl.tools at gmail dot com, 2017/11/23
- [Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols, hjl.tools at gmail dot com, 2017/11/23
- [Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols, hjl.tools at gmail dot com, 2017/11/23
- [Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols,
cvs-commit at gcc dot gnu.org <=
- [Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols, cvs-commit at gcc dot gnu.org, 2017/11/29
- [Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols, hjl.tools at gmail dot com, 2017/11/29
- [Bug ld/22471] libraries using version scripts can cause undefined reference to linker-defined symbols, cvs-commit at gcc dot gnu.org, 2017/11/30