+Sun Mar 5 19:38:09 1995 Jeff Law (law@snake.cs.utah.edu)
+
+ * config/tc-hppa.c (pa_ip, case 'z'): Don't lose argument
+ relocation bits for absolute calls.
+
Fri Mar 3 17:41:50 1995 Ken Raeburn <raeburn@cujo.cygnus.com>
* config/tc-h8300.* (md_operand): Change empty function to empty
{
the_insn.reloc = R_HPPA_ABS_CALL;
the_insn.format = 17;
+ the_insn.arg_reloc = last_call_desc.arg_reloc;
+ bzero (&last_call_desc, sizeof (struct call_desc));
continue;
}
return 0;
}
-/* Parse an operand that is machine-specific.
- We just return without modifying the expression as we have nothing
- to do on the PA. */
-
-void
-md_operand (expressionP)
- expressionS *expressionP;
-{
-}
-
/* Apply a fixup to an instruction. */
int
#endif
)
new_val = ((fmt == 12 || fmt == 17) ? 8 : 0);
+#ifdef OBJ_SOM
+ /* This is truely disgusting. The machine independent code blindly
+ adds in the value of the symbol being relocated against. Damn! */
+ else if (fmt == 32
+ && fixP->fx_addsy != NULL
+ && S_GET_SEGMENT (fixP->fx_addsy) != bfd_com_section_ptr)
+ new_val = hppa_field_adjust (*valp - S_GET_VALUE (fixP->fx_addsy),
+ 0, hppa_fixP->fx_r_field);
+#endif
else
new_val = hppa_field_adjust (*valp, 0, hppa_fixP->fx_r_field);