[yocto] [OE-core] Wrong sstate signatures for cross toolchain Was: Building gdb-7.10 for arm with master

Richard Purdie richard.purdie at linuxfoundation.org
Wed Mar 9 15:02:31 PST 2016


On Wed, 2016-03-09 at 23:50 +0100, Martin Jansa wrote:
> What's even more interesting is that even gcc-cross-initial has
> different signatures for 2 ARM MACHINEs with different DEFAULTTUNES
> 
> OE qemuarm7@ ~/build/oe-core $ grep ^DEFAULTTUNE= env.gdb-cross-arm*
> env.gdb-cross-arm:DEFAULTTUNE="armv5te"
> env.gdb-cross-arm7:DEFAULTTUNE="armv7a-neon"
> 
> OE qemuarm7@ ~/build/oe-core $ ls tmp-glibc/sstate
> -diff/1457556601/*/*/*gcc-cross-initial*/*do_configure*
> tmp-glibc/sstate-diff/1457556601/qemuarm/x86_64-linux/gcc-cross
> -initial-arm/5.3.0
> -r0.do_configure.sigdata.e54e7a04acf1029cc37463114c7e4dba
> tmp-glibc/sstate-diff/1457556601/qemuarm7/x86_64-linux/gcc-cross
> -initial-arm/5.3.0
> -r0.do_configure.sigdata.3496e3dde08a49b14462741cc6f8d239
> OE qemuarm7@ ~/build/oe-core $ bitbake-diffsigs tmp-glibc/sstate
> -diff/1457556601/*/*/*gcc-cross-initial*/*do_configure*
> basehash changed from 5848199c69eee0db746de21c5458c13d to
> 673cd8d19bc4cbea132900a670593df6
> Variable EXTRA_OECONF value changed from '--with-newlib --without
> -headers --disable-shared --disable-threads --disable-multilib -
> -disable-__cxa_atexit --enable-languages=c --program
> -prefix=${TARGET_PREFIX} --with-sysroot=/not/exist --with-build
> -sysroot=${GCCCROSS_BUILDSYSROOT} ${EXTRA_OECONF_INITIAL} 
> ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', '--with
> -ld=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}ld.bfd', '', d)}
> ${EXTRA_OECONF_GCC_FLOAT} ${@get_gcc_ppc_plt_settings(bb, d)} --with
> -native-system-header-dir=${SYSTEMHEADERS}${DISABLE_STATIC} 
> ${@gettext_oeconf(d)}
> DISTRO_FEATURES{ld-is-gold} = Unset' to '--with-newlib --without
> -headers --disable-shared --disable-threads --disable-multilib -
> -disable-__cxa_atexit --enable-languages=c --program
> -prefix=${TARGET_PREFIX} --with-sysroot=/not/exist --with-build
> -sysroot=${GCCCROSS_BUILDSYSROOT} ${EXTRA_OECONF_INITIAL} 
> ${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', '--with
> -ld=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}ld.bfd', '', d)}
> ${EXTRA_OECONF_GCC_FLOAT} ${@get_gcc_ppc_plt_settings(bb, d)} --with
> -native-system-header-dir=${SYSTEMHEADERS}${DISABLE_STATIC} 
> ${@gettext_oeconf(d)} --with-arch=armv7-a
> DISTRO_FEATURES{ld-is-gold} = Unset'

To answer my own question, it looks like:

gcc-configure-common.inc:EXTRA_OECONF_append_armv6 = " --with-arch=armv6"
gcc-configure-common.inc:EXTRA_OECONF_append_armv7a = " --with-arch=armv7-a"
gcc-configure-common.inc:EXTRA_OECONF_append_armv7ve = " --with-arch=armv7-a"

which effectively comes from:

http://git.yoctoproject.org/cgit.cgi/poky/commit/meta/recipes-devtools/gcc/gcc-configure-common.inc?id=c0a071e16ec04f485f06eece5b807e5afbe1c1f1

The concept of having one gcc for each arch precludes such changes :(.

I believe these overrides need to move to the gcc-target.inc file.

Cheers,

Richard




More information about the yocto mailing list