diff options
Diffstat (limited to 'src/.gdbinit')
-rw-r--r-- | src/.gdbinit | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/.gdbinit b/src/.gdbinit index 9e4e674c740..943481d419e 100644 --- a/src/.gdbinit +++ b/src/.gdbinit @@ -81,7 +81,7 @@ end define xvectype xgetptr $ set $size = ((struct Lisp_Vector *) $ptr)->size - output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size + output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag echo \n end document xvectype @@ -186,9 +186,10 @@ Print $ as a buffer-local-value pointer, assuming it is an Emacs Lisp Misc value end define xsymbol - xgetptr $ + set $sym = $ + xgetptr $sym print (struct Lisp_Symbol *) $ptr - xprintsym $ + xprintsym $sym echo \n end document xsymbol @@ -199,7 +200,7 @@ end define xstring xgetptr $ print (struct Lisp_String *) $ptr - output ($->size > 1000) ? 0 : ($->data[0])@($->size_byte < 0 ? $->size : $->size_byte) + xprintstr $ echo \n end document xstring @@ -210,7 +211,7 @@ end define xvector xgetptr $ print (struct Lisp_Vector *) $ptr - output ($->size > 50) ? 0 : ($->contents[0])@($->size) + output ($->size > 50) ? 0 : ($->contents[0])@($->size & ~gdb_array_mark_flag) echo \n end document xvector @@ -289,7 +290,7 @@ end define xboolvector xgetptr $ print (struct Lisp_Bool_Vector *) $ptr - output ($->size > 256) ? 0 : ($->data[0])@(($->size + 7)/ 8) + output ($->size > 256) ? 0 : ($->data[0])@((($->size & ~gdb_array_mark_flag) + 7)/ 8) echo \n end document xboolvector @@ -372,12 +373,17 @@ document xscrollbar Print $ as a scrollbar pointer. end +define xprintstr + set $data = $arg0->data + output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte) +end + define xprintsym xgetptr $arg0 set $sym = (struct Lisp_Symbol *) $ptr xgetptr $sym->xname set $sym_name = (struct Lisp_String *) $ptr - output ($sym_name->data[0])@($sym_name->size_byte < 0 ? $sym_name->size : $sym_name->size_byte) + xprintstr $sym_name end document xprintsym Print argument as a symbol. @@ -418,7 +424,7 @@ define xbacktrace if $type == Lisp_Vectorlike xgetptr (*$bt->function) set $size = ((struct Lisp_Vector *) $ptr)->size - output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size + output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag else printf "Lisp type %d", $type end |