Openembedded Core Discussions
 help / color / mirror / Atom feed
* 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