X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/422ff52b80abd9233225b22ccdc5263631cbe482..6a92d676c45b440fe47f0c74db028883c14bc999:/src/.gdbinit diff --git a/src/.gdbinit b/src/.gdbinit index 4215ffa312..963d8e94c0 100644 --- a/src/.gdbinit +++ b/src/.gdbinit @@ -1,4 +1,4 @@ -# Copyright (C) 1992-1998, 2000-2013 Free Software Foundation, Inc. +# Copyright (C) 1992-1998, 2000-2014 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # @@ -49,7 +49,7 @@ define xgetptr else set $bugfix = $arg0 end - set $ptr = ($bugfix & VALMASK) | DATA_SEG_BITS + set $ptr = $bugfix & VALMASK end define xgetint @@ -67,7 +67,7 @@ define xgettype else set $bugfix = $arg0 end - set $type = (enum Lisp_Type) (USE_LSB_TAG ? $bugfix & (1 << GCTYPEBITS) - 1 : $bugfix >> VALBITS) + set $type = (enum Lisp_Type) (USE_LSB_TAG ? $bugfix & (1 << GCTYPEBITS) - 1 : (EMACS_UINT) $bugfix >> VALBITS) end # Set up something to print out s-expressions. @@ -606,7 +606,7 @@ Pretty print all glyphs in it->glyph_row. end define prowlims - printf "edges=(%d,%d),r2l=%d,cont=%d,trunc=(%d,%d),at_zv=%d\n", $arg0->minpos.charpos, $arg0->maxpos.charpos, $arg0->reversed_p, $arg0->continued_p, $arg0->truncated_on_left_p, $arg0->truncated_on_right_p, $arg0->ends_at_zv_p + printf "edges=(%d,%d),enb=%d,r2l=%d,cont=%d,trunc=(%d,%d),at_zv=%d\n", $arg0->minpos.charpos, $arg0->maxpos.charpos, $arg0->enabled_p, $arg0->reversed_p, $arg0->continued_p, $arg0->truncated_on_left_p, $arg0->truncated_on_right_p, $arg0->ends_at_zv_p end document prowlims Print important attributes of a glyph_row structure. @@ -678,7 +678,7 @@ define pvecsize echo \n output (($size & PSEUDOVECTOR_REST_MASK) >> PSEUDOVECTOR_SIZE_BITS) else - output ($size & ~ARRAY_MARK_FLAG) + output $size end echo \n end @@ -774,7 +774,7 @@ end define xvector xgetptr $ print (struct Lisp_Vector *) $ptr - output ($->header.size > 50) ? 0 : ($->contents[0])@($->header.size & ~ARRAY_MARK_FLAG) + output ($->header.size > 50) ? 0 : ($->contents[0])@($->header.size) echo \n end document xvector @@ -1072,7 +1072,13 @@ end define xprintstr set $data = (char *) $arg0->data - output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~ARRAY_MARK_FLAG : $arg0->size_byte) + set $strsize = ($arg0->size_byte < 0) ? $arg0->size : $arg0->size_byte + # GDB doesn't like zero repetition counts + if $strsize == 0 + output "" + else + output ($arg0->size > 1000) ? 0 : ($data[0])@($strsize) + end end define xprintsym @@ -1087,8 +1093,8 @@ document xprintsym end define xcoding - set $tmp = (struct Lisp_Hash_Table *) ((Vcoding_system_hash_table & VALMASK) | DATA_SEG_BITS) - set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & VALMASK) | DATA_SEG_BITS) + set $tmp = (struct Lisp_Hash_Table *) (Vcoding_system_hash_table & VALMASK) + set $tmp = (struct Lisp_Vector *) ($tmp->key_and_value & VALMASK) set $name = $tmp->contents[$arg0 * 2] print $name pr @@ -1100,8 +1106,8 @@ document xcoding end define xcharset - set $tmp = (struct Lisp_Hash_Table *) ((Vcharset_hash_table & VALMASK) | DATA_SEG_BITS) - set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & VALMASK) | DATA_SEG_BITS) + set $tmp = (struct Lisp_Hash_Table *) (Vcharset_hash_table & VALMASK) + set $tmp = (struct Lisp_Vector *) ($tmp->key_and_value & VALMASK) p $tmp->contents[charset_table[$arg0].hash_index * 2] pr end @@ -1150,29 +1156,30 @@ Print $ assuming it is a list font (font-spec, font-entity, or font-object). end define xbacktrace - set $bt = backtrace_list - while $bt - xgettype ($bt->function) + set $bt = backtrace_top () + while backtrace_p ($bt) + set $fun = backtrace_function ($bt) + xgettype $fun if $type == Lisp_Symbol - xprintsym ($bt->function) - printf " (0x%x)\n", $bt->args + xprintsym $fun + printf " (0x%x)\n", backtrace_args ($bt) else - xgetptr $bt->function + xgetptr $fun printf "0x%x ", $ptr if $type == Lisp_Vectorlike - xgetptr ($bt->function) + xgetptr $fun set $size = ((struct Lisp_Vector *) $ptr)->header.size if ($size & PSEUDOVECTOR_FLAG) output (enum pvec_type) (($size & PVEC_TYPE_MASK) >> PSEUDOVECTOR_AREA_BITS) else - output $size & ~ARRAY_MARK_FLAG + output $size end else printf "Lisp type %d", $type end echo \n end - set $bt = $bt->next + set $bt = backtrace_next ($bt) end end document xbacktrace @@ -1183,8 +1190,13 @@ end define xprintbytestr set $data = (char *) $arg0->data + set $bstrsize = ($arg0->size_byte < 0) ? $arg0->size : $arg0->size_byte printf "Bytecode: " - output/u ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~ARRAY_MARK_FLAG : $arg0->size_byte) + if $bstrsize > 0 + output/u ($arg0->size > 1000) ? 0 : ($data[0])@($bvsize) + else + printf "" + end end document xprintbytestr Print a string of byte code. @@ -1220,8 +1232,8 @@ end # Show Lisp backtrace after normal backtrace. define hookpost-backtrace - set $bt = backtrace_list - if $bt + set $bt = backtrace_top () + if backtrace_p ($bt) echo \n echo Lisp Backtrace:\n xbacktrace