svn commit: r316622 - head/share/mk

John Baldwin jhb at FreeBSD.org
Fri Apr 7 20:02:02 UTC 2017


Author: jhb
Date: Fri Apr  7 20:02:01 2017
New Revision: 316622
URL: https://svnweb.freebsd.org/changeset/base/316622

Log:
  Explicitly set the desired MIPS ABI in toolchain flags.
  
  Specifically, set '-mabi=XX' in AFLAGS, CFLAGS, and LDFLAGS.  This permits
  building MIPS worlds and binaries with a toolchain whose default output
  does not match the desired TARGET_ARCH.
  
  _LDFLAGS (which is used with LD instead of with CC) required an update as
  LD does not accept the -mabi flags (so they must be stripped from LDFLAGS
  when generating _LDFLAGS).  For bare uses of LD (rather than linking via
  CC), the desired ABI must be set by setting an explicit linker emulation
  as done in r316514 for kernels and kernel modules.
  
  Reviewed by:	imp
  Sponsored by:	DARPA / AFRL
  Differential Revision:	https://reviews.freebsd.org/D10085

Modified:
  head/share/mk/bsd.cpu.mk
  head/share/mk/sys.mk

Modified: head/share/mk/bsd.cpu.mk
==============================================================================
--- head/share/mk/bsd.cpu.mk	Fri Apr  7 19:56:12 2017	(r316621)
+++ head/share/mk/bsd.cpu.mk	Fri Apr  7 20:02:01 2017	(r316622)
@@ -314,6 +314,19 @@ AFLAGS += -EB
 CFLAGS += -EB
 LDFLAGS += -EB
 . endif
+. if ${MACHINE_ARCH:Mmips64*} != ""
+AFLAGS+= -mabi=64
+CFLAGS+= -mabi=64
+LDFLAGS+= -mabi=64
+. elif ${MACHINE_ARCH:Mmipsn32*} != ""
+AFLAGS+= -mabi=n32
+CFLAGS+= -mabi=n32
+LDFLAGS+= -mabi=n32
+. else
+AFLAGS+= -mabi=32
+CFLAGS+= -mabi=32
+LDFLAGS+= -mabi=32
+. endif
 . if ${MACHINE_ARCH:Mmips*hf}
 CFLAGS += -mhard-float
 . else

Modified: head/share/mk/sys.mk
==============================================================================
--- head/share/mk/sys.mk	Fri Apr  7 19:56:12 2017	(r316621)
+++ head/share/mk/sys.mk	Fri Apr  7 20:02:01 2017	(r316622)
@@ -217,9 +217,12 @@ INSTALL		?=	install
 LEX		?=	lex
 LFLAGS		?=
 
+# LDFLAGS is for CC, _LDFLAGS is for LD.  Generate _LDFLAGS from
+# LDFLAGS by stripping -Wl, from pass-through arguments and dropping
+# compiler driver flags (e.g. -mabi=*) that conflict with flags to LD.
 LD		?=	ld
-LDFLAGS		?=				# LDFLAGS is for CC, 
-_LDFLAGS	=	${LDFLAGS:S/-Wl,//g}	# strip -Wl, for LD
+LDFLAGS		?=
+_LDFLAGS	=	${LDFLAGS:S/-Wl,//g:N-mabi=*}
 
 LINT		?=	lint
 LINTFLAGS	?=	-cghapbx


More information about the svn-src-head mailing list