]> git.eshelyaron.com Git - emacs.git/commitdiff
Adapt GDB scripts to '--enable-check-lisp-object-type' builds
authorEli Zaretskii <eliz@gnu.org>
Wed, 12 Oct 2016 08:59:53 +0000 (11:59 +0300)
committerEli Zaretskii <eliz@gnu.org>
Wed, 12 Oct 2016 08:59:53 +0000 (11:59 +0300)
* etc/emacs-buffer.gdb <$qnil>: New variable.
(ybuffer-list, yset-buffer): Use $qnil for comparing against
'nil', as direct comparison with Qnil doesn't work in a build with
'--enable-check-lisp-object-type'.

* src/.gdbinit: Adapt commands of the temporary breakpoint in
init_sys_modes to a build with '--enable-check-lisp-object-type'.

etc/emacs-buffer.gdb
src/.gdbinit

index 26c13c1b70675c5acabf58ee95bfd2c0d8e49f52..d51e7ad8a80eabb91f2e38624b00dd54df944c92 100644 (file)
 
 # Code:
 
-# Force loading of symbols, enough to give us VALMASK etc.
-set main
+# Force loading of symbols, enough to give us VALBITS etc.
+set $dummy = main + 8
+# With some compilers, we need this to give us struct Lisp_Symbol etc.:
+set $dummy = Fmake_symbol + 8
 
 # When nonzero, display some extra diagnostics in various commands
 set $yverbose = 1
@@ -82,6 +84,11 @@ define ygetptr
   set $ptr = (CHECK_LISP_OBJECT_TYPE ? $ptr.i : $ptr) & VALMASK
 end
 
+# Get the value of Qnil for comparison.  Needed when
+# CHECK_LISP_OBJECT_TYPE is non-zero.
+ygetptr Qnil
+set $qnil = $ptr
+
 define ybuffer-list
   set $files_only         = $yfile_buffers_only
   set $yfile_buffers_only = 0
@@ -93,10 +100,13 @@ define ybuffer-list
 
   set $i = 0
   set $alist = Vbuffer_alist
-  while $alist != Qnil
-    ygetptr $alist
+  ygetptr $alist
+  set $alist = $ptr
+  while $alist != $qnil
     set $this  = ((struct Lisp_Cons *) $ptr)->car
     set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
+    ygetptr $alist
+    set $alist = $ptr
 
     # Vbuffer_alist elts are pairs of the form (name . buffer)
     ygetptr $this
@@ -104,7 +114,9 @@ define ybuffer-list
     ygetptr $buf
     set $buf = (struct buffer *) $ptr
 
-    if ! ($files_only && $buf->filename_ == Qnil)
+    ygetptr $buf->filename_
+    set $fname = $ptr
+    if ! ($files_only && $fname == $qnil)
       ygetptr $buf->name_
       set $name = ((struct Lisp_String *) $ptr)->data
       set $modp = ($buf->text->modiff > $buf->text->save_modiff) ? '*' : ' '
@@ -112,11 +124,11 @@ define ybuffer-list
       ygetptr $buf->mode_name_
       set $mode = ((struct Lisp_String *) $ptr)->data
 
-      if $buf->filename_ != Qnil
+      if $fname != $qnil
         ygetptr $buf->filename_
         printf "%2d %c  %9d %-20s %-10s %s\n", \
                $i, $modp, ($buf->text->z_byte - 1), $name, $mode, \
-               ((struct Lisp_String *) $ptr)->data
+               ((struct Lisp_String *) $fname)->data
       else
         printf "%2d %c  %9d %-20s %-10s\n", \
                $i, $modp, ($buf->text->z_byte - 1), $name, $mode
@@ -146,15 +158,17 @@ define yset-buffer
   set $i = $arg0
 
   set $alist = Vbuffer_alist
-  while ($alist != Qnil && $i > 0)
-    ygetptr $alist
+  ygetptr $alist
+  set $alist = $ptr
+  while ($alist != $qnil && $i > 0)
     set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
+    ygetptr $alist
+    set $alist = $ptr
     set $i--
   end
 
   # Get car of alist; this is a pair (name . buffer)
-  ygetptr $alist
-  set $this = ((struct Lisp_Cons *) $ptr)->car
+  set $this = ((struct Lisp_Cons *) $alist)->car
 
   # Get the buffer object
   ygetptr $this
index a4e9f7093862cbe80bb3cd3a661dacfa8df212ba..9160ffa439e02b6e00ef85d726ef470eb20e1dad 100644 (file)
@@ -1267,8 +1267,7 @@ break terminate_due_to_signal
 tbreak init_sys_modes
 commands
   silent
-  xgetptr globals.f_Vinitial_window_system
-  xsymname $ptr
+  xsymname globals.f_Vinitial_window_system
   xgetptr $symname
   set $tem = (struct Lisp_String *) $ptr
   set $tem = (char *) $tem->data