* libhppa.h: Revert July 2, 1999 patch.
authorJeff Law <law@redhat.com>
Tue, 6 Jul 1999 23:50:45 +0000 (23:50 +0000)
committerJeff Law <law@redhat.com>
Tue, 6 Jul 1999 23:50:45 +0000 (23:50 +0000)
bfd/ChangeLog
bfd/libhppa.h

index a08291e3f3e00e8e95b26b5963714ed92059ca6e..05c6de9cc0c194dd34a434ca5f72a993d5d1dc2e 100644 (file)
@@ -1,5 +1,7 @@
 Tue Jul  6 10:23:39 1999  Jeffrey A Law  (law@cygnus.com)
 
+        * libhppa.h: Revert July 2, 1999 patch.
+
        * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type): T mode selectors
        need to generate DLTIND relocations, not DLTREL relocations.
 
index 7fc52e46b79024e240abb0b2a2f13a780da1a828..05256a201dba16d00e09dab8e49bbfb6231a41e7 100644 (file)
@@ -177,6 +177,21 @@ enum hppa_reloc_expr_type_alt
   };
 
 
+/* Relocations for function calls must be accompanied by parameter
+   relocation bits.  These bits describe exactly where the caller has
+   placed the function's arguments and where it expects to find a return
+   value.
+
+   Both ELF and SOM encode this information within the addend field
+   of the call relocation.  (Note this could break very badly if one
+   was to make a call like bl foo + 0x12345678).
+
+   The high order 10 bits contain parameter relocation information,
+   the low order 22 bits contain the constant offset.  */
+   
+#define HPPA_R_ARG_RELOC(a)    (((a) >> 22) & 0x3FF)
+#define HPPA_R_CONSTANT(a)     ((((int)(a)) << 10) >> 10)
+#define HPPA_R_ADDEND(r,c)     (((r) << 22) + ((c) & 0x3FFFFF))
 #define HPPA_WIDE             (0) /* PSW W-bit, need to check! FIXME */
 
 /* These macros get bit fields using HP's numbering (MSB = 0),