aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@adacore.com>2015-11-23 09:48:16 -0800
committerJoel Brobecker <brobecker@adacore.com>2015-11-23 09:48:16 -0800
commit64da5dd5eaa60269a8070e0bdb740b3b2c6e9740 (patch)
treefbdb5a55d5a05262302003f7ccb89972b77aa38d /gdb/gdbserver
parent206853a02ec27f603ecd584503bfb33cc0fdc03d (diff)
downloadgdb-64da5dd5eaa60269a8070e0bdb740b3b2c6e9740.zip
gdb-64da5dd5eaa60269a8070e0bdb740b3b2c6e9740.tar.gz
gdb-64da5dd5eaa60269a8070e0bdb740b3b2c6e9740.tar.bz2
[gdbserver] disable Elf32_auxv_t/Elf64_auxv_t AC_CHECK_TYPES check on Android
See the comment added in configure.ac for more details behind this change. gdb/gdbserver/ChangeLog: * configure.ac: Do not call AC_CHECK_TYPES for Elf32_auxv_t and Elf64_auxv_t if the target is Android.
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r--gdb/gdbserver/ChangeLog5
-rwxr-xr-xgdb/gdbserver/configure16
-rw-r--r--gdb/gdbserver/configure.ac20
3 files changed, 37 insertions, 4 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 4c06457..7e9d695 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,8 @@
+2015-11-23 Joel Brobecker <brobecker@adacore.com>
+
+ * configure.ac: Do not call AC_CHECK_TYPES for Elf32_auxv_t
+ and Elf64_auxv_t if the target is Android.
+
2015-11-22 Doug Evans <xdje42@gmail.com>
* target.h: #include <sys/types.h>.
diff --git a/gdb/gdbserver/configure b/gdb/gdbserver/configure
index 87dfda0..ccb9639 100755
--- a/gdb/gdbserver/configure
+++ b/gdb/gdbserver/configure
@@ -6442,7 +6442,20 @@ _ACEOF
fi
-ac_fn_c_check_type "$LINENO" "Elf32_auxv_t" "ac_cv_type_Elf32_auxv_t" "#include <elf.h>
+case "${target}" in
+ *-android*)
+ # Starting with NDK version 9, <elf.h> actually includes definitions
+ # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
+ # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
+ # leading to conflicts with the defintions from <linux/elf.h>.
+ # This makes it impossible for us to include both <elf.h> and
+ # <linux/elf.h>, which means that, in practice, we do not have
+ # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
+ # Therefore, do not try to auto-detect availability, as it would
+ # get it wrong on this platform.
+ ;;
+ *)
+ ac_fn_c_check_type "$LINENO" "Elf32_auxv_t" "ac_cv_type_Elf32_auxv_t" "#include <elf.h>
"
if test "x$ac_cv_type_Elf32_auxv_t" = x""yes; then :
@@ -6465,6 +6478,7 @@ _ACEOF
fi
+esac
diff --git a/gdb/gdbserver/configure.ac b/gdb/gdbserver/configure.ac
index d50d0f1..5524a05 100644
--- a/gdb/gdbserver/configure.ac
+++ b/gdb/gdbserver/configure.ac
@@ -235,9 +235,23 @@ AC_CHECK_TYPES(socklen_t, [], [],
#include <sys/socket.h>
])
-AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
-#include <elf.h>
-)
+case "${target}" in
+ *-android*)
+ # Starting with NDK version 9, <elf.h> actually includes definitions
+ # of Elf32_auxv_t and Elf64_auxv_t. But sadly, <elf.h> includes
+ # <sys/exec_elf.h> which defines some of the ELF types incorrectly,
+ # leading to conflicts with the defintions from <linux/elf.h>.
+ # This makes it impossible for us to include both <elf.h> and
+ # <linux/elf.h>, which means that, in practice, we do not have
+ # access to Elf32_auxv_t and Elf64_auxv_t on this platform.
+ # Therefore, do not try to auto-detect availability, as it would
+ # get it wrong on this platform.
+ ;;
+ *)
+ AC_CHECK_TYPES([Elf32_auxv_t, Elf64_auxv_t], [], [],
+ #include <elf.h>
+ )
+esac
ACX_PKGVERSION([GDB])
ACX_BUGURL([http://www.gnu.org/software/gdb/bugs/])