[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 16:09:30 PST 2016


On Thu, 2016-03-10 at 00:52 +0100, Martin Jansa wrote:
> On Wed, Mar 09, 2016 at 11:02:31PM +0000, Richard Purdie wrote:
> > 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-devto
> > ols/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.
> 
> Reverting this change in Dizzy based build fixes the signatures for
> gcc-cross(-initial)-arm
> 
> for gdb-cross-arm, there is still datadir -> TUNE_PKGARCH dependency
> from even
> older change:
> 
> OE qemuarm7@ ~/build/oe-core/openembedded-core $ git show -1 3e87aba1
> commit 3e87aba1ee2ca0e39ba66fb7cba52e48df499c23
> Author: Phil Blundell <pb at pbcl.net>
> Date:   Wed Apr 24 16:15:54 2013 +0100
> 
>     gdb-cross: Adjust ${datadir} to avoid file conflicts in sysroot
>     
> 
> +datadir .= "/gdb-${TUNE_PKGARCH}${TARGET_VENDOR}-${TARGET_OS}"
> 
> Reverting this change fixes gdb-cross-arm signatures.
> 
> Will try what happens when I revert this in master and move --with
> -arch
> options to gcc-target.inc only.

I have an untested patch for the latter:

http://git.yoctoproject.org/cgit.cgi/poky-contrib/commit/?h=rpurdie/wip
&id=3b30d958abff7ab913ed9d4852dfd44a57e84eb1

(just not gotten to it yet).

We do have a bigger problem in that I think if you switch tunes between
things which change TARGET_OS (e.g. an x86 x32 build, mips n32 or ppc
spe) we'll have the same issue. To fix that we'll likely need the
target OS mangling that cross-canadian does and that is going to be
pretty invasive to implement.

The good news is that sstate will remove/install the correct gcc-cross
quite happily so whilst annoying, builds don't break.

The ppc spe v1 issue is more pressing since python3 is breaking on the
autobuilder due to that :(

Cheers,

Richard



More information about the yocto mailing list