* 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:
Bernd Schmidt 2005-10-24 18:35:59 +00:00
parent 124fe9430e
commit beb6bfe84a
3 changed files with 24 additions and 0 deletions

View File

@ -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.

View File

@ -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. */

View File

@ -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 */