tcc-0.9.26-android.diff at [9a09044c1d]

File build/tcc-patches/0.9.26/tcc-0.9.26-android.diff artifact 9961fb1614 part of check-in 9a09044c1d


diff -uNr tcc-0.9.26.orig/libtcc.c tcc-0.9.26-1android/libtcc.c
--- tcc-0.9.26.orig/libtcc.c	2013-02-15 08:24:00.000000000 -0600
+++ tcc-0.9.26-1android/libtcc.c	2014-05-17 20:06:02.109312000 -0500
@@ -966,6 +966,12 @@
 # endif
 #endif
 
+#if defined(__ANDROID__)
+#  define str(s) #s
+    tcc_define_symbol(s, "__ANDROID__", str(__ANDROID__));
+#  undef str
+#endif
+
     /* TinyCC & gcc defines */
 #if defined TCC_TARGET_PE && defined TCC_TARGET_X86_64
     tcc_define_symbol(s, "__SIZE_TYPE__", "unsigned long long");
diff -uNr tcc-0.9.26.orig/tcc.h tcc-0.9.26-1android/tcc.h
--- tcc-0.9.26.orig/tcc.h	2013-02-15 08:24:00.000000000 -0600
+++ tcc-0.9.26-1android/tcc.h	2014-05-17 01:13:09.189016999 -0500
@@ -43,7 +43,9 @@
 #ifndef _WIN32
 # include <unistd.h>
 # include <sys/time.h>
-# include <sys/ucontext.h>
+# ifndef __ANDROID__
+#  include <sys/ucontext.h>
+# endif /* __ANDROID__ */
 # include <sys/mman.h>
 # ifndef CONFIG_TCC_STATIC
 #  include <dlfcn.h>
@@ -146,7 +148,7 @@
 # endif
 #endif
 
-#if defined TCC_IS_NATIVE && !defined CONFIG_TCCBOOT
+#if defined TCC_IS_NATIVE && !defined CONFIG_TCCBOOT && !defined __ANDROID__
 # define CONFIG_TCC_BACKTRACE
 #endif
 
@@ -917,8 +919,12 @@
 #else
 /* XXX: need to define this to use them in non ISOC99 context */
 extern float strtof (const char *__nptr, char **__endptr);
+#ifdef __ANDROID__
+#  define strtold (long double)strtod
+#else
 extern long double strtold (const char *__nptr, char **__endptr);
 #endif
+#endif
 
 #ifdef _WIN32
 #define IS_DIRSEP(c) (c == '/' || c == '\\')
diff -uNr tcc-0.9.26.orig/tccrun.c tcc-0.9.26-1android/tccrun.c
--- tcc-0.9.26.orig/tccrun.c	2013-02-15 08:24:00.000000000 -0600
+++ tcc-0.9.26-1android/tccrun.c	2014-05-16 23:38:36.949016999 -0500
@@ -35,8 +35,10 @@
 
 static void set_pages_executable(void *ptr, unsigned long length);
 static void set_exception_handler(void);
+#ifdef CONFIG_TCC_BACKTRACE
 static int rt_get_caller_pc(addr_t *paddr, ucontext_t *uc, int level);
 static void rt_error(ucontext_t *uc, const char *fmt, ...);
+#endif
 static int tcc_relocate_ex(TCCState *s1, void *ptr);
 
 #ifdef _WIN64