diff options
author | Bernd Schmidt <bernds@codesourcery.com> | 2005-10-24 18:35:59 +0000 |
---|---|---|
committer | Bernd Schmidt <bernds@codesourcery.com> | 2005-10-24 18:35:59 +0000 |
commit | beb6bfe84a45198c22b6fb47ec34d34695dc1f3f (patch) | |
tree | b0a43974163077e084cae861c95808ba23d0216f /gas | |
parent | 124fe9430ecf667c622b63ff43f98d3b0bf219ee (diff) | |
download | gdb-beb6bfe84a45198c22b6fb47ec34d34695dc1f3f.zip gdb-beb6bfe84a45198c22b6fb47ec34d34695dc1f3f.tar.gz gdb-beb6bfe84a45198c22b6fb47ec34d34695dc1f3f.tar.bz2 |
* 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.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/config/tc-bfin.c | 15 | ||||
-rw-r--r-- | gas/config/tc-bfin.h | 3 |
3 files changed, 24 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 440323f..ce5c72b 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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. diff --git a/gas/config/tc-bfin.c b/gas/config/tc-bfin.c index a1b3971..d9e88de 100644 --- a/gas/config/tc-bfin.c +++ b/gas/config/tc-bfin.c @@ -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. */ diff --git a/gas/config/tc-bfin.h b/gas/config/tc-bfin.h index 9252e25..773030c 100644 --- a/gas/config/tc-bfin.h +++ b/gas/config/tc-bfin.h @@ -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 */ |