amd64/102996: powerpc cross-build fails on amd64 host, works fine on i386

Peter Grehan grehan at FreeBSD.org
Thu Sep 7 15:00:35 PDT 2006


>Number:         102996
>Category:       amd64
>Synopsis:       powerpc cross-build fails on amd64 host, works fine on i386
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    freebsd-amd64
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Sep 07 22:00:33 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Peter Grehan
>Release:        6.0
>Organization:
>Environment:
FreeBSD *redacted* 6.0-RELEASE FreeBSD 6.0-RELEASE #0: Wed Nov  2 19:07:38 UTC 2005     root at rat.samsco.home:/usr/obj/usr/src/sys/GENERIC  amd64
>Description:
A powerpc build (any release) fails on amd64. The same tree on a 32-bit host works fine. I believe it will fail on other 64-bit arches though I haven't verified this.

>How-To-Repeat:
make TARGET_ARCH=powerpc buildworld
>Fix:
I applied the following diff supplied by Ruslan Ermilov: worked fine.

%%%
Index: Makefile
===================================================================
RCS file: /home/ncvs/src/gnu/usr.bin/binutils/libbfd/Makefile,v
retrieving revision 1.33
diff -u -r1.33 Makefile
--- Makefile	24 Oct 2004 15:32:25 -0000	1.33
+++ Makefile	26 Aug 2006 00:48:26 -0000
@@ -48,6 +48,12 @@
 CFLAGS+= -DSELECT_VECS="${SELVEC}"
 CFLAGS+= -DDEFAULT_VECTOR=${DEFAULT_VECTOR}
 
+.if ${TARGET_ARCH:M*64}
+CFLAGS+= -DTARGET_64BIT=1
+.else
+CFLAGS+= -DTARGET_64BIT=0
+.endif
+
 # XXX:DEO should grab BFD_VERSION_DATE from ${VERSION}...
 bfdver.h: Makefile
 	echo '#define BFD_VERSION	215000000'	> ${.TARGET}
Index: bfd.h
===================================================================
RCS file: /home/ncvs/src/gnu/usr.bin/binutils/libbfd/bfd.h,v
retrieving revision 1.3
diff -u -r1.3 bfd.h
--- bfd.h	8 Jul 2004 17:05:32 -0000	1.3
+++ bfd.h	26 Aug 2006 00:44:29 -0000
@@ -57,15 +57,18 @@
 #define BFD_ARCH_SIZE 64
 
 
-#if defined(__i386__) || defined(__powerpc__) || defined(__arm__)
 /* The word size of the default bfd target.  */
+#if TARGET_64BIT
+#define BFD_DEFAULT_TARGET_SIZE 64
+#else
 #define BFD_DEFAULT_TARGET_SIZE 32
+#endif
+
+#if defined(__i386__) || defined(__powerpc__) || defined(__arm__)
 #define BFD_HOST_64BIT_LONG 0
 #define BFD_HOST_64_BIT long long
 #define BFD_HOST_U_64_BIT unsigned long long
 #elif defined(__alpha__) || defined(__sparc64__) || defined(__amd64__) || defined(__ia64__)
-/* The word size of the default bfd target.  */
-#define BFD_DEFAULT_TARGET_SIZE 64
 #define BFD_HOST_64BIT_LONG 1
 #define BFD_HOST_64_BIT long
 #define BFD_HOST_U_64_BIT unsigned long
%%%


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-amd64 mailing list