]> code.delx.au - gnu-emacs/commitdiff
Fix GDB accesses to the 'nil's name.
authorEli Zaretskii <eliz@gnu.org>
Thu, 8 Jan 2015 13:53:09 +0000 (15:53 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 8 Jan 2015 13:53:09 +0000 (15:53 +0200)
 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.

src/.gdbinit
src/ChangeLog

index 0f2138284a01d51e666e8f13ca105f06e4c1e33f..1a2a973e694a7b68e0590841af19787938808c06 100644 (file)
@@ -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
index 21bdc81d797095bcda08f80cf7f1465c7eb493f4..4365222ff7b0368c36285f7412ef3a57a1138830 100644 (file)
@@ -1,5 +1,10 @@
 2015-01-08  Eli Zaretskii  <eliz@gnu.org>
 
+       * .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.
+
        * xdisp.c (next_element_from_c_string): Use Lisp integer zero as
        the object.
        (set_cursor_from_row, try_cursor_movement, dump_glyph)