aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2014-04-08 20:35:14 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2014-04-08 20:35:14 +0000
commitedb2b1b1fa0af901ab22ed58a4644115d3f4bbff (patch)
tree2b9c54c7b795270c7b18bc5b4d3ac27af14a14e8
parent98e6ecab8caecd055780ee085e59c9858886169c (diff)
downloadgcc-edb2b1b1fa0af901ab22ed58a4644115d3f4bbff.zip
gcc-edb2b1b1fa0af901ab22ed58a4644115d3f4bbff.tar.gz
gcc-edb2b1b1fa0af901ab22ed58a4644115d3f4bbff.tar.bz2
re PR ada/60411 (Ada bootstrap failure on ARM)
PR ada/60411 * sigtramp.h: Add Android support. From-SVN: r209227
-rw-r--r--gcc/ada/ChangeLog1
-rw-r--r--gcc/ada/sigtramp.h25
2 files changed, 23 insertions, 3 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 3353b89..e3a690a 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -5,6 +5,7 @@
* s-linux-android.ads: New file.
* s-intman-android.adb: Likewise.
* sigtramp-armdroid.c: Likewise.
+ * sigtramp.h: Add Android support.
2014-04-07 Eric Botcazou <ebotcazou@adacore.com>
diff --git a/gcc/ada/sigtramp.h b/gcc/ada/sigtramp.h
index cf5f470..7419e17 100644
--- a/gcc/ada/sigtramp.h
+++ b/gcc/ada/sigtramp.h
@@ -6,7 +6,7 @@
* *
* C Header File *
* *
- * Copyright (C) 2011-2013, Free Software Foundation, Inc. *
+ * Copyright (C) 2011-2014, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -41,10 +41,29 @@
extern "C" {
#endif
- typedef void sighandler_t (int signo, void *siginfo, void *sigcontext);
+#ifdef __ANDROID__
+#include <stdlib.h>
+#include <asm/signal.h>
+#include <asm/sigcontext.h>
+
+/* Android SDK doesn't define these structs */
+typedef struct sigcontext mcontext_t;
+
+typedef struct ucontext
+ {
+ unsigned long uc_flags;
+ struct ucontext *uc_link;
+ stack_t uc_stack;
+ mcontext_t uc_mcontext;
+} ucontext_t;
+#endif
+
+ /* This typedef signature sometimes conflicts with the sighandler_t from
+ system headers so call it something unique. */
+ typedef void __sigtramphandler_t (int signo, void *siginfo, void *sigcontext);
void __gnat_sigtramp (int signo, void *siginfo, void *sigcontext,
- sighandler_t * handler);
+ __sigtramphandler_t * handler);
/* To be called from an established signal handler. Setup the DWARF CFI
bits letting unwinders walk through the signal frame up into the