diff options
author | Eli Zaretskii <eliz@gnu.org> | 2015-01-08 15:53:09 +0200 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2015-01-08 15:53:09 +0200 |
commit | ad83cdacb6808377e2ef4f96e60ffb68dbf01cd9 (patch) | |
tree | b8e07e06c561c7accbf0b37e1229052683e93303 /src/.gdbinit | |
parent | daa18b5e85559ccea84bd9e8a5f8ac57cfa73189 (diff) | |
download | emacs-ad83cdacb6808377e2ef4f96e60ffb68dbf01cd9.tar.gz |
Fix GDB accesses to the 'nil's name.
src/.gdbinit (xsymname): New subroutine.
(xprintsym, initial-tbreak): Use it to access the name of a symbol
in a way that doesn't cause GDB to barf when it tries to
dereference a NULL pointer.
Diffstat (limited to 'src/.gdbinit')
-rw-r--r-- | src/.gdbinit | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/.gdbinit b/src/.gdbinit index 0f2138284a0..1a2a973e694 100644 --- a/src/.gdbinit +++ b/src/.gdbinit @@ -70,6 +70,16 @@ define xgettype set $type = (enum Lisp_Type) (USE_LSB_TAG ? $bugfix & (1 << GCTYPEBITS) - 1 : (EMACS_UINT) $bugfix >> VALBITS) end +# Access the name of a symbol +define xsymname + if (CHECK_LISP_OBJECT_TYPE) + set $bugfix = $arg0.i + else + set $bugfix = $arg0 + end + set $symname = ((struct Lisp_Symbol *) ((char *)lispsym + $bugfix))->name +end + # Set up something to print out s-expressions. # We save and restore print_output_debug_flag to prevent the w32 port # from calling OutputDebugString, which causes GDB to display each @@ -1073,8 +1083,8 @@ end define xprintsym xgetptr $arg0 - set $sym = (struct Lisp_Symbol *) $ptr - xgetptr $sym->name + xsymname $ptr + xgetptr $symname set $sym_name = (struct Lisp_String *) $ptr xprintstr $sym_name end @@ -1258,8 +1268,8 @@ tbreak init_sys_modes commands silent xgetptr globals.f_Vinitial_window_system - set $tem = (struct Lisp_Symbol *) $ptr - xgetptr $tem->name + xsymname $ptr + xgetptr $symname set $tem = (struct Lisp_String *) $ptr set $tem = (char *) $tem->data # If we are running in synchronous mode, we want a chance to look |