--enable-debug vs --enable-symbols (Re: [Libreoffice-commits] .: 12 commits - config_host.mk.in configure.in filter/source oox/source sal/inc sc/source solenv/gbuild toolkit/source xmlhelp/source)

Lubos Lunak l.lunak at suse.cz
Wed May 16 06:09:37 PDT 2012


On Tuesday 08 of May 2012, Michael Stahl wrote:
>  config_host.mk.in                                |    2
>  configure.in                                     |   48 ++++++-----
>  filter/source/pdf/impdialog.cxx                  |   29 +++----
>  oox/source/dump/dumperbase.cxx                   |   15 +++
>  sal/inc/rtl/string.hxx                           |    5 -
>  sc/source/ui/app/inputhdl.cxx                    |    3
>  solenv/gbuild/CppunitTest.mk                     |    1
>  solenv/gbuild/Executable.mk                      |    1
>  solenv/gbuild/Library.mk                         |    1
>  solenv/gbuild/LinkTarget.mk                      |   94
> ++++++++--------------- solenv/gbuild/Module.mk                          | 
>   6 +
>  solenv/gbuild/StaticLibrary.mk                   |    1
>  solenv/gbuild/gbuild.mk                          |   39 +--------
>  solenv/gbuild/platform/IOS_ARM_GCC.mk            |    6 -
>  solenv/gbuild/platform/WNT_INTEL_MSC.mk          |    5 -
>  solenv/gbuild/platform/com_GCC_defs.mk           |    4
>  solenv/gbuild/platform/macosx.mk                 |    8 -
>  solenv/gbuild/platform/solaris.mk                |    3
>  solenv/gbuild/platform/unxgcc.mk                 |    8 +
>  toolkit/source/controls/tksimpleanimation.cxx    |    6 -
>  toolkit/source/controls/tkthrobber.cxx           |   12 +-
>  xmlhelp/source/cxxhelp/provider/urlparameter.cxx |    3

 Hmm, ok, I don't want to just revert once more, but since it looks to me like 
you've broken this in several ways, it is possible we don't agree on what 
these switches are actually supposed to do. As far as I can 
tell, --enable-symbols enables -g, --enable-debug does --enable-symbols and 
turns on logging+assertions and disables optimizations, and --enable-dbgutils 
does --enable-symbols plus whatever extra stuff that is BIC. That's 
indicentally also what --help says about them. What is your idea about what 
these options do?

> commit a50812813de0594ac2aeb064ea4a95d66b8e4e42
> Author: Michael Stahl <mstahl at redhat.com>
> Date:   Mon May 7 21:33:01 2012 +0200
>
>     gbuild: tie optimization into selective --enable-debug:
>
>     Let --enable-debug determine whether optimization should be disabled,
>     which works also for debug=t due to the setup in gbuild.mk.
>
>     Also clean up uses of gb_COMPILEROPTFLAGS: this is now always set to
>     optimization settings, and gb_COMPILERNOOPTFLAGS used in debug case,
>     which should not make a difference because the only actual difference
>     was that on MSVC the debug OPTFLAGS were empty, but -Od is documented
> as the default for this.

 Now --enable-debug=-sc/ means that sc/ is built without -g and with -O2. In 
other words, the compiler spends extra time working on code I don't care 
about at all. There was a reason why OPT flags was empty in --enable-debug 
build - as soon as I do a developer build, I don't want the compiler to 
optimize any code, anywhere, unless explicitly told so.

 Moreover, such code actually is built also with -g. I'm not sure why, but 
something now seems to turn on -g for everything, regardless of the selective 
symbols.

> commit c8fa9bd8849f0503b3803465e8ce119581e11e33
> Author: Michael Stahl <mstahl at redhat.com>
> Date:   Mon May 7 20:58:44 2012 +0200
>
>     dis-entangle --enable-symbols and --enable-debug:
>
>     OOo used to use debug level this way:
>     0 is default for product build
>     1 for --enable-dbgutil
>     2 for environment variable debug=t, regardless of dbgutil setting
>     in LO these have now morphed into:
>     0 is default for product build
>     1 for environment variable debug=t
>     2 for --enable-dbgutil (at some intermediate stage in the past)
>     1 for --enable-dbgutil (today)
>
>     This has caused a lot of confusion and some things were not converted
>     properly, including a check in LinkTarget.mk.

 This caused confusion even now. How is OSL_DEBUG_LEVEL relevant here at all?

>     Developers should use --enable-debug to get useful information,
>     including full debug info and assertions.
>
>     --enable-symbols is not intended for developers, but for people
>     who need their builds to be able to produce useful stack traces;
>     --enable-symbols is for example set unconditionally in the Fedora RPM
>     spec, and for this purpose disabling of inlining is not wanted.

 --enable-symbols should not disable inlining. If it does, it is merely a bug. 
Why should it, it's for symbols.

>     It is unlikely that somebody wants symbols for only part of the build,

 Except for those people who wanted the feature of selective debug symbols.

>     and consequently a different mechanism is used to set the corresponding
>     flags: they are set into global gb_LinkTarget_C{,XX}FLAGS.
>
>     So move the selective symbol feature back to --enable-debug.

 That does not make much sense. Even this very sentence says that symbols and 
debug are again tangled together.

>     (this substantially reverts db8df57acd601ed084bd0122683e1bd066a4f143)

-- 
 Lubos Lunak
 l.lunak at suse.cz


More information about the LibreOffice mailing list