Merged in changes from CVS trunk.
[bpt/emacs.git] / src / .gdbinit
index 1b141a4..3af7e36 100644 (file)
@@ -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.
@@ -395,7 +401,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