From 4165dcc2394b47969f82f8b669aa3d6740345082 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Mon, 6 Dec 1993 03:24:49 +0000 Subject: [PATCH] * 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. --- gas/ChangeLog | 4 ++++ gas/config/tc-hppa.c | 39 ++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 2ebea9c8acb..527ddb46029 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 c585e85c80b..2c056540279 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 -- 2.30.2