diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/.gdbinit | 79 |
1 files changed, 36 insertions, 43 deletions
diff --git a/src/.gdbinit b/src/.gdbinit index 91df9cce2d7..fcc7de7b90f 100644 --- a/src/.gdbinit +++ b/src/.gdbinit | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | # Set up a mask to use. | ||
| 2 | |||
| 3 | set $valmask = (1 << gdb_valbits) - 1 | ||
| 4 | set $nonvalbits = gdb_emacs_intbits - gdb_valbits | ||
| 5 | |||
| 1 | # Set up something to print out s-expressions. | 6 | # Set up something to print out s-expressions. |
| 2 | define pr | 7 | define pr |
| 3 | set debug_print ($) | 8 | set debug_print ($) |
| @@ -8,22 +13,10 @@ Print the emacs s-expression which is $. | |||
| 8 | Works only when an inferior emacs is executing. | 13 | Works only when an inferior emacs is executing. |
| 9 | end | 14 | end |
| 10 | 15 | ||
| 11 | # Set this to the same thing as the DATA_SEG_BITS macro in your | ||
| 12 | # machine-description files. | ||
| 13 | set $data_seg_bits = 0 | ||
| 14 | |||
| 15 | define mips | ||
| 16 | set $data_seg_bits = 0x10000000 | ||
| 17 | end | ||
| 18 | document mips | ||
| 19 | Set up the xfoo macros to deal with the MIPS processor. | ||
| 20 | Specifically, this sets $data_seg_bits to the right thing. | ||
| 21 | end | ||
| 22 | |||
| 23 | define xtype | 16 | define xtype |
| 24 | output (enum Lisp_Type) (($ >> 28) & 0x7) | 17 | output (enum Lisp_Type) (($ >> gdb_valbits) & 0x7) |
| 25 | echo \n | 18 | echo \n |
| 26 | output ((($ >> 28) & 0x7) == Lisp_Misc ? (enum Lisp_Misc_Type) (((struct Lisp_Free *) (($ & 0x0fffffff) | $data_seg_bits))->type) : (($ >> 28) & 0x7) == Lisp_Vectorlike ? ($size = ((struct Lisp_Vector *) (($ & 0x0fffffff) | $data_seg_bits))->size, (enum pvec_type) (($size & PVEC_FLAG) ? $size & PVEC_TYPE_MASK : 0)) : 0) | 19 | output ((($ >> gdb_valbits) & 0x7) == Lisp_Misc ? (enum Lisp_Misc_Type) (((struct Lisp_Free *) (($ & $valmask) | gdb_data_seg_bits))->type) : (($ >> gdb_valbits) & 0x7) == Lisp_Vectorlike ? ($size = ((struct Lisp_Vector *) (($ & $valmask) | gdb_data_seg_bits))->size, (enum pvec_type) (($size & PVEC_FLAG) ? $size & PVEC_TYPE_MASK : 0)) : 0) |
| 27 | echo \n | 20 | echo \n |
| 28 | end | 21 | end |
| 29 | document xtype | 22 | document xtype |
| @@ -34,7 +27,7 @@ Otherwise the second line doesn't mean anything. | |||
| 34 | end | 27 | end |
| 35 | 28 | ||
| 36 | define xvectype | 29 | define xvectype |
| 37 | set $size = ((struct Lisp_Vector *) (($ & 0x0fffffff) | $data_seg_bits))->size | 30 | set $size = ((struct Lisp_Vector *) (($ & $valmask) | gdb_data_seg_bits))->size |
| 38 | output (enum pvec_type) (($size & PVEC_FLAG) ? $size & PVEC_TYPE_MASK : 0) | 31 | output (enum pvec_type) (($size & PVEC_FLAG) ? $size & PVEC_TYPE_MASK : 0) |
| 39 | echo \n | 32 | echo \n |
| 40 | end | 33 | end |
| @@ -43,7 +36,7 @@ Print the vector subtype of $, assuming it is a vector or pseudovector. | |||
| 43 | end | 36 | end |
| 44 | 37 | ||
| 45 | define xmisctype | 38 | define xmisctype |
| 46 | output (enum Lisp_Misc_Type) (((struct Lisp_Free *) (($ & 0x0fffffff) | $data_seg_bits))->type) | 39 | output (enum Lisp_Misc_Type) (((struct Lisp_Free *) (($ & $valmask) | gdb_data_seg_bits))->type) |
| 47 | echo \n | 40 | echo \n |
| 48 | end | 41 | end |
| 49 | document xmisctype | 42 | document xmisctype |
| @@ -51,21 +44,21 @@ Print the specific type of $, assuming it is some misc type. | |||
| 51 | end | 44 | end |
| 52 | 45 | ||
| 53 | define xint | 46 | define xint |
| 54 | print (($ & 0x0fffffff) << 4) >> 4 | 47 | print (($ & $valmask) << $nonvalbits) >> $nonvalbits |
| 55 | end | 48 | end |
| 56 | document xint | 49 | document xint |
| 57 | Print $, assuming it is an Emacs Lisp integer. This gets the sign right. | 50 | Print $, assuming it is an Emacs Lisp integer. This gets the sign right. |
| 58 | end | 51 | end |
| 59 | 52 | ||
| 60 | define xptr | 53 | define xptr |
| 61 | print (void *) (($ & 0x0fffffff) | $data_seg_bits) | 54 | print (void *) (($ & $valmask) | gdb_data_seg_bits) |
| 62 | end | 55 | end |
| 63 | document xptr | 56 | document xptr |
| 64 | Print the pointer portion of $, assuming it is an Emacs Lisp value. | 57 | Print the pointer portion of $, assuming it is an Emacs Lisp value. |
| 65 | end | 58 | end |
| 66 | 59 | ||
| 67 | define xwindow | 60 | define xwindow |
| 68 | print (struct window *) (($ & 0x0fffffff) | $data_seg_bits) | 61 | print (struct window *) (($ & $valmask) | gdb_data_seg_bits) |
| 69 | printf "%dx%d+%d+%d\n", $->width, $->height, $->left, $->top | 62 | printf "%dx%d+%d+%d\n", $->width, $->height, $->left, $->top |
| 70 | end | 63 | end |
| 71 | document xwindow | 64 | document xwindow |
| @@ -74,71 +67,71 @@ Print the window's position as "WIDTHxHEIGHT+LEFT+TOP". | |||
| 74 | end | 67 | end |
| 75 | 68 | ||
| 76 | define xmarker | 69 | define xmarker |
| 77 | print (struct Lisp_Marker *) (($ & 0x0fffffff) | $data_seg_bits) | 70 | print (struct Lisp_Marker *) (($ & $valmask) | gdb_data_seg_bits) |
| 78 | end | 71 | end |
| 79 | document xmarker | 72 | document xmarker |
| 80 | Print $ as a marker pointer, assuming it is an Emacs Lisp marker value. | 73 | Print $ as a marker pointer, assuming it is an Emacs Lisp marker value. |
| 81 | end | 74 | end |
| 82 | 75 | ||
| 83 | define xoverlay | 76 | define xoverlay |
| 84 | print (struct Lisp_Overlay *) (($ & 0x0fffffff) | $data_seg_bits) | 77 | print (struct Lisp_Overlay *) (($ & $valmask) | gdb_data_seg_bits) |
| 85 | end | 78 | end |
| 86 | document xoverlay | 79 | document xoverlay |
| 87 | Print $ as a overlay pointer, assuming it is an Emacs Lisp overlay value. | 80 | Print $ as a overlay pointer, assuming it is an Emacs Lisp overlay value. |
| 88 | end | 81 | end |
| 89 | 82 | ||
| 90 | define xmiscfree | 83 | define xmiscfree |
| 91 | print (struct Lisp_Free *) (($ & 0x0fffffff) | $data_seg_bits) | 84 | print (struct Lisp_Free *) (($ & $valmask) | gdb_data_seg_bits) |
| 92 | end | 85 | end |
| 93 | document xmiscfree | 86 | document xmiscfree |
| 94 | Print $ as a misc free-cell pointer, assuming it is an Emacs Lisp Misc value. | 87 | Print $ as a misc free-cell pointer, assuming it is an Emacs Lisp Misc value. |
| 95 | end | 88 | end |
| 96 | 89 | ||
| 97 | define xintfwd | 90 | define xintfwd |
| 98 | print (struct Lisp_Intfwd *) (($ & 0x0fffffff) | $data_seg_bits) | 91 | print (struct Lisp_Intfwd *) (($ & $valmask) | gdb_data_seg_bits) |
| 99 | end | 92 | end |
| 100 | document xintfwd | 93 | document xintfwd |
| 101 | Print $ as an integer forwarding pointer, assuming it is an Emacs Lisp Misc value. | 94 | Print $ as an integer forwarding pointer, assuming it is an Emacs Lisp Misc value. |
| 102 | end | 95 | end |
| 103 | 96 | ||
| 104 | define xboolfwd | 97 | define xboolfwd |
| 105 | print (struct Lisp_Boolfwd *) (($ & 0x0fffffff) | $data_seg_bits) | 98 | print (struct Lisp_Boolfwd *) (($ & $valmask) | gdb_data_seg_bits) |
| 106 | end | 99 | end |
| 107 | document xboolfwd | 100 | document xboolfwd |
| 108 | Print $ as a boolean forwarding pointer, assuming it is an Emacs Lisp Misc value. | 101 | Print $ as a boolean forwarding pointer, assuming it is an Emacs Lisp Misc value. |
| 109 | end | 102 | end |
| 110 | 103 | ||
| 111 | define xobjfwd | 104 | define xobjfwd |
| 112 | print (struct Lisp_Objfwd *) (($ & 0x0fffffff) | $data_seg_bits) | 105 | print (struct Lisp_Objfwd *) (($ & $valmask) | gdb_data_seg_bits) |
| 113 | end | 106 | end |
| 114 | document xobjfwd | 107 | document xobjfwd |
| 115 | Print $ as an object forwarding pointer, assuming it is an Emacs Lisp Misc value. | 108 | Print $ as an object forwarding pointer, assuming it is an Emacs Lisp Misc value. |
| 116 | end | 109 | end |
| 117 | 110 | ||
| 118 | define xbufobjfwd | 111 | define xbufobjfwd |
| 119 | print (struct Lisp_Buffer_Objfwd *) (($ & 0x0fffffff) | $data_seg_bits) | 112 | print (struct Lisp_Buffer_Objfwd *) (($ & $valmask) | gdb_data_seg_bits) |
| 120 | end | 113 | end |
| 121 | document xbufobjfwd | 114 | document xbufobjfwd |
| 122 | Print $ as a buffer-local object forwarding pointer, assuming it is an Emacs Lisp Misc value. | 115 | Print $ as a buffer-local object forwarding pointer, assuming it is an Emacs Lisp Misc value. |
| 123 | end | 116 | end |
| 124 | 117 | ||
| 125 | define xkbobjfwd | 118 | define xkbobjfwd |
| 126 | print (struct Lisp_Kboard_Objfwd *) (($ & 0x0fffffff) | $data_seg_bits) | 119 | print (struct Lisp_Kboard_Objfwd *) (($ & $valmask) | gdb_data_seg_bits) |
| 127 | end | 120 | end |
| 128 | document xkbobjfwd | 121 | document xkbobjfwd |
| 129 | Print $ as a kboard-local object forwarding pointer, assuming it is an Emacs Lisp Misc value. | 122 | Print $ as a kboard-local object forwarding pointer, assuming it is an Emacs Lisp Misc value. |
| 130 | end | 123 | end |
| 131 | 124 | ||
| 132 | define xbuflocal | 125 | define xbuflocal |
| 133 | print (struct Lisp_Buffer_Local_Value *) (($ & 0x0fffffff) | $data_seg_bits) | 126 | print (struct Lisp_Buffer_Local_Value *) (($ & $valmask) | gdb_data_seg_bits) |
| 134 | end | 127 | end |
| 135 | document xbuflocal | 128 | document xbuflocal |
| 136 | Print $ as a buffer-local-value pointer, assuming it is an Emacs Lisp Misc value. | 129 | Print $ as a buffer-local-value pointer, assuming it is an Emacs Lisp Misc value. |
| 137 | end | 130 | end |
| 138 | 131 | ||
| 139 | define xbuffer | 132 | define xbuffer |
| 140 | print (struct buffer *) (($ & 0x0fffffff) | $data_seg_bits) | 133 | print (struct buffer *) (($ & $valmask) | gdb_data_seg_bits) |
| 141 | output &((struct Lisp_String *) ((($->name) & 0x0fffffff) | $data_seg_bits))->data | 134 | output &((struct Lisp_String *) ((($->name) & $valmask) | gdb_data_seg_bits))->data |
| 142 | echo \n | 135 | echo \n |
| 143 | end | 136 | end |
| 144 | document xbuffer | 137 | document xbuffer |
| @@ -147,7 +140,7 @@ Print the name of the buffer. | |||
| 147 | end | 140 | end |
| 148 | 141 | ||
| 149 | define xsymbol | 142 | define xsymbol |
| 150 | print (struct Lisp_Symbol *) ((((int) $) & 0x0fffffff) | $data_seg_bits) | 143 | print (struct Lisp_Symbol *) ((((int) $) & $valmask) | gdb_data_seg_bits) |
| 151 | output &$->name->data | 144 | output &$->name->data |
| 152 | echo \n | 145 | echo \n |
| 153 | end | 146 | end |
| @@ -157,7 +150,7 @@ This command assumes that $ is an Emacs Lisp symbol value. | |||
| 157 | end | 150 | end |
| 158 | 151 | ||
| 159 | define xstring | 152 | define xstring |
| 160 | print (struct Lisp_String *) (($ & 0x0fffffff) | $data_seg_bits) | 153 | print (struct Lisp_String *) (($ & $valmask) | gdb_data_seg_bits) |
| 161 | output ($->size > 1000) ? 0 : ($->data[0])@($->size) | 154 | output ($->size > 1000) ? 0 : ($->data[0])@($->size) |
| 162 | echo \n | 155 | echo \n |
| 163 | end | 156 | end |
| @@ -167,7 +160,7 @@ This command assumes that $ is an Emacs Lisp string value. | |||
| 167 | end | 160 | end |
| 168 | 161 | ||
| 169 | define xvector | 162 | define xvector |
| 170 | print (struct Lisp_Vector *) (($ & 0x0fffffff) | $data_seg_bits) | 163 | print (struct Lisp_Vector *) (($ & $valmask) | gdb_data_seg_bits) |
| 171 | output ($->size > 50) ? 0 : ($->contents[0])@($->size) | 164 | output ($->size > 50) ? 0 : ($->contents[0])@($->size) |
| 172 | echo \n | 165 | echo \n |
| 173 | end | 166 | end |
| @@ -177,21 +170,21 @@ This command assumes that $ is an Emacs Lisp vector value. | |||
| 177 | end | 170 | end |
| 178 | 171 | ||
| 179 | define xframe | 172 | define xframe |
| 180 | print (struct frame *) (($ & 0x0fffffff) | $data_seg_bits) | 173 | print (struct frame *) (($ & $valmask) | gdb_data_seg_bits) |
| 181 | end | 174 | end |
| 182 | document xframe | 175 | document xframe |
| 183 | Print $ as a frame pointer, assuming it is an Emacs Lisp frame value. | 176 | Print $ as a frame pointer, assuming it is an Emacs Lisp frame value. |
| 184 | end | 177 | end |
| 185 | 178 | ||
| 186 | define xwinconfig | 179 | define xwinconfig |
| 187 | print (struct save_window_data *) (($ & 0x0fffffff) | $data_seg_bits) | 180 | print (struct save_window_data *) (($ & $valmask) | gdb_data_seg_bits) |
| 188 | end | 181 | end |
| 189 | document xwinconfig | 182 | document xwinconfig |
| 190 | Print $ as a window configuration pointer, assuming it is an Emacs Lisp window configuration value. | 183 | Print $ as a window configuration pointer, assuming it is an Emacs Lisp window configuration value. |
| 191 | end | 184 | end |
| 192 | 185 | ||
| 193 | define xcompiled | 186 | define xcompiled |
| 194 | print (struct Lisp_Vector *) (($ & 0x0fffffff) | $data_seg_bits) | 187 | print (struct Lisp_Vector *) (($ & $valmask) | gdb_data_seg_bits) |
| 195 | output ($->contents[0])@($->size & 0xff) | 188 | output ($->contents[0])@($->size & 0xff) |
| 196 | end | 189 | end |
| 197 | document xcompiled | 190 | document xcompiled |
| @@ -199,7 +192,7 @@ Print $ as a compiled function pointer, assuming it is an Emacs Lisp compiled va | |||
| 199 | end | 192 | end |
| 200 | 193 | ||
| 201 | define xcons | 194 | define xcons |
| 202 | print (struct Lisp_Cons *) (($ & 0x0fffffff) | $data_seg_bits) | 195 | print (struct Lisp_Cons *) (($ & $valmask) | gdb_data_seg_bits) |
| 203 | output *$ | 196 | output *$ |
| 204 | echo \n | 197 | echo \n |
| 205 | end | 198 | end |
| @@ -208,21 +201,21 @@ Print the contents of $, assuming it is an Emacs Lisp cons. | |||
| 208 | end | 201 | end |
| 209 | 202 | ||
| 210 | define xcar | 203 | define xcar |
| 211 | print ((($ >> 28) & 0xf) == Lisp_Cons ? ((struct Lisp_Cons *) (($ & 0x0fffffff) | $data_seg_bits))->car : 0) | 204 | print ((($ >> gdb_valbits) & 0xf) == Lisp_Cons ? ((struct Lisp_Cons *) (($ & $valmask) | gdb_data_seg_bits))->car : 0) |
| 212 | end | 205 | end |
| 213 | document xcar | 206 | document xcar |
| 214 | Print the car of $, assuming it is an Emacs Lisp pair. | 207 | Print the car of $, assuming it is an Emacs Lisp pair. |
| 215 | end | 208 | end |
| 216 | 209 | ||
| 217 | define xcdr | 210 | define xcdr |
| 218 | print ((($ >> 28) & 0xf) == Lisp_Cons ? ((struct Lisp_Cons *) (($ & 0x0fffffff) | $data_seg_bits))->cdr : 0) | 211 | print ((($ >> gdb_valbits) & 0xf) == Lisp_Cons ? ((struct Lisp_Cons *) (($ & $valmask) | gdb_data_seg_bits))->cdr : 0) |
| 219 | end | 212 | end |
| 220 | document xcdr | 213 | document xcdr |
| 221 | Print the cdr of $, assuming it is an Emacs Lisp pair. | 214 | Print the cdr of $, assuming it is an Emacs Lisp pair. |
| 222 | end | 215 | end |
| 223 | 216 | ||
| 224 | define xsubr | 217 | define xsubr |
| 225 | print (struct Lisp_Subr *) (($ & 0x0fffffff) | $data_seg_bits) | 218 | print (struct Lisp_Subr *) (($ & $valmask) | gdb_data_seg_bits) |
| 226 | output *$ | 219 | output *$ |
| 227 | echo \n | 220 | echo \n |
| 228 | end | 221 | end |
| @@ -231,7 +224,7 @@ Print the address of the subr which the Lisp_Object $ points to. | |||
| 231 | end | 224 | end |
| 232 | 225 | ||
| 233 | define xprocess | 226 | define xprocess |
| 234 | print (struct Lisp_Process *) (($ & 0x0fffffff) | $data_seg_bits) | 227 | print (struct Lisp_Process *) (($ & $valmask) | gdb_data_seg_bits) |
| 235 | output *$ | 228 | output *$ |
| 236 | echo \n | 229 | echo \n |
| 237 | end | 230 | end |
| @@ -240,14 +233,14 @@ Print the address of the struct Lisp_process which the Lisp_Object $ points to. | |||
| 240 | end | 233 | end |
| 241 | 234 | ||
| 242 | define xfloat | 235 | define xfloat |
| 243 | print ((struct Lisp_Float *) (($ & 0x0fffffff) | $data_seg_bits))->data | 236 | print ((struct Lisp_Float *) (($ & $valmask) | gdb_data_seg_bits))->data |
| 244 | end | 237 | end |
| 245 | document xfloat | 238 | document xfloat |
| 246 | Print $ assuming it is a lisp floating-point number. | 239 | Print $ assuming it is a lisp floating-point number. |
| 247 | end | 240 | end |
| 248 | 241 | ||
| 249 | define xscrollbar | 242 | define xscrollbar |
| 250 | print (struct scrollbar *) (($ & 0x0fffffff) | $data_seg_bits) | 243 | print (struct scrollbar *) (($ & $valmask) | gdb_data_seg_bits) |
| 251 | output *$ | 244 | output *$ |
| 252 | echo \n | 245 | echo \n |
| 253 | end | 246 | end |