Page MenuHomeFreeBSD

D9032.id.diff
No OneTemporary

D9032.id.diff

Index: head/Makefile.inc1
===================================================================
--- head/Makefile.inc1
+++ head/Makefile.inc1
@@ -606,7 +606,7 @@
.endif
.if ${MK_LIB32} != "no" && (${TARGET_ARCH} == "amd64" || \
- ${TARGET_ARCH} == "powerpc64")
+ ${TARGET_ARCH} == "powerpc64") || ${TARGET_ARCH:Mmips64*} != ""
LIBCOMPAT= 32
.include "Makefile.libcompat"
.elif ${MK_LIBSOFT} != "no" && ${TARGET_ARCH} == "armv6"
Index: head/Makefile.libcompat
===================================================================
--- head/Makefile.libcompat
+++ head/Makefile.libcompat
@@ -4,8 +4,7 @@
__<${_this:T}>__:
# Makefile for the compatibility libraries.
-# - 32-bit compat libraries on PowerPC and AMD64.
-# could also be for mips, but that doesn't work today.
+# - 32-bit compat libraries on MIPS, PowerPC, and AMD64.
# -------------------------------------------------------------------
# 32 bit world
@@ -34,6 +33,21 @@
LIB32WMAKEFLAGS= \
LD="${XLD} -m elf32ppc_fbsd" \
OBJCOPY="${XOBJCOPY}"
+
+.elif ${TARGET_ARCH:Mmips64*} != ""
+.if empty(TARGET_CPUTYPE)
+LIB32CPUFLAGS= -march=mips3
+.else
+LIB32CPUFLAGS= -march=${TARGET_CPUTYPE}
+.endif
+LIB32CPUFLAGS+= -mabi=32
+LIB32WMAKEENV= MACHINE=mips MACHINE_ARCH=mips
+.if ${TARGET_ARCH:Mmips64el*} != ""
+LIB32WMAKEFLAGS= LD="${XLD} -m elf32ltsmip_fbsd"
+.else
+LIB32WMAKEFLAGS= LD="${XLD} -m elf32btsmip_fbsd"
+.endif
+LIB32WMAKEFLAGS+= OBJCOPY="${XOBJCOPY}"
.endif
Index: head/gnu/lib/libgcc/Makefile
===================================================================
--- head/gnu/lib/libgcc/Makefile
+++ head/gnu/lib/libgcc/Makefile
@@ -133,7 +133,8 @@
.if ${TARGET_CPUARCH} == mips
LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c
# ABIs other than o32 need this
-.if ${TARGET_ARCH:Mmips64*} != "" || ${TARGET_ARCH:Mmipsn32*} != ""
+.if (${TARGET_ARCH:Mmips64*} != "" || ${TARGET_ARCH:Mmipsn32*} != "") && \
+ !defined(COMPAT_32BIT)
LIB2FUNCS_EXTRA+= floatdidf.c fixunsdfsi.c
LIB2FUNCS_EXTRA+= floatdisf.c floatundidf.c
LIB2FUNCS_EXTRA+= fixsfdi.c floatundisf.c
Index: head/gnu/usr.bin/binutils/ld/Makefile.mips
===================================================================
--- head/gnu/usr.bin/binutils/ld/Makefile.mips
+++ head/gnu/usr.bin/binutils/ld/Makefile.mips
@@ -8,6 +8,7 @@
.if ${TARGET_ARCH:Mmips64*} != ""
NATIVE_EMULATION=elf64${_EMULATION_ENDIAN}tsmip_fbsd
+LIBSEARCHPATH.elf32${_EMULATION_ENDIAN}tsmip_fbsd=\"=/usr/lib32\"
.elif ${TARGET_ARCH:Mmipsn32*} != ""
NATIVE_EMULATION=elf32${_EMULATION_ENDIAN}tsmipn32_fbsd
.else
Index: head/sys/mips/conf/MALTA64
===================================================================
--- head/sys/mips/conf/MALTA64
+++ head/sys/mips/conf/MALTA64
@@ -11,3 +11,5 @@
makeoptions ARCH_FLAGS="-march=mips64 -mabi=64"
makeoptions KERNLOADADDR=0xffffffff80100000
+
+options COMPAT_FREEBSD32 # Compatible with o32 binaries

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 4, 6:44 PM (5 h, 16 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30835221
Default Alt Text
D9032.id.diff (2 KB)

Event Timeline