# emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps
-# Copyright (C) 2005-2011 Free Software Foundation, Inc.
+# Copyright (C) 2005-2013 Free Software Foundation, Inc.
# Maintainer: Noah Friedman <friedman@splode.com>
-# 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.
# `ysave-buffer', and `ybuffer-contents'. The `y' prefix avoids any
# namespace collisions with emacs/src/.gdbinit.
+# Since the internal data structures in Emacs occasionally from time to
+# time, you should use the version of this file that came with your
+# particular Emacs version; older versions might not work anymore.
+
# Example usage:
#
# $ gdb /export/src/emacs/2005-05-02--03-17/src/emacs core.emacs.6.9845
# Code:
-# Force loading of symbols, enough to give us gdb_valbits etc.
+# Force loading of symbols, enough to give us VALMASK etc.
set main
# When nonzero, display some extra diagnostics in various commands
set $yverbose = 1
set $yfile_buffers_only = 0
-set $tagmask = (((long)1 << gdb_gctypebits) - 1)
-set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
-
define ygetptr
set $ptr = $arg0
- set $ptr = (gdb_use_union ? $ptr.u.val : $ptr & $valmask) | gdb_data_seg_bits
+ set $ptr = ((CHECK_LISP_OBJECT_TYPE ? $ptr.i : $ptr) & VALMASK) | DATA_SEG_BITS
end
define ybuffer-list
ygetptr $buf
set $buf = (struct buffer *) $ptr
- if ! ($files_only && $buf->filename == Qnil)
- ygetptr $buf->name
+ if ! ($files_only && $buf->filename_ == Qnil)
+ ygetptr $buf->name_
set $name = ((struct Lisp_String *) $ptr)->data
set $modp = ($buf->text->modiff > $buf->text->save_modiff) ? '*' : ' '
- ygetptr $buf->mode_name
+ ygetptr $buf->mode_name_
set $mode = ((struct Lisp_String *) $ptr)->data
- if $buf->filename != Qnil
- ygetptr $buf->filename
+ if $buf->filename_ != 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
end
define yget-current-buffer-name
- set $this = $ycurrent_buffer->name
+ set $this = $ycurrent_buffer->name_
ygetptr $this
set $ycurrent_buffer_name = ((struct Lisp_String *) $ptr)->data
end
# local variables:
# mode: gdb-script
# end:
-