summaryrefslogtreecommitdiff
path: root/src/.gdbinit
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2015-01-08 15:53:09 +0200
committerEli Zaretskii <eliz@gnu.org>2015-01-08 15:53:09 +0200
commitad83cdacb6808377e2ef4f96e60ffb68dbf01cd9 (patch)
treeb8e07e06c561c7accbf0b37e1229052683e93303 /src/.gdbinit
parentdaa18b5e85559ccea84bd9e8a5f8ac57cfa73189 (diff)
downloademacs-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/.gdbinit18
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