mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 12:03:41 +08:00
bfd: strip symbols not representable in COFF/PE symbol table
The offset-within-section field in the symbol table entry is only 32 bits wide, so rather than emitting bogus entries omit them, and issue a diagnostic identifying the issue. This requires adjusting the PR/22267 test to no longer produce symbols with out of range values on 64-bit BFD. This also depends on adjustments to testsuite/ld-scripts/map-address.* made by an earlier patch. The purpose of the test can very well be achieved nevertheless.
This commit is contained in:
parent
3044062c34
commit
67b0f68480
@ -1,3 +1,8 @@
|
||||
2021-03-10 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* cofflink.c (_bfd_coff_write_global_sym): Range-check symbol
|
||||
offset.
|
||||
|
||||
2021-03-10 Alan Modra <amodra@gmail.com>
|
||||
Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
|
@ -2602,6 +2602,17 @@ _bfd_coff_write_global_sym (struct bfd_hash_entry *bh, void *data)
|
||||
+ h->root.u.def.section->output_offset);
|
||||
if (! obj_pe (flaginfo->output_bfd))
|
||||
isym.n_value += sec->vma;
|
||||
#ifdef BFD64
|
||||
if (isym.n_value > (bfd_vma) 0xffffffff)
|
||||
{
|
||||
if (! h->root.linker_def)
|
||||
_bfd_error_handler
|
||||
(_("%pB: stripping non-representable symbol '%s' (value "
|
||||
"%" BFD_VMA_FMT "x)"),
|
||||
output_bfd, h->root.root.string, isym.n_value);
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -1,3 +1,11 @@
|
||||
2021-03-10 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* testsuite/ld-scripts/pr22267.t: Avoid symbol value with more
|
||||
than 32 set bits.
|
||||
* testsuite/ld-scripts/pr22267.d: Adjust expectation and drop
|
||||
comment.
|
||||
* scripttempl/mcorepe.sc: Use PROVIDE() for _stack.
|
||||
|
||||
2021-03-09 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* testsuite/ld-pe/reloc.s: Add entry point symbols. Increase
|
||||
|
@ -168,7 +168,7 @@ SECTIONS
|
||||
|
||||
.stack 0x80000 :
|
||||
{
|
||||
_stack = .;
|
||||
PROVIDE(_stack = .);
|
||||
*(.stack)
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,6 @@
|
||||
#nm: -n
|
||||
#xfail: bfin-*-linux* frv-*-linux*
|
||||
|
||||
# Some targets may zero-extend 32-bit address to 64 bits.
|
||||
#...
|
||||
0*f+00 A foo
|
||||
0*ff A foo
|
||||
#pass
|
||||
|
@ -1,4 +1,4 @@
|
||||
SECTIONS
|
||||
{
|
||||
foo = ~0xFF;
|
||||
foo = ~~0xFF;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user