# emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps
-# Copyright (C) 2005 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
# Maintainer: Noah Friedman <friedman@splode.com>
-# Status: tested with Emacs 22
+# Status: Works with Emacs 22.0.51.1 (prerelease) as of 2006-01-12.
+# Older cvs snapshots, and released versions, will not work due to
+# changes in lisp data structures. But there are older versions of
+# this gdb script which work with those versions.
# Created: 2005-04-28
# This file is part of GNU Emacs.
-#
-# GNU Emacs is free software; you can redistribute it and/or modify
+
+# GNU Emacs is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
# GNU Emacs is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-#
+
# You should have received a copy of the GNU General Public License
-# along with GNU Emacs; see the file COPYING. If not, write to the
-# Free Software Foundation, Inc.; 51 Franklin Street, Fifth Floor;
-# Boston, MA 02110-1301, USA.
+# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
# Commentary:
# an Emacs coredump; they may not always be file-backed or have a recent
# autosave.
#
-# The Emacs executable must have debugging symbols for this to work. But
-# you never strip Emacs, right? Right!
+# The Emacs executable must have debugging symbols for this to work.
+# But you never strip Emacs, right?
#
# The main commands of interest are `ybuffer-list', `yfile-buffers',
# `ysave-buffer', and `ybuffer-contents'. The `y' prefix avoids any
while $alist != Qnil
ygetptr $alist
set $this = ((struct Lisp_Cons *) $ptr)->car
- set $alist = ((struct Lisp_Cons *) $ptr)->cdr
+ set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
# Vbuffer_alist elts are pairs of the form (name . buffer)
ygetptr $this
- set $buf = ((struct Lisp_Cons *) $ptr)->cdr
+ set $buf = ((struct Lisp_Cons *) $ptr)->u.cdr
ygetptr $buf
set $buf = (struct buffer *) $ptr
set $alist = Vbuffer_alist
while ($alist != Qnil && $i > 0)
ygetptr $alist
- set $alist = ((struct Lisp_Cons *) $ptr)->cdr
+ set $alist = ((struct Lisp_Cons *) $ptr)->u.cdr
set $i--
end
# Get the buffer object
ygetptr $this
- set $this = ((struct Lisp_Cons *) $ptr)->cdr
+ set $this = ((struct Lisp_Cons *) $ptr)->u.cdr
ygetptr $this
set $ycurrent_buffer = (struct buffer *) $ptr