1 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2001,
2 # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
3 # Free Software Foundation, Inc.
5 # This file is part of GNU Emacs.
7 # GNU Emacs is free software; you can redistribute it and/or modify
8 # it under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3, or (at your option)
12 # GNU Emacs is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with GNU Emacs; see the file COPYING. If not, write to the
19 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 # Boston, MA 02110-1301, USA.
22 # Force loading of symbols, enough to give us gdb_valbits etc.
25 # Find lwlib source files too.
27 #dir /gd/gnu/lesstif-0.89.9/lib/Xm
29 # Don't enter GDB when user types C-g to quit.
30 # This has one unfortunate effect: you can't type C-c
31 # at the GDB to stop Emacs, when using X.
32 # However, C-z works just as well in that case.
35 # Make it work like SIGINT normally does.
38 # Pass on user signals
39 handle SIGUSR1 noprint pass
40 handle SIGUSR2 noprint pass
42 # Don't pass SIGALRM to Emacs. This makes problems when
46 # $valmask and $tagmask are mask values set up by the xreload macro below.
48 # Use $bugfix so that the value isn't a constant.
49 # Using a constant runs into GDB bugs sometimes.
52 set $ptr = (gdb_use_union ? $bugfix.u.val : $bugfix & $valmask) | gdb_data_seg_bits
57 set $int = gdb_use_union ? $bugfix.s.val : (gdb_use_lsb ? $bugfix : $bugfix << gdb_gctypebits) >> gdb_gctypebits
62 set $type = gdb_use_union ? $bugfix.s.type : (enum Lisp_Type) (gdb_use_lsb ? $bugfix & $tagmask : $bugfix >> gdb_valbits)
65 # Set up something to print out s-expressions.
66 # We save and restore print_output_debug_flag to prevent the w32 port
67 # from calling OutputDebugString, which causes GDB to display each
68 # character twice (yuk!).
70 set $output_debug = print_output_debug_flag
71 set print_output_debug_flag = 0
73 set print_output_debug_flag = $output_debug
76 Print the emacs s-expression which is $.
77 Works only when an inferior emacs is executing.
80 # Print out s-expressions
83 set $output_debug = print_output_debug_flag
84 set print_output_debug_flag = 0
85 set safe_debug_print ($tmp)
86 set print_output_debug_flag = $output_debug
89 Print the argument as an emacs s-expression
90 Works only when an inferior emacs is executing.
93 # Print out s-expressions from tool bar
96 set $output_debug = print_output_debug_flag
97 set print_output_debug_flag = 0
98 set safe_debug_print ($tmp)
99 set print_output_debug_flag = $output_debug
102 Print the argument as an emacs s-expression.
103 Works only when an inferior emacs is executing.
104 For use on tool bar when debugging in Emacs
105 where the variable name would not otherwise
106 be recorded in the GUD buffer.
109 # Print value of lisp variable
112 set $output_debug = print_output_debug_flag
113 set print_output_debug_flag = 0
114 set safe_debug_print ( find_symbol_value (intern ($tmp)))
115 set print_output_debug_flag = $output_debug
118 Print the value of the lisp variable given as argument.
119 Works only when an inferior emacs is executing.
122 # Print value of lisp variable
125 set $output_debug = print_output_debug_flag
126 set print_output_debug_flag = 0
127 set safe_debug_print (find_symbol_value (intern ($tmp)))
128 set print_output_debug_flag = $output_debug
131 Print the value of the lisp variable given as argument.
132 Works only when an inferior emacs is executing.
133 For use when debugging in Emacs where the variable
134 name would not otherwise be recorded in the GUD buffer.
137 # Print out current buffer point and boundaries
139 set $b = current_buffer
141 printf "BUF PT: %d", $b->pt
142 if ($b->pt != $b->pt_byte)
143 printf "[%d]", $b->pt_byte
145 printf " of 1..%d", $t->z
146 if ($t->z != $t->z_byte)
147 printf "[%d]", $t->z_byte
149 if ($b->begv != 1 || $b->zv != $t->z)
150 printf " NARROW=%d..%d", $b->begv, $b->zv
151 if ($b->begv != $b->begv_byte || $b->zv != $b->zv_byte)
152 printf " [%d..%d]", $b->begv_byte, $b->zv_byte
155 printf " GAP: %d", $t->gpt
156 if ($t->gpt != $t->gpt_byte)
157 printf "[%d]", $t->gpt_byte
159 printf " SZ=%d\n", $t->gap_size
162 Print current buffer's point and boundaries.
163 Prints values of point, beg, end, narrow, and gap for current buffer.
167 set $itmethod = $arg0
170 printf "GET_FROM_BUFFER"
173 printf "GET_FROM_DISPLAY_VECTOR"
176 printf "GET_FROM_STRING"
179 printf "GET_FROM_C_STRING"
182 printf "GET_FROM_IMAGE"
185 printf "GET_FROM_STRETCH"
187 if ($itmethod < 0 || $itmethod > 5)
192 Pretty print it->method given as first arg
195 # Print out iterator given as first arg
198 printf "cur=%d", $it->current.pos.charpos
199 if ($it->current.pos.charpos != $it->current.pos.bytepos)
200 printf "[%d]", $it->current.pos.bytepos
202 printf " pos=%d", $it->position.charpos
203 if ($it->position.charpos != $it->position.bytepos)
204 printf "[%d]", $it->position.bytepos
206 printf " start=%d", $it->start.pos.charpos
207 if ($it->start.pos.charpos != $it->start.pos.bytepos)
208 printf "[%d]", $it->start.pos.bytepos
210 printf " end=%d", $it->end_charpos
211 printf " stop=%d", $it->stop_charpos
212 printf " face=%d", $it->face_id
213 if ($it->multibyte_p)
216 if ($it->header_line_p)
219 if ($it->n_overlay_strings > 0)
220 printf " nov=%d", $it->n_overlay_strings
223 printf " sp=%d", $it->sp
227 if ($it->len == 1 && $it->c >= ' ' && it->c < 255)
228 printf " ch='%c'", $it->c
230 printf " ch=[%d,%d]", $it->c, $it->len
236 printf "IT_CHARACTER"
239 printf "IT_COMPOSITION"
251 printf "IT_TRUNCATION"
254 printf "IT_CONTINUATION"
256 if ($it->what < 0 || $it->what > 6)
260 if ($it->method != 0)
263 pitmethod $it->method
264 if ($it->method == 2)
266 printf "[%d]", $it->current.string_pos.charpos
268 if ($it->method == 4)
270 printf "[%d]", $it->image_id
274 if ($it->region_beg_charpos >= 0)
275 printf "reg=%d-%d ", $it->region_beg_charpos, $it->region_end_charpos
277 printf "vpos=%d hpos=%d", $it->vpos, $it->hpos,
278 printf " y=%d lvy=%d", $it->current_y, $it->last_visible_y
279 printf " x=%d vx=%d-%d", $it->current_x, $it->first_visible_x, $it->last_visible_x
280 printf " w=%d", $it->pixel_width
281 printf " a+d=%d+%d=%d", $it->ascent, $it->descent, $it->ascent+$it->descent
282 printf " max=%d+%d=%d", $it->max_ascent, $it->max_descent, $it->max_ascent+$it->max_descent
285 while ($i < $it->sp && $i < 4)
286 set $e = $it->stack[$i]
287 printf "stack[%d]: ", $i
289 printf "[%d]", $e->position.charpos
295 Pretty print a display iterator.
296 Take one arg, an iterator object or pointer.
303 Pretty print the display iterator it.
308 printf "y=%d x=%d pwid=%d", $row->y, $row->x, $row->pixel_width
309 printf " a+d=%d+%d=%d", $row->ascent, $row->height-$row->ascent, $row->height
310 printf " phys=%d+%d=%d", $row->phys_ascent, $row->phys_height-$row->phys_ascent, $row->phys_height
311 printf " vis=%d", $row->visible_height
312 printf " L=%d T=%d R=%d", $row->used[0], $row->used[1], $row->used[2]
314 printf "start=%d end=%d", $row->start.pos.charpos, $row->end.pos.charpos
318 if ($row->displays_text_p)
321 if ($row->mode_line_p)
324 if ($row->continued_p)
327 if ($row-> truncated_on_left_p)
330 if ($row-> truncated_on_right_p)
333 if ($row->starts_in_middle_of_char_p)
336 if ($row->ends_in_middle_of_char_p)
339 if ($row->ends_in_newline_from_string_p)
342 if ($row->ends_at_zv_p)
345 if ($row->overlapped_p)
348 if ($row->overlapping_p)
354 Pretty print information about glyph_row.
355 Takes one argument, a row object or pointer.
362 Pretty print information about glyph_row in row.
368 printf "y=%d x=%d vpos=%d hpos=%d", $cp->y, $cp->x, $cp->vpos, $cp->hpos
371 Pretty print a window cursor.
376 pcursorx output_cursor
380 Pretty print the output_cursor.
385 xgetint $w->sequence_number
386 if ($w->mini_p != Qnil)
389 printf "Window %d ", $int
391 set $tem = (struct buffer *) $ptr
393 printf "%s", ((struct Lisp_String *) $ptr)->data
396 set $tem = (struct Lisp_Marker *) $ptr
397 printf "start=%d end:", $tem->charpos
398 if ($w->window_end_valid != Qnil)
399 xgetint $w->window_end_pos
400 printf "pos=%d", $int
401 xgetint $w->window_end_vpos
402 printf " vpos=%d", $int
406 printf " vscroll=%d", $w->vscroll
407 if ($w->force_start != Qnil)
408 printf " FORCE_START"
410 if ($w->must_be_updated_p)
417 pcursorx $w->phys_cursor
418 if ($w->phys_cursor_on_p)
424 if ($w->last_cursor_off_p != $w->cursor_off_p)
425 if ($w->last_cursor_off_p)
431 if ($w->cursor_off_p)
439 Pretty print a window structure.
440 Takes one argument, a pointer to a window structure.
447 Pretty print window structure w.
454 if ($g->u.ch >= ' ' && $g->u.ch < 127)
455 printf "CHAR[%c]", $g->u.ch
457 printf "CHAR[0x%x]", $g->u.ch
462 printf "COMP[%d (%d..%d)]", $g->u.cmp.id, $g->u.cmp.from, $g->u.cmp.to
466 printf "IMAGE[%d]", $g->u.img_id
470 printf "STRETCH[%d+%d]", $g->u.stretch.height, $g->u.stretch.ascent
472 xgettype ($g->object)
473 if ($type == Lisp_String)
474 printf " str=%x[%d]", $g->object, $g->charpos
476 printf " pos=%d", $g->charpos
478 printf " w=%d a+d=%d+%d", $g->pixel_width, $g->ascent, $g->descent
479 # If not DEFAULT_FACE_ID
480 if ($g->face_id != 0)
481 printf " face=%d", $g->face_id
484 printf " vof=%d", $g->voffset
492 if ($g->glyph_not_available_p)
495 if ($g->overlaps_vertically_p)
498 if ($g->left_box_line_p)
501 if ($g->right_box_line_p)
504 if ($g->slice.x || $g->slice.y || $g->slice.width || $g->slice.height)
505 printf " slice=%d,%d,%d,%d" ,$g->slice.x, $g->slice.y, $g->slice.width, $g->slice.height
510 Pretty print a glyph structure.
511 Takes one argument, a pointer to a glyph structure.
519 Pretty print glyph structure glyph.
527 Pretty print glyph structure glyph[I].
528 Takes one argument, a integer I.
532 set $pgidx = $pgidx + 1
536 Pretty print next glyph structure.
544 set $used = $row->used[$area]
546 set $gl0 = $row->glyphs[$area]
548 printf "%s: %d glyphs\n", ($area == 0 ? "LEFT" : $area == 2 ? "RIGHT" : "TEXT"), $used
549 while ($pgidx < $used)
550 printf "%3d %4d: ", $pgidx, $xofs
552 set $xofs = $xofs + $gl0[$pgidx]->pixel_width
553 set $pgidx = $pgidx + 1
556 set $area = $area + 1
560 Pretty print all glyphs in a row structure.
561 Takes one argument, a pointer to a row structure.
568 Pretty print all glyphs in row structure row.
575 Pretty print all glyphs in it->glyph_row.
582 if $type == Lisp_Misc
585 if $type == Lisp_Vectorlike
591 Print the type of $, assuming it is an Emacs Lisp value.
592 If the first type printed is Lisp_Vector or Lisp_Misc,
593 a second line gives the more precise type.
598 set $size = ((struct Lisp_Vector *) $ptr)->size
599 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
603 Print the size or vector subtype of $.
604 This command assumes that $ is a vector or pseudovector.
609 output (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
613 Assume that $ is some misc type and print its specific type.
621 Print $ as an Emacs Lisp integer. This gets the sign right.
629 Print the pointer portion of an Emacs Lisp value in $.
634 print (struct Lisp_Marker *) $ptr
637 Print $ as a marker pointer.
638 This command assumes that $ is an Emacs Lisp marker value.
643 print (struct Lisp_Overlay *) $ptr
646 Print $ as a overlay pointer.
647 This command assumes that $ is an Emacs Lisp overlay value.
652 print (struct Lisp_Free *) $ptr
655 Print $ as a misc free-cell pointer.
656 This command assumes that $ is an Emacs Lisp Misc value.
661 print (struct Lisp_Intfwd *) $ptr
664 Print $ as an integer forwarding pointer.
665 This command assumes that $ is an Emacs Lisp Misc value.
670 print (struct Lisp_Boolfwd *) $ptr
673 Print $ as a boolean forwarding pointer.
674 This command assumes that $ is an Emacs Lisp Misc value.
679 print (struct Lisp_Objfwd *) $ptr
682 Print $ as an object forwarding pointer.
683 This command assumes that $ is an Emacs Lisp Misc value.
688 print (struct Lisp_Buffer_Objfwd *) $ptr
691 Print $ as a buffer-local object forwarding pointer.
692 This command assumes that $ is an Emacs Lisp Misc value.
697 print (struct Lisp_Kboard_Objfwd *) $ptr
700 Print $ as a kboard-local object forwarding pointer.
701 This command assumes that $ is an Emacs Lisp Misc value.
706 print (struct Lisp_Buffer_Local_Value *) $ptr
709 Print $ as a buffer-local-value pointer.
710 This command assumes that $ is an Emacs Lisp Misc value.
716 print (struct Lisp_Symbol *) $ptr
721 Print the name and address of the symbol $.
722 This command assumes that $ is an Emacs Lisp symbol value.
727 print (struct Lisp_String *) $ptr
732 Print the contents and address of the string $.
733 This command assumes that $ is an Emacs Lisp string value.
738 print (struct Lisp_Vector *) $ptr
739 output ($->size > 50) ? 0 : ($->contents[0])@($->size & ~gdb_array_mark_flag)
743 Print the contents and address of the vector $.
744 This command assumes that $ is an Emacs Lisp vector value.
749 print (struct Lisp_Process *) $ptr
754 Print the address of the struct Lisp_process to which $ points.
755 This command assumes that $ is a Lisp_Object.
760 print (struct frame *) $ptr
762 set $ptr = (struct Lisp_String *) $ptr
767 Print $ as a frame pointer.
768 This command assumes $ is an Emacs Lisp frame value.
773 print (struct Lisp_Vector *) $ptr
774 output ($->contents[0])@($->size & 0xff)
777 Print $ as a compiled function pointer.
778 This command assumes that $ is an Emacs Lisp compiled value.
783 print (struct window *) $ptr
784 set $window = (struct window *) $ptr
785 xgetint $window->total_cols
787 xgetint $window->total_lines
789 xgetint $window->left_col
791 xgetint $window->top_line
793 printf "%dx%d+%d+%d\n", $width, $height, $left, $top
796 Print $ as a window pointer, assuming it is an Emacs Lisp window value.
797 Print the window's position as "WIDTHxHEIGHT+LEFT+TOP".
802 print (struct save_window_data *) $ptr
805 Print $ as a window configuration pointer.
806 This command assumes that $ is an Emacs Lisp window configuration value.
811 print (struct Lisp_Subr *) $ptr
816 Print the address of the subr which the Lisp_Object $ points to.
821 print (struct Lisp_Char_Table *) $ptr
824 printf " %d extra slots", ($->size & 0x1ff) - 68
828 Print the address of the char-table $, and its purpose.
829 This command assumes that $ is an Emacs Lisp char-table value.
834 print (struct Lisp_Bool_Vector *) $ptr
835 output ($->size > 256) ? 0 : ($->data[0])@((($->size & ~gdb_array_mark_flag) + 7)/ 8)
839 Print the contents and address of the bool-vector $.
840 This command assumes that $ is an Emacs Lisp bool-vector value.
845 print (struct buffer *) $ptr
847 output ((struct Lisp_String *) $ptr)->data
851 Set $ as a buffer pointer and the name of the buffer.
852 This command assumes $ is an Emacs Lisp buffer value.
857 print (struct Lisp_Hash_Table *) $ptr
860 Set $ as a hash table pointer.
861 This command assumes that $ is an Emacs Lisp hash table value.
866 print (struct Lisp_Cons *) $ptr
871 Print the contents of $ as an Emacs Lisp cons.
879 Print the contents of the next cell in a list.
880 This command assumes that the last thing you printed was a cons cell contents
881 (type struct Lisp_Cons) or a pointer to one.
886 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->car : 0)
889 Assume that $ is an Emacs Lisp pair and print its car.
895 print/x ($type == Lisp_Cons ? ((struct Lisp_Cons *) $ptr)->u.cdr : 0)
898 Assume that $ is an Emacs Lisp pair and print its cdr.
903 set $cons = (struct Lisp_Cons *) $ptr
907 while $cons != $nil && $i < 10
911 set $cons = (struct Lisp_Cons *) $ptr
923 Print $ assuming it is a list.
928 print ((struct Lisp_Float *) $ptr)->u.data
931 Print $ assuming it is a lisp floating-point number.
936 print (struct scrollbar *) $ptr
941 Print $ as a scrollbar pointer.
949 if $type == Lisp_Symbol
952 if $type == Lisp_String
955 if $type == Lisp_Cons
958 if $type == Lisp_Float
961 if $type == Lisp_Misc
962 set $misc = (enum Lisp_Misc_Type) (((struct Lisp_Free *) $ptr)->type)
963 if $misc == Lisp_Misc_Free
966 if $misc == Lisp_Misc_Boolfwd
969 if $misc == Lisp_Misc_Marker
972 if $misc == Lisp_Misc_Intfwd
975 if $misc == Lisp_Misc_Boolfwd
978 if $misc == Lisp_Misc_Objfwd
981 if $misc == Lisp_Misc_Buffer_Objfwd
984 if $misc == Lisp_Misc_Buffer_Local_Value
987 # if $misc == Lisp_Misc_Some_Buffer_Local_Value
990 if $misc == Lisp_Misc_Overlay
993 if $misc == Lisp_Misc_Kboard_Objfwd
996 # if $misc == Lisp_Misc_Save_Value
1000 if $type == Lisp_Vectorlike
1001 set $size = ((struct Lisp_Vector *) $ptr)->size
1002 if ($size & PVEC_FLAG)
1003 set $vec = (enum pvec_type) ($size & PVEC_TYPE_MASK)
1004 if $vec == PVEC_NORMAL_VECTOR
1007 if $vec == PVEC_PROCESS
1010 if $vec == PVEC_FRAME
1013 if $vec == PVEC_COMPILED
1016 if $vec == PVEC_WINDOW
1019 if $vec == PVEC_WINDOW_CONFIGURATION
1022 if $vec == PVEC_SUBR
1025 if $vec == PVEC_CHAR_TABLE
1028 if $vec == PVEC_BOOL_VECTOR
1031 if $vec == PVEC_BUFFER
1034 if $vec == PVEC_HASH_TABLE
1043 Print $ as a lisp object of any type.
1047 set $data = (char *) $arg0->data
1048 output ($arg0->size > 1000) ? 0 : ($data[0])@($arg0->size_byte < 0 ? $arg0->size & ~gdb_array_mark_flag : $arg0->size_byte)
1053 set $sym = (struct Lisp_Symbol *) $ptr
1055 set $sym_name = (struct Lisp_String *) $ptr
1059 Print argument as a symbol.
1063 set $tmp = (struct Lisp_Hash_Table *) ((Vcoding_system_hash_table & $valmask) | gdb_data_seg_bits)
1064 set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & $valmask) | gdb_data_seg_bits)
1065 set $name = $tmp->contents[$arg0 * 2]
1068 print $tmp->contents[$arg0 * 2 + 1]
1072 Print the name and attributes of coding system that has ID (argument).
1076 set $tmp = (struct Lisp_Hash_Table *) ((Vcharset_hash_table & $valmask) | gdb_data_seg_bits)
1077 set $tmp = (struct Lisp_Vector *) (($tmp->key_and_value & $valmask) | gdb_data_seg_bits)
1078 p $tmp->contents[charset_table[$arg0].hash_index * 2]
1082 Print the name of charset that has ID (argument).
1087 set $tbl = (struct Lisp_Char_Table *) $ptr
1089 xgetint $tbl->extras[0]
1090 printf " ID:%d", $int
1091 xgettype $tbl->extras[1]
1092 xgetptr $tbl->extras[1]
1093 if $type == Lisp_String
1094 set $ptr = (struct Lisp_String *) $ptr
1098 xgetptr $tbl->extras[2]
1099 set $ptr = (struct Lisp_Char_Table *) $ptr
1100 xgetptr $ptr->extras[1]
1101 set $ptr = (struct Lisp_String *) $ptr
1102 printf " Realized from:"
1110 set $size = (((struct Lisp_Vector *) $ptr)->size & 0x1FF)
1111 if $size == FONT_SPEC_MAX
1112 print (struct font_spec *) $ptr
1114 if $size == FONT_ENTITY_MAX
1115 print (struct font_entity *) $ptr
1117 print (struct font *) $ptr
1122 Print $ assuming it is a list font (font-spec, font-entity, or font-object).
1126 set $bt = backtrace_list
1128 xgettype (*$bt->function)
1129 if $type == Lisp_Symbol
1130 xprintsym (*$bt->function)
1131 printf " (0x%x)\n", $bt->args
1133 printf "0x%x ", *$bt->function
1134 if $type == Lisp_Vectorlike
1135 xgetptr (*$bt->function)
1136 set $size = ((struct Lisp_Vector *) $ptr)->size
1137 output ($size & PVEC_FLAG) ? (enum pvec_type) ($size & PVEC_TYPE_MASK) : $size & ~gdb_array_mark_flag
1139 printf "Lisp type %d", $type
1147 Print a backtrace of Lisp function calls from backtrace_list.
1148 Set a breakpoint at Fsignal and call this to see from where
1149 an error was signaled.
1153 set debug_print (which_symbols ($arg0))
1156 Print symbols which references a given lisp object
1157 either as its symbol value or symbol function.
1161 set $bt = byte_stack_list
1163 xgettype ($bt->byte_string)
1164 printf "0x%x => ", $bt->byte_string
1165 which $bt->byte_string
1170 Print a backtrace of the byte code stack.
1173 # Show Lisp backtrace after normal backtrace.
1174 define hookpost-backtrace
1175 set $bt = backtrace_list
1178 echo Lisp Backtrace:\n
1184 set $tagmask = (((long)1 << gdb_gctypebits) - 1)
1185 set $valmask = gdb_use_lsb ? ~($tagmask) : ((long)1 << gdb_valbits) - 1
1188 When starting Emacs a second time in the same gdb session under
1189 FreeBSD 2.2.5, gdb 4.13, $valmask have lost
1190 their values. (The same happens on current (2000) versions of GNU/Linux
1192 This function reloads them.
1196 # Flush display (X only)
1201 Flush pending X window display updates to screen.
1202 Works only when an inferior emacs is executing.
1210 # Call xreload if a new Emacs executable is loaded.
1216 set print sevenbit-strings
1218 show environment DISPLAY
1219 show environment TERM
1221 # People get bothered when they see messages about non-existent functions...
1222 xgetptr Vsystem_type
1223 # $ptr is NULL in temacs
1225 set $tem = (struct Lisp_Symbol *) $ptr
1227 set $tem = (struct Lisp_String *) $ptr
1228 set $tem = (char *) $tem->data
1230 # Don't let abort actually run, as it will make stdio stop working and
1231 # therefore the `pr' command above as well.
1232 if $tem[0] == 'w' && $tem[1] == 'i' && $tem[2] == 'n' && $tem[3] == 'd'
1233 # The windows-nt build replaces abort with its own function.
1240 # x_error_quitter is defined only on X. But window-system is set up
1241 # only at run time, during Emacs startup, so we need to defer setting
1242 # the breakpoint. init_sys_modes is the first function called on
1243 # every platform after init_display, where window-system is set.
1244 tbreak init_sys_modes
1247 xgetptr Vinitial_window_system
1248 set $tem = (struct Lisp_Symbol *) $ptr
1250 set $tem = (struct Lisp_String *) $ptr
1251 set $tem = (char *) $tem->data
1252 # If we are running in synchronous mode, we want a chance to look
1253 # around before Emacs exits. Perhaps we should put the break
1254 # somewhere else instead...
1255 if $tem[0] == 'x' && $tem[1] == '\0'
1256 break x_error_quitter
1260 # arch-tag: 12f34321-7bfa-4240-b77a-3cd3a1696dfe