2012-11-06 Bernard Banner <banner@adacore.com>
authorBernard Banner <banner@adacore.com>
Tue, 6 Nov 2012 09:41:56 +0000 (09:41 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 6 Nov 2012 09:41:56 +0000 (10:41 +0100)
* adaint.c Add file macro definitions missing on Android.
* adaint.h Avoid definitions related to task affinity and CPU
sets since this functionality is missing on the Android
* errno.c (__set_errno): Android already contains such a named
procedure so do include again.
* gsocket.h: Sockets not supported on Android.
* init.c: Avoid linux related code not supported on Android.
* sysdep.c (sigismember, sigaddset, sigdelset, sigemptyset,
sigfillset): wrapper functions since sig routines are defined
as inline macros on Android.
* terminals.c: Add stubs for terminal related functions not
supported on Android.

From-SVN: r193213

gcc/ada/ChangeLog
gcc/ada/adaint.c
gcc/ada/adaint.h
gcc/ada/errno.c
gcc/ada/gsocket.h
gcc/ada/init.c
gcc/ada/sysdep.c
gcc/ada/terminals.c

index a07bc70..fb23cb3 100644 (file)
@@ -1,3 +1,18 @@
+2012-11-06  Bernard Banner  <banner@adacore.com>
+
+       * adaint.c Add file macro definitions missing on Android.
+       * adaint.h Avoid definitions related to task affinity and CPU
+       sets since this functionality is missing on the Android
+       * errno.c (__set_errno): Android already contains such a named
+       procedure so do include again.
+       * gsocket.h: Sockets not supported on Android.
+       * init.c: Avoid linux related code not supported on Android.
+       * sysdep.c (sigismember, sigaddset, sigdelset, sigemptyset,
+       sigfillset): wrapper functions since sig routines are defined
+       as inline macros on Android.
+       * terminals.c: Add stubs for terminal related functions not
+       supported on Android.
+
 2012-11-06  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * sem_prag.adb (Analyze_Pragma): Do not
index 54244bd..eab3ea5 100644 (file)
@@ -87,8 +87,8 @@ extern "C" {
 #include <unixio.h>
 #endif
 
-#ifdef __vxworks
-/* S_IREAD and S_IWRITE are not defined in VxWorks */
+#if defined (__vxworks) || defined (__ANDROID__)
+/* S_IREAD and S_IWRITE are not defined in VxWorks or Android */
 #ifndef S_IREAD
 #define S_IREAD  (S_IRUSR | S_IRGRP | S_IROTH)
 #endif
@@ -3763,7 +3763,16 @@ void __main (void) {}
 #endif
 #endif
 
-#if defined (linux)
+#if defined (__ANDROID__)
+
+#include <pthread.h>
+
+void *__gnat_lwp_self (void)
+{
+   return (void *) pthread_self ();
+}
+
+#elif defined (linux)
 /* There is no function in the glibc to retrieve the LWP of the current
    thread. We need to do a system call in order to retrieve this
    information. */
index 6097e61..7956e27 100644 (file)
@@ -250,7 +250,11 @@ extern char * __gnat_locate_executable_file        (char *, char *);
 extern char * __gnat_locate_file_with_predicate    (char *, char *,
                                                    int (*)(char*));
 
-#if defined (linux)
+#if defined (__ANDROID__)
+#undef linux
+extern void   *__gnat_lwp_self                     (void);
+
+#elif defined (linux)
 extern void   *__gnat_lwp_self                    (void);
 
 /* Routines for interface to required CPU set primitives */
index 93c8660..2fbeacc 100644 (file)
@@ -58,8 +58,10 @@ __get_errno(void)
   return errno;
 }
 
+#ifndef __ANDROID__
 void
 __set_errno(int err)
 {
   errno = err;
 }
+#endif
index c364fdb..e21d714 100644 (file)
@@ -29,7 +29,7 @@
  *                                                                          *
  ****************************************************************************/
 
-#if defined(__nucleus__) || defined(VTHREADS)
+#if defined(__nucleus__) || defined(VTHREADS) || defined(__ANDROID__)
 
 #warning Sockets not supported on these platforms
 #undef HAVE_SOCKETS
index ad00e14..e7283a2 100644 (file)
@@ -52,6 +52,10 @@ extern "C" {
 #include "vxWorks.h"
 #endif
 
+#ifdef __ANDROID__
+#undef linux
+#endif
+
 #ifdef IN_RTS
 #include "tconfig.h"
 #include "tsystem.h"
index ee31840..62a96dd 100644 (file)
 #include "vxWorks.h"
 #endif
 
+#ifdef __ANDROID__
+#undef linux
+#endif
+
 #ifdef IN_RTS
 #define POSIX
 #include "tconfig.h"
@@ -923,3 +927,53 @@ __gnat_is_file_not_found_error (int errno_val) {
          return 0;
    }
 }
+
+#ifdef __ANDROID__
+
+/* Provide extern symbols for sig* as needed by the tasking run-time, instead
+   of static inline functions.  */
+
+#define sigismember android_sigismember
+#define sigaddset android_sigaddset
+#define sigdelset android_sigdelset
+#define sigemptyset android_sigemptyset
+#define sigfillset android_sigfillset
+
+#include <signal.h>
+
+#undef sigismember
+#undef sigaddset
+#undef sigdelset
+#undef sigemptyset
+#undef sigfillset
+
+int
+sigismember (sigset_t *set, int signum)
+{
+    return android_sigismember (set, signum);
+}
+
+int
+sigaddset (sigset_t *set, int signum)
+{
+   return android_sigaddset (set, signum);
+}
+
+int
+sigdelset (sigset_t *set, int signum)
+{
+   return android_sigdelset (set, signum);
+}
+
+int
+sigemptyset (sigset_t *set)
+{
+    return android_sigemptyset (set);
+}
+
+int
+sigfillset(sigset_t *set)
+{
+    return android_sigfillset (set);
+}
+#endif
index ca672c4..36b97a6 100644 (file)
@@ -31,7 +31,8 @@
 
 /* First all usupported platforms. Add stubs for exported routines. */
 
-#if defined (VMS) || defined (__vxworks) || defined (__Lynx__)
+#if defined (VMS) || defined (__vxworks) || defined (__Lynx__) || \
+    defined (__ANDROID__)
 
 void * __gnat_new_tty (void) { return (void*)0; }
 char * __gnat_tty_name (void* t) { return (char*)0; }