aboutsummaryrefslogtreecommitdiff
path: root/bfd/cpu-mips.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2002-03-14 10:38:31 +0000
committerAlan Modra <amodra@gmail.com>2002-03-14 10:38:31 +0000
commitc119f9b800af8b672753a3e557f3bda4f41ec826 (patch)
treea814c2c99307d71c1c328f88b7c2e7916d2248de /bfd/cpu-mips.c
parentc5096a3c51e518393452b94e9d04757f00935266 (diff)
downloadfsf-binutils-gdb-c119f9b800af8b672753a3e557f3bda4f41ec826.zip
fsf-binutils-gdb-c119f9b800af8b672753a3e557f3bda4f41ec826.tar.gz
fsf-binutils-gdb-c119f9b800af8b672753a3e557f3bda4f41ec826.tar.bz2
* cpu-mips.c (mips_compatible): New. Don't check bits_per_word.
(N): Use the above. * elflink.h (elf_bfd_final_link): Revert last change. Instead, ensure reloc size matches before calling elf_link_input_bfd. Add an assert to check reloc size when counting output relocs.
Diffstat (limited to 'bfd/cpu-mips.c')
-rw-r--r--bfd/cpu-mips.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/bfd/cpu-mips.c b/bfd/cpu-mips.c
index 888d863..10dd0b7 100644
--- a/bfd/cpu-mips.c
+++ b/bfd/cpu-mips.c
@@ -1,5 +1,5 @@
/* bfd back-end for mips support
- Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 2000
+ Copyright 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2002
Free Software Foundation, Inc.
Written by Steve Chamberlain of Cygnus Support.
@@ -23,6 +23,26 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "sysdep.h"
#include "libbfd.h"
+/* The default routine tests bits_per_word, which is wrong on mips as
+ mips word size doesn't correlate with reloc size. */
+
+const bfd_arch_info_type *
+mips_compatible (a, b)
+ const bfd_arch_info_type *a;
+ const bfd_arch_info_type *b;
+{
+ if (a->arch != b->arch)
+ return NULL;
+
+ if (a->mach > b->mach)
+ return a;
+
+ if (b->mach > a->mach)
+ return b;
+
+ return a;
+}
+
#define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT) \
{ \
BITS_WORD, /* bits in a word */ \
@@ -34,7 +54,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
PRINT, \
3, \
DEFAULT, \
- bfd_default_compatible, \
+ mips_compatible, \
bfd_default_scan, \
NEXT, \
}