public inbox for crossgcc@sourceware.org
 help / color / mirror / Atom feed
From: Thomas De Schampheleire <patrickdepinguin@gmail.com>
To: Alexey Neyman <stilor@att.net>
Cc: Cody P Schafer <dev@codyps.com>,
	"Yann E. MORIN" <yann.morin.1998@free.fr>,
		Ray Donnelly <mingw.android@gmail.com>,
	crossgcc maillist <crossgcc@sourceware.org>,
		Bryan Hundven <bryanhundven@gmail.com>
Subject: Re: Current state of multilib support (powerpc)
Date: Sat, 21 May 2016 19:46:00 -0000	[thread overview]
Message-ID: <CAAXf6LU2=uPZRyM1MUBSkLY+-sMRXoLXYWXPbDAFz6txQYJaHg@mail.gmail.com> (raw)
In-Reply-To: <573FF08B.5060209@att.net>

On Sat, May 21, 2016 at 7:22 AM, Alexey Neyman <stilor@att.net> wrote:
>
>
> On 05/19/2016 12:15 AM, Thomas De Schampheleire wrote:
>>
[..]
>>
>> I can reproduce the issue with the upstream config called 'T2080RDB'.
>> Excerpt from the log:
>>
>>
>> /foo/output/host/usr/bin/powerpc64-unknown-linux-gnu-gcc
>> -Wp,-MD,board/freescale/common/.fman.o.d  -nostdinc -isystem
>>
>> /foo/output/host/opt/ext-toolchain/bin/../lib/gcc/powerpc64-unknown-linux-gnu/4.9.3/include
>> -Iinclude  -I./arch/powerpc/include -I./board/isam_common
>> -I./board/freescale/t208xrdb -include ./include/linux/kconfig.h
>> -D__KERNEL__ -D__UBOOT__ -DCONFIG_SYS_TEXT_BASE=0xeff40000 -Wall
>> -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding
>> -Os -fno-stack-protector -g -fstack-usage -Wno-format-nonliteral
>> -Werror=date-time -D__powerpc__ -ffixed-r2 -Wa,-me500 -msoft-float
>> -mno-string -fno-delete-null-pointer-checks -mno-spe -fpic
>> -mrelocatable -ffunction-sections -fdata-sections -meabi -pipe
>> -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(fman)"
>> -D"KBUILD_MODNAME=KBUILD_STR(fman)" -c -o
>> board/freescale/common/fman.o board/freescale/common/fman.c
>>
>> /foo/output/host/usr/bin/powerpc64-unknown-linux-gnu-ld.bfd   -n   -r
>> -o board/freescale/common/built-in.o board/freescale/common/fman.o
>> board/freescale/common/vid.o board/freescale/common/sys_eeprom.o
>>
>> /foo/output/host/usr/bin/powerpc64-unknown-linux-gnu-ld.bfd:
>> Relocatable linking with relocations from format elf32-powerpc
>> (board/freescale/common/fman.o) to format elf64-powerpc
>> (board/freescale/common/built-in.o) is not supported
>> s
>>
>>
>> Be aware that I'm building with Buildroot, meaning that the compiler
>> (not linker) is wrapped. When calling that wrapper, the real compiler
>> is called with following extra options:
>>
>> --sysroot'
>> '/home/tdescham/repo/isam/buildroot-fantg/output/host/usr/powerpc-buildroot-linux-gnu/sysroot'
>> '-mcpu=e6500'
>
> I don't have your buildroot tree; I tried creating the wrapper with just
> -mcpu=e6500 added. But it fails in U-Boot build for T2080_RDB even before
> linking built-in.o:
>
>   CC      arch/powerpc/cpu/mpc8xxx/cpu.o
> {standard input}: Assembler messages:
> {standard input}:512: Error: junk at end of line: `128'
> scripts/Makefile.build:280: recipe for target
> 'arch/powerpc/cpu/mpc8xxx/cpu.o' failed
> make[2]: *** [arch/powerpc/cpu/mpc8xxx/cpu.o] Error 1

Yes, I saw those same messages too (Buildroot builds u-boot in
parallel by default so it did not immediately fail the entire build).

>
> Using U-Boot 2016.05. Which version are you using? Is it possible that the
> sysroot contains something that changes GCC options (e.g. a gcc spec file)?

This is based on U-Boot 2015.01.
We are not manually playing with anything like spec files. The
toolchain produced by crosstool-ng is archived and configured in
Buildroot as external toolchain. Then the usual Buildroot toolchain
logic is applied, which basically is unpacking part of the archive,
and producing a wrapper for the compiler that passing the necessary
--sysroot, -march/mtune/mcpu, etc. options as configured by the user
or built-in in Buildroot.

>
>
> I did reproduce your issue, though, by running the commands you quoted
> above, manually.
>
> The problem is that U-boot invokes ld directly, not through gcc; and ld is
> indeed defaulting to 64-bit.

Such issues pass by in Buildroot regularly. There have been
discussions on producing a wrapper for ld too, which can then
explicitly give the right flags e.g. -m32 in this case. So far it's
not done.

> You toolchain config supplies --enable-targets
> to binutils configure, but binutils configure does not handle this option;
> the preferred mode is established by the supplied target.
>
> Hence, you should build for powerpc, not for powerpc64 - that still allows
> --enable-targets option to gcc configure, so you'll still be able to build
> 64-bit binaries:
>
> --- email-defconfig    2016-05-18 20:02:57.565718947 -0700
> +++ email-defconfig.mod    2016-05-20 20:34:22.566050597 -0700
> @@ -1,11 +1,9 @@
>  CT_PREFIX_DIR="${CT_TOP_DIR}/targets/${CT_TARGET}"
>  CT_ARCH_CPU="e6500"
> -CT_ARCH_64=y
>  CT_ARCH_powerpc=y
>  CT_MULTILIB=y
>  CT_KERNEL_linux=y
>  CT_KERNEL_V_3_18=y
> -CT_BINUTILS_EXTRA_CONFIG_ARRAY="--enable-targets=powerpc-linux,powerpc64-linux"
>  CT_CC_GCC_V_4_9_3=y
>
> CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="--enable-targets=powerpc-linux,powerpc64-linux"
>
> CT_CC_GCC_EXTRA_CONFIG_ARRAY="--enable-targets=powerpc-linux,powerpc64-linux"
>

Thanks! With this config I was able to build u-boot just fine (on the
T2080RDB defconfig I still had the 'junk at end of line' assembler
messages, but not on my real board).

I will now further evaluate the generated image. In any case it looks
like the toolchain works fine now, and the pull request is doing its
job.

Thanks for your help,
Thomas

--
For unsubscribe information see http://sourceware.org/lists.html#faq

      reply	other threads:[~2016-05-21 19:46 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-17 13:20 Thomas De Schampheleire
2016-05-17 13:50 ` Bryan Hundven
2016-05-18 12:34   ` Thomas De Schampheleire
2016-05-18 21:11     ` Bryan Hundven
2016-05-19  4:46       ` Alexey Neyman
2016-05-19  4:55       ` Alexey Neyman
     [not found]         ` <CAAXf6LX3cPe2eF2BDfGiLDdCMbBq8TxPFGCWYawB8wCZ-yj-Xg@mail.gmail.com>
     [not found]           ` <573D596D.9020505@att.net>
2016-05-19  7:15             ` Thomas De Schampheleire
2016-05-21  5:22               ` Alexey Neyman
2016-05-21 19:46                 ` Thomas De Schampheleire [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAAXf6LU2=uPZRyM1MUBSkLY+-sMRXoLXYWXPbDAFz6txQYJaHg@mail.gmail.com' \
    --to=patrickdepinguin@gmail.com \
    --cc=bryanhundven@gmail.com \
    --cc=crossgcc@sourceware.org \
    --cc=dev@codyps.com \
    --cc=mingw.android@gmail.com \
    --cc=stilor@att.net \
    --cc=yann.morin.1998@free.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).