[PATCH 12/12] configure: allow picking up a dedicated dwarf version from command line

Eric Pouech eric.pouech at gmail.com
Sun Sep 26 07:47:39 CDT 2021


- added support in CROSSDEBUG for choosing which dwarf version is
  used for cross compiling Wine
- added DEBUGFORMAT option to pick dwarf version for regular compilation

Default for both is still 2

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>

---
 configure    |  168 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
 configure.ac |   15 +++--
 2 files changed, 158 insertions(+), 25 deletions(-)

diff --git a/configure b/configure
index 7c2f53f5655..a984df5fa15 100755
--- a/configure
+++ b/configure
@@ -631,6 +631,7 @@ RT_LIBS
 POLL_LIBS
 TOOLSEXT
 MSVCRTFLAGS
+DEBUGFORMAT
 EXTRACFLAGS
 VKD3D_SHADER_LIBS
 VKD3D_SHADER_CFLAGS
@@ -7013,7 +7014,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -7059,7 +7060,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -7083,7 +7084,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -7128,7 +7129,7 @@ else
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -7152,7 +7153,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     We can't simply define LARGE_OFF_T to be 9223372036854775807,
     since some C++ compilers masquerading as C compilers
     incorrectly reject 9223372036854775807.  */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31))
+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
 		       && LARGE_OFF_T % 2147483647 == 1)
 		      ? 1 : -1];
@@ -10491,14 +10492,138 @@ fi ;;
         then
           for ac_flag in $CROSSCFLAGS; do
             case $ac_flag in
-             -gdwarf*)    CROSSDEBUG=dwarf ;;
+             -gdwarf*)    CROSSDEBUG=$ac_flag ;;
              -gcodeview)  CROSSDEBUG=pdb ;;
              -g)          CROSSDEBUG=${CROSSDEBUG:-dwarf} ;;
             esac
           done
         fi
         case $CROSSDEBUG in
-          *dwarf)  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gdwarf-2" >&5
+          *dwarf-3)        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gdwarf-3" >&5
+$as_echo_n "checking whether the cross-compiler supports -gdwarf-3... " >&6; }
+if ${ac_cv_crosscflags__gdwarf_3+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_wine_try_cflags_saved=$CFLAGS
+ac_wine_try_cflags_saved_cc=$CC
+ac_wine_try_cflags_saved_exeext=$ac_exeext
+CFLAGS="$CFLAGS $EXTRACROSSCFLAGS -nostartfiles -nodefaultlibs -gdwarf-3"
+CC="$CROSSCC"
+ac_exeext=".exe"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int __cdecl mainCRTStartup(void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_crosscflags__gdwarf_3=yes
+else
+  ac_cv_crosscflags__gdwarf_3=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+CC=$ac_wine_try_cflags_saved_cc
+ac_exeext=$ac_wine_try_cflags_saved_exeext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crosscflags__gdwarf_3" >&5
+$as_echo "$ac_cv_crosscflags__gdwarf_3" >&6; }
+if test "x$ac_cv_crosscflags__gdwarf_3" = xyes; then :
+  EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -gdwarf-3"
+fi
+                           { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gstrict-dwarf" >&5
+$as_echo_n "checking whether the cross-compiler supports -gstrict-dwarf... " >&6; }
+if ${ac_cv_crosscflags__gstrict_dwarf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_wine_try_cflags_saved=$CFLAGS
+ac_wine_try_cflags_saved_cc=$CC
+ac_wine_try_cflags_saved_exeext=$ac_exeext
+CFLAGS="$CFLAGS $EXTRACROSSCFLAGS -nostartfiles -nodefaultlibs -gstrict-dwarf"
+CC="$CROSSCC"
+ac_exeext=".exe"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int __cdecl mainCRTStartup(void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_crosscflags__gstrict_dwarf=yes
+else
+  ac_cv_crosscflags__gstrict_dwarf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+CC=$ac_wine_try_cflags_saved_cc
+ac_exeext=$ac_wine_try_cflags_saved_exeext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crosscflags__gstrict_dwarf" >&5
+$as_echo "$ac_cv_crosscflags__gstrict_dwarf" >&6; }
+if test "x$ac_cv_crosscflags__gstrict_dwarf" = xyes; then :
+  EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -gstrict-dwarf"
+fi ;;
+          *dwarf-4)        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gdwarf-4" >&5
+$as_echo_n "checking whether the cross-compiler supports -gdwarf-4... " >&6; }
+if ${ac_cv_crosscflags__gdwarf_4+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_wine_try_cflags_saved=$CFLAGS
+ac_wine_try_cflags_saved_cc=$CC
+ac_wine_try_cflags_saved_exeext=$ac_exeext
+CFLAGS="$CFLAGS $EXTRACROSSCFLAGS -nostartfiles -nodefaultlibs -gdwarf-4"
+CC="$CROSSCC"
+ac_exeext=".exe"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int __cdecl mainCRTStartup(void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_crosscflags__gdwarf_4=yes
+else
+  ac_cv_crosscflags__gdwarf_4=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+CC=$ac_wine_try_cflags_saved_cc
+ac_exeext=$ac_wine_try_cflags_saved_exeext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crosscflags__gdwarf_4" >&5
+$as_echo "$ac_cv_crosscflags__gdwarf_4" >&6; }
+if test "x$ac_cv_crosscflags__gdwarf_4" = xyes; then :
+  EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -gdwarf-4"
+fi
+                           { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gstrict-dwarf" >&5
+$as_echo_n "checking whether the cross-compiler supports -gstrict-dwarf... " >&6; }
+if ${ac_cv_crosscflags__gstrict_dwarf+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_wine_try_cflags_saved=$CFLAGS
+ac_wine_try_cflags_saved_cc=$CC
+ac_wine_try_cflags_saved_exeext=$ac_exeext
+CFLAGS="$CFLAGS $EXTRACROSSCFLAGS -nostartfiles -nodefaultlibs -gstrict-dwarf"
+CC="$CROSSCC"
+ac_exeext=".exe"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int __cdecl mainCRTStartup(void) { return 0; }
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_crosscflags__gstrict_dwarf=yes
+else
+  ac_cv_crosscflags__gstrict_dwarf=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+CFLAGS=$ac_wine_try_cflags_saved
+CC=$ac_wine_try_cflags_saved_cc
+ac_exeext=$ac_wine_try_cflags_saved_exeext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_crosscflags__gstrict_dwarf" >&5
+$as_echo "$ac_cv_crosscflags__gstrict_dwarf" >&6; }
+if test "x$ac_cv_crosscflags__gstrict_dwarf" = xyes; then :
+  EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -gstrict-dwarf"
+fi ;;
+          *dwarf|*dwarf-2) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gdwarf-2" >&5
 $as_echo_n "checking whether the cross-compiler supports -gdwarf-2... " >&6; }
 if ${ac_cv_crosscflags__gdwarf_2+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -10529,7 +10654,7 @@ $as_echo "$ac_cv_crosscflags__gdwarf_2" >&6; }
 if test "x$ac_cv_crosscflags__gdwarf_2" = xyes; then :
   EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -gdwarf-2"
 fi
-                   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gstrict-dwarf" >&5
+                           { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gstrict-dwarf" >&5
 $as_echo_n "checking whether the cross-compiler supports -gstrict-dwarf... " >&6; }
 if ${ac_cv_crosscflags__gstrict_dwarf+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -10560,7 +10685,7 @@ $as_echo "$ac_cv_crosscflags__gstrict_dwarf" >&6; }
 if test "x$ac_cv_crosscflags__gstrict_dwarf" = xyes; then :
   EXTRACROSSCFLAGS="$EXTRACROSSCFLAGS -gstrict-dwarf"
 fi ;;
-          pdb)     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gcodeview" >&5
+          pdb)             { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the cross-compiler supports -gcodeview" >&5
 $as_echo_n "checking whether the cross-compiler supports -gcodeview... " >&6; }
 if ${ac_cv_crosscflags__gcodeview+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -17543,32 +17668,35 @@ $as_echo "$wine_cv_64bit_compare_swap" >&6; }
       *) EXTRACFLAGS="$EXTRACFLAGS $wine_cv_64bit_compare_swap" ;;
   esac
 
-    for ac_flag in $CFLAGS; do
+
+  for ac_flag in $CFLAGS; do
     case $ac_flag in
-      -g) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -gdwarf-2" >&5
-$as_echo_n "checking whether the compiler supports -gdwarf-2... " >&6; }
-if ${ac_cv_cflags__gdwarf_2+:} false; then :
+      -g) as_ac_var=`$as_echo "ac_cv_cflags_-g${DEBUGFORMAT:-dwarf-2}" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -g${DEBUGFORMAT:-dwarf-2}" >&5
+$as_echo_n "checking whether the compiler supports -g${DEBUGFORMAT:-dwarf-2}... " >&6; }
+if eval \${$as_ac_var+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   ac_wine_try_cflags_saved=$CFLAGS
-CFLAGS="$CFLAGS -gdwarf-2"
+CFLAGS="$CFLAGS -g${DEBUGFORMAT:-dwarf-2}"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 int main(int argc, char **argv) { return 0; }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_cflags__gdwarf_2=yes
+  eval "$as_ac_var=yes"
 else
-  ac_cv_cflags__gdwarf_2=no
+  eval "$as_ac_var=no"
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
 CFLAGS=$ac_wine_try_cflags_saved
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cflags__gdwarf_2" >&5
-$as_echo "$ac_cv_cflags__gdwarf_2" >&6; }
-if test "x$ac_cv_cflags__gdwarf_2" = xyes; then :
-  EXTRACFLAGS="$EXTRACFLAGS -gdwarf-2"
+eval ac_res=\$$as_ac_var
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  EXTRACFLAGS="$EXTRACFLAGS -g${DEBUGFORMAT:-dwarf-2}"
 fi
           { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -gstrict-dwarf" >&5
 $as_echo_n "checking whether the compiler supports -gstrict-dwarf... " >&6; }
diff --git a/configure.ac b/configure.ac
index c0a126293c4..a019b4ac2d6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1036,16 +1036,20 @@ then
         then
           for ac_flag in $CROSSCFLAGS; do
             case $ac_flag in
-             -gdwarf*)    CROSSDEBUG=dwarf ;;
+             -gdwarf*)    CROSSDEBUG=$ac_flag ;;
              -gcodeview)  CROSSDEBUG=pdb ;;
              -g)          CROSSDEBUG=${CROSSDEBUG:-dwarf} ;;
             esac
           done
         fi
         case $CROSSDEBUG in
-          *dwarf)  WINE_TRY_CROSSCFLAGS([-gdwarf-2])
-                   WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
-          pdb)     WINE_TRY_CROSSCFLAGS([-gcodeview]) ;;
+          *dwarf-3)        WINE_TRY_CROSSCFLAGS([-gdwarf-3])
+                           WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
+          *dwarf-4)        WINE_TRY_CROSSCFLAGS([-gdwarf-4])
+                           WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
+          *dwarf|*dwarf-2) WINE_TRY_CROSSCFLAGS([-gdwarf-2])
+                           WINE_TRY_CROSSCFLAGS([-gstrict-dwarf]) ;;
+          pdb)             WINE_TRY_CROSSCFLAGS([-gcodeview]) ;;
         esac
 
         WINE_TRY_CROSSCFLAGS([-fexcess-precision=standard],[AC_SUBST(EXCESS_PRECISION_CFLAGS,"-fexcess-precision=standard")])
@@ -2040,9 +2044,10 @@ char*f(const char *h,char n) {return strchr(h,n);}]])],[ac_cv_c_logicalop_noisy=
   esac
 
   dnl Default to dwarf-2 debug info
+  AC_SUBST(DEBUGFORMAT)
   for ac_flag in $CFLAGS; do
     case $ac_flag in
-      -g) WINE_TRY_CFLAGS([-gdwarf-2])
+      -g) WINE_TRY_CFLAGS([-g${DEBUGFORMAT:-dwarf-2}])
           WINE_TRY_CFLAGS([-gstrict-dwarf]) ;;
     esac
   done




More information about the wine-devel mailing list