Properly fold _GLOBAL_OFFSET_TABLE_ in Intel syntax.
gas/ 2010-11-03 H.J. Lu <hongjiu.lu@intel.com> PR gas/12186 * config/tc-i386-intel.c (i386_intel_fold): Properly fold _GLOBAL_OFFSET_TABLE_. gas/testsuite/ 2010-11-03 H.J. Lu <hongjiu.lu@intel.com> PR gas/12186 * gas/i386/gotpc.s: Add more _GLOBAL_OFFSET_TABLE_ test. * gas/i386/gotpc.d: Updated.
This commit is contained in:
parent
3f9a327892
commit
27dee630aa
@ -1,3 +1,9 @@
|
|||||||
|
2010-11-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR gas/12186
|
||||||
|
* config/tc-i386-intel.c (i386_intel_fold): Properly fold
|
||||||
|
_GLOBAL_OFFSET_TABLE_.
|
||||||
|
|
||||||
2010-11-02 Joseph Myers <joseph@codesourcery.com>
|
2010-11-02 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* config/tc-tic6x.c (OPTION_MPID, OPTION_MPIC, OPTION_MNO_PIC):
|
* config/tc-tic6x.c (OPTION_MPID, OPTION_MPIC, OPTION_MNO_PIC):
|
||||||
|
@ -227,15 +227,20 @@ static INLINE int i386_intel_check (const reg_entry *rreg,
|
|||||||
|
|
||||||
static INLINE void i386_intel_fold (expressionS *e, symbolS *sym)
|
static INLINE void i386_intel_fold (expressionS *e, symbolS *sym)
|
||||||
{
|
{
|
||||||
|
expressionS *exp = symbol_get_value_expression (sym);
|
||||||
if (S_GET_SEGMENT (sym) == absolute_section)
|
if (S_GET_SEGMENT (sym) == absolute_section)
|
||||||
{
|
{
|
||||||
offsetT val = e->X_add_number;
|
offsetT val = e->X_add_number;
|
||||||
|
|
||||||
*e = *symbol_get_value_expression (sym);
|
*e = *exp;
|
||||||
e->X_add_number += val;
|
e->X_add_number += val;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (exp->X_op == O_symbol
|
||||||
|
&& strcmp (S_GET_NAME (exp->X_add_symbol),
|
||||||
|
GLOBAL_OFFSET_TABLE_NAME) == 0)
|
||||||
|
sym = exp->X_add_symbol;
|
||||||
e->X_add_symbol = sym;
|
e->X_add_symbol = sym;
|
||||||
e->X_op_symbol = NULL;
|
e->X_op_symbol = NULL;
|
||||||
e->X_op = O_symbol;
|
e->X_op = O_symbol;
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2010-11-03 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
PR gas/12186
|
||||||
|
* gas/i386/gotpc.s: Add more _GLOBAL_OFFSET_TABLE_ test.
|
||||||
|
* gas/i386/gotpc.d: Updated.
|
||||||
|
|
||||||
2010-11-02 Joseph Myers <joseph@codesourcery.com>
|
2010-11-02 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* gas/tic6x/attr-array-directive-1.d,
|
* gas/tic6x/attr-array-directive-1.d,
|
||||||
|
@ -51,4 +51,5 @@ Disassembly of section .text:
|
|||||||
e4: 00 00 [ ]*add %al,\(%eax\) e4: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_
|
e4: 00 00 [ ]*add %al,\(%eax\) e4: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_
|
||||||
e6: 00 00 [ ]*add %al,\(%eax\)
|
e6: 00 00 [ ]*add %al,\(%eax\)
|
||||||
e8: 8b 83 00 00 00 00 [ ]*mov 0x0\(%ebx\),%eax ea: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_
|
e8: 8b 83 00 00 00 00 [ ]*mov 0x0\(%ebx\),%eax ea: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_
|
||||||
|
ee: 81 c3 02 00 00 00 [ ]*add \$0x2,%ebx f0: (R_386_)GOTPC _GLOBAL_OFFSET_TABLE_
|
||||||
#pass
|
#pass
|
||||||
|
@ -39,3 +39,6 @@ test:
|
|||||||
.long _GLOBAL_OFFSET_TABLE_+[.-test]
|
.long _GLOBAL_OFFSET_TABLE_+[.-test]
|
||||||
.long _GLOBAL_OFFSET_TABLE_@GOTOFF
|
.long _GLOBAL_OFFSET_TABLE_@GOTOFF
|
||||||
movl _GLOBAL_OFFSET_TABLE_@GOTOFF (%ebx), %eax
|
movl _GLOBAL_OFFSET_TABLE_@GOTOFF (%ebx), %eax
|
||||||
|
|
||||||
|
.intel_syntax noprefix
|
||||||
|
add ebx, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_
|
||||||
|
Loading…
x
Reference in New Issue
Block a user