mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-18 14:53:32 +08:00
Make sure that undefined symbols added to the linker command line via the -u option appear in the output executable, if they have not been resolved.
PR 22319 bfd * elflink.c (elf_link_output_extsym): Keep global undefined symbols if they have been marked as needed. ld * testsuite/ld-elf/pr22310.s: New test source file. * testsuite/ld-elf/pr22310.d: New test driver. * testsuite/ld-mmix/undef-3.d: Update expected output from readelf.
This commit is contained in:
parent
fe4e2a3c92
commit
66cae56016
@ -1,3 +1,9 @@
|
||||
2017-10-23 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 22319
|
||||
* elflink.c (elf_link_output_extsym): Keep global undefined
|
||||
symbols if they have been marked as needed.
|
||||
|
||||
2017-10-23 Maciej W. Rozycki <macro@imgtec.com>
|
||||
|
||||
* elfn32-mips.c (mips_elf_n32_mkobject): New prototype and
|
||||
|
@ -9910,8 +9910,11 @@ elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
|
||||
relocatable output or when needed for --emit-relocs. */
|
||||
else if (input_sec == bfd_und_section_ptr
|
||||
&& h->indx != -2
|
||||
/* PR 22319 Do not strip global undefined symbols marked as being needed. */
|
||||
&& (h->mark != 1 || ELF_ST_BIND (sym.st_info) != STB_GLOBAL)
|
||||
&& !bfd_link_relocatable (flinfo->info))
|
||||
return TRUE;
|
||||
|
||||
/* Also strip others that we couldn't earlier due to dynamic symbol
|
||||
processing. */
|
||||
if (strip)
|
||||
|
@ -1,3 +1,10 @@
|
||||
2017-10-23 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR 22310
|
||||
* testsuite/ld-elf/pr22310.s: New test source file.
|
||||
* testsuite/ld-elf/pr22310.d: New test driver.
|
||||
* testsuite/ld-mmix/undef-3.d: Update expected output from readelf.
|
||||
|
||||
2017-10-21 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
PR ld/21233
|
||||
|
9
ld/testsuite/ld-elf/pr22319.d
Normal file
9
ld/testsuite/ld-elf/pr22319.d
Normal file
@ -0,0 +1,9 @@
|
||||
#name: PR 22319 - required undefined symbols in output
|
||||
#ld: -u undefined_symbol -e 0
|
||||
#nm: -u
|
||||
#notarget: dlx-*-*
|
||||
# The DLX target fails because it needs a special linker script to handle file symbols.
|
||||
|
||||
[ ]+U+[ ]+undefined_symbol
|
||||
#pass
|
||||
|
2
ld/testsuite/ld-elf/pr22319.s
Normal file
2
ld/testsuite/ld-elf/pr22319.s
Normal file
@ -0,0 +1,2 @@
|
||||
.data
|
||||
.dc.b 0
|
@ -12,20 +12,21 @@ Section Headers:
|
||||
+\[ 1\] \.text +PROGBITS +0+ +0+78
|
||||
+0+4 +0+ +AX +0 +0 +4
|
||||
+\[ 2\] \.symtab +SYMTAB +0+ .*
|
||||
+0+a8 +0+18 +3 +2 +8
|
||||
+0+c0 +0+18 +3 +2 +8
|
||||
+\[ 3\] \.strtab +STRTAB +0+ .*
|
||||
+0+21 +0+ +0 +0 +1
|
||||
+0+28 +0+ +0 +0 +1
|
||||
+\[ 4\] \.shstrtab +STRTAB +0+ +[0-9a-f]+
|
||||
+0+21 +0+ +0 +0 +1
|
||||
Key to Flags:
|
||||
#...
|
||||
|
||||
Symbol table '\.symtab' contains 7 entries:
|
||||
Symbol table '\.symtab' contains 8 entries:
|
||||
+Num: +Value +Size +Type +Bind +Vis +Ndx +Name
|
||||
+0: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND
|
||||
+1: 0+ +0 +SECTION +LOCAL +DEFAULT +1
|
||||
+2: 0+ +0 +NOTYPE +GLOBAL +DEFAULT +1 _start
|
||||
+3: 2000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 __bss_start
|
||||
+4: 2000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 _edata
|
||||
+5: 2000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 _end
|
||||
+6: 0+ +0 +NOTYPE +GLOBAL +DEFAULT +1 _start\.
|
||||
[ ]+2: 0+[ ]+0[ ]+NOTYPE[ ]+GLOBAL[ ]+DEFAULT[ ]+UND[ ]+undefd
|
||||
+3: 0+ +0 +NOTYPE +GLOBAL +DEFAULT +1 _start
|
||||
+4: 2000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 __bss_start
|
||||
+5: 2000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 _edata
|
||||
+6: 2000000000000000 +0 +NOTYPE +GLOBAL +DEFAULT +1 _end
|
||||
+7: 0+ +0 +NOTYPE +GLOBAL +DEFAULT +1 _start\.
|
||||
|
Loading…
Reference in New Issue
Block a user