* dylan: meta-toolchain and u-boot : "cannot find -lgcc"
@ 2013-04-26 7:26 Eric Bénard
2013-04-26 13:51 ` Mark Hatle
0 siblings, 1 reply; 5+ messages in thread
From: Eric Bénard @ 2013-04-26 7:26 UTC (permalink / raw)
To: openembedded-core@lists.openembedded.org oe-core layer
Hi,
here is a problem I met while trying to build u-boot with a toolchain
generated using dylan.
steps to reproduce :
- bitbake meta-toolchain for an armv5t target
- install the sdk to a custom path ($HOME/oecore-x86_64/ for example
instead of /usr/local/oecore-x86_64/
- get u-boot :
git clone git://git.denx.de/u-boot.git
source ~/oecore-x86_64/environment-setup-armv5te-oe-linux-gnueabi
make LDFLAGS="" ARCH=arm CROSS_COMPILE=arm-oe-linux-gnueabi-
da850evm_config
make LDFLAGS="" ARCH=arm CROSS_COMPILE=arm-oe-linux-gnueabi-
you will get :
arm-oe-linux-gnueabi-gcc -E -g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -ffunction-sections -fdata-sections -DCONFIG_SYS_TEXT_BASE=0xc1080000 -DCONFIG_SPL_TEXT_BASE=0x80000000 -DCONFIG_SPL_PAD_TO=0 -DCONFIG_SPL_BUILD -I/data/testdylan/tmp/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /data/testdylan/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/bin/armv5te-oe-linux-gnueabi/../../lib/armv5te-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.7.2/include -pipe -DCONFIG_ARM -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -march=armv5te -include /data/testdylan/tmp/u-boot/include/u-boot/u-boot.lds.h -include /data/testdylan/tmp/u-boot/include/config.h -DCPUDIR=arch/arm/cpu/arm926ejs -I/data/testdylan/tmp/u-boot/spl/. -ansi -D__ASSEMBLY__ -P - < /data/testdylan/tmp/u-boot/board/davinci/da8xxevm/u-boot-spl-da850evm.lds > /data/testdylan/tmp/u-boot/spl/u-boot-spl.lds
cd /data/testdylan/tmp/u-boot/spl/ && arm-oe-linux-gnueabi-ld.bfd -T /data/testdylan/tmp/u-boot/spl/u-boot-spl.lds --gc-sections -Bstatic -Ttext 0x80000000 arch/arm/cpu/arm926ejs/start.o --start-group arch/arm/cpu/arm926ejs/davinci/libdavinci.o arch/arm/cpu/arm926ejs/libarm926ejs.o arch/arm/lib/libarm.o board/davinci/da8xxevm/libda8xxevm.o common/libcommon.o common/spl/libspl.o drivers/mtd/spi/libspi_flash.o drivers/serial/libserial.o drivers/spi/libspi.o lib/libgeneric.o --end-group /data/testdylan/tmp/u-boot/spl/arch/arm/lib/eabi_compat.o -L . -lgcc -Map u-boot-spl.map -o u-boot-spl
arm-oe-linux-gnueabi-ld.bfd: cannot find -lgcc
this can be fixed by installing the sdk to it's standard path
(/usr/local/oecore-x86_64/ in the present case).
Is that an expected behaviour (as the sdk is primarly designed to build
applications) or can that be fixed during the sdk relocation ?
Thanks,
Eric
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: dylan: meta-toolchain and u-boot : "cannot find -lgcc"
2013-04-26 7:26 dylan: meta-toolchain and u-boot : "cannot find -lgcc" Eric Bénard
@ 2013-04-26 13:51 ` Mark Hatle
2013-04-26 14:41 ` Eric Bénard
0 siblings, 1 reply; 5+ messages in thread
From: Mark Hatle @ 2013-04-26 13:51 UTC (permalink / raw)
To: openembedded-core
On 4/26/13 2:26 AM, Eric Bénard wrote:
> Hi,
>
> here is a problem I met while trying to build u-boot with a toolchain
> generated using dylan.
>
> steps to reproduce :
> - bitbake meta-toolchain for an armv5t target
>
> - install the sdk to a custom path ($HOME/oecore-x86_64/ for example
> instead of /usr/local/oecore-x86_64/
>
> - get u-boot :
> git clone git://git.denx.de/u-boot.git
> source ~/oecore-x86_64/environment-setup-armv5te-oe-linux-gnueabi
> make LDFLAGS="" ARCH=arm CROSS_COMPILE=arm-oe-linux-gnueabi-
> da850evm_config
> make LDFLAGS="" ARCH=arm CROSS_COMPILE=arm-oe-linux-gnueabi-
>
> you will get :
> arm-oe-linux-gnueabi-gcc -E -g -Os -fno-common -ffixed-r8 -msoft-float -D__KERNEL__ -ffunction-sections -fdata-sections -DCONFIG_SYS_TEXT_BASE=0xc1080000 -DCONFIG_SPL_TEXT_BASE=0x80000000 -DCONFIG_SPL_PAD_TO=0 -DCONFIG_SPL_BUILD -I/data/testdylan/tmp/u-boot/include -fno-builtin -ffreestanding -nostdinc -isystem /data/testdylan/oecore-x86_64/sysroots/x86_64-oesdk-linux/usr/bin/armv5te-oe-linux-gnueabi/../../lib/armv5te-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.7.2/include -pipe -DCONFIG_ARM -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -march=armv5te -include /data/testdylan/tmp/u-boot/include/u-boot/u-boot.lds.h -include /data/testdylan/tmp/u-boot/include/config.h -DCPUDIR=arch/arm/cpu/arm926ejs -I/data/testdylan/tmp/u-boot/spl/. -ansi -D__ASSEMBLY__ -P - < /data/testdylan/tmp/u-boot/board/davinci/da8xxevm/u-boot-spl-da850evm.lds > /data/testdylan/tmp/u-boot/spl/u-boot-spl.lds
> cd /data/testdylan/tmp/u-boot/spl/ && arm-oe-linux-gnueabi-ld.bfd -T /data/testdylan/tmp/u-boot/spl/u-boot-spl.lds --gc-sections -Bstatic -Ttext 0x80000000 arch/arm/cpu/arm926ejs/start.o --start-group arch/arm/cpu/arm926ejs/davinci/libdavinci.o arch/arm/cpu/arm926ejs/libarm926ejs.o arch/arm/lib/libarm.o board/davinci/da8xxevm/libda8xxevm.o common/libcommon.o common/spl/libspl.o drivers/mtd/spi/libspi_flash.o drivers/serial/libserial.o drivers/spi/libspi.o lib/libgeneric.o --end-group /data/testdylan/tmp/u-boot/spl/arch/arm/lib/eabi_compat.o -L . -lgcc -Map u-boot-spl.map -o u-boot-spl
> arm-oe-linux-gnueabi-ld.bfd: cannot find -lgcc
>
> this can be fixed by installing the sdk to it's standard path
> (/usr/local/oecore-x86_64/ in the present case).
>
> Is that an expected behaviour (as the sdk is primarly designed to build
> applications) or can that be fixed during the sdk relocation ?
When you use the SDK, you need to be sure to source the SDK environment setup.
Once you do that, pass to the compiler/linker the included CFLAGS and LDFLAGS as
specified in that environment file.
They should end up passing at some point a --sysroot=... and that will tell gcc
where the libraries and headers are for linking. Without the --sysroot= option,
the compiler has no choice but to look for it's original compilation directory.
--Mark
> Thanks,
> Eric
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: dylan: meta-toolchain and u-boot : "cannot find -lgcc"
2013-04-26 13:51 ` Mark Hatle
@ 2013-04-26 14:41 ` Eric Bénard
2013-04-26 14:46 ` Mark Hatle
0 siblings, 1 reply; 5+ messages in thread
From: Eric Bénard @ 2013-04-26 14:41 UTC (permalink / raw)
To: openembedded-core
Hi Mark,
Le Fri, 26 Apr 2013 08:51:58 -0500,
Mark Hatle <mark.hatle@windriver.com> a écrit :
> On 4/26/13 2:26 AM, Eric Bénard wrote:
> > this can be fixed by installing the sdk to it's standard path
> > (/usr/local/oecore-x86_64/ in the present case).
> >
> > Is that an expected behaviour (as the sdk is primarly designed to build
> > applications) or can that be fixed during the sdk relocation ?
>
> When you use the SDK, you need to be sure to source the SDK environment setup.
> Once you do that, pass to the compiler/linker the included CFLAGS and LDFLAGS as
> specified in that environment file.
of course I did source it (and forget to put it in the email as that
was obvious to me, sorry).
> They should end up passing at some point a --sysroot=... and that will tell gcc
> where the libraries and headers are for linking. Without the --sysroot= option,
> the compiler has no choice but to look for it's original compilation directory.
>
true, that's why I provided the step to reproduce and said "as the
sdk is primarly designed to build applications" and that's certainly
why we get this problem : for linux & u-boot we can't use the LDFLAGS
as set by the environment script else we get :
for u-boot :
arm-oe-linux-gnueabi-ld.bfd: unrecognized option '-Wl,-O1'
so we need to pass LDFLAGS="" which then leads to :
arm-oe-linux-gnueabi-ld.bfd: cannot find -lgcc
if and only if the sdk was relocated.
(and I also get the error even if I add LDFLAGS="
--sysroot=/path_to/oecore-x86_64/sysroots/armv5te-oe-linux-gnueabi"
so this seems specific to -lgcc)
for linux :
arm-oe-linux-gnueabi-ld: unrecognized option '-Wl,-O1'
so here again we need to pass LDFLAGS="" which leads to a successful
build as the build is not using lgcc.
Eric
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: dylan: meta-toolchain and u-boot : "cannot find -lgcc"
2013-04-26 14:41 ` Eric Bénard
@ 2013-04-26 14:46 ` Mark Hatle
2013-04-26 15:11 ` Eric Bénard
0 siblings, 1 reply; 5+ messages in thread
From: Mark Hatle @ 2013-04-26 14:46 UTC (permalink / raw)
To: Eric Bénard; +Cc: openembedded-core
On 4/26/13 9:41 AM, Eric Bénard wrote:
> Hi Mark,
>
> Le Fri, 26 Apr 2013 08:51:58 -0500,
> Mark Hatle <mark.hatle@windriver.com> a écrit :
>> On 4/26/13 2:26 AM, Eric Bénard wrote:
>>> this can be fixed by installing the sdk to it's standard path
>>> (/usr/local/oecore-x86_64/ in the present case).
>>>
>>> Is that an expected behaviour (as the sdk is primarly designed to build
>>> applications) or can that be fixed during the sdk relocation ?
>>
>> When you use the SDK, you need to be sure to source the SDK environment setup.
>> Once you do that, pass to the compiler/linker the included CFLAGS and LDFLAGS as
>> specified in that environment file.
>
> of course I did source it (and forget to put it in the email as that
> was obvious to me, sorry).
>
>> They should end up passing at some point a --sysroot=... and that will tell gcc
>> where the libraries and headers are for linking. Without the --sysroot= option,
>> the compiler has no choice but to look for it's original compilation directory.
>>
> true, that's why I provided the step to reproduce and said "as the
> sdk is primarly designed to build applications" and that's certainly
> why we get this problem : for linux & u-boot we can't use the LDFLAGS
> as set by the environment script else we get :
>
> for u-boot :
> arm-oe-linux-gnueabi-ld.bfd: unrecognized option '-Wl,-O1'
> so we need to pass LDFLAGS="" which then leads to :
> arm-oe-linux-gnueabi-ld.bfd: cannot find -lgcc
> if and only if the sdk was relocated.
> (and I also get the error even if I add LDFLAGS="
> --sysroot=/path_to/oecore-x86_64/sysroots/armv5te-oe-linux-gnueabi"
> so this seems specific to -lgcc)
>
> for linux :
> arm-oe-linux-gnueabi-ld: unrecognized option '-Wl,-O1'
> so here again we need to pass LDFLAGS="" which leads to a successful
> build as the build is not using lgcc.
I see, it's using ld instead of gcc for linking. AFAIK though, you really
shouldn't be using -lgcc in either uboot or linux for any platform. That seems
suspicious to me.
It's reasonable to file a bug in the Yocto Project bugzilla, but I'm not sure
what kind of resolution we'll get.
--Mark
> Eric
>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: dylan: meta-toolchain and u-boot : "cannot find -lgcc"
2013-04-26 14:46 ` Mark Hatle
@ 2013-04-26 15:11 ` Eric Bénard
0 siblings, 0 replies; 5+ messages in thread
From: Eric Bénard @ 2013-04-26 15:11 UTC (permalink / raw)
To: Mark Hatle; +Cc: openembedded-core
Hi Mark,
Le Fri, 26 Apr 2013 09:46:20 -0500,
Mark Hatle <mark.hatle@windriver.com> a écrit :
> I see, it's using ld instead of gcc for linking. AFAIK though, you really
> shouldn't be using -lgcc in either uboot or linux for any platform. That seems
> suspicious to me.
>
u-boot is using libgcc in its makefile (Linux doesn't).
I've found the problem root cause in the u-boot's Makefile :
PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
(but CC and CFLAGS are set in the Makefiles thus the ones of the
environment are not used
$ arm-oe-linux-gnueabi-gcc -print-libgcc-file-name
libgcc.a
but :
$ arm-oe-linux-gnueabi-gcc --sysroot=/path_to/oecore-x86_64/sysroots/armv5te-oe-linux-gnueabi -print-libgcc-file-name
returns :
/path_to/oecore-x86_64/sysroots/armv5te-oe-linux-gnueabi/usr/lib/arm-oe-linux-gnueabi/4.7.2/libgcc.a
so if I manage to pass
--sysroot=/path_to/oecore-x86_64/sysroots/armv5te-oe-linux-gnueabi
when PLATFORM_LIBGCC is computed, I get a working build.
so that's not a problem in the SDK : thanks for driving me
to the right track to investigate on this issue ;-)
Eric
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2013-04-26 15:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-26 7:26 dylan: meta-toolchain and u-boot : "cannot find -lgcc" Eric Bénard
2013-04-26 13:51 ` Mark Hatle
2013-04-26 14:41 ` Eric Bénard
2013-04-26 14:46 ` Mark Hatle
2013-04-26 15:11 ` Eric Bénard
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox