More workarounds for GDB bug 32313
* src/eval.c (backtrace_args): Same treatment as backtrace_function.
This commit is contained in:
parent
ea68517006
commit
b7b55dfc03
1 changed files with 12 additions and 11 deletions
23
src/eval.c
23
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. */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue