[PATCH 5/6] configure: allow picking up dwarf version for compilation from command line

Eric Pouech eric.pouech at orange.fr
Sun Oct 3 07:25:25 CDT 2021


Le 01/10/2021 à 20:14, Jacek Caban a écrit :
> Hi Eric,
>
Hi Jacek,


thanks for the feedback


getting back on it, I think we need to clarify the semantics & goals we 
want to achieve (I wasn't 100% clear myself), as we tackle different 
questions:

- what's wine debug format by default, and how it's going to evolve

- what flexibility is given in configuration for changing it

- what transformation logic is necessary on input parameters


in the following;

- when refer to items (DEBUG, CFLAGS...) related to regular compilation, 
for simplicity, it's implied that the same applies as well to cross 
compilation items (CROSSDEBUG, CROSSCFLAGS)

- I let aside the choice of name between DEBUG vs DEBUGFORMAT


as of today, wine's preferred debug format is "-gdwarf-2 -gstrict-dwarf" 
(for both regular and cross compilation)

note:

- wine's preferred debug format that it is most always different from 
compiler's preferred debug format. gcc claims it's mostly dwarf5 on 
unix, (this will hold true until wine catches up on debug format used by 
default)

- When enabling dwarf4, the exact format still needs from attention (eg: 
strict dwarf or not, Mac OS support to be clarified, see below)

- as of today, the preferred debug format isn't tied to a compiler (it's 
global) (in fact we try if either option -gdwarf-2 and -gstrict-dwarf 
work...)

- CFLAGS defaults to -g -O2 and expects the -g to be transformed into 
wine's preferred format

- this may have to be revisited as:

     - as of today, dwarf-2 support is no longer in gcc default's 
configuration and must be explicitely enabled at configuration time...

     - there are cases when it's not - see for example thread on 
wine-devel on GCC11 with open suse conf where it's not, so this could 
end up as only -gstrict-dwarf -g, which will turn into dwarf5 :-)

     - gcc doc says that macos/darwin defaults to dwarf2. I tested 
homebrew/gcc and Xcode's clang on big sur, they both default to dwarf4, 
but I haven't tested on previous versions (may likely be dwarf2)


what could be done:


DEBUG (when specified)

- used to choose a debug format for compiling wine

- I'd suggest a more drastic approach than what we have today: just 
append DEBUG content as it is to EXTRACFLAGS. this gives total 
flexibility on what we may want to experiment ; note: it will require 
using -gcodeview (not -gpdb nor pdb) in CROSSDEBUG

- this means that no transformation logic is applied on this option ; 
this option should be for internal maintenance and forcing some given 
options

- note that -g will still be present in CFLAGS, but shouldn't harm ; if 
CFLAGS has more -g* option, it may be necessary to erase them all


when DEBUG is not specified

- try to elaborate debug format from CFLAGS

- several debug entries (-g*) can be present in CFLAGS

- support the following transformations (it means removing all -g* 
options from CFLAGS and append to EXTRACFLAGS the result of their 
tranformation)

    -g => wine's preferred debug format. (* see below)

    -gdwarf => wine's preferred debug format.

    -gdwarf-X => kept as is. but do we add strict dwarf or not ? I'd say
    enforce strict dwarf for dwarf2 (as we have it in place), and decide
    later on if we need it elsewhere

    -gpdb => -gcodeview (synonym)

    -g* => (all the other debug options) retained as is


reguarding the transformation of several options, like CFLAGS=-gdwarf-X -g

+ we need to explicit what meaning bears -g

+ in gcc, it can be used either when pushing elements down the chain for 
enabling debug management, and/or to pick up default format when no 
other -g option is specified

so we may have to keep the same logic:

transformation of -g:

- if first -g* option in CFLAGS, then transform it into wine's preferred 
debug format

- if not first, keep as -g


comments welcomed


A+

>> +  AC_SUBST(DEBUGFORMAT)
>
>
> AC_SUBST is not needed here, you don't use it outside configure script
I blindly copied what is done with DEBUG in configure.ac... should we 
get rid of it as well, it's not used in any of .in files ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20211003/3c007628/attachment-0001.htm>


More information about the wine-devel mailing list