All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Peter A. Bigot" <pab@pabigot.com>
To: Khem Raj <raj.khem@gmail.com>
Cc: OE-core <openembedded-core@lists.openembedded.org>
Subject: Re: Yocto development with C++11 threads and gcc
Date: Wed, 13 Aug 2014 20:55:08 -0500	[thread overview]
Message-ID: <53EC16FC.8020109@pabigot.com> (raw)
In-Reply-To: <CAMKF1srUa9tUqu7bNXZ0g=yCa0e8E2K5XrzTHUUxB6BbTwYZ6g@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 3325 bytes --]

On 08/13/2014 07:49 PM, Khem Raj wrote:
>
>
> On Wednesday, August 13, 2014, Peter A. Bigot <pab@pabigot.com 
> <mailto:pab@pabigot.com>> wrote:
>
>     On 08/13/2014 05:05 PM, Khem Raj wrote:
>
>         On Wed, Aug 13, 2014 at 2:36 PM, Peter A. Bigot
>         <pab@pabigot.com> wrote:
>
>             In any case, Khem can you run with this?  It'd be fixed a
>             lot better that
>             way....
>
>         We do not configure target gcc with right matching cpu defaults,
>         atomic instruction strex/ldrex are only added after armv6 but
>         defaults
>         for gcc if not specified is armv5t and hence it does not use
>         the right
>         set as expected by libstdc++ which has been cross compiled. so
>         while
>         you are at it and can reproduce it. Try to add
>
>         EXTRA_OECONF += '${@bb.utils.contains("TUNE_FEATURES", "armv7a", "
>         --with-cpu=armv7-a", "", d)}'
>
>         to gcc-target.inc and see if resulting gcc is any better
>
>
>     I had to make it:
>
>     EXTRA_OECONF += '${@bb.utils.contains("TUNE_FEATURES", "armv7a",
>     "--with-cpu=generic-armv7-a", "", d)}'
>
>
> Sorry a typo there you   need  --with-arch

OK, that works. So do we need to do the same thing for every 
TUNE_FEATURES element that ends up changing the value of -march= in 
TUNE_CCARGS which ends up getting passed into gcc-runtime?

If so would it be better to add a TUNE_ARCH setting to all the 
tune-foo.inc files and use that in both TUNE_CCARGS and the --with-arch= 
flag passed to gcc?  Just to avoid having this stuff hidden inside 
gcc-target.inc where it's pretty obscure.

>
> to get gcc to build but at runtime I then get:
>
>
>     beaglebone[16]$ g++ -std=c++11 -pthread test.cc && ./a.out
>     Assembler messages:
>     Error: unknown cpu `generic-armv7-a'
>     Error: unrecognized option -mcpu=generic-armv7-a
>
>     which indicates the flag's being passed to the assembler which
>     doesn't recognize it even though g++ is happy with it.  I suppose
>     we could hack binutils to substitute whatever spelling it wants to
>     see.
>
>     (Also tried --with-cpu=arm7, but that generates assembler errors
>     related to unsupported RM mode "bx lr").
>
>     The approach bothers me, though.  Instead of explicitly changing
>     gcc-target to match gcc-runtime, shouldn't it be a general rule
>     that gcc-runtime not apply OE-specific target flags that aren't
>     going to be used by direct invocations of the compiler outside of
>     the OE build environment?  That seems a little more robust, as the
>     default target flags may be changed upstream or by bbappends
>     within OE, and having to make them match in gcc-runtime as well
>     would be a headache.
>

Just to record one reason why this isn't trivial: although it's possible 
to strip ${TARGET_CC_ARCH} from ${CXX}, doing so removes 
-mfloat-abi=hard which makes gcc-runtime try to build a library that 
supports soft float, and the compiler didn't generate the necessary 
gnu/stubs-soft.h header for that.

>
>     And would we need similar overrides for other architectures?
>     There's something similar already in gcc-configure-common.inc for
>     mips64.
>
>     Peter
>


[-- Attachment #2: Type: text/html, Size: 5214 bytes --]

  reply	other threads:[~2014-08-14  1:55 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-11 19:02 Yocto development with C++11 threads and gcc Peter A. Bigot
2014-08-12  0:12 ` Peter A. Bigot
2014-08-13 21:07   ` Peter A. Bigot
2014-08-13 21:18 ` Khem Raj
2014-08-13 21:23   ` Peter A. Bigot
2014-08-13 21:36     ` Peter A. Bigot
2014-08-13 22:05       ` Khem Raj
2014-08-13 23:23         ` Peter A. Bigot
2014-08-14  0:49           ` Khem Raj
2014-08-14  1:55             ` Peter A. Bigot [this message]
2014-08-14  5:32               ` Khem Raj
2014-08-14  9:15                 ` Peter A. Bigot
2014-08-14 21:40                   ` Richard Purdie
2014-08-14 22:00                     ` Peter A. Bigot
2014-08-14 22:11                       ` Khem Raj
2014-08-14 22:07                   ` Khem Raj

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=53EC16FC.8020109@pabigot.com \
    --to=pab@pabigot.com \
    --cc=openembedded-core@lists.openembedded.org \
    --cc=raj.khem@gmail.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.