mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-03-01 13:26:47 +08:00
ELF: don't re-order SHF_FILE symbols
.file directives may be used to identify the scope of local symbols, the purpose of which gets subverted when re-ordering them. Only allow the first of them to be moved to the first position.
This commit is contained in:
parent
3685b09fb8
commit
fbdf9406b0
@ -1,3 +1,8 @@
|
||||
2015-12-08 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/obj-elf.c (elf_file_symbol): Tighten condition for
|
||||
moving BSF_FILE symbols.
|
||||
|
||||
2015-12-08 DJ Delorie <dj@redhat.com>
|
||||
|
||||
* config/rl78-parse.y: Make all branches relaxable via
|
||||
|
@ -282,14 +282,17 @@ elf_file_symbol (const char *s, int appfile)
|
||||
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_FILE;
|
||||
|
||||
if (symbol_rootP != sym)
|
||||
if (symbol_rootP != sym
|
||||
&& (symbol_rootP->bsym == NULL
|
||||
|| !(symbol_rootP->bsym->flags & BSF_FILE)))
|
||||
{
|
||||
symbol_remove (sym, &symbol_rootP, &symbol_lastP);
|
||||
symbol_insert (sym, symbol_rootP, &symbol_rootP, &symbol_lastP);
|
||||
#ifdef DEBUG
|
||||
verify_symbol_chain (symbol_rootP, symbol_lastP);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
verify_symbol_chain (symbol_rootP, symbol_lastP);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef NEED_ECOFF_DEBUG
|
||||
|
@ -1,3 +1,10 @@
|
||||
2015-12-08 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* gas/elf/file-2.s, gas/elf/file-2.d: New.
|
||||
* gas/elf/elf.exp: Run new test.
|
||||
* gas/elf/file.d: Adjust expectations.
|
||||
* gas/i386/ilp32/elf/file.d: Likewise.
|
||||
|
||||
2015-12-04 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR gas/19276
|
||||
|
@ -111,6 +111,7 @@ if { [is_elf_format] } then {
|
||||
run_dump_test "file"
|
||||
}
|
||||
}
|
||||
run_dump_test "file-2"
|
||||
setup_xfail "nds32*-*-*"
|
||||
run_dump_test "group0a"
|
||||
run_dump_test "group0b"
|
||||
|
14
gas/testsuite/gas/elf/file-2.d
Normal file
14
gas/testsuite/gas/elf/file-2.d
Normal file
@ -0,0 +1,14 @@
|
||||
#objdump: -t
|
||||
#name: .file file names ordering
|
||||
|
||||
.*: .*
|
||||
|
||||
SYMBOL TABLE:
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ file-2\.s
|
||||
#...
|
||||
0+ l[ ]*\.text[ ]+0+ local1
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ aux-1\.s
|
||||
0+ l[ ]*\.text[ ]+0+ local2
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ aux-2\.s
|
||||
0+ l[ ]*\.text[ ]+0+ local3
|
||||
#pass
|
7
gas/testsuite/gas/elf/file-2.s
Normal file
7
gas/testsuite/gas/elf/file-2.s
Normal file
@ -0,0 +1,7 @@
|
||||
.file "file-2.s"
|
||||
.text
|
||||
local1:
|
||||
.file "aux-1.s"
|
||||
local2:
|
||||
.file "aux-2.s"
|
||||
local3:
|
@ -4,15 +4,15 @@
|
||||
.*: .*
|
||||
|
||||
SYMBOL TABLE:
|
||||
#...
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ file\.s
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ slash/data
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ \{braces\}
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ \[brackets\]
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ /dir/file\.s
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ :colon
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ UPPER
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ lower
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ hash\#
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ ~tilde
|
||||
#...
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ hash\#
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ lower
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ UPPER
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ :colon
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ /dir/file\.s
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ \[brackets\]
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ \{braces\}
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ slash/data
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ file\.s
|
||||
#pass
|
||||
|
@ -5,15 +5,15 @@
|
||||
.*: .*
|
||||
|
||||
SYMBOL TABLE:
|
||||
#...
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ file\.s
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ slash/data
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ \{braces\}
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ \[brackets\]
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ /dir/file\.s
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ :colon
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ UPPER
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ lower
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ hash\#
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ ~tilde
|
||||
#...
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ hash\#
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ lower
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ UPPER
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ :colon
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ /dir/file\.s
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ \[brackets\]
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ \{braces\}
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ slash/data
|
||||
0+ l[ ]*df \*ABS\*[ ]+0+ file\.s
|
||||
#pass
|
||||
|
Loading…
Reference in New Issue
Block a user