diff options
author | Jim Wilson <wilson@tuliptree.org> | 2001-02-14 01:46:10 +0000 |
---|---|---|
committer | Jim Wilson <wilson@tuliptree.org> | 2001-02-14 01:46:10 +0000 |
commit | fa1cb89ccc52f3e55a7de0d94b100cf3694f273e (patch) | |
tree | 904524812bcc43e4aa22817516b11155388789b6 | |
parent | 6757257fb58bd0b5bd75e2d9230aae7da4559618 (diff) | |
download | gdb-fa1cb89ccc52f3e55a7de0d94b100cf3694f273e.zip gdb-fa1cb89ccc52f3e55a7de0d94b100cf3694f273e.tar.gz gdb-fa1cb89ccc52f3e55a7de0d94b100cf3694f273e.tar.bz2 |
Address comment from Richard about relocs always needing a type.
* config/tc-ia64.c (operand_match, case TAG13): Make a BFD_RELOC_UNUSED
reloc instead of a 0 reloc.
(md_apply_fix3): Check for BFD_RELOC_UNUSED instead of 0, and mark it
as done.
* config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Likewise.
-rw-r--r-- | gas/ChangeLog | 8 | ||||
-rw-r--r-- | gas/config/tc-ia64.c | 16 | ||||
-rw-r--r-- | gas/config/tc-ia64.h | 5 |
3 files changed, 21 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index a2e30b1..3b3c450 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2001-02-13 Jim Wilson <wilson@redhat.com> + + * config/tc-ia64.c (operand_match, case TAG13): Make a BFD_RELOC_UNUSED + reloc instead of a 0 reloc. + (md_apply_fix3): Check for BFD_RELOC_UNUSED instead of 0, and mark it + as done. + * config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Likewise. + 2001-02-13 Ian Lance Taylor <ian@zembu.com> * write.c (is_dnrange): Stop as soon as the address becomes diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c index 8f82739..df566e2 100644 --- a/gas/config/tc-ia64.c +++ b/gas/config/tc-ia64.c @@ -5165,7 +5165,10 @@ operand_match (idesc, index, e) case O_symbol: fix = CURR_SLOT.fixup + CURR_SLOT.num_fixups; - fix->code = ia64_gen_real_reloc_type (e->X_op_symbol, 0); + /* There are no external relocs for TAG13/TAG13b fields, so we + create a dummy reloc. This will not live past md_apply_fix3. */ + fix->code = BFD_RELOC_UNUSED; + fix->code = ia64_gen_real_reloc_type (e->X_op_symbol, fix->code); fix->opnd = idesc->operands[index]; fix->expr = *e; fix->is_pcrel = 1; @@ -9804,16 +9807,15 @@ md_apply_fix3 (fix, valuep, seg) } if (fix->fx_addsy) { - switch (fix->fx_r_type) + if (fix->fx_r_type == (int) BFD_RELOC_UNUSED) { - case 0: + /* This must be a TAG13 or TAG13b operand. There are no external + relocs defined for them, so we must give an error. */ as_bad_where (fix->fx_file, fix->fx_line, "%s must have a constant value", elf64_ia64_operands[fix->tc_fix_data.opnd].desc); - break; - - default: - break; + fix->fx_done = 1; + return 1; } /* ??? This is a hack copied from tc-i386.c to make PCREL relocs diff --git a/gas/config/tc-ia64.h b/gas/config/tc-ia64.h index f2b9fe4..ee4c749 100644 --- a/gas/config/tc-ia64.h +++ b/gas/config/tc-ia64.h @@ -252,9 +252,12 @@ typedef struct unwind_record True if we are willing to perform this relocation while building the .o file. This is only used for pcrel relocations. */ +/* If the reloc type is BFD_RELOC_UNUSED, then this is for a TAG13/TAG13b field + which has no external reloc, so we must resolve the value now. */ + #define TC_RELOC_RTSYM_LOC_FIXUP(FIX) \ ((FIX)->fx_addsy == NULL \ - || (FIX)->fx_r_type == 0 \ + || (FIX)->fx_r_type == BFD_RELOC_UNUSED \ || (! S_IS_EXTERNAL ((FIX)->fx_addsy) \ && ! S_IS_WEAK ((FIX)->fx_addsy) \ && S_IS_DEFINED ((FIX)->fx_addsy) \ |