atom feed7 messages in org.freebsd.freebsd-amd64amd64/102996: powerpc cross-build fai...
FromSent OnAttachments
Peter GrehanSep 7, 2006 10:00 pm 
John BaldwinSep 8, 2006 3:22 pm 
John BaldwinSep 8, 2006 3:32 pm 
Peter GrehanSep 8, 2006 9:04 pm 
Peter GrehanSep 8, 2006 9:10 pm 
Ruslan ErmilovSep 14, 2006 12:50 am 
Ruslan ErmilovSep 14, 2006 1:07 am 
Subject:amd64/102996: powerpc cross-build fails on amd64 host, works fine on i386
From:Ruslan Ermilov (ru@FreeBSD.org)
Date:Sep 14, 2006 12:50:07 am
List:org.freebsd.freebsd-amd64

The following reply was made to PR amd64/102996; it has been noted by GNATS.

From: Ruslan Ermilov <ru@FreeBSD.org> To: bug-@FreeBSD.org Cc: John Baldwin <jh@FreeBSD.org>, Peter Grehan <gre@FreeBSD.org> Subject: Re: amd64/102996: powerpc cross-build fails on amd64 host, works fine
on i386 Date: Thu, 14 Sep 2006 11:49:37 +0400

On Fri, Sep 08, 2006 at 11:10:52AM -0400, John Baldwin wrote:

On Thursday 07 September 2006 17:51, Peter Grehan wrote:

%%% 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 +

This doesn't match alpha (though that only matters if you MFC this). Seems that a more general purpose solution would be to test TARGET_ARCH and use that to set TARGET properties

I just quickly prototyped the patch back then. How's this instead?

%%% Index: Makefile =================================================================== RCS file: /home/ncvs/src/gnu/usr.bin/binutils/libbfd/Makefile,v retrieving revision 1.33 diff -u -p -u -r1.33 Makefile --- Makefile 24 Oct 2004 15:32:25 -0000 1.33 +++ Makefile 14 Sep 2006 07:45:19 -0000 @@ -48,6 +48,14 @@ SELVEC+= ,&${_v} CFLAGS+= -DSELECT_VECS="${SELVEC}" CFLAGS+= -DDEFAULT_VECTOR=${DEFAULT_VECTOR}

+.if ${DEFAULT_VECTOR:Mbfd_elf64_*} +CFLAGS+= -DTARGET_64BIT=1 +.elif ${DEFAULT_VECTOR:Mbfd_elf32_*} +CFLAGS+= -DTARGET_64BIT=0 +.else +.error unknown DEFAULT_VECTOR=${DEFAULT_VECTOR} +.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 -p -u -r1.3 bfd.h --- bfd.h 8 Jul 2004 17:05:32 -0000 1.3 +++ bfd.h 14 Sep 2006 07:34:28 -0000 @@ -57,15 +57,18 @@ extern "C" { #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 %%%

(i.e. the bug seems to be that it's setting TARGET properties based on the host arch, which is wrong).

Exactly!