bugGNUstep - Bugs: bug #27222, By default binaries should be...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

bug #27222: By default binaries should be built with '-g -O2'

Submitted by:  Yavor Doganov <yavor>
Submitted on:  Mon 10 Aug 2009 09:02:16 PM UTC  
 
Category: MakefilesSeverity: 3 - Normal
Item Group: Change RequestStatus: None
Privacy: PublicAssigned to: None
Open/Closed: Closed

Sat 15 Aug 2009 09:32:54 PM UTC, comment #3:

Thanks Yavor

I made the change. It seems to work for me - let me know if it works for you. :-)

Thanks

Nicola Pero <nico>
Project Member
Tue 11 Aug 2009 11:15:51 AM UTC, comment #2:

I think there are still plenty of bugs on some targets with -O3 and higher, so this seems risky.

I think this is most natural:

  • debug=yes (default): -g -O2
  • debug=no: -O2

If a developer/user wants unoptimized build for better debugging, `make OPTFLAG=-O0' is the way to go, just like in a typical autoconfiscated package one would do `./configure CFLAGS=-g'.

Yavor Doganov <yavor>
Tue 11 Aug 2009 10:34:28 AM UTC, comment #1:

We can certainly change the default flags to be -g -O2. Sounds like a good idea.

If we get some agreement on what the flags should be, we can easily implement them. I guess you were thinking of

  • debug=yes (default): -g -O2
  • debug=no: -O3

Thanks

Nicola Pero <nico>
Project Member
Mon 10 Aug 2009 09:02:16 PM UTC, original submission:

This change

2006-09-20 Nicola Pero <nicola.pero@meta-innovation.com>

By default compile everything with debug=yes. To get the
traditional behaviour, please use 'make debug=no'.
* common.make (debug): Turn on debug by default.

and the resulting comment and behavior:

# Enable debug by default. This is according to the GNU Coding
# Standards.
ifneq ($(debug), no)
debug = yes
endif

ifeq ($(debug), yes)
# This is filtered out as it compromised debugging
OPTFLAG := $(filter-out -O%, $(OPTFLAG))
...

is wrong. The GNU Coding Standards require that packages should be built with debugging symbols (-g) by default, but does not go so far in agressively removing any optimization. For example, '(standards)Configuration' says:

`VARIABLE=VALUE'
...
For example, the user could issue `configure CFLAGS=-g
CXXFLAGS=-g' to build with debugging information and
without the default optimization.

For any package that uses the GNU Build System, if CFLAGS/CXXFLAGS/OBJCFLAGS/etc are not specified by the user, they are set to '-g -O2'. This is a long time tradition, and GNUstep Make behaved this way until the above change.

This is causing us grief in Debian as the Debian Policy requires all binaries to be built with -O2 (unless there is a good reason for -O3); unoptimized builds are considered a bug so we have lots of "buggy" GNUstep packages now (from a Policy perspective, at least).

Yavor Doganov <yavor>

 

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by nico (Posted a comment)
  • -unavailable- added by yavor (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follows 1 latest change.

    Date Changed By Updated Field Previous Value => Replaced By
    Sat 15 Aug 2009 09:32:54 PM UTCnicoOpen/ClosedOpen=>Closed

    Back to the top


    Powered by Savane 3.1-cleanup1