diff options
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-i386.c | 2 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/i386/inval-equ-2.l | 12 | ||||
-rw-r--r-- | gas/write.c | 3 |
5 files changed, 22 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index b265f73dd9c..f9dfc8e1561 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,6 +1,13 @@ 2014-10-28 Alan Modra <amodra@gmail.com> Apply trunk patches + 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-15 Chen Gang <gang.chen.5i5j@gmail.com> * config/tc-tic4x.c (md_assemble): Correct strncat size. diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 38e97815175..2e34ce3df61 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -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); diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 4cbfd068e91..1e9d7efd9e6 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-10-28 Alan Modra <amodra@gmail.com> + + Apply truck patches + 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', diff --git a/gas/testsuite/gas/i386/inval-equ-2.l b/gas/testsuite/gas/i386/inval-equ-2.l index eafaf254052..11f5e4ed3e9 100644 --- a/gas/testsuite/gas/i386/inval-equ-2.l +++ b/gas/testsuite/gas/i386/inval-equ-2.l @@ -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[ ]+.. diff --git a/gas/write.c b/gas/write.c index 263b002e3ce..0f82d47931f 100644 --- a/gas/write.c +++ b/gas/write.c @@ -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. */ |