summaryrefslogtreecommitdiff
path: root/src/.gdbinit
diff options
context:
space:
mode:
Diffstat (limited to 'src/.gdbinit')
-rw-r--r--src/.gdbinit22
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