Date: Sat, 12 Apr 2008 20:17:12 GMT From: Warner Losh <imp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 139929 for review Message-ID: <200804122017.m3CKHCON005574@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=139929 Change 139929 by imp@imp_lighthouse on 2008/04/12 20:16:21 Move from sgi mips stuff to trad mips stuff. The formats are nearly identical, but tradmips is what Linux, NetBSD and OpenBSD all use. This also adds support to generate n32 and 64 (aka n64) ABI binaries, but there's a lot of work needed to make these work (including some kernel work). Binaries generated with the 32 ABI (aka o32) seem to work. Hopefully, this won't reveal other, nastier bugs like the "second identical string" bug we hit in gas a while back. Affected files ... .. //depot/projects/mips2-jnpr/src/contrib/binutils/bfd/config.bfd#2 edit .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32bmip.sh#2 edit .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32bmipn32-defs.sh#1 add .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32bmipn32.sh#2 edit .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32btsmip.sh#1 add .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32btsmipn32.sh#1 add .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32ltsmip.sh#1 add .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32ltsmipn32.sh#1 add .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf64btsmip.sh#1 add .. //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf64ltsmip.sh#1 add .. //depot/projects/mips2-jnpr/src/contrib/gcc/config/mips/freebsd.h#2 edit .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/as/mips-freebsd/itbl-cpu.h#2 edit .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/as/mips-freebsd/targ-cpu.h#2 edit .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/Makefile.arm#2 edit .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/Makefile.mips#2 edit .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/elf32btsmip_fbsd.sh#1 add .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/elf32ltsmip_fbsd.sh#1 add .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/elf64btsmip_fbsd.sh#1 add .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/elf64ltsmip_fbsd.sh#1 add .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/ldgram.c#1 add .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/ldgram.h#1 add .. //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/libbfd/Makefile.mips#3 edit Differences ... ==== //depot/projects/mips2-jnpr/src/contrib/binutils/bfd/config.bfd#2 (text+ko) ==== @@ -769,8 +769,8 @@ targ_selvecs="bfd_elf32_bigmips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_little_vec ecoff_big_vec" ;; mips*-*-freebsd*) - targ_defvec=bfd_elf32_bigmips_vec - targ_selvecs="bfd_elf32_littlemips_vec bfd_elf64_bigmips_vec bfd_elf64_littlemips_vec ecoff_big_vec ecoff_little_vec" + targ_defvec=bfd_elf32_tradbigmips_vec + targ_selvecs="bfd_elf32_tradlittlemips_vec bfd_elf32_ntradbigmisp_vec bfd_elf32_ntradlittlemips_vec bfd_elf64_tradbigmips_vec bfd_elf64_tradlittlemips_vec ecoff_big_vec ecoff_little_vec" ;; mips*-*-netbsd*) targ_defvec=bfd_elf32_bigmips_vec ==== //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32bmip.sh#2 (text+ko) ==== @@ -10,6 +10,7 @@ MAXPAGESIZE=0x40000 COMMONPAGESIZE=0x1000 NONPAGED_TEXT_START_ADDR=0x0400000 +SHLIB_TEXT_START_ADDR=0x5ffe0000 test -n "${EMBEDDED}" || TEXT_DYNAMIC= INITIAL_READONLY_SECTIONS=" .reginfo ${RELOCATING-0} : { *(.reginfo) } ==== //depot/projects/mips2-jnpr/src/contrib/binutils/ld/emulparams/elf32bmipn32.sh#2 (text+ko) ==== @@ -2,6 +2,7 @@ OUTPUT_FORMAT="elf32-nbigmips" BIG_OUTPUT_FORMAT="elf32-nbigmips" LITTLE_OUTPUT_FORMAT="elf32-nlittlemips" +SHLIB_TEXT_START_ADDR=0x5ffe0000 COMMONPAGESIZE=0x1000 # IRIX6 defines these symbols. 0x34 is the size of the ELF header. ==== //depot/projects/mips2-jnpr/src/contrib/gcc/config/mips/freebsd.h#2 (text+ko) ==== @@ -33,6 +33,8 @@ #define MACHINE_TYPE "FreeBSD/mipsel ELF" #endif +#define MIPS_ABI_DEFAUL ABI_32 + #ifdef LIB_SPEC #undef LIB_SPEC #define LIB_SPEC FBSD_LIB_SPEC ==== //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/as/mips-freebsd/itbl-cpu.h#2 (text+ko) ==== @@ -15,3 +15,5 @@ /* Allow use of E_MIPS_ABI_O32 on MIPS targets. */ #define USE_E_MIPS_ABI_O32 1 +/* Use traditional mips */ +#define TE_TMIPS 1 ==== //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/as/mips-freebsd/targ-cpu.h#2 (text+ko) ==== @@ -1,2 +1,4 @@ /* $FreeBSD$ */ +#define TE_TMIPS 1 + #include "tc-mips.h" ==== //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/Makefile.arm#2 (text+ko) ==== @@ -1,5 +1,6 @@ # $FreeBSD: src/gnu/usr.bin/binutils/ld/Makefile.arm,v 1.3 2006/09/14 07:44:05 imp Exp $ +# xxxIMPxxx: should use arm and armeb for this, ala netbsd. .if defined(TARGET_BIG_ENDIAN) NATIVE_EMULATION= armelfb_fbsd .else ==== //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/ld/Makefile.mips#2 (text+ko) ==== @@ -1,14 +1,24 @@ # $FreeBSD$ -NATIVE_EMULATION= elf32bmip_fbsd +#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 +.else +NATIVE_EMULATION=elf${_sz}ltsmip_fbsd +.endif SRCS+= e${NATIVE_EMULATION}.c CLEANFILES+= e${NATIVE_EMULATION}.c -e${NATIVE_EMULATION}.c: emulparams/${NATIVE_EMULATION}.sh emultempl/elf32.em \ +# nb: elf32 handles both elf32 and elf64 targets +e${NATIVE_EMULATION}.c: ${.CURDIR}/${NATIVE_EMULATION}.sh emultempl/elf32.em \ scripttempl/elf.sc genscripts.sh stringify.sed sh ${.CURDIR}/genscripts.sh ${SRCDIR}/ld ${LIBSERACHPATH} \ ${TOOLS_PREFIX}/usr \ ${HOST} ${TARGET_TUPLE} ${TARGET_TUPLE} \ - ${NATIVE_EMULATION} "" no ${NATIVE_EMULATION} ${TARGET_TUPLE} + ${NATIVE_EMULATION} "" no ${NATIVE_EMULATION} ${TARGET_TUPLE} \ + ${.CURDIR}/${NATIVE_EMULATION}.sh ==== //depot/projects/mips2-jnpr/src/gnu/usr.bin/binutils/libbfd/Makefile.mips#3 (text+ko) ==== @@ -1,6 +1,7 @@ # $FreeBSD$ -DEFAULT_VECTOR= bfd_elf32_bigmips_vec +#xxxIMPxxx: endian and size +DEFAULT_VECTOR= bfd_elf32_tradbigmips_vec SRCS+= coff-mips.c \ cpu-mips.c \ @@ -8,6 +9,7 @@ ecofflink.c \ elf32.c \ elf64.c \ + elfn32-mips.c \ elf32-mips.c \ elf64-mips.c \ elfxx-mips.c \ @@ -15,7 +17,11 @@ elf64-target.h \ elflink.c -VECS= ${DEFAULT_VECTOR} \ - bfd_elf32_littlemips_vec \ - bfd_elf64_bigmips_vec \ - bfd_elf64_littlemips_vec +VECS= bfd_elf32_tradbigmips_vec \ + bfd_elf32_tradlittlemips_vec \ + bfd_elf32_ntradbigmips_vec \ + bfd_elf32_ntradlittlemips_vec \ + bfd_elf64_tradbigmips_vec \ + bfd_elf64_tradlittlemips_vec \ + ecoff_little_vec \ + ecoff_big_vec
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200804122017.m3CKHCON005574>