* config/tc-ppc.c (ppc_elf_suffix): Undo part of last change so that
x@toc+off works.
This commit is contained in:
parent
cbf1e08505
commit
5f6db75ada
2 changed files with 24 additions and 21 deletions
|
@ -1,3 +1,8 @@
|
|||
2003-02-06 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* config/tc-ppc.c (ppc_elf_suffix): Undo part of last change so that
|
||||
x@toc+off works.
|
||||
|
||||
2003-02-05 Alan Modra <amodra@bigpond.net.au>
|
||||
|
||||
* config/tc-ppc.c (mapping): Handle new TLS reloc specs.
|
||||
|
|
|
@ -1580,31 +1580,29 @@ ppc_elf_suffix (str_p, exp_p)
|
|||
}
|
||||
|
||||
if (!ppc_obj64)
|
||||
if (exp_p->X_add_number != 0
|
||||
&& (reloc == (int) BFD_RELOC_16_GOTOFF
|
||||
|| reloc == (int) BFD_RELOC_LO16_GOTOFF
|
||||
|| reloc == (int) BFD_RELOC_HI16_GOTOFF
|
||||
|| reloc == (int) BFD_RELOC_HI16_S_GOTOFF))
|
||||
as_warn (_("identifier+constant@got means identifier@got+constant"));
|
||||
|
||||
/* Now check for identifier@suffix+constant. */
|
||||
if (*str == '-' || *str == '+')
|
||||
{
|
||||
if (exp_p->X_add_number != 0
|
||||
&& (reloc == (int) BFD_RELOC_16_GOTOFF
|
||||
|| reloc == (int) BFD_RELOC_LO16_GOTOFF
|
||||
|| reloc == (int) BFD_RELOC_HI16_GOTOFF
|
||||
|| reloc == (int) BFD_RELOC_HI16_S_GOTOFF))
|
||||
as_warn (_("identifier+constant@got means identifier@got+constant"));
|
||||
char *orig_line = input_line_pointer;
|
||||
expressionS new_exp;
|
||||
|
||||
/* Now check for identifier@suffix+constant. */
|
||||
if (*str == '-' || *str == '+')
|
||||
input_line_pointer = str;
|
||||
expression (&new_exp);
|
||||
if (new_exp.X_op == O_constant)
|
||||
{
|
||||
char *orig_line = input_line_pointer;
|
||||
expressionS new_exp;
|
||||
|
||||
input_line_pointer = str;
|
||||
expression (&new_exp);
|
||||
if (new_exp.X_op == O_constant)
|
||||
{
|
||||
exp_p->X_add_number += new_exp.X_add_number;
|
||||
str = input_line_pointer;
|
||||
}
|
||||
|
||||
if (&input_line_pointer != str_p)
|
||||
input_line_pointer = orig_line;
|
||||
exp_p->X_add_number += new_exp.X_add_number;
|
||||
str = input_line_pointer;
|
||||
}
|
||||
|
||||
if (&input_line_pointer != str_p)
|
||||
input_line_pointer = orig_line;
|
||||
}
|
||||
*str_p = str;
|
||||
|
||||
|
|
Loading…
Reference in a new issue