mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-09 04:21:49 +08:00
Fix PR17493, attempted output of *GAS `reg' section* symbol
The write.c change is to make gas report an error if reg_section symbols should leak in future. The tc-i386.c change is the real fix. Note that the error isn't the most helpful, "redefined symbol cannot be used on reloc", but I'm not inclined to improve what is really an internal gas error. reg_section symbols shouldn't leak.. gas/ PR 17493 * write.c (adjust_reloc_syms): Don't allow symbols in reg_section to be reduced to reg_section section symbol. * gas/config/tc-i386.c (i386_finalize_immediate): Reject all reg_section immediates. gas/testsuite/ * gas/i386/inval-equ-2.l: Adjust.
This commit is contained in:
parent
998a69f46a
commit
a841bdf5d3
@ -1,3 +1,11 @@
|
||||
2014-10-18 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR 17493
|
||||
* write.c (adjust_reloc_syms): Don't allow symbols in reg_section
|
||||
to be reduced to reg_section section symbol.
|
||||
* gas/config/tc-i386.c (i386_finalize_immediate): Reject all
|
||||
reg_section immediates.
|
||||
|
||||
2014-10-17 Matthew Fortune <matthew.fortune@imgtec.com>
|
||||
|
||||
* doc/c-mips.texi: Fix bad @value references.
|
||||
|
@ -7985,7 +7985,7 @@ i386_finalize_immediate (segT exp_seg ATTRIBUTE_UNUSED, expressionS *exp,
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
else if (!intel_syntax && exp->X_op == O_register)
|
||||
else if (!intel_syntax && exp_seg == reg_section)
|
||||
{
|
||||
if (imm_start)
|
||||
as_bad (_("illegal immediate register operand %s"), imm_start);
|
||||
|
@ -1,3 +1,7 @@
|
||||
2014-10-18 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* gas/i386/inval-equ-2.l: Adjust.
|
||||
|
||||
2014-10-09 Jose E. Marchesi <jose.marchesi@oracle.com>
|
||||
|
||||
* gas/sparc/hpcvis3.d: Remove tests for the `chkpt', `commit',
|
||||
|
@ -7,15 +7,15 @@ GAS LISTING .*
|
||||
|
||||
[ ]*1[ ]+\.globl bar1
|
||||
[ ]*2[ ]+\.set bar1,\(%eax\+1\)
|
||||
[ ]*3[ ]+\?\?\?\? A12A0000 mov bar1,%eax
|
||||
[ ]*3[ ]+00
|
||||
[ ]*3[ ]+\?\?\?\? A1...... mov bar1,%eax
|
||||
[ ]*3[ ]+..
|
||||
[ ]*4[ ]+\.set bar2,\(%eax\+1\)
|
||||
[ ]*5[ ]+\?\?\?\? A12A0000 mov bar2,%eax
|
||||
[ ]*5[ ]+00
|
||||
[ ]*5[ ]+\?\?\?\? A1...... mov bar2,%eax
|
||||
[ ]*5[ ]+..
|
||||
[ ]*6[ ]+\.globl bar2
|
||||
[ ]*7[ ]+\.set bar3,\(%eax\+1\)
|
||||
[ ]*8[ ]+\?\?\?\? A12A0000 mov bar3,%eax
|
||||
[ ]*8[ ]+\?\?\?\? A1...... mov bar3,%eax
|
||||
.* Error: can't make global register symbol `bar1'
|
||||
.* Error: can't make global register symbol `bar2'
|
||||
.* Error: can't make global register symbol `bar3'
|
||||
[ ]*8[ ]+00
|
||||
[ ]*8[ ]+..
|
||||
|
@ -836,7 +836,8 @@ adjust_reloc_syms (bfd *abfd ATTRIBUTE_UNUSED,
|
||||
if (symsec == NULL)
|
||||
abort ();
|
||||
|
||||
if (bfd_is_abs_section (symsec))
|
||||
if (bfd_is_abs_section (symsec)
|
||||
|| symsec == reg_section)
|
||||
{
|
||||
/* The fixup_segment routine normally will not use this
|
||||
symbol in a relocation. */
|
||||
|
Loading…
Reference in New Issue
Block a user