* config/tc-bfin.c (Expr_Node_Gen_Reloc): If have symbol + constant,
make a single reloc with an offset rather than a stack. * config/tc-bfin.h (MD_APPLY_SYM_VALUE): Define to 0.
This commit is contained in:
parent
124fe9430e
commit
beb6bfe84a
@ -1,3 +1,9 @@
|
||||
2005-10-24 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||
|
||||
* config/tc-bfin.c (Expr_Node_Gen_Reloc): If have symbol + constant,
|
||||
make a single reloc with an offset rather than a stack.
|
||||
* config/tc-bfin.h (MD_APPLY_SYM_VALUE): Define to 0.
|
||||
|
||||
2005-10-24 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* read.c (potable): Add weakref.
|
||||
|
@ -1003,6 +1003,21 @@ Expr_Node_Gen_Reloc (Expr_Node * head, int parent_reloc)
|
||||
if (note1 != NULL_CODE)
|
||||
note = conscode (note1, note);
|
||||
}
|
||||
else if (head->type == Expr_Node_Binop
|
||||
&& (head->value.op_value == Expr_Op_Type_Add
|
||||
|| head->value.op_value == Expr_Op_Type_Sub)
|
||||
&& head->Left_Child->type == Expr_Node_Reloc
|
||||
&& head->Right_Child->type == Expr_Node_Constant)
|
||||
{
|
||||
int val = head->Right_Child->value.i_value;
|
||||
if (head->value.op_value == Expr_Op_Type_Sub)
|
||||
val = -val;
|
||||
note = conscode (note_reloc2 (gencode (0), head->Left_Child->value.s_value,
|
||||
parent_reloc, val, 0),
|
||||
NULL_CODE);
|
||||
if (note1 != NULL_CODE)
|
||||
note = conscode (note1, note);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Call the recursive function. */
|
||||
|
@ -72,4 +72,7 @@ extern int bfin_force_relocation PARAMS ((struct fix *));
|
||||
#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
|
||||
extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
|
||||
|
||||
/* Values passed to md_apply_fix3 don't include symbol values. */
|
||||
#define MD_APPLY_SYM_VALUE(FIX) 0
|
||||
|
||||
/* end of tc-bfin.h */
|
||||
|
Loading…
Reference in New Issue
Block a user