[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master b7b55dfc03c: More workarounds for GDB bug 32313
From: |
Eli Zaretskii |
Subject: |
master b7b55dfc03c: More workarounds for GDB bug 32313 |
Date: |
Mon, 28 Oct 2024 09:07:05 -0400 (EDT) |
branch: master
commit b7b55dfc03c4d36ae77812c16d15142a6f6f27df
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>
More workarounds for GDB bug 32313
* src/eval.c (backtrace_args): Same treatment as
backtrace_function.
---
src/eval.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/src/eval.c b/src/eval.c
index 3c4999d818c..d0a2abf0089 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -50,7 +50,6 @@ Lisp_Object Vsignaling_function;
/* These would ordinarily be static, but they need to be visible to GDB. */
bool backtrace_p (union specbinding *) EXTERNALLY_VISIBLE;
-Lisp_Object *backtrace_args (union specbinding *) EXTERNALLY_VISIBLE;
union specbinding *backtrace_next (union specbinding *) EXTERNALLY_VISIBLE;
union specbinding *backtrace_top (void) EXTERNALLY_VISIBLE;
@@ -107,20 +106,21 @@ specpdl_arg (union specbinding *pdl)
return pdl->unwind.arg;
}
+/* To work around GDB bug 32313
+ <https://sourceware.org/bugzilla/show_bug.cgi?id=32313> make
+ backtrace_* functions visible-to-GDB pointers instead of merely
+ being an externally visible functions themselves. Declare the
+ pointer first to pacify gcc -Wmissing-variable-declarations. */
+#define GDB_FUNCPTR(func, resulttype, params) \
+ extern resulttype (*const func) params EXTERNALLY_VISIBLE; \
+ resulttype (*const func) params = func##_body
+
static Lisp_Object
backtrace_function_body (union specbinding *pdl)
{
eassert (pdl->kind == SPECPDL_BACKTRACE);
return pdl->bt.function;
}
-/* To work around GDB bug 32313
- <https://sourceware.org/bugzilla/show_bug.cgi?id=32313>
- make backtrace_function a visible-to-GDB pointer instead of merely
- being an externally visible function itself. Declare the pointer
- first to pacify gcc -Wmissing-variable-declarations. */
-#define GDB_FUNCPTR(func, resulttype, params) \
- extern resulttype (*const func) params EXTERNALLY_VISIBLE; \
- resulttype (*const func) params = func##_body
GDB_FUNCPTR (backtrace_function, Lisp_Object, (union specbinding *));
static ptrdiff_t
@@ -130,12 +130,13 @@ backtrace_nargs (union specbinding *pdl)
return pdl->bt.nargs;
}
-Lisp_Object *
-backtrace_args (union specbinding *pdl)
+static Lisp_Object *
+backtrace_args_body (union specbinding *pdl)
{
eassert (pdl->kind == SPECPDL_BACKTRACE);
return pdl->bt.args;
}
+GDB_FUNCPTR (backtrace_args, Lisp_Object *, (union specbinding *));
/* Functions to modify slots of backtrace records. */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master b7b55dfc03c: More workarounds for GDB bug 32313,
Eli Zaretskii <=