diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-06-26 21:17:49 +0000 |
---|---|---|
committer | Mark Mitchell <mark@codesourcery.com> | 1999-06-26 21:17:49 +0000 |
commit | a94a7c1c32429ce33f5ab00ce1266529c5ee95cd (patch) | |
tree | 137e60c08d0c5bef46b07101b2ed4a842b2bef89 /bfd/elf32-mips.c | |
parent | 827c01493eb77e7e1f7af61514d971447a97ae51 (diff) | |
download | gdb-a94a7c1c32429ce33f5ab00ce1266529c5ee95cd.zip gdb-a94a7c1c32429ce33f5ab00ce1266529c5ee95cd.tar.gz gdb-a94a7c1c32429ce33f5ab00ce1266529c5ee95cd.tar.bz2 |
* 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.
Diffstat (limited to 'bfd/elf32-mips.c')
-rw-r--r-- | bfd/elf32-mips.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index b4de2e9..c93f802 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) { |