diff options
author | Bernard Banner <banner@adacore.com> | 2012-11-06 09:41:56 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2012-11-06 10:41:56 +0100 |
commit | 3c55062f3030f6dcd365f89ba9ecfea2131889b4 (patch) | |
tree | 592dfa4c5da0b2f747924e5303aa856760fe858d /gcc | |
parent | 055311ddefe5674b074075c3720e23693370f062 (diff) | |
download | gcc-3c55062f3030f6dcd365f89ba9ecfea2131889b4.zip gcc-3c55062f3030f6dcd365f89ba9ecfea2131889b4.tar.gz gcc-3c55062f3030f6dcd365f89ba9ecfea2131889b4.tar.bz2 |
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.
From-SVN: r193213
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 15 | ||||
-rw-r--r-- | gcc/ada/adaint.c | 15 | ||||
-rw-r--r-- | gcc/ada/adaint.h | 6 | ||||
-rw-r--r-- | gcc/ada/errno.c | 2 | ||||
-rw-r--r-- | gcc/ada/gsocket.h | 2 | ||||
-rw-r--r-- | gcc/ada/init.c | 4 | ||||
-rw-r--r-- | gcc/ada/sysdep.c | 54 | ||||
-rw-r--r-- | gcc/ada/terminals.c | 3 |
8 files changed, 95 insertions, 6 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index a07bc70..fb23cb3 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -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 diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c index 54244bd..eab3ea5 100644 --- a/gcc/ada/adaint.c +++ b/gcc/ada/adaint.c @@ -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. */ diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h index 6097e61..7956e27 100644 --- a/gcc/ada/adaint.h +++ b/gcc/ada/adaint.h @@ -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 */ diff --git a/gcc/ada/errno.c b/gcc/ada/errno.c index 93c8660..2fbeacc 100644 --- a/gcc/ada/errno.c +++ b/gcc/ada/errno.c @@ -58,8 +58,10 @@ __get_errno(void) return errno; } +#ifndef __ANDROID__ void __set_errno(int err) { errno = err; } +#endif diff --git a/gcc/ada/gsocket.h b/gcc/ada/gsocket.h index c364fdb..e21d714 100644 --- a/gcc/ada/gsocket.h +++ b/gcc/ada/gsocket.h @@ -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 diff --git a/gcc/ada/init.c b/gcc/ada/init.c index ad00e14..e7283a2 100644 --- a/gcc/ada/init.c +++ b/gcc/ada/init.c @@ -52,6 +52,10 @@ extern "C" { #include "vxWorks.h" #endif +#ifdef __ANDROID__ +#undef linux +#endif + #ifdef IN_RTS #include "tconfig.h" #include "tsystem.h" diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c index ee31840..62a96dd 100644 --- a/gcc/ada/sysdep.c +++ b/gcc/ada/sysdep.c @@ -44,6 +44,10 @@ #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 diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c index ca672c4..36b97a6 100644 --- a/gcc/ada/terminals.c +++ b/gcc/ada/terminals.c @@ -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; } |