From: Eli Zaretskii Date: Wed, 12 Oct 2016 08:59:53 +0000 (+0300) Subject: Adapt GDB scripts to '--enable-check-lisp-object-type' builds X-Git-Tag: emacs-25.1.90~130 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=27eb668ac34eb3899985718c6879dc11e916d382;p=emacs.git 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'. --- diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb index 26c13c1b706..d51e7ad8a80 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 a4e9f709386..9160ffa439e 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