Revert "libc: Provide ucontext_t/mcontext_t/<sys/ucontext.h>"
This creates build issues in the internal Android tree.
Will investigate later.
Original patch: https://android-review.googlesource.com/#/c/38875/
Change-Id: I12c5995ebf172890051af42a5d3b31014c9c5117
diff --git a/libc/include/signal.h b/libc/include/signal.h
index bcb58c2..6432c18 100644
--- a/libc/include/signal.h
+++ b/libc/include/signal.h
@@ -29,62 +29,30 @@
#define _SIGNAL_H_
#include <sys/cdefs.h>
+#include <limits.h> /* For LONG_BIT */
+#include <string.h> /* For memset() */
#include <sys/types.h>
-#include <machine/signal.h>
-#include <machine/ucontext.h>
+#include <asm/signal.h>
-#include <limits.h> /* For LONG_BIT */
-#include <string.h> /* For memset() */
+#define __ARCH_SI_UID_T __kernel_uid32_t
+#include <asm/siginfo.h>
+#undef __ARCH_SI_UID_T
__BEGIN_DECLS
-/* Previous versions of <signal.h> didn't define 'struct sigcontext'. This
- * has led client code to redefine the structure, sometimes in a custom and
- * incompatible way.
- *
- * The __BIONIC_HAVE_STRUCT_SIGCONTEXT macro is defined in <sys/cdefs.h>
- * to indicate that <signal.h> does indeed define the structure. For
- * maximum source compatibility, client code should follow these guidelines:
- *
- * - If client code is guaranteed to build against a recent NDK/platform
- * version, just include <signal.h> as usual, and use the
- * 'struct sigcontext'.
- *
- * - If client code wants to build against older NDK/platform versions,
- * and only uses 'struct sigcontext' without accessing _any_
- * of its fields, just always include <asm/sigcontext.h> on Android
- * to ensure maximum portability (i.e. to old platform/NDK releases).
- * As in:
- *
- * #include <signal.h>
- * #ifdef __BIONIC__
- * #include <asm/sigcontext.h>
- * #endif
- *
- * - Otherwise, if the client has a custom sigcontext definition and wants to
- * keep it to minimize source changes, use a macro trick as below to avoid
- * naming conflicts:
- *
- * #include <signal.h>
- * #ifdef __BIONIC__
- * # include <asm/sigcontext.h>
- * # ifdef __BIONIC_HAVE_STRUCT_SIGCONTEXT
- * # undef sigcontext
- * # define sigcontext my_custom_sigcontext
- * # endif
- * #endif
- */
-
-/* Similarly, previous versions of the C library didn't define ucontext_t
- * and mcontext_t in <signal.h>, or <sys/ucontext.h>. Client code can check
- * against the macro __BIONIC_HAVE_UCONTEXT_T to determine if it does.
- *
- * Beware, that does _not_ mean that <ucontext.h> and related functions are
- * available.
- */
-
typedef int sig_atomic_t;
+/* _NSIG is used by the SIGRTMAX definition under <asm/signal.h>, however
+ * its definition is part of a #if __KERNEL__ .. #endif block in the original
+ * kernel headers and is thus not part of our cleaned-up versions.
+ *
+ * Looking at the current kernel sources, it is defined as 64 for all
+ * architectures except for the 'mips' one which set it to 128.
+ */
+#ifndef _NSIG
+# define _NSIG 64
+#endif
+
extern const char * const sys_siglist[];
extern const char * const sys_signame[];