bug-gnulib@gnu.org mirror (unofficial)
 help / color / mirror / Atom feed
* more Android support
@ 2019-01-27 10:42 Bruno Haible
  0 siblings, 0 replies; only message in thread
From: Bruno Haible @ 2019-01-27 10:42 UTC (permalink / raw)
  To: bug-gnulib

[-- Attachment #1: Type: text/plain, Size: 791 bytes --]

In a couple of more places, it makes sense to treat Android like Linux.


2019-01-26  Bruno Haible  <bruno@clisp.org>

	vma-iter: Add support for Android.
	* lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Define on Android as well.
	* lib/vma-iter.c: Treat Android like Linux.
	* lib/get-rusage-data.c (get_rusage_data): Likewise.

2019-01-26  Bruno Haible  <bruno@clisp.org>

	getloadavg: Add support for Android.
	* lib/getloadavg.c: Treat Android like Linux.

2019-01-27  Bruno Haible  <bruno@clisp.org>

	relocatable-prog: Use Linux code on Android.
	* lib/progreloc.c: Treat Android like Linux.

2019-01-27  Bruno Haible  <bruno@clisp.org>

	tests: Enable Linux specific tests on Android.
	* tests/test-flock.c (main): Treat Android like Linux.
	* tests/test-openat-safer.c (main): Likewise.


[-- Attachment #2: 0001-vma-iter-Add-support-for-Android.patch --]
[-- Type: text/x-patch, Size: 6553 bytes --]

From 79b92f92dbba81d48f62e85b5b2dd8bdc4798c41 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Sun, 27 Jan 2019 04:57:29 +0100
Subject: [PATCH 1/4] vma-iter: Add support for Android.

* lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Define on Android as well.
* lib/vma-iter.c: Treat Android like Linux.
* lib/get-rusage-data.c (get_rusage_data): Likewise.
---
 ChangeLog             |  7 +++++++
 lib/get-rusage-data.c |  2 +-
 lib/vma-iter.c        | 14 +++++++-------
 lib/vma-iter.h        |  2 +-
 4 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index eec6a50..6fb03bc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2019-01-26  Bruno Haible  <bruno@clisp.org>
 
+	vma-iter: Add support for Android.
+	* lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Define on Android as well.
+	* lib/vma-iter.c: Treat Android like Linux.
+	* lib/get-rusage-data.c (get_rusage_data): Likewise.
+
+2019-01-26  Bruno Haible  <bruno@clisp.org>
+
 	fts: Optimize on Android.
 	* lib/fts.c: Treat Android like Linux.
 
diff --git a/lib/get-rusage-data.c b/lib/get-rusage-data.c
index cdd5d99..131cca7 100644
--- a/lib/get-rusage-data.c
+++ b/lib/get-rusage-data.c
@@ -413,7 +413,7 @@ get_rusage_data (void)
      Prefer get_rusage_data_via_iterator().  */
   return get_rusage_data_via_iterator ();
 #elif HAVE_SETRLIMIT && defined RLIMIT_DATA && !defined __HAIKU__
-# if defined __linux__ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ || defined _AIX || defined __hpux || defined __sgi || defined __osf__ || defined __sun /* Linux, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, IRIX, OSF/1, Solaris */
+# if defined __linux__ || defined __ANDROID__ || defined __FreeBSD__ || defined __NetBSD__ || defined __OpenBSD__ || defined _AIX || defined __hpux || defined __sgi || defined __osf__ || defined __sun /* Linux, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, IRIX, OSF/1, Solaris */
   /* get_rusage_data_via_setrlimit() works.  */
   return get_rusage_data_via_setrlimit ();
 # else
diff --git a/lib/vma-iter.c b/lib/vma-iter.c
index d641570..5bf3906 100644
--- a/lib/vma-iter.c
+++ b/lib/vma-iter.c
@@ -40,11 +40,11 @@
 #include <fcntl.h> /* open, O_RDONLY */
 #include <unistd.h> /* getpagesize, lseek, read, close, getpid */
 
-#if defined __linux__
+#if defined __linux__ || defined __ANDROID__
 # include <limits.h> /* PATH_MAX */
 #endif
 
-#if defined __linux__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __minix /* || defined __CYGWIN__ */
+#if defined __linux__ || defined __ANDROID__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __minix /* || defined __CYGWIN__ */
 # include <sys/types.h>
 # include <sys/mman.h> /* mmap, munmap */
 #endif
@@ -112,7 +112,7 @@
 
 /* Support for reading text files in the /proc file system.  */
 
-#if defined __linux__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __minix /* || defined __CYGWIN__ */
+#if defined __linux__ || defined __ANDROID__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __minix /* || defined __CYGWIN__ */
 
 /* Buffered read-only streams.
    We cannot use <stdio.h> here, because fopen() calls malloc(), and a malloc()
@@ -129,7 +129,7 @@
        VMAs with nonsensical addresses.
    So use mmap(), and ignore the resulting VMA.  */
 
-# ifdef __linux__
+# if defined __linux__ || defined __ANDROID__
   /* On Linux, if the file does not entirely fit into the buffer, the read()
      function stops before the line that would come out truncated.  The
      maximum size of such a line is 73 + PATH_MAX bytes.  To be sure that we
@@ -205,7 +205,7 @@ rof_open (struct rofile *rof, const char *filename)
                 {
                   /* The buffer was sufficiently large.  */
                   rof->filled = n;
-# ifdef __linux__
+# if defined __linux__ || defined __ANDROID__
                   /* On Linux, the read() call may stop even if the buffer was
                      large enough.  We need the equivalent of full_read().  */
                   for (;;)
@@ -342,7 +342,7 @@ rof_close (struct rofile *rof)
 
 /* Support for reading the info from a text file in the /proc file system.  */
 
-#if defined __linux__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) /* || defined __CYGWIN__ */
+#if defined __linux__ || defined __ANDROID__ || (defined __FreeBSD_kernel__ && !defined __FreeBSD__) /* || defined __CYGWIN__ */
 /* GNU/kFreeBSD mounts /proc as linprocfs, which looks like a Linux /proc
    file system.  */
 
@@ -866,7 +866,7 @@ vma_iterate_bsd (vma_iterate_callback_fn callback, void *data)
 int
 vma_iterate (vma_iterate_callback_fn callback, void *data)
 {
-#if defined __linux__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __minix /* || defined __CYGWIN__ */
+#if defined __linux__ || defined __ANDROID__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __minix /* || defined __CYGWIN__ */
 
 # if defined __FreeBSD__
   /* On FreeBSD with procfs (but not GNU/kFreeBSD, which uses linprocfs), the
diff --git a/lib/vma-iter.h b/lib/vma-iter.h
index c1e1e5a..e319d5d 100644
--- a/lib/vma-iter.h
+++ b/lib/vma-iter.h
@@ -52,7 +52,7 @@ extern int vma_iterate (vma_iterate_callback_fn callback, void *data);
    this platform.
    Note that even when this macro is defined, vma_iterate() may still fail to
    find any virtual memory area, for example if /proc is not mounted.  */
-#if defined __linux__ || defined __GNU__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sgi || defined __osf__ || defined __sun || HAVE_PSTAT_GETPROCVM || (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __CYGWIN__ || defined __BEOS__ || defined __HAIKU__ || defined __minix || HAVE_MQUERY
+#if defined __linux__ || defined __ANDROID__ || defined __GNU__ || defined __FreeBSD_kernel__ || defined __FreeBSD__ || defined __DragonFly__ || defined __NetBSD__ || defined __sgi || defined __osf__ || defined __sun || HAVE_PSTAT_GETPROCVM || (defined __APPLE__ && defined __MACH__) || defined _WIN32 || defined __CYGWIN__ || defined __BEOS__ || defined __HAIKU__ || defined __minix || HAVE_MQUERY
 # define VMA_ITERATE_SUPPORTED 1
 #endif
 
-- 
2.7.4


[-- Attachment #3: 0002-getloadavg-Add-support-for-Android.patch --]
[-- Type: text/x-patch, Size: 3853 bytes --]

From 70152b70539454073fbcd503daeed368b1059f43 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Sun, 27 Jan 2019 04:57:32 +0100
Subject: [PATCH 2/4] getloadavg: Add support for Android.

* lib/getloadavg.c: Treat Android like Linux.
---
 ChangeLog        |  5 +++++
 lib/getloadavg.c | 21 +++++++++++----------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6fb03bc..80aeb34 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2019-01-26  Bruno Haible  <bruno@clisp.org>
 
+	getloadavg: Add support for Android.
+	* lib/getloadavg.c: Treat Android like Linux.
+
+2019-01-26  Bruno Haible  <bruno@clisp.org>
+
 	vma-iter: Add support for Android.
 	* lib/vma-iter.h (VMA_ITERATE_SUPPORTED): Define on Android as well.
 	* lib/vma-iter.c: Treat Android like Linux.
diff --git a/lib/getloadavg.c b/lib/getloadavg.c
index 0ed697f..3536647 100644
--- a/lib/getloadavg.c
+++ b/lib/getloadavg.c
@@ -47,8 +47,8 @@
    N_NAME_POINTER               The nlist n_name element is a pointer,
                                 not an array.
    HAVE_STRUCT_NLIST_N_UN_N_NAME 'n_un.n_name' is member of 'struct nlist'.
-   LINUX_LDAV_FILE              [__linux__, __CYGWIN__]: File containing
-                                load averages.
+   LINUX_LDAV_FILE              [__linux__, __ANDROID__, __CYGWIN__]: File
+                                containing load averages.
 
    Specific system predefines this file uses, aside from setting
    default values if not emacs:
@@ -65,7 +65,7 @@
    UMAX4_3
    VMS
    _WIN32                       Native Windows (possibly also defined on Cygwin)
-   __linux__                    Linux: assumes /proc file system mounted.
+   __linux__, __ANDROID__       Linux: assumes /proc file system mounted.
                                 Support from Michael K. Johnson.
    __CYGWIN__                   Cygwin emulates linux /proc/loadavg.
    __NetBSD__                   NetBSD: assumes /kern file system mounted.
@@ -263,7 +263,7 @@
 # ifdef LOAD_AVE_TYPE
 
 #  ifndef __VMS
-#   ifndef __linux__
+#   if !(defined __linux__ || defined __ANDROID__)
 #    ifndef NLIST_STRUCT
 #     include <a.out.h>
 #    else /* NLIST_STRUCT */
@@ -286,7 +286,7 @@
 #    ifndef LDAV_SYMBOL
 #     define LDAV_SYMBOL "_avenrun"
 #    endif /* LDAV_SYMBOL */
-#   endif /* __linux__ */
+#   endif /* __linux__ || __ANDROID__ */
 
 #  else /* __VMS */
 
@@ -359,7 +359,8 @@
 #  include <sys/dg_sys_info.h>
 # endif
 
-# if (defined __linux__ || defined __CYGWIN__ || defined SUNOS_5        \
+# if (defined __linux__ || defined __ANDROID__ \
+      || defined __CYGWIN__ || defined SUNOS_5 \
       || (defined LOAD_AVE_TYPE && ! defined __VMS))
 #  include <fcntl.h>
 # endif
@@ -388,7 +389,7 @@ static bool getloadavg_initialized;
 /* Offset in kmem to seek to read load average, or 0 means invalid.  */
 static long offset;
 
-#  if ! defined __VMS && ! defined sgi && ! defined __linux__
+#  if ! defined __VMS && ! defined sgi && ! (defined __linux__ || defined __ANDROID__)
 static struct nlist name_list[2];
 #  endif
 
@@ -498,8 +499,8 @@ getloadavg (double loadavg[], int nelem)
   }
 # endif
 
-# if !defined (LDAV_DONE) && (defined (__linux__) || defined (__CYGWIN__))
-                                              /* Linux without glibc, Cygwin */
+# if !defined (LDAV_DONE) && (defined __linux__ || defined __ANDROID__ || defined __CYGWIN__)
+                                      /* Linux without glibc, Android, Cygwin */
 #  define LDAV_DONE
 #  undef LOAD_AVE_TYPE
 
@@ -554,7 +555,7 @@ getloadavg (double loadavg[], int nelem)
 
   return elem;
 
-# endif /* __linux__ || __CYGWIN__ */
+# endif /* __linux__ || __ANDROID__ || __CYGWIN__ */
 
 # if !defined (LDAV_DONE) && defined (__NetBSD__)          /* NetBSD < 0.9 */
 #  define LDAV_DONE
-- 
2.7.4


[-- Attachment #4: 0003-relocatable-prog-Use-Linux-code-on-Android.patch --]
[-- Type: text/x-patch, Size: 1902 bytes --]

From fa3e028aab95578dacf9bf42733c123865b82654 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Sun, 27 Jan 2019 11:37:46 +0100
Subject: [PATCH 3/4] relocatable-prog: Use Linux code on Android.

* lib/progreloc.c: Treat Android like Linux.
---
 ChangeLog       | 5 +++++
 lib/progreloc.c | 6 +++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 80aeb34..82fc48f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2019-01-27  Bruno Haible  <bruno@clisp.org>
+
+	relocatable-prog: Use Linux code on Android.
+	* lib/progreloc.c: Treat Android like Linux.
+
 2019-01-26  Bruno Haible  <bruno@clisp.org>
 
 	getloadavg: Add support for Android.
diff --git a/lib/progreloc.c b/lib/progreloc.c
index 5cec310..1c4db0c 100644
--- a/lib/progreloc.c
+++ b/lib/progreloc.c
@@ -102,7 +102,7 @@ extern char * canonicalize_file_name (const char *name);
 
 #if ENABLE_RELOCATABLE
 
-#if defined __linux__ || defined __CYGWIN__
+#if defined __linux__ || defined __ANDROID__ || defined __CYGWIN__
 /* File descriptor of the executable.
    (Only used to verify that we find the correct executable.)  */
 static int executable_fd = -1;
@@ -118,7 +118,7 @@ maybe_executable (const char *filename)
     return false;
 #endif
 
-#if defined __linux__ || defined __CYGWIN__
+#if defined __linux__ || defined __ANDROID__ || defined __CYGWIN__
   if (executable_fd >= 0)
     {
       /* If we already have an executable_fd, check that filename points to
@@ -180,7 +180,7 @@ find_executable (const char *argv0)
 
   return xstrdup (location);
 #else /* Unix */
-# ifdef __linux__
+# if defined __linux__ || defined __ANDROID__
   /* The executable is accessible as /proc/<pid>/exe.  In newer Linux
      versions, also as /proc/self/exe.  Linux >= 2.1 provides a symlink
      to the true pathname; older Linux versions give only device and ino,
-- 
2.7.4


[-- Attachment #5: 0004-tests-Enable-Linux-specific-tests-on-Android.patch --]
[-- Type: text/x-patch, Size: 2040 bytes --]

From 675d6027ed01a4dc971d8fe8cdd8fee9eae209b7 Mon Sep 17 00:00:00 2001
From: Bruno Haible <bruno@clisp.org>
Date: Sun, 27 Jan 2019 11:39:56 +0100
Subject: [PATCH 4/4] tests: Enable Linux specific tests on Android.

* tests/test-flock.c (main): Treat Android like Linux.
* tests/test-openat-safer.c (main): Likewise.
---
 ChangeLog                 | 6 ++++++
 tests/test-flock.c        | 2 +-
 tests/test-openat-safer.c | 2 +-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 82fc48f..5c77d69 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2019-01-27  Bruno Haible  <bruno@clisp.org>
 
+	tests: Enable Linux specific tests on Android.
+	* tests/test-flock.c (main): Treat Android like Linux.
+	* tests/test-openat-safer.c (main): Likewise.
+
+2019-01-27  Bruno Haible  <bruno@clisp.org>
+
 	relocatable-prog: Use Linux code on Android.
 	* lib/progreloc.c: Treat Android like Linux.
 
diff --git a/tests/test-flock.c b/tests/test-flock.c
index ff688bc..aa428ff 100644
--- a/tests/test-flock.c
+++ b/tests/test-flock.c
@@ -98,7 +98,7 @@ main (int argc, char *argv[])
   ASSERT (fd >= 0);
   ASSERT (write (fd, "hello", 5) == 5);
 
-#if defined __linux__
+#if defined __linux__ || defined __ANDROID__
   /* Invalid operation codes are rejected by the Linux implementation and by
      the gnulib replacement,  but not by the Mac OS X implementation.  */
   ASSERT (flock (fd, LOCK_SH | LOCK_EX) == -1);
diff --git a/tests/test-openat-safer.c b/tests/test-openat-safer.c
index 042e488..7971168 100644
--- a/tests/test-openat-safer.c
+++ b/tests/test-openat-safer.c
@@ -96,7 +96,7 @@ main (void)
           errno = 0;
           ASSERT (openat (dfd, witness "/", O_RDONLY) == -1);
           ASSERT (errno == ENOTDIR || errno == EISDIR || errno == EINVAL);
-#ifdef __linux__
+#if defined __linux__ || defined __ANDROID__
           /* Using a bad directory is okay for absolute paths.  */
           fd = openat (-1, "/dev/null", O_WRONLY);
           ASSERT (STDERR_FILENO < fd);
-- 
2.7.4


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2019-01-27 10:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-27 10:42 more Android support Bruno Haible

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).