aboutsummaryrefslogtreecommitdiff
path: root/gnu/usr.bin/binutils
diff options
context:
space:
mode:
authorJuli Mallett <jmallett@FreeBSD.org>2010-06-02 11:06:03 +0000
committerJuli Mallett <jmallett@FreeBSD.org>2010-06-02 11:06:03 +0000
commit5619a3e4bf36620134740c06f87fa30eb22c841d (patch)
tree37acadcf4e976e87c154f5e994d5f484e3aa0770 /gnu/usr.bin/binutils
parente3303e900e033aa21cf40c7bd23def0834782911 (diff)
Notes
Diffstat (limited to 'gnu/usr.bin/binutils')
-rw-r--r--gnu/usr.bin/binutils/Makefile.inc03
-rw-r--r--gnu/usr.bin/binutils/ld/Makefile.mips17
-rw-r--r--gnu/usr.bin/binutils/libbfd/Makefile.mips18
-rw-r--r--gnu/usr.bin/binutils/libbfd/bfd.h2
4 files changed, 33 insertions, 7 deletions
diff --git a/gnu/usr.bin/binutils/Makefile.inc0 b/gnu/usr.bin/binutils/Makefile.inc0
index 945c9339b4e4..5999a2e77661 100644
--- a/gnu/usr.bin/binutils/Makefile.inc0
+++ b/gnu/usr.bin/binutils/Makefile.inc0
@@ -23,7 +23,8 @@ RELSRC= ${RELTOP}/../../../contrib/binutils
SRCDIR= ${.CURDIR}/${RELSRC}
.if ${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "i386" || \
- ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "mips"
+ ${TARGET_ARCH} == "powerpc" || \
+ (${TARGET_ARCH} == "mips" && (!defined(TARGET_ABI) || ${TARGET_ABI} != "n64"))
CFLAGS+= -DBFD_DEFAULT_TARGET_SIZE=32
.else
CFLAGS+= -DBFD_DEFAULT_TARGET_SIZE=64
diff --git a/gnu/usr.bin/binutils/ld/Makefile.mips b/gnu/usr.bin/binutils/ld/Makefile.mips
index d1e25ef89ca9..e0d0582df617 100644
--- a/gnu/usr.bin/binutils/ld/Makefile.mips
+++ b/gnu/usr.bin/binutils/ld/Makefile.mips
@@ -1,15 +1,22 @@
# $FreeBSD$
-#xxxIMPxxx: size?
#xxxIMPxxx: TARGET_BIG_ENDIAN is lame. We should use the netbsd convention
# of mipsel and mips.
-_sz?=32
-.if defined(TARGET_BIG_ENDIAN)
-NATIVE_EMULATION=elf${_sz}btsmip_fbsd
+.if !defined(TARGET_BIG_ENDIAN)
+_EMULATION_ENDIAN=l
.else
-NATIVE_EMULATION=elf${_sz}ltsmip_fbsd
+_EMULATION_ENDIAN=b
.endif
+.if defined(TARGET_ABI) && ${TARGET_ABI} != "o32"
+.if ${TARGET_ABI} == "n32"
+NATIVE_EMULATION=elf32${_EMULATION_ENDIAN}tsmipn32_fbsd
+.elif ${TARGET_ABI} == "n64"
+NATIVE_EMULATION=elf64${_EMULATION_ENDIAN}tsmip_fbsd
+.endif
+.endif
+NATIVE_EMULATION?=elf32${_EMULATION_ENDIAN}tsmip_fbsd
+
MIPS_ABIS=elf32btsmip_fbsd elf32ltsmip_fbsd elf64btsmip_fbsd elf64ltsmip_fbsd \
elf32btsmipn32_fbsd elf32ltsmipn32_fbsd
.for abi in ${MIPS_ABIS}
diff --git a/gnu/usr.bin/binutils/libbfd/Makefile.mips b/gnu/usr.bin/binutils/libbfd/Makefile.mips
index 6f03eb7e796f..cb1e370e34d2 100644
--- a/gnu/usr.bin/binutils/libbfd/Makefile.mips
+++ b/gnu/usr.bin/binutils/libbfd/Makefile.mips
@@ -1,8 +1,24 @@
# $FreeBSD$
-#xxxIMPxxx: endian and size
+#xxxIMPxxx: TARGET_BIG_ENDIAN is lame. We should use the netbsd convention
+# of mipsel and mips.
+.if !defined(TARGET_BIG_ENDIAN)
+_EMULATION_ENDIAN=little
+.else
+_EMULATION_ENDIAN=big
+.endif
+
DEFAULT_VECTOR= bfd_elf32_tradbigmips_vec
+.if defined(TARGET_ABI) && ${TARGET_ABI} != "o32"
+.if ${TARGET_ABI} == "n32"
+DEFAULT_VECTOR= bfd_elf32_ntrad${_EMULATION_ENDIAN}mips_vec
+.elif ${TARGET_ABI} == "n64"
+DEFAULT_VECTOR= bfd_elf64_trad${_EMULATION_ENDIAN}mips_vec
+.endif
+.endif
+DEFAULT_VECTOR?=bfd_elf32_trad${_EMULATION_ENDIAN}mips_vec
+
SRCS+= coff-mips.c \
cpu-mips.c \
ecoff.c \
diff --git a/gnu/usr.bin/binutils/libbfd/bfd.h b/gnu/usr.bin/binutils/libbfd/bfd.h
index 6b152d53e882..5812cebbea38 100644
--- a/gnu/usr.bin/binutils/libbfd/bfd.h
+++ b/gnu/usr.bin/binutils/libbfd/bfd.h
@@ -1546,10 +1546,12 @@ enum bfd_architecture
#define bfd_mach_mips6000 6000
#define bfd_mach_mips7000 7000
#define bfd_mach_mips8000 8000
+#define bfd_mach_mips9000 9000
#define bfd_mach_mips10000 10000
#define bfd_mach_mips12000 12000
#define bfd_mach_mips16 16
#define bfd_mach_mips5 5
+#define bfd_mach_mips_octeon 6502
#define bfd_mach_mips_sb1 12310201 /* octal 'SB', 01 */
#define bfd_mach_mipsisa32 32
#define bfd_mach_mipsisa32r2 33