diff options
author | Richard Henderson <rth@redhat.com> | 2002-04-02 00:32:41 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2002-04-02 00:32:41 +0000 |
commit | 5f44c186d76efda9c6cef2d39b404a0b3f88036d (patch) | |
tree | 2c6693975ebee99a0a5abb51c2fa3062e82c2f1b /gas | |
parent | d24bbf066646ab18c0c00e72ca36d04d286459aa (diff) | |
download | gdb-5f44c186d76efda9c6cef2d39b404a0b3f88036d.zip gdb-5f44c186d76efda9c6cef2d39b404a0b3f88036d.tar.gz gdb-5f44c186d76efda9c6cef2d39b404a0b3f88036d.tar.bz2 |
* config/tc-ia64.c (ia64_cons_fix_new): Handle 8 byte iplt reloc
in 32-bit mode.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-ia64.c | 25 |
2 files changed, 25 insertions, 5 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 190d0ac..15d070e 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2002-04-01 Jessica Han <jessica@cup.hp.com> + + * config/tc-ia64.c (ia64_cons_fix_new): Handle 8 byte iplt reloc + in 32-bit mode. + 2002-03-27 Andreas Schwab <schwab@suse.de> * config/tc-i386.c (output_jump): Set fx_pcrel_adjust to size of diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c index fbb166f..adffb06 100644 --- a/gas/config/tc-ia64.c +++ b/gas/config/tc-ia64.c @@ -9986,11 +9986,26 @@ ia64_cons_fix_new (f, where, nbytes, exp) break; case 8: - if (target_big_endian) - code = BFD_RELOC_IA64_DIR64MSB; - else - code = BFD_RELOC_IA64_DIR64LSB; - break; + /* In 32-bit mode, data8 could mean function descriptors too. */ + if (exp->X_op == O_pseudo_fixup + && exp->X_op_symbol + && S_GET_VALUE (exp->X_op_symbol) == FUNC_IPLT_RELOC + && !(md.flags & EF_IA_64_ABI64)) + { + if (target_big_endian) + code = BFD_RELOC_IA64_IPLTMSB; + else + code = BFD_RELOC_IA64_IPLTLSB; + exp->X_op = O_symbol; + break; + } + else { + if (target_big_endian) + code = BFD_RELOC_IA64_DIR64MSB; + else + code = BFD_RELOC_IA64_DIR64LSB; + break; + } case 16: if (exp->X_op == O_pseudo_fixup |