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.
This commit is contained in:
Paul Eggert 2012-02-20 16:07:53 -08:00
parent 2d2f658128
commit cb3a28cc90
4 changed files with 13 additions and 2 deletions

View file

@ -1,3 +1,7 @@
2012-02-20 Paul Eggert <eggert@cs.ucla.edu>
* emacs-buffer.gdb ($valmask): Don't assume EMACS_INT fits in 'long'.
2012-02-10 Leo Liu <sdl.web@gmail.com>
* NEWS: Change condition-case-no-debug to

View file

@ -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

View file

@ -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

View file

@ -1,5 +1,8 @@
2012-02-20 Paul Eggert <eggert@cs.ucla.edu>
* .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.