diff mbox

[RFA] Do not use libiberty's getpagesize on Android

Message ID 1446827261-1862-1-git-send-email-brobecker@adacore.com
State New
Headers show

Commit Message

Joel Brobecker Nov. 6, 2015, 4:27 p.m. UTC
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!

Comments

DJ Delorie Nov. 6, 2015, 7:35 p.m. UTC | #1
> libiberty/ChangeLog:
> 
>         * configure.ac: Set AC_CV_FUNC_GETPAGESIZE to "yes" on
>         Android hosts.
>         * configure: Regenerate.
> 
> OK to apply?

Ok.
Joel Brobecker Nov. 6, 2015, 9:42 p.m. UTC | #2
> > libiberty/ChangeLog:
> > 
> >         * configure.ac: Set AC_CV_FUNC_GETPAGESIZE to "yes" on
> >         Android hosts.
> >         * configure: Regenerate.
> > 
> > OK to apply?
> 
> Ok.

Thank you, DJ. committed in gcc's SVN, and pushed to binutils-gdb.
diff mbox

Patch

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.