[v2] Fix gdbserver build with x86_64-w64-mingw32 -m32
Commit Message
This patch allows a x86_64-w64-mingw32 toolchain to build a 32-bit
gdbserver. Without it, gdbserver attempts to link to the 64-bit
register files, resulting in undefined references.
This version was regenerated with correct version of aclocal and rebased to the
current HEAD.
* configure.ac: Add check for -m32 on x86_64-*-mingw*.
* configure.srv: If using -m32 on x86_64-*-mingw*, use i386
instead of amd64 registers.
* configure: Regenerated.
Signed-off-by: Zachary T Welch <zwelch@codesourcery.com>
---
gdb/gdbserver/ChangeLog | 7 +++++++
gdb/gdbserver/configure | 29 +++++++++++++++++++++++++++++
gdb/gdbserver/configure.ac | 12 ++++++++++++
gdb/gdbserver/configure.srv | 3 +++
4 files changed, 51 insertions(+)
Comments
> This patch allows a x86_64-w64-mingw32 toolchain to build a 32-bit
> gdbserver. Without it, gdbserver attempts to link to the 64-bit
> register files, resulting in undefined references.
>
> This version was regenerated with correct version of aclocal and rebased to the
> current HEAD.
>
> * configure.ac: Add check for -m32 on x86_64-*-mingw*.
> * configure.srv: If using -m32 on x86_64-*-mingw*, use i386
> instead of amd64 registers.
> * configure: Regenerated.
As explained in...
https://www.sourceware.org/ml/gdb-patches/2015-01/msg00324.html
... I am more convinced now that this not correct. From what
I have seen so far, I think you are needing this patch because
you are calling configure incorrectly.
@@ -1,3 +1,10 @@
+2015-01-12 Zachary T Welch <zwelch@codesourcery.com>
+
+ * configure.ac: Add check for -m32 on x86_64-*-mingw*.
+ * configure.srv: If using -m32 on x86_64-*-mingw*, use i386
+ instead of amd64 registers.
+ * configure: Regenerated.
+
2015-01-10 Joel Brobecker <brobecker@adacore.com>
* i387-fp.c (i387_cache_to_xsave): In look over
@@ -5535,6 +5535,35 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_m68k_is_coldfire" >&5
$as_echo "$gdb_cv_m68k_is_coldfire" >&6; }
;;
+ x86_64-*-mingw*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if building with -m32" >&5
+$as_echo_n "checking if building with -m32... " >&6; }
+if test "${gdb_cv_x86_64_is_i386+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $CFLAGS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#if ! __x86_64__
+got it
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "got it" >/dev/null 2>&1; then :
+ gdb_cv_w64_x86_64_is_i386=yes
+else
+ gdb_cv_w64_x86_64_is_i386=no
+fi
+rm -f conftest*
+
+ CPPFLAGS="$save_CPPFLAGS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_x86_64_is_i386" >&5
+$as_echo "$gdb_cv_x86_64_is_i386" >&6; }
+ ;;
esac
. ${srcdir}/configure.srv
@@ -238,6 +238,18 @@ got it
[gdb_cv_m68k_is_coldfire=no])
CPPFLAGS="$save_CPPFLAGS"])
;;
+ x86_64-*-mingw*)
+ AC_CACHE_CHECK([if building with -m32], [gdb_cv_x86_64_is_i386],
+ [save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $CFLAGS"
+ AC_EGREP_CPP([got it], [
+#if ! __x86_64__
+got it
+#endif
+ ], [gdb_cv_w64_x86_64_is_i386=yes],
+ [gdb_cv_w64_x86_64_is_i386=no])
+ CPPFLAGS="$save_CPPFLAGS"])
+ ;;
esac
. ${srcdir}/configure.srv
@@ -325,6 +325,9 @@ case "${target}" in
ipa_obj="${ipa_amd64_linux_regobj} linux-amd64-ipa.o"
;;
x86_64-*-mingw*) srv_regobj="$srv_amd64_regobj"
+ if test "$gdb_cv_w64_x86_64_is_i386" = yes ; then
+ srv_regobj="$srv_i386_regobj"
+ fi
srv_tgtobj="x86-low.o x86-dregs.o i387-fp.o win32-low.o win32-i386-low.o"
srv_xmlfiles="$srv_i386_xmlfiles $srv_amd64_xmlfiles"
srv_mingw=yes