]> code.delx.au - gnu-emacs/blobdiff - etc/emacs-buffer.gdb
Merge from emacs--rel--22
[gnu-emacs] / etc / emacs-buffer.gdb
index cd0bf0dd59dab1d72e148b82661f94498f0a719e..76586e2aff772ccbba384878d864ad13431d3caf 100644 (file)
@@ -1,16 +1,19 @@
 # emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps
 
-# Copyright (C) 2005 Free Software Foundation, Inc.
+# Copyright (C) 2005, 2006, 2007 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
 # it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
+# the Free Software Foundation; either version 3, or (at your option)
 # any later version.
 #
 # GNU Emacs is distributed in the hope that it will be useful,
@@ -29,8 +32,8 @@
 # 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
@@ -98,11 +101,11 @@ define ybuffer-list
   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
 
@@ -116,13 +119,13 @@ define ybuffer-list
 
       if $buf->filename != Qnil
         ygetptr $buf->filename
-        set $filename = ((struct Lisp_String *) $ptr)->data
+        printf "%2d %c  %9d %-20s %-10s %s\n", \
+               $i, $modp, ($buf->text->z_byte - 1), $name, $mode, \
+               ((struct Lisp_String *) $ptr)->data
       else
-        set $filename = ' '
+        printf "%2d %c  %9d %-20s %-10s\n", \
+               $i, $modp, ($buf->text->z_byte - 1), $name, $mode
       end
-
-      printf "%2d %c  %9d %-20s %-10s %s\n", \
-             $i, $modp, ($buf->text->z_byte - 1), $name, $mode, $filename
     end
 
     set $i++
@@ -150,7 +153,7 @@ define yset-buffer
   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
 
@@ -160,7 +163,7 @@ define yset-buffer
 
   # 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