aboutsummaryrefslogtreecommitdiff
path: root/bfd/som.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1996-02-27 18:50:42 +0000
committerJeff Law <law@redhat.com>1996-02-27 18:50:42 +0000
commit6c7b309055066861281ffdb0b8e7d64d5227257f (patch)
tree6f23d2024147f877fcfbeb67097e46d0d3e69759 /bfd/som.c
parent431e1e858c2bce0edcda91ae36799697f9979d5e (diff)
downloadgdb-6c7b309055066861281ffdb0b8e7d64d5227257f.zip
gdb-6c7b309055066861281ffdb0b8e7d64d5227257f.tar.gz
gdb-6c7b309055066861281ffdb0b8e7d64d5227257f.tar.bz2
* libhppa.h (pa_arch): Add pa20.
(hppa_reloc_field_selector_type): Add R_HPPA_NSEL. (e_nsel): Undefine. Add to hppa_reloc_field_selector_type_alt. (hppa_field_adjust): Handle e_nsel. * som.c: Provide default definitions for many new relocs found only in hpux10 include files. (som_fixup_formats): Add several new relocs from hpux10. (som_hppa_howto_table): Add hpux10 relocs. (som_write_fixups): Handle R_N0SEL and R_N1SEL hpux10 relocs. Quick stab at handling some of the new hpux10 features.
Diffstat (limited to 'bfd/som.c')
-rw-r--r--bfd/som.c67
1 files changed, 55 insertions, 12 deletions
diff --git a/bfd/som.c b/bfd/som.c
index 59d07fc..47ffbb1 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -1,5 +1,5 @@
/* bfd back-end for HP PA-RISC SOM objects.
- Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996
Free Software Foundation, Inc.
Contributed by the Center for Software Science at the
@@ -430,8 +430,9 @@ static const struct fixup_format som_fixup_formats[256] =
1, "Lb4*=Mb1+L*=", /* 0x2b */
2, "Lb4*=Md1+4*=", /* 0x2c */
3, "Ld1+=Me1+=", /* 0x2d */
- /* R_RESERVED */
+ /* R_SHORT_PCREL_MODE */
0, "", /* 0x2e */
+ /* R_LONG_PCREL_MODE */
0, "", /* 0x2f */
/* R_PCREL_CALL */
0, "L4=RD=Sb=", /* 0x30 */
@@ -637,14 +638,21 @@ static const struct fixup_format som_fixup_formats[256] =
1, "P", /* 0xd4 */
2, "P", /* 0xd5 */
3, "P", /* 0xd6 */
- /* R_RESERVED */
+ /* R_SEC_STMT */
0, "", /* 0xd7 */
+ /* R_N0SEL */
0, "", /* 0xd8 */
+ /* R_N1SEL */
0, "", /* 0xd9 */
+ /* R_LINETAB */
0, "", /* 0xda */
+ /* R_LINETAB_ESC */
0, "", /* 0xdb */
+ /* R_LTP_OVERRIDE */
0, "", /* 0xdc */
+ /* R_COMMENT */
0, "", /* 0xdd */
+ /* R_RESERVED */
0, "", /* 0xde */
0, "", /* 0xdf */
0, "", /* 0xe0 */
@@ -719,7 +727,7 @@ static const int comp3_opcodes[] =
-1
};
-/* These apparently are not in older versions of hpux reloc.h. */
+/* These apparently are not in older versions of hpux reloc.h (hpux7). */
#ifndef R_DLT_REL
#define R_DLT_REL 0x78
#endif
@@ -732,6 +740,39 @@ static const int comp3_opcodes[] =
#define R_SEC_STMT 0xd7
#endif
+/* And these first appeared in hpux10. */
+#ifndef R_SHORT_PCREL_MODE
+#define R_SHORT_PCREL_MODE 0x3e
+#endif
+
+#ifndef R_LONG_PCREL_MODE
+#define R_LONG_PCREL_MODE 0x3f
+#endif
+
+#ifndef R_N0SEL
+#define R_N0SEL 0xd8
+#endif
+
+#ifndef R_N1SEL
+#define R_N1SEL 0xd9
+#endif
+
+#ifndef R_LINETAB
+#define R_LINETAB 0xda
+#endif
+
+#ifndef R_LINETAB_ESC
+#define R_LINETAB_ESC 0xdb
+#endif
+
+#ifndef R_LTP_OVERRIDE
+#define R_LTP_OVERRIDE 0xdc
+#endif
+
+#ifndef R_COMMENT
+#define R_COMMENT 0xdd
+#endif
+
static reloc_howto_type som_hppa_howto_table[] =
{
{R_NO_RELOCATION, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_NO_RELOCATION"},
@@ -796,8 +837,8 @@ static reloc_howto_type som_hppa_howto_table[] =
{R_PCREL_CALL, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_PCREL_CALL"},
{R_PCREL_CALL, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_PCREL_CALL"},
{R_PCREL_CALL, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_PCREL_CALL"},
- {R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
- {R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
+ {R_SHORT_PCREL_MODE, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_SHORT_PCREL_MODE"},
+ {R_LONG_PCREL_MODE, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_LONG_PCREL_MODE"},
{R_ABS_CALL, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_ABS_CALL"},
{R_ABS_CALL, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_ABS_CALL"},
{R_ABS_CALL, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_ABS_CALL"},
@@ -950,12 +991,12 @@ static reloc_howto_type som_hppa_howto_table[] =
{R_PREV_FIXUP, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_PREV_FIXUP"},
{R_PREV_FIXUP, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_PREV_FIXUP"},
{R_SEC_STMT, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_SEC_STMT"},
- {R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
- {R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
- {R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
- {R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
- {R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
- {R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
+ {R_N0SEL, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_N0SEL"},
+ {R_N1SEL, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_N1SEL"},
+ {R_LINETAB, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_LINETAB"},
+ {R_LINETAB_ESC, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_LINETAB_ESC"},
+ {R_LTP_OVERRIDE, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_LTP_OVERRIDE"},
+ {R_COMMENT, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_COMMENT"},
{R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
{R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
{R_RESERVED, 0, 0, 32, false, 0, 0, hppa_som_reloc, "R_RESERVED"},
@@ -2578,6 +2619,8 @@ som_write_fixups (abfd, current_offset, total_reloc_sizep)
case R_COMP2:
case R_BEGIN_BRTAB:
case R_END_BRTAB:
+ case R_N0SEL:
+ case R_N1SEL:
reloc_offset = bfd_reloc->address;
break;