Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 Apr 2015 17:04:54 -0700
From:      Warner Losh <imp@bsdimp.com>
To:        Mark Millard <markmi@dsl-only.net>
Cc:        FreeBSD Toolchain <freebsd-toolchain@freebsd.org>, FreeBSD PowerPC ML <freebsd-ppc@freebsd.org>
Subject:   Re: Shorter report: powerpc64-xtoolchain-gcc use fails from powerpc (non-64)
Message-ID:  <83AB15DC-4B96-489D-A74B-84A552050785@bsdimp.com>
In-Reply-To: <7AF12D5F-F4A0-429E-AEAE-4AEF2D35FE31@dsl-only.net>
References:  <BB07709E-A5D3-458A-8ED7-61E64103A43C@dsl-only.net> <B49E8B91-B8C2-4F0C-9662-8814C16041A4@bsdimp.com> <7AF12D5F-F4A0-429E-AEAE-4AEF2D35FE31@dsl-only.net>

next in thread | previous in thread | raw e-mail | index | archive | help

--Apple-Mail=_74D210E6-0D36-42FC-A42F-78A09CB89345
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8


> On Apr 1, 2015, at 4:37 PM, Mark Millard <markmi@dsl-only.net> wrote:
>=20
>=20
> On 2015-Apr-1, at 02:49 PM, Warner Losh <imp at bsdimp.com> wrote:
>=20
>=20
>>> On Apr 1, 2015, at 2:44 PM, Mark Millard <markmi@dsl-only.net> =
wrote:
>>>=20
>>> Attempting to use CROSS_TOOLCHAIN=3Dpowerpc64-gcc on powerpc =
(non-64) 11.0-CURRENT with TARGET_ARCH=3Dpowerpc64 gets:
>>>=20
>>>> --- crti.o ---
>>>> gcc -O2 -pipe   -I/usr/srcC/lib/csu/powerpc64/../common  =
-I/usr/srcC/lib/csu/powerpc64/../../libc/include  -mlongcall -std=3Dgnu99 =
 -Wsystem-headers -Wall -Wno-format-y2k -W -Wno-unused-parameter =
-Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type =
-Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wunused-parameter =
-Wcast-align -Wchar-subscripts -Winline -Wnested-externs =
-Wredundant-decls -Wold-style-definition -Wno-pointer-sign    -c =
/usr/srcC/lib/csu/powerpc64/crti.S
>>>> ...
>>>> /usr/srcC/lib/csu/powerpc64/crti.S: Assembler messages:
>>>> /usr/srcC/lib/csu/powerpc64/crti.S:35: Error: junk at end of line, =
first unrecognized character is `@'
>>>> /usr/srcC/lib/csu/powerpc64/crti.S:51: Error: junk at end of line, =
first unrecognized character is `@'
>>>> *** [crti.o] Error code 1
>>>>=20
>>>=20
>>>=20
>>>=20
>>> Read below only for analysis.
>>>=20
>>>=20
>>>=20
>>> First I'll deal with the error messages. Then I'll deal with the =
"gcc".
>>>=20
>>> The lines of crti.S in question are:
>>>=20
>>>>    .quad   .L._init,.TOC.@tocbase,0
>>>> ...
>>>>    .quad   .L._fini,.TOC.@tocbase,0
>>>=20
>>> The error messages are because __powerpc64__ is not defined when =
machine/asm.h is included so the wrong definition is used for =
_ENTRY(=E2=80=A6):
>>=20
>> The gcc port needs to be fixed, with changes fed upstream.
>=20
> The head/lib/csu/powerpc64/Makefile generated "gcc" as the command =
(see above). That in turn ended up as using: /usr/bin/gcc , which is the =
FreeBSD 4.2.1 system gcc.
>=20
> So no port was involved. That may be the (or a) problem: ${XCC} was =
not being used.

That=E2=80=99s an interesting hole. It should be.

>>>> #ifdef __powerpc64__
>>>> ...
>>>> #define _ENTRY(name) \
>>>>     .section ".text"; \
>>>>     .p2align 2; \
>>>>     .globl  name; \
>>>>     .section ".opd","aw"; \
>>>>     .p2align 3; \
>>>>     name: \
>>>>     .quad   DOT_LABEL(name),.TOC.@tocbase,0; \
>>>>     .previous; \
>>>>     .p2align 4; \
>>>>     TYPE_ENTRY(name) \
>>>> DOT_LABEL(name):
>>>> ...
>>>> #else /* !__powerpc64__ */
>>>> #define _ENTRY(name) \
>>>>     .text; \
>>>>     .p2align 4; \
>>>>     .globl  name; \
>>>>     .type   name,@function; \
>>>>     name:
>>>> #define _END(name)
>>>> #endif /* __powerpc64__ */
>>>=20
>>> The (powerpc64 specific) Makefile may need to force a 64-bit usage =
(-m64 ?), presuming that such is supported from the 32 bit environment.
>>=20
>> Generally, we=E2=80=99ve not added those kinds of flags to the =
command line. There=E2=80=99s many subtle issues in the tree trying to =
do that=E2=80=A6
>>=20
>> Warner
>=20
> =46rom a powerpc (non-64) 11.0-CURRENT boot is the following supposed =
to work by producing a powerpc64 appropriate result (no CROSS_TOOLCHAIN =
for this question)?
>=20
> make buildworld buildkernel KERNCONF=3DGENERIC64 TARGET=3Dpowerpc =
TARGET_ARCH=3Dpowerpc64

This should work, modulo broken compilers.

> The standard v4.2.1 /usr/bin/gcc in a powerpc context (non-64) for =
that make command would produce files for TARGET_ARCH=3Dpowerpc unless =
the command lines specified otherwise.

Ah, so it is a =E2=80=98cross build=E2=80=99 situation...

> Notably the build environment is picking powerpc64 specific paths when =
appropriate, such as:
>=20
> lib/csu/powerpc64/Makefile
>=20
> so that specific Makefile is not likely to be used when powerpc64 =
handling is inappropriate, even executed from from a powerpc (non-64) =
context. A different path (and so a distinct Makefile) would be used for =
KERNCONF=3DGENERIC TARGET_ARCH=3Dpowerpc .

The hack in that Makefile likely needs to be revisited.

Warner


--Apple-Mail=_74D210E6-0D36-42FC-A42F-78A09CB89345
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP using GPGMail

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIcBAEBCgAGBQJVHIemAAoJEGwc0Sh9sBEAQOQQAKbYddNkWIRGpykQiDAEl8eh
atc2rzxu+SLUh+KVKpphXf4VJaCaE6/ssj+ddwTFpVHUPRVFaqHoxSgZ5A3GYWZD
/Fs2H4/4Bf0h4ztS9s2hgx169NGdvyzvRVFXS+Fwb2AKjU6ybm9eD8iMHfGrPv0D
xwJvBWb5glCV7GzW0oO/ScUhpN2nzBzHi0tEnfvyR4ZT5l5n8vv5pJiH8jSnpb9i
TaWNTKOuGiYIgEKaTlZHnGhE3IQk/Jpl05LsFMQNBbyPOr5gESe95lqssWeZi7IF
693cTdtX64hhxUOzL/V6HTSQYr6NDIpxs69tpUB2Y/r7Ay9s5clFv0uNWt/AmWVw
g7wRMql4sIrtmmElXKtjihyuo8IAvouJccmoszDK3Oz4T9YHeFDnyHTrrUuFDjzp
bMD8dypsLJen1+mxlhIa2Pfhp/HxUCcjhFoeVi+azyM6vpC3TqLP8x0xn94ZcIO5
AMjH8xDbBTtWJSB9WXezAUQ/mIZckAO9VJMmx+7hxEDEY4PgSK9/I/iXDLRleOwo
9mtmQlLEjPE2Vvi241jLI/6+pPHSywNG0goXBcZ4ZeyPUXAe8cF7Jv+M/zpxmAP2
ZFrSJyZWhjiErRBBwyaaDD9B0Zkh2FBNFAJ9a5okymrXBXvXZQ1XqvyvF6cIaKni
ItEuzwV5pYnM6aPvhIMA
=bo5E
-----END PGP SIGNATURE-----

--Apple-Mail=_74D210E6-0D36-42FC-A42F-78A09CB89345--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?83AB15DC-4B96-489D-A74B-84A552050785>