usage: configure CFLAGS="-gdwarf-4 -O2" will enable dwarf4 compilation for ELF parts (and CROSSCFLAGS="-gdwarf-4 -O2" for PE parts)
evolution from current behavior: - when CFLAGS contains "-gdwarf-X", -gdwarf-X option is not tested with WINE_TRY_CFLAGS (the option remains anyway in CFLAGS -so WINE_TRY is useless- and is not copied in EXTRACFLAGS) (ditto for CROSSCFLAGS) - using CROSSCFLAGS=-gdwarf is no longer converted to Wine's preferred format, but is kepts as is, hence will boil down to compiler's preferred dwarf version
what remains undone (and could be improved): - no test that the final configuration is suitable for Wine (ie if WINE_TRY_CFLAGS fails on -gdwarf-2, compilation is done with compilers's default format => dwarf5 on Linux) - using CROSSDEBUG=dwarf-split will compile in dwarf-2, while CROSSDEBUG=split will compile in compiler's default (likely dwarf-5 currently)
Signed-off-by: Eric Pouech eric.pouech@gmail.com
--- configure.ac | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/configure.ac b/configure.ac index 913692c828a..e0ec8fd17d3 100644 --- a/configure.ac +++ b/configure.ac @@ -1024,21 +1024,26 @@ then
dnl Determine debug info format AC_SUBST(CROSSDEBUG) + ac_debug_format_seen= if test -z "$CROSSDEBUG" then for ac_flag in $CROSSCFLAGS; do case $ac_flag in - -gdwarf*) CROSSDEBUG=dwarf ;; + -gdwarf-*) ac_debug_format_seen=yes ;; + -g) ac_debug_format_seen=${ac_debug_format_seen:-default} ;; -gcodeview) CROSSDEBUG=pdb ;; - -g) CROSSDEBUG=${CROSSDEBUG:-dwarf} ;; esac done fi case $CROSSDEBUG in - *dwarf) WINE_TRY_CROSSCFLAGS([-gdwarf-2]) - WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;; + *dwarf) ac_debug_format_seen=default ;; pdb) WINE_TRY_CROSSCFLAGS([-gcodeview]) ;; esac + if test "x$ac_debug_format_seen" = "xdefault" + then + WINE_TRY_CROSSCFLAGS([-gdwarf-2]) + WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) + fi
WINE_TRY_CROSSCFLAGS([-fexcess-precision=standard],[AC_SUBST(EXCESS_PRECISION_CFLAGS,"-fexcess-precision=standard")])
@@ -2031,13 +2036,18 @@ char*f(const char *h,char n) {return strchr(h,n);}]])],[ac_cv_c_logicalop_noisy= *) EXTRACFLAGS="$EXTRACFLAGS $wine_cv_64bit_compare_swap" ;; esac
- dnl Default to dwarf-2 debug info + dnl Determine debug info format + ac_debug_format_seen= for ac_flag in $CFLAGS; do case $ac_flag in - -g) WINE_TRY_CFLAGS([-gdwarf-2]) - WINE_TRY_CFLAGS([-gstrict-dwarf]) ;; + -gdwarf-*) ac_debug_format_seen=yes ;; + -g) ac_debug_format_seen=${ac_debug_format_seen:-default} ;; esac done + if test "x$ac_debug_format_seen" = "xdefault"; then + WINE_TRY_CFLAGS([-gdwarf-2]) + WINE_TRY_CFLAGS([-gstrict-dwarf]) + fi
dnl Disable gcc builtins except for Mingw AC_SUBST(MSVCRTFLAGS,"")
any news on this one ? TIA A+
On Mon, 4 Oct 2021 at 18:37, Eric Pouech eric.pouech@gmail.com wrote:
usage: configure CFLAGS="-gdwarf-4 -O2" will enable dwarf4 compilation for ELF parts (and CROSSCFLAGS="-gdwarf-4 -O2" for PE parts)
evolution from current behavior:
- when CFLAGS contains "-gdwarf-X", -gdwarf-X option is not tested with WINE_TRY_CFLAGS (the option remains anyway in CFLAGS -so WINE_TRY is useless- and is not copied in EXTRACFLAGS) (ditto for CROSSCFLAGS)
- using CROSSCFLAGS=-gdwarf is no longer converted to Wine's preferred format, but is kepts as is, hence will boil down to compiler's preferred dwarf version
what remains undone (and could be improved):
- no test that the final configuration is suitable for Wine (ie if WINE_TRY_CFLAGS fails on -gdwarf-2, compilation is done with compilers's default format => dwarf5 on Linux)
- using CROSSDEBUG=dwarf-split will compile in dwarf-2, while CROSSDEBUG=split will compile in compiler's default (likely dwarf-5 currently)
Signed-off-by: Eric Pouech eric.pouech@gmail.com
configure.ac | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/configure.ac b/configure.ac index 913692c828a..e0ec8fd17d3 100644 --- a/configure.ac +++ b/configure.ac @@ -1024,21 +1024,26 @@ then
dnl Determine debug info format AC_SUBST(CROSSDEBUG)
ac_debug_format_seen= if test -z "$CROSSDEBUG" then for ac_flag in $CROSSCFLAGS; do case $ac_flag in
-gdwarf*) CROSSDEBUG=dwarf ;;
-gdwarf-*) ac_debug_format_seen=yes ;;
-g)
ac_debug_format_seen=${ac_debug_format_seen:-default} ;; -gcodeview) CROSSDEBUG=pdb ;;
-g) CROSSDEBUG=${CROSSDEBUG:-dwarf} ;; esac done fi case $CROSSDEBUG in
*dwarf) WINE_TRY_CROSSCFLAGS([-gdwarf-2])
WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
*dwarf) ac_debug_format_seen=default ;; pdb) WINE_TRY_CROSSCFLAGS([-gcodeview]) ;; esac
if test "x$ac_debug_format_seen" = "xdefault"
then
WINE_TRY_CROSSCFLAGS([-gdwarf-2])
WINE_TRY_CROSSCFLAGS([-gstrict-dwarf])
fi
WINE_TRY_CROSSCFLAGS([-fexcess-precision=standard],[AC_SUBST(EXCESS_PRECISION_CFLAGS,"-fexcess-precision=standard")])
@@ -2031,13 +2036,18 @@ char*f(const char *h,char n) {return strchr(h,n);}]])],[ac_cv_c_logicalop_noisy= *) EXTRACFLAGS="$EXTRACFLAGS $wine_cv_64bit_compare_swap" ;; esac
- dnl Default to dwarf-2 debug info
- dnl Determine debug info format
- ac_debug_format_seen= for ac_flag in $CFLAGS; do case $ac_flag in
-g) WINE_TRY_CFLAGS([-gdwarf-2])
WINE_TRY_CFLAGS([-gstrict-dwarf]) ;;
-gdwarf-*) ac_debug_format_seen=yes ;;
-g) ac_debug_format_seen=${ac_debug_format_seen:-default}
;; esac done
if test "x$ac_debug_format_seen" = "xdefault"; then
WINE_TRY_CFLAGS([-gdwarf-2])
WINE_TRY_CFLAGS([-gstrict-dwarf])
fi
dnl Disable gcc builtins except for Mingw AC_SUBST(MSVCRTFLAGS,"")
Eric Pouech eric.pouech@gmail.com writes:
any news on this one ?
It's waiting on feedback from Jacek, but I believe he's out on vacation at the moment.
Hi Eric,
Sorry for the delay.
On 10/4/21 6:37 PM, Eric Pouech wrote:
ac_debug_format_seen= if test -z "$CROSSDEBUG" then for ac_flag in $CROSSCFLAGS; do case $ac_flag in
-gdwarf*) CROSSDEBUG=dwarf ;;
-gdwarf-*) ac_debug_format_seen=yes ;;
-g) ac_debug_format_seen=${ac_debug_format_seen:-default} ;; -gcodeview) CROSSDEBUG=pdb ;;
-g) CROSSDEBUG=${CROSSDEBUG:-dwarf} ;; esac done fi case $CROSSDEBUG in
*dwarf) WINE_TRY_CROSSCFLAGS([-gdwarf-2])
WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
*dwarf) ac_debug_format_seen=default ;; pdb) WINE_TRY_CROSSCFLAGS([-gcodeview]) ;; esac
if test "x$ac_debug_format_seen" = "xdefault"
then
WINE_TRY_CROSSCFLAGS([-gdwarf-2])
WINE_TRY_CROSSCFLAGS([-gstrict-dwarf])
fi
I think that this will not work for PDBs: when CROSSCFLAGS="-g -gcodeview", we'd try to append "-gdwarf-2 -gstrict-dwarf".
Thanks,
Jacek
I think that this will not work for PDBs: when CROSSCFLAGS="-g -gcodeview", we'd try to append "-gdwarf-2 -gstrict-dwarf".
I thought you'd use CROSSDEBUG=pdb in that case :-(
I'll resend an update
A+