summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>1999-06-26 21:17:49 +0000
committerMark Mitchell <mark@codesourcery.com>1999-06-26 21:17:49 +0000
commita94a7c1c32429ce33f5ab00ce1266529c5ee95cd (patch)
tree137e60c08d0c5bef46b07101b2ed4a842b2bef89
parent827c01493eb77e7e1f7af61514d971447a97ae51 (diff)
downloadbinutils-gdb-a94a7c1c32429ce33f5ab00ce1266529c5ee95cd.tar.gz
* elf32-mips.c (irix_compat_t): New enumeration.
(ABI_N32_P): New macro. (IRIX_COMPAT): Likewise. (SGI_COMPAT): Implement in terms of IRIX_COMPAT. (mips_elf_relocate_section): Fix typo.
-rw-r--r--bfd/ChangeLog8
-rw-r--r--bfd/elf32-mips.c29
2 files changed, 32 insertions, 5 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index b4876195d4f..1064c7793d8 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+1999-06-26 Mark Mitchell <mark@codesourcery.com>
+
+ * elf32-mips.c (irix_compat_t): New enumeration.
+ (ABI_N32_P): New macro.
+ (IRIX_COMPAT): Likewise.
+ (SGI_COMPAT): Implement in terms of IRIX_COMPAT.
+ (mips_elf_relocate_section): Fix typo.
+
1999-06-26 Mumit Khan <khan@xraylith.wisc.edu>
* peicode.h (coff_swap_scnhdr_out): Mark non readonly BFD sections
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c
index b4de2e93f1d..c93f8029664 100644
--- a/bfd/elf32-mips.c
+++ b/bfd/elf32-mips.c
@@ -125,11 +125,30 @@ static bfd_byte *elf32_mips_get_relocated_section_contents
PARAMS ((bfd *, struct bfd_link_info *, struct bfd_link_order *,
bfd_byte *, boolean, asymbol **));
-/* This is true for Irix 5 executables, false for normal MIPS ELF ABI
- executables. FIXME: At the moment, we default to always generating
- Irix 5 executables. */
+/* The level of IRIX compatibility we're striving for. */
-#define SGI_COMPAT(abfd) (1)
+typedef enum {
+ ict_none,
+ ict_irix5,
+ ict_irix6
+} irix_compat_t;
+
+/* Nonzero if ABFD is using the N32 ABI. */
+
+#define ABI_N32_P(abfd) \
+ ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI2) != 0)
+
+/* What version of Irix we are trying to be compatible with. FIXME:
+ At the moment, we never generate "normal" MIPS ELF ABI executables;
+ we always use some version of Irix. */
+
+#define IRIX_COMPAT(abfd) \
+ (ABI_N32_P (abfd) ? ict_irix6 : ict_irix5)
+
+/* Whether we are trying to be compatible with IRIX at all. */
+
+#define SGI_COMPAT(abfd) \
+ (IRIX_COMPAT (abfd) != ict_none)
/* This structure is used to hold .got information when linking. It
is stored in the tdata field of the bfd_elf_section_data structure. */
@@ -5638,7 +5657,7 @@ mips_elf_relocate_section (output_bfd, info, input_bfd, input_section,
&& (r == bfd_reloc_undefined || r == bfd_reloc_overflow))
r = bfd_reloc_ok;
- if (SGI_COMPAT (abfd)
+ if (SGI_COMPAT (output_bfd)
&& scpt != NULL
&& (input_section->flags & SEC_ALLOC) != 0)
{