svn commit: r219648 - in stable/8/gnu/usr.bin: binutils/ld cc/cc_tools

Dimitry Andric dim at FreeBSD.org
Mon Mar 14 22:51:52 UTC 2011


Author: dim
Date: Mon Mar 14 22:51:51 2011
New Revision: 219648
URL: http://svn.freebsd.org/changeset/base/219648

Log:
  Partially MFC r209867 and r215439, to provide rudimentary support for
  linking i386 (32 bit) executables on amd64, using gcc's -m32 option.
  
  r209867 introduces the needed multilib options to gcc's multilib.h, but
  was originally intended just for powerpc64.
  
  r215439 teaches the linker to search in /usr/lib32 for elf_i386_fbsd
  output, and amends r209867 to apply to amd64 too.
  
  NOTE: this MFC does NOT provide full support for compiling and linking
  all existing 32 bit programs on amd64, since /usr/include/machine still
  contains amd64-specific headers.  Though simple "Hello World" type
  programs work, anything relying on machine-specific types might fail in
  various interesting ways.  You have been warned. :)
  
  MFC r209867:
  Teach our toolchain how to generate 64-bit PowerPC binaries. This fixes
  a variety of bugs in binutils related to handling of 64-bit PPC ELF,
  provides a GCC configuration for 64-bit PowerPC on FreeBSD, and
  associated build systems tweaks.
  
  Obtained from:	projects/ppc64
  
  MFC r215439:
  Let gcc and ld know where to find 32 bit libraries on amd64.
  
  Reviewed by:	arch@
  Approved by:	kib (mentor)

Modified:
  stable/8/gnu/usr.bin/binutils/ld/Makefile.amd64
  stable/8/gnu/usr.bin/cc/cc_tools/Makefile
Directory Properties:
  stable/8/gnu/usr.bin/binutils/ld/   (props changed)
  stable/8/gnu/usr.bin/cc/cc_tools/   (props changed)

Modified: stable/8/gnu/usr.bin/binutils/ld/Makefile.amd64
==============================================================================
--- stable/8/gnu/usr.bin/binutils/ld/Makefile.amd64	Mon Mar 14 22:42:41 2011	(r219647)
+++ stable/8/gnu/usr.bin/binutils/ld/Makefile.amd64	Mon Mar 14 22:51:51 2011	(r219648)
@@ -12,7 +12,7 @@ e${NATIVE_EMULATION}.c: emulparams/${NAT
 	    ${NATIVE_EMULATION} "" no ${NATIVE_EMULATION} ${TARGET_TUPLE}
 
 X86_EMULATION=	elf_i386_fbsd
-_i386_path=	\"${TOOLS_PREFIX}/usr/lib/i386\"
+_i386_path=	\"${TOOLS_PREFIX}/usr/lib32\"
 EMS+=		${X86_EMULATION}
 .for ext in ${ELF_SCR_EXT}
 LDSCRIPTS+=	${X86_EMULATION}.${ext}

Modified: stable/8/gnu/usr.bin/cc/cc_tools/Makefile
==============================================================================
--- stable/8/gnu/usr.bin/cc/cc_tools/Makefile	Mon Mar 14 22:42:41 2011	(r219647)
+++ stable/8/gnu/usr.bin/cc/cc_tools/Makefile	Mon Mar 14 22:51:51 2011	(r219648)
@@ -303,12 +303,22 @@ GENSRCS+=	gcov-iov.h
 
 # Multilib config file
 multilib.h:
+.if ${TARGET_ARCH} == "amd64"
+	echo 'static const char *const multilib_raw[] = { \
+	    ". !m64 !m32;", \
+	    "64:../lib m64 !m32;", \
+	    "32:../lib32 !m64 m32;", NULL };'			> ${.TARGET}
+	echo 'static const char *const multilib_matches_raw[] = { \
+	    "m64 m64;", "m32 m32;", NULL };'			>> ${.TARGET}
+	echo 'static const char *multilib_options = "m64/m32";'	>> ${.TARGET}
+.else
 	echo 'static const char *const multilib_raw[] = { \
 	    ". ;", NULL };'					> ${.TARGET}
 	echo 'static const char *const multilib_matches_raw[] = { \
 	    NULL };'						>> ${.TARGET}
-	echo 'static const char *multilib_extra = "";'		>> ${.TARGET}
 	echo 'static const char *multilib_options = "";'	>> ${.TARGET}
+.endif
+	echo 'static const char *multilib_extra = "";'		>> ${.TARGET}
 	echo 'static const char *const multilib_exclusions_raw[] = { \
 	    NULL };'						>> ${.TARGET}
 


More information about the svn-src-stable-8 mailing list