+2023-01-02 Bruno Haible <bruno@clisp.org>
+
+ sigsegv: Fix compilation error on Android 4.3.
+ * lib/sigsegv.in.h: For Android, don't include <ucontext.h> and don't
+ reference ucontext_t.
+ * lib/sigsegv.c (SIGSEGV_FAULT_): For Android, use a plain POSIX fault
+ handler (cf. libsigsegv/src/fault-posix.h).
+
2023-01-01 Paul Eggert <eggert@cs.ucla.edu>
dfa: work around Clang 15 bug
/* Page fault handling library.
- Copyright (C) 1993-2022 Free Software Foundation, Inc.
+ Copyright (C) 1993-2023 Free Software Foundation, Inc.
Copyright (C) 2018 Nylon Chen <nylon7@andestech.com>
This program is free software: you can redistribute it and/or modify
occurred.
*/
-#if defined __linux__ || defined __ANDROID__ /* Linux */
+#if defined __linux__ && !defined __ANDROID__ /* Linux */
# define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, void *ucp
# define SIGSEGV_FAULT_ADDRESS sip->si_addr
#endif
+#if defined __ANDROID__ /* Android */
+/* A platform that supports the POSIX:2008 (XPG 7) way, without
+ 'struct sigcontext' nor 'ucontext_t'. */
+
+# define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, void *context
+# define SIGSEGV_FAULT_ADDRESS sip->si_addr
+# define SIGSEGV_FAULT_CONTEXT context
+# define SIGSEGV_FAULT_ADDRESS_FROM_SIGINFO
+
+#endif
+
#if defined __GNU__ /* Hurd */
# define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp
/* Page fault handling library.
- Copyright (C) 1998-2022 Free Software Foundation, Inc.
+ Copyright (C) 1998-2023 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <stddef.h>
/* Define the fault context structure. */
-#if defined __linux__ || defined __ANDROID__ \
+#if (defined __linux__ && !defined __ANDROID__) \
|| (defined __FreeBSD__ && (defined __arm__ || defined __armhf__ || defined __arm64__)) \
|| defined __NetBSD__ \
|| defined _AIX || defined __sun \
* on some platforms it is a 'struct sigcontext *', on others merely an
* opaque 'void *'.
*/
-# if defined __linux__ || defined __ANDROID__ \
+# if (defined __linux__ && !defined __ANDROID__) \
|| (defined __FreeBSD__ && (defined __arm__ || defined __armhf__ || defined __arm64__)) \
|| defined __NetBSD__ \
|| (defined __APPLE__ && defined __MACH__) \