emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-25 27eb668: Adapt GDB scripts to '--enable-check-lis


From: Eli Zaretskii
Subject: [Emacs-diffs] emacs-25 27eb668: Adapt GDB scripts to '--enable-check-lisp-object-type' builds
Date: Wed, 12 Oct 2016 09:01:21 +0000 (UTC)

branch: emacs-25
commit 27eb668ac34eb3899985718c6879dc11e916d382
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Adapt GDB scripts to '--enable-check-lisp-object-type' builds
    
    * 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 |   36 +++++++++++++++++++++++++-----------
 src/.gdbinit         |    3 +--
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb
index 26c13c1..d51e7ad 100644
--- a/etc/emacs-buffer.gdb
+++ b/etc/emacs-buffer.gdb
@@ -70,8 +70,10 @@
 
 # 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
diff --git a/src/.gdbinit b/src/.gdbinit
index a4e9f70..9160ffa 100644
--- a/src/.gdbinit
+++ b/src/.gdbinit
@@ -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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]