[OE-core] Verification on how TARGET_CFLAGS is set

Bryan Evenson bevenson at melinkcorp.com
Tue Mar 31 12:28:27 UTC 2015


Richard and Mark,

> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org
> [mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf
> Of Richard Purdie
> Sent: Monday, March 30, 2015 5:43 PM
> To: Mark Hatle
> Cc: openembedded-core at lists.openembedded.org
> Subject: Re: [OE-core] Verification on how TARGET_CFLAGS is set
> 
> On Mon, 2015-03-30 at 15:37 -0500, Mark Hatle wrote:
> > On 3/30/15 3:27 PM, Richard Purdie wrote:
> > > On Mon, 2015-03-30 at 13:09 +0000, Bryan Evenson wrote:
> > >> I am about to upgrade to the dizzy branch.  I have a built a bootable
> > >> image on my test build machine, and now I'm going to be applying
> > >> changes to the system I use for building production images.  I'm
> > >> planning on deleting my tmp directory to force a re-build of
> > >> everything.  Since I'm rebuilding everything anyway, I'm taking a
> > >> deeper look at the CFLAGS related settings and I'm getting a little
> > >> lost in the logic.  I'd like to verify these settings before I start
> > >> rebuilding everything.
> > >>
> > >> If I'm following the default logic correctly in bitbake.conf, by
> > >> default TARGET_CFLAGS will be set to "-O2 -pipe -g
> > >> -feliminate-unused-debug-types".  I want the default TARGET_CFLAGS
> for
> > >> my production image to be "-O2 -pipe".  What's the suggested variable
> > >> to change, and where, to get this final value?  Do I set TARGET_CFLAGS
> > >> directly, or do I set SELECTED_OPTIMIZATIONS or even
> > >> FULL_OPTIMIZATIONS?  Do I set it in local.conf or should I be setting
> > >> it somewhere else?
> > >
> > > If I remember rightly, you need the -g option there to generate the -dbg
> > > packages correctly. The target system binaries won't change since we
> > > separate out the debug data into separate files as part of the packaging
> > > process.
> > >
> > > You therefore can gain some build performance from turning that off but
> > > your runtime won't alter much (other than the debuglink ID which is a
> > > few bytes).
> >
> > I strongly caution people against removing '-g' from their production builds.
> > If you do, you will no longer have any way to do any type of production/field
> > debug.  As Richard indicated the -g will cause the symbols and debug information
> > to get separated into special -dbg packages that you generally don't distribute
> > on a production device -- but those same -dbg package (preserved) can be later
> > used for debugging of production devices.

In my situation this is kind of a moot point, as I've never been able to successfully get gdb to work.  It has been a while since I've tried, so I guess I could give it another go.

> >
> > This is why the default is what it is.
> >
> > The difference in executable size between -g (split debug) and w/o -g, is
> > usually around 15 - 30 bytes.  Roughly the length of the path to the
> executable
> > and/or library plus ".debug/" (7 characters)
> 
> Are you sure its even that? I thought it was literally just the debug ID
> code and the paths to debug were assumed by the debug tools which would
> search several locations for a matching ID?

Is that all that it is?  I was under the impression that adding -g adds the debug symbols to the executable, not just the hooks to include the debug symbols.  If the -g flag really does just add a few bytes to each executable, then I won't worry about it.

Regards,
Bryan

> 
> Cheers,
> 
> Richard
> 
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list