* 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
3 changed files with 24 additions and 0 deletions
|
@ -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>
|
2005-10-24 Alexandre Oliva <aoliva@redhat.com>
|
||||||
|
|
||||||
* read.c (potable): Add weakref.
|
* read.c (potable): Add weakref.
|
||||||
|
|
|
@ -1003,6 +1003,21 @@ Expr_Node_Gen_Reloc (Expr_Node * head, int parent_reloc)
|
||||||
if (note1 != NULL_CODE)
|
if (note1 != NULL_CODE)
|
||||||
note = conscode (note1, note);
|
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
|
else
|
||||||
{
|
{
|
||||||
/* Call the recursive function. */
|
/* 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)
|
#define MD_PCREL_FROM_SECTION(FIX, SEC) md_pcrel_from_section (FIX, SEC)
|
||||||
extern long md_pcrel_from_section PARAMS ((struct fix *, segT));
|
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 */
|
/* end of tc-bfin.h */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue