Apparently I forgot to commit this change:

* config/tc-hppa.c (md_apply_fix): Go ahead and call
        hppa_field_adjust to get a new value for R_DATA_ONE_SYMBOL
        relocations in SOM.
        (hppa_fix_adjustable): Refine somewhat.
This commit is contained in:
Jeff Law 1995-02-07 18:20:57 +00:00
parent f64a8968db
commit b4682e519f
2 changed files with 33 additions and 11 deletions

View file

@ -38,6 +38,13 @@ Thu Feb 2 15:21:24 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
(VMS_RSYM_Parse): move S_GET_VALUE() inside switch to avoid
calling it for uninteresting cases.
Wed Feb 1 23:52:45 1995 Jeff Law (law@snake.cs.utah.edu)
* config/tc-hppa.c (md_apply_fix): Go ahead and call
hppa_field_adjust to get a new value for R_DATA_ONE_SYMBOL
relocations in SOM.
(hppa_fix_adjustable): Refine somewhat.
Fri Jan 27 21:29:53 1995 Michael Meissner <meissner@tiktok.cygnus.com>
* config/tc-ppc.h (NO_STRING_ESCAPES): Don't define if we are

View file

@ -2215,7 +2215,7 @@ pa_ip (str)
num = pa_get_absolute_expression (&the_insn, &s);
s = expr_end;
CHECK_FIELD (num, 671108864, 0, 0);
INSERT_FIELD_AND_CONTINUE (opcode, num, 1);
INSERT_FIELD_AND_CONTINUE (opcode, num, 0);
/* Handle a 3 bit SFU identifier at 25. */
case 'f':
@ -2855,8 +2855,18 @@ md_apply_fix (fixP, valp)
which will need a SOM relocation (except for some PC-relative relocs).
In such cases we should treat the "val" or "addend" as zero since it
will be added in as needed from fx_offset in tc_gen_reloc. */
if (fixP->fx_addsy != NULL
|| fixP->fx_r_type == R_HPPA_NONE)
if ((fixP->fx_addsy != NULL
|| fixP->fx_r_type == R_HPPA_NONE)
#ifdef OBJ_SOM
&& fmt != 32
|| hppa_fixP->fx_r_field == e_psel
|| hppa_fixP->fx_r_field == e_rpsel
|| hppa_fixP->fx_r_field == e_lpsel
|| hppa_fixP->fx_r_field == e_tsel
|| hppa_fixP->fx_r_field == e_rtsel
|| hppa_fixP->fx_r_field == e_ltsel
#endif
)
new_val = ((fmt == 12 || fmt == 17) ? 8 : 0);
else
new_val = hppa_field_adjust (*valp, 0, hppa_fixP->fx_r_field);
@ -5379,6 +5389,9 @@ pa_subspace (unused)
else
section = subseg_new (ss_name, 0);
if (zero)
seg_info (section)->bss = 1;
/* Now set the flags. */
bfd_set_section_flags (stdoutput, section, applicable);
@ -6123,13 +6136,11 @@ pa_text (unused)
selectors).
Reject reductions involving symbols with external scope; such
reductions make life a living hell for object file editors.
reductions make life a living hell for object file editors.
FIXME. Also reject R_HPPA relocations which are 32 bits
wide. Helps with code lables in arrays for SOM. (SOM BFD code
needs to generate relocations to push the addend and symbol value
onto the stack, add them, then pop the value off the stack and
use it in a relocation -- yuk. */
FIXME. Also reject R_HPPA relocations which are 32bits wide in
the code space. The SOM BFD backend doesn't know how to pull the
right bits out of an instruction. */
int
hppa_fix_adjustable (fixp)
@ -6145,10 +6156,14 @@ hppa_fix_adjustable (fixp)
return 0;
#endif
/* Reject reductions of symbols in DLT relative relocs. */
/* Reject reductions of symbols in DLT relative relocs,
relocations with plabels. */
if (hppa_fix->fx_r_field == e_tsel
|| hppa_fix->fx_r_field == e_ltsel
|| hppa_fix->fx_r_field == e_rtsel)
|| hppa_fix->fx_r_field == e_rtsel
|| hppa_fix->fx_r_field == e_psel
|| hppa_fix->fx_r_field == e_rpsel
|| hppa_fix->fx_r_field == e_lpsel)
return 0;
if (fixp->fx_addsy && fixp->fx_addsy->bsym->flags & BSF_GLOBAL)