diff options
author | Jeff Law <law@redhat.com> | 1993-12-06 03:24:49 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1993-12-06 03:24:49 +0000 |
commit | 4165dcc2394b47969f82f8b669aa3d6740345082 (patch) | |
tree | 26481ef1d4d7dbb544cabf3be7cc70b454fc49eb /gas | |
parent | 7b624bf25c44cb84243a1187554a350400b79594 (diff) | |
download | gdb-4165dcc2394b47969f82f8b669aa3d6740345082.zip gdb-4165dcc2394b47969f82f8b669aa3d6740345082.tar.gz gdb-4165dcc2394b47969f82f8b669aa3d6740345082.tar.bz2 |
* config/tc-hppa.c (tc_gen_reloc, SOM version): Handle relocation
expansion due to rounding mode selectors. Handle R_[RDSN]_MODE
relocations for selecting the current rounding mode.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-hppa.c | 39 |
2 files changed, 22 insertions, 21 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 2ebea9c..527ddb46 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,9 @@ Sun Dec 5 17:05:29 1993 Jeffrey A. Law (law@snake.cs.utah.edu) + * config/tc-hppa.c (tc_gen_reloc, SOM version): Handle relocation + expansion due to rounding mode selectors. Handle R_[RDSN]_MODE + relocations for selecting the current rounding mode. + * config/tc-hppa.c (evaluate_absolute): Support e_rrsel and e_rlsel field selectors. diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index c585e85..2c05654 100644 --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -2823,31 +2823,20 @@ tc_gen_reloc (section, fixp) } #else /* OBJ_SOM */ - /* Preliminary relocation handling for SOM. Needs to handle - COMPLEX relocations (yes, I've seen them occur) and it will - need to handle R_ENTRY/R_EXIT relocations in the very near future - (for generating unwinds). */ - switch (fixp->fx_r_type) + /* Walk over reach relocation returned by the BFD backend. */ + for (i = 0; i < n_relocs; i++) { - case R_HPPA_COMPLEX: - case R_HPPA_COMPLEX_PCREL_CALL: - case R_HPPA_COMPLEX_ABS_CALL: - abort (); - break; - default: - assert (n_relocs == 1); + code = *codes[i]; - code = *codes[0]; - - reloc->sym_ptr_ptr = &fixp->fx_addsy->bsym; - reloc->howto = bfd_reloc_type_lookup (stdoutput, code); - reloc->address = fixp->fx_frag->fr_address + fixp->fx_where; + relocs[i]->sym_ptr_ptr = &fixp->fx_addsy->bsym; + relocs[i]->howto = bfd_reloc_type_lookup (stdoutput, code); + relocs[i]->address = fixp->fx_frag->fr_address + fixp->fx_where; switch (code) { case R_PCREL_CALL: case R_ABS_CALL: - reloc->addend = HPPA_R_ADDEND (hppa_fixp->fx_arg_reloc, 0); + relocs[i]->addend = HPPA_R_ADDEND (hppa_fixp->fx_arg_reloc, 0); break; case R_DATA_PLABEL: @@ -2857,14 +2846,22 @@ tc_gen_reloc (section, fixp) (static link required). FIXME: We always assume no static link! */ - reloc->addend = 0; + relocs[i]->addend = 0; + break; + + case R_N_MODE: + case R_S_MODE: + case R_D_MODE: + case R_R_MODE: + /* There is no symbol or addend associated with these fixups. */ + relocs[i]->sym_ptr_ptr = 0; + relocs[i]->addend = 0; break; default: - reloc->addend = fixp->fx_addnumber; + relocs[i]->addend = fixp->fx_addnumber; break; } - break; } #endif |