From cb3a28cc909e79244a477dcc357e38da658a8992 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 20 Feb 2012 16:07:53 -0800 Subject: [PATCH] In GDB scripts, don't assume that EMACS_INT fits in long. * etc/emacs-buffer.gdb ($valmask): Don't assume EMACS_INT fits in 'long'. * src/.gdbinit (xreload): Likewise. --- etc/ChangeLog | 4 ++++ etc/emacs-buffer.gdb | 4 +++- src/.gdbinit | 4 +++- src/ChangeLog | 3 +++ 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index 1f1190b19d9..7e71eca54b9 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,7 @@ +2012-02-20 Paul Eggert + + * emacs-buffer.gdb ($valmask): Don't assume EMACS_INT fits in 'long'. + 2012-02-10 Leo Liu * NEWS: Change condition-case-no-debug to diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb index 2bd2fa23794..80f69c585dc 100644 --- a/etc/emacs-buffer.gdb +++ b/etc/emacs-buffer.gdb @@ -78,7 +78,9 @@ 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 +# The consing_since_gc business widens the 1 to EMACS_INT, +# a symbol not directly visible to GDB. +set $valmask = gdb_use_lsb ? ~($tagmask) : ((consing_since_gc - consing_since_gc + 1) << gdb_valbits) - 1 define ygetptr set $ptr = $arg0 diff --git a/src/.gdbinit b/src/.gdbinit index 74dbd7a4197..7cd828733b1 100644 --- a/src/.gdbinit +++ b/src/.gdbinit @@ -1259,7 +1259,9 @@ end define xreload set $tagmask = (((long)1 << gdb_gctypebits) - 1) - set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1 + # The consing_since_gc business widens the 1 to EMACS_INT, + # a symbol not directly visible to GDB. + set $valmask = gdb_use_lsb ? ~($tagmask) : ((consing_since_gc - consing_since_gc + 1) << gdb_valbits) - 1 end document xreload When starting Emacs a second time in the same gdb session under diff --git a/src/ChangeLog b/src/ChangeLog index 911799b2bd2..bd376e9b855 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2012-02-20 Paul Eggert + * .gdbinit (xreload): Don't assume EMACS_INT fits in 'long' + when computing $valmask. + Fix crash due to non-contiguous EMACS_INT (Bug#10780). * lisp.h (VALBITS): Move definition up, so that USE_LSB_TAG can use it. (USE_LSB_TAG): Do not define if UINTPTR_MAX >> VALBITS == 0. -- 2.11.4.GIT