[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 29095d0b1cc: Try harder to generate tombstones upon emacs_abort
From: |
Po Lu |
Subject: |
master 29095d0b1cc: Try harder to generate tombstones upon emacs_abort |
Date: |
Thu, 12 Oct 2023 23:58:20 -0400 (EDT) |
branch: master
commit 29095d0b1cc5e5b0e4ee089deb59f44f950872ff
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Try harder to generate tombstones upon emacs_abort
* src/android.c (HAS_BUILTIN_TRAP): New macro definition.
(emacs_abort) [HAS_BUILTIN_TRAP]: Call __builtin_trap to abort,
in place of dereferencing NULL.
* src/androidterm.c (android_draw_fringe_bitmap): Correct
comment transplanted from X code.
---
src/android.c | 22 ++++++++++++++++++++--
src/androidterm.c | 3 ++-
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/src/android.c b/src/android.c
index 98ace1156d7..fa7bfe6c0f0 100644
--- a/src/android.c
+++ b/src/android.c
@@ -5542,22 +5542,40 @@ android_toggle_on_screen_keyboard (android_window
window, bool show)
+#if defined __clang_major__ && __clang_major__ < 5
+# define HAS_BUILTIN_TRAP 0
+#elif 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))
+# define HAS_BUILTIN_TRAP 1
+#elif defined __has_builtin
+# define HAS_BUILTIN_TRAP __has_builtin (__builtin_trap)
+#else /* !__has_builtin */
+# define HAS_BUILTIN_TRAP 0
+#endif /* defined __clang_major__ && __clang_major__ < 5 */
+
/* emacs_abort implementation for Android. This logs a stack
trace. */
void
emacs_abort (void)
{
+#ifndef HAS_BUILTIN_TRAP
volatile char *foo;
+#endif /* !HAS_BUILTIN_TRAP */
__android_log_print (ANDROID_LOG_FATAL, __func__,
- "emacs_abort called, please review the ensuing"
+ "emacs_abort called, please review the following"
" stack trace");
- /* Cause a NULL pointer dereference to make debuggerd generate a
+#ifndef HAS_BUILTIN_TRAP
+ /* Induce a NULL pointer dereference to make debuggerd generate a
tombstone. */
foo = NULL;
*foo = '\0';
+#else /* HAS_BUILTIN_TRAP */
+ /* Crash through __builtin_trap instead. This appears to more
+ uniformly elicit crash reports from debuggerd. */
+ __builtin_trap ();
+#endif /* !HAS_BUILTIN_TRAP */
abort ();
}
diff --git a/src/androidterm.c b/src/androidterm.c
index 9b00ad85642..ef3c20f4e0f 100644
--- a/src/androidterm.c
+++ b/src/androidterm.c
@@ -2529,7 +2529,8 @@ android_draw_fringe_bitmap (struct window *w, struct
glyph_row *row,
/* Intersect the destination rectangle with that of the row.
Setting a clip mask overrides the clip rectangles provided by
- x_clip_to_row, so clipping must be performed by hand. */
+ android_clip_to_row, so clipping must be performed by
+ hand. */
image_rect.x = p->x;
image_rect.y = p->y;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 29095d0b1cc: Try harder to generate tombstones upon emacs_abort,
Po Lu <=