Hello,
Building libiberty on Android currently fails with the error message
shown below. This was discovered by trying to build GDBserver
for Android, which stopped building after libiberty became
a GDBserver dependency.
Here is the error message:
[...]/getpagesize.c:64:1: error: redefinition of 'getpagesize'
In file included from /[...]/getpagesize.c:34:0:
/[...]/usr/include/unistd.h:171:23: note: previous definition of 'getpagesize'
was here
And looking at the definition, one can see that it defined as
a static inline function...
static __inline__ int getpagesize(void) {
extern unsigned int __page_size;
return __page_size;
}
... which explains why the AC_CHECK_FUNCS test failed to detect
the function, since there is no associated symbol to be linked in.
This patch prevents getpagesize.c to be compiled in by hard-coding
the fact that getpagesize is available on android hosts.
libiberty/ChangeLog:
* configure.ac: Set AC_CV_FUNC_GETPAGESIZE to "yes" on
Android hosts.
* configure: Regenerate.
OK to apply?
Thank you!
--
Joel
---
libiberty/configure| 6 ++
libiberty/configure.ac | 6 ++
2 files changed, 12 insertions(+)
diff --git a/libiberty/configure b/libiberty/configure
index d8890a1..720dc5e 100755
--- a/libiberty/configure
+++ b/libiberty/configure
@@ -6248,6 +6248,12 @@ if test -z "${setobjs}"; then
case "${host}" in
+ *-*-android*)
+# On android, getpagesize is defined in unistd.h as a static inline
+# function, which AC_CHECK_FUNCS does not handle properly.
+ac_cv_func_getpagesize=yes
+;;
+
*-*-mingw32*)
# Under mingw32, sys_nerr and sys_errlist exist, but they are
# macros, so the test below won't find them.
diff --git a/libiberty/configure.ac b/libiberty/configure.ac
index 868be8e..e21e3aa 100644
--- a/libiberty/configure.ac
+++ b/libiberty/configure.ac
@@ -600,6 +600,12 @@ if test -z "${setobjs}"; then
case "${host}" in
+ *-*-android*)
+# On android, getpagesize is defined in unistd.h as a static inline
+# function, which AC_CHECK_FUNCS does not handle properly.
+ac_cv_func_getpagesize=yes
+;;
+
*-*-mingw32*)
# Under mingw32, sys_nerr and sys_errlist exist, but they are
# macros, so the test below won't find them.
--
2.1.4