Mercurial > hg > xemacs-beta
annotate etc/dbxrc.in @ 4952:19a72041c5ed
Mule-izing, various fixes related to char * arguments
-------------------- ChangeLog entries follow: --------------------
modules/ChangeLog addition:
2010-01-26 Ben Wing <ben@xemacs.org>
* postgresql/postgresql.c:
* postgresql/postgresql.c (CHECK_LIVE_CONNECTION):
* postgresql/postgresql.c (print_pgresult):
* postgresql/postgresql.c (Fpq_conn_defaults):
* postgresql/postgresql.c (Fpq_connectdb):
* postgresql/postgresql.c (Fpq_connect_start):
* postgresql/postgresql.c (Fpq_result_status):
* postgresql/postgresql.c (Fpq_res_status):
Mule-ize large parts of it.
2010-01-26 Ben Wing <ben@xemacs.org>
* ldap/eldap.c (print_ldap):
* ldap/eldap.c (allocate_ldap):
Use write_ascstring().
src/ChangeLog addition:
2010-01-26 Ben Wing <ben@xemacs.org>
* alloc.c:
* alloc.c (build_ascstring):
* alloc.c (build_msg_cistring):
* alloc.c (staticpro_1):
* alloc.c (staticpro_name):
* alloc.c (staticpro_nodump_1):
* alloc.c (staticpro_nodump_name):
* alloc.c (unstaticpro_nodump_1):
* alloc.c (mcpro_1):
* alloc.c (mcpro_name):
* alloc.c (object_memory_usage_stats):
* alloc.c (common_init_alloc_early):
* alloc.c (init_alloc_once_early):
* buffer.c (print_buffer):
* buffer.c (vars_of_buffer):
* buffer.c (common_init_complex_vars_of_buffer):
* buffer.c (init_initial_directory):
* bytecode.c (invalid_byte_code):
* bytecode.c (print_compiled_function):
* bytecode.c (mark_compiled_function):
* chartab.c (print_table_entry):
* chartab.c (print_char_table):
* config.h.in:
* console-gtk.c:
* console-gtk.c (gtk_device_to_console_connection):
* console-gtk.c (gtk_semi_canonicalize_console_connection):
* console-gtk.c (gtk_canonicalize_console_connection):
* console-gtk.c (gtk_semi_canonicalize_device_connection):
* console-gtk.c (gtk_canonicalize_device_connection):
* console-stream.c (stream_init_frame_1):
* console-stream.c (vars_of_console_stream):
* console-stream.c (init_console_stream):
* console-x.c (x_semi_canonicalize_console_connection):
* console-x.c (x_semi_canonicalize_device_connection):
* console-x.c (x_canonicalize_device_connection):
* console-x.h:
* data.c (eq_with_ebola_notice):
* data.c (Fsubr_interactive):
* data.c (Fnumber_to_string):
* data.c (digit_to_number):
* device-gtk.c (gtk_init_device):
* device-msw.c (print_devmode):
* device-x.c (x_event_name):
* dialog-msw.c (handle_directory_dialog_box):
* dialog-msw.c (handle_file_dialog_box):
* dialog-msw.c (vars_of_dialog_mswindows):
* doc.c (weird_doc):
* doc.c (Fsnarf_documentation):
* doc.c (vars_of_doc):
* dumper.c (pdump):
* dynarr.c:
* dynarr.c (Dynarr_realloc):
* editfns.c (Fuser_real_login_name):
* editfns.c (get_home_directory):
* elhash.c (print_hash_table_data):
* elhash.c (print_hash_table):
* emacs.c (main_1):
* emacs.c (vars_of_emacs):
* emodules.c:
* emodules.c (_emodules_list):
* emodules.c (Fload_module):
* emodules.c (Funload_module):
* emodules.c (Flist_modules):
* emodules.c (find_make_module):
* emodules.c (attempt_module_delete):
* emodules.c (emodules_load):
* emodules.c (emodules_doc_subr):
* emodules.c (emodules_doc_sym):
* emodules.c (syms_of_module):
* emodules.c (vars_of_module):
* emodules.h:
* eval.c (print_subr):
* eval.c (signal_call_debugger):
* eval.c (build_error_data):
* eval.c (signal_error):
* eval.c (maybe_signal_error):
* eval.c (signal_continuable_error):
* eval.c (maybe_signal_continuable_error):
* eval.c (signal_error_2):
* eval.c (maybe_signal_error_2):
* eval.c (signal_continuable_error_2):
* eval.c (maybe_signal_continuable_error_2):
* eval.c (signal_ferror):
* eval.c (maybe_signal_ferror):
* eval.c (signal_continuable_ferror):
* eval.c (maybe_signal_continuable_ferror):
* eval.c (signal_ferror_with_frob):
* eval.c (maybe_signal_ferror_with_frob):
* eval.c (signal_continuable_ferror_with_frob):
* eval.c (maybe_signal_continuable_ferror_with_frob):
* eval.c (syntax_error):
* eval.c (syntax_error_2):
* eval.c (maybe_syntax_error):
* eval.c (sferror):
* eval.c (sferror_2):
* eval.c (maybe_sferror):
* eval.c (invalid_argument):
* eval.c (invalid_argument_2):
* eval.c (maybe_invalid_argument):
* eval.c (invalid_constant):
* eval.c (invalid_constant_2):
* eval.c (maybe_invalid_constant):
* eval.c (invalid_operation):
* eval.c (invalid_operation_2):
* eval.c (maybe_invalid_operation):
* eval.c (invalid_change):
* eval.c (invalid_change_2):
* eval.c (maybe_invalid_change):
* eval.c (invalid_state):
* eval.c (invalid_state_2):
* eval.c (maybe_invalid_state):
* eval.c (wtaerror):
* eval.c (stack_overflow):
* eval.c (out_of_memory):
* eval.c (print_multiple_value):
* eval.c (issue_call_trapping_problems_warning):
* eval.c (backtrace_specials):
* eval.c (backtrace_unevalled_args):
* eval.c (Fbacktrace):
* eval.c (warn_when_safe):
* event-Xt.c (modwarn):
* event-Xt.c (modbarf):
* event-Xt.c (check_modifier):
* event-Xt.c (store_modifier):
* event-Xt.c (emacs_Xt_format_magic_event):
* event-Xt.c (describe_event):
* event-gtk.c (dragndrop_data_received):
* event-gtk.c (store_modifier):
* event-gtk.c (gtk_reset_modifier_mapping):
* event-msw.c (dde_eval_string):
* event-msw.c (Fdde_alloc_advise_item):
* event-msw.c (mswindows_dde_callback):
* event-msw.c (FROB):
* event-msw.c (emacs_mswindows_format_magic_event):
* event-stream.c (external_debugging_print_event):
* event-stream.c (execute_help_form):
* event-stream.c (vars_of_event_stream):
* events.c (print_event_1):
* events.c (print_event):
* events.c (event_equal):
* extents.c (print_extent_1):
* extents.c (print_extent):
* extents.c (vars_of_extents):
* faces.c (print_face):
* faces.c (complex_vars_of_faces):
* file-coding.c:
* file-coding.c (print_coding_system):
* file-coding.c (print_coding_system_in_print_method):
* file-coding.c (default_query_method):
* file-coding.c (find_coding_system):
* file-coding.c (make_coding_system_1):
* file-coding.c (chain_print):
* file-coding.c (undecided_print):
* file-coding.c (gzip_print):
* file-coding.c (vars_of_file_coding):
* file-coding.c (complex_vars_of_file_coding):
* fileio.c:
* fileio.c (report_file_type_error):
* fileio.c (report_error_with_errno):
* fileio.c (report_file_error):
* fileio.c (barf_or_query_if_file_exists):
* fileio.c (vars_of_fileio):
* floatfns.c (matherr):
* fns.c (print_bit_vector):
* fns.c (Fmapconcat):
* fns.c (add_suffix_to_symbol):
* fns.c (add_prefix_to_symbol):
* frame-gtk.c:
* frame-gtk.c (Fgtk_window_id):
* frame-x.c (def):
* frame-x.c (x_cde_transfer_callback):
* frame.c:
* frame.c (Fmake_frame):
* gc.c (show_gc_cursor_and_message):
* gc.c (vars_of_gc):
* glyphs-eimage.c (png_instantiate):
* glyphs-eimage.c (tiff_instantiate):
* glyphs-gtk.c (gtk_print_image_instance):
* glyphs-msw.c (mswindows_print_image_instance):
* glyphs-x.c (x_print_image_instance):
* glyphs-x.c (update_widget_face):
* glyphs.c (make_string_from_file):
* glyphs.c (print_image_instance):
* glyphs.c (signal_image_error):
* glyphs.c (signal_image_error_2):
* glyphs.c (signal_double_image_error):
* glyphs.c (signal_double_image_error_2):
* glyphs.c (xbm_mask_file_munging):
* glyphs.c (pixmap_to_lisp_data):
* glyphs.h:
* gui.c (gui_item_display_flush_left):
* hpplay.c (player_error_internal):
* hpplay.c (myHandler):
* intl-win32.c:
* intl-win32.c (langcode_to_lang):
* intl-win32.c (sublangcode_to_lang):
* intl-win32.c (Fmswindows_get_locale_info):
* intl-win32.c (lcid_to_locale_mule_or_no):
* intl-win32.c (mswindows_multibyte_to_unicode_print):
* intl-win32.c (complex_vars_of_intl_win32):
* keymap.c:
* keymap.c (print_keymap):
* keymap.c (ensure_meta_prefix_char_keymapp):
* keymap.c (Fkey_description):
* keymap.c (Ftext_char_description):
* lisp.h:
* lisp.h (struct):
* lisp.h (DECLARE_INLINE_HEADER):
* lread.c (Fload_internal):
* lread.c (locate_file):
* lread.c (read_escape):
* lread.c (read_raw_string):
* lread.c (read1):
* lread.c (read_list):
* lread.c (read_compiled_function):
* lread.c (init_lread):
* lrecord.h:
* marker.c (print_marker):
* marker.c (marker_equal):
* menubar-msw.c (displayable_menu_item):
* menubar-x.c (command_builder_operate_menu_accelerator):
* menubar.c (vars_of_menubar):
* minibuf.c (reinit_complex_vars_of_minibuf):
* minibuf.c (complex_vars_of_minibuf):
* mule-charset.c (Fmake_charset):
* mule-charset.c (complex_vars_of_mule_charset):
* mule-coding.c (iso2022_print):
* mule-coding.c (fixed_width_query):
* number.c (bignum_print):
* number.c (ratio_print):
* number.c (bigfloat_print):
* number.c (bigfloat_finalize):
* objects-msw.c:
* objects-msw.c (mswindows_color_to_string):
* objects-msw.c (mswindows_color_list):
* objects-tty.c:
* objects-tty.c (tty_font_list):
* objects-tty.c (tty_find_charset_font):
* objects-xlike-inc.c (xft_find_charset_font):
* objects-xlike-inc.c (endif):
* print.c:
* print.c (write_istring):
* print.c (write_ascstring):
* print.c (Fterpri):
* print.c (Fprint):
* print.c (print_error_message):
* print.c (print_vector_internal):
* print.c (print_cons):
* print.c (print_string):
* print.c (printing_unreadable_object):
* print.c (print_internal):
* print.c (print_float):
* print.c (print_symbol):
* process-nt.c (mswindows_report_winsock_error):
* process-nt.c (nt_canonicalize_host_name):
* process-unix.c (unix_canonicalize_host_name):
* process.c (print_process):
* process.c (report_process_error):
* process.c (report_network_error):
* process.c (make_process_internal):
* process.c (Fstart_process_internal):
* process.c (status_message):
* process.c (putenv_internal):
* process.c (vars_of_process):
* process.h:
* profile.c (vars_of_profile):
* rangetab.c (print_range_table):
* realpath.c (vars_of_realpath):
* redisplay.c (vars_of_redisplay):
* search.c (wordify):
* search.c (Freplace_match):
* sheap.c (sheap_adjust_h):
* sound.c (report_sound_error):
* sound.c (Fplay_sound_file):
* specifier.c (print_specifier):
* symbols.c (Fsubr_name):
* symbols.c (do_symval_forwarding):
* symbols.c (set_default_buffer_slot_variable):
* symbols.c (set_default_console_slot_variable):
* symbols.c (store_symval_forwarding):
* symbols.c (default_value):
* symbols.c (defsymbol_massage_name_1):
* symbols.c (defsymbol_massage_name_nodump):
* symbols.c (defsymbol_massage_name):
* symbols.c (defsymbol_massage_multiword_predicate_nodump):
* symbols.c (defsymbol_massage_multiword_predicate):
* symbols.c (defsymbol_nodump):
* symbols.c (defsymbol):
* symbols.c (defkeyword):
* symbols.c (defkeyword_massage_name):
* symbols.c (check_module_subr):
* symbols.c (deferror_1):
* symbols.c (deferror):
* symbols.c (deferror_massage_name):
* symbols.c (deferror_massage_name_and_message):
* symbols.c (defvar_magic):
* symeval.h:
* symeval.h (DEFVAR_SYMVAL_FWD):
* sysdep.c:
* sysdep.c (init_system_name):
* sysdll.c:
* sysdll.c (MAYBE_PREPEND_UNDERSCORE):
* sysdll.c (dll_function):
* sysdll.c (dll_variable):
* sysdll.c (dll_error):
* sysdll.c (dll_open):
* sysdll.c (dll_close):
* sysdll.c (image_for_address):
* sysdll.c (my_find_image):
* sysdll.c (search_linked_libs):
* sysdll.h:
* sysfile.h:
* sysfile.h (DEFAULT_DIRECTORY_FALLBACK):
* syswindows.h:
* tests.c (DFC_CHECK_LENGTH):
* tests.c (DFC_CHECK_CONTENT):
* tests.c (Ftest_hash_tables):
* text.c (vars_of_text):
* text.h:
* tooltalk.c (tt_opnum_string):
* tooltalk.c (tt_message_arg_ival_string):
* tooltalk.c (Ftooltalk_default_procid):
* tooltalk.c (Ftooltalk_default_session):
* tooltalk.c (init_tooltalk):
* tooltalk.c (vars_of_tooltalk):
* ui-gtk.c (Fdll_load):
* ui-gtk.c (type_to_marshaller_type):
* ui-gtk.c (Fgtk_import_function_internal):
* ui-gtk.c (emacs_gtk_object_printer):
* ui-gtk.c (emacs_gtk_boxed_printer):
* unicode.c (unicode_to_ichar):
* unicode.c (unicode_print):
* unicode.c (unicode_query):
* unicode.c (vars_of_unicode):
* unicode.c (complex_vars_of_unicode):
* win32.c:
* win32.c (mswindows_report_process_error):
* window.c (print_window):
* xemacs.def.in.in:
BASIC IDEA: Further fixing up uses of char * and CIbyte *
to reflect their actual semantics; Mule-izing some code;
redoing of the not-yet-working code to handle message translation.
Clean up code to handle message-translation (not yet working).
Create separate versions of build_msg_string() for working with
Ibyte *, CIbyte *, and Ascbyte * arguments. Assert that Ascbyte *
arguments are pure-ASCII. Make build_msg_string() be the same
as build_msg_ascstring(). Create same three versions of GETTEXT()
and DEFER_GETTEXT(). Also create build_defer_string() and
variants for the equivalent of DEFER_GETTEXT() when building a
string. Remove old CGETTEXT(). Clean up code where GETTEXT(),
DEFER_GETTEXT(), build_msg_string(), etc. was being called and
introduce some new calls to build_msg_string(), etc. Remove
GETTEXT() from calls to weird_doc() -- we assume that the
message snarfer knows about weird_doc(). Remove uses of
DEFER_GETTEXT() from error messages in sysdep.c and instead use
special comments /* @@@begin-snarf@@@ */ and /* @@@end-snarf@@@ */
that the message snarfer presumably knows about.
Create build_ascstring() and use it in many instances in place
of build_string(). The purpose of having Ascbyte * variants is
to make the code more self-documenting in terms of what sort of
semantics is expected for char * strings. In fact in the process
of looking for uses of build_string(), much improperly Mule-ized
was discovered.
Mule-ize a lot of code as described in previous paragraph,
e.g. in sysdep.c.
Make the error functions take Ascbyte * strings and fix up a
couple of places where non-pure-ASCII strings were being passed in
(file-coding.c, mule-coding.c, unicode.c). (It's debatable whether
we really need to make the error functions work this way. It
helps catch places where code is written in a way that message
translation won't work, but we may well never implement message
translation.)
Make staticpro() and friends take Ascbyte * strings instead of
raw char * strings. Create a const_Ascbyte_ptr dynarr type
to describe what's held by staticpro_names[] and friends,
create pdump descriptions for const_Ascbyte_ptr dynarrs, and
use them in place of specially-crafted staticpro descriptions.
Mule-ize certain other functions (e.g. x_event_name) by correcting
raw use of char * to Ascbyte *, Rawbyte * or another such type,
and raw use of char[] buffers to another type (usually Ascbyte[]).
Change many uses of write_c_string() to write_msg_string(),
write_ascstring(), etc.
Mule-ize emodules.c, emodules.h, sysdll.h.
Fix some un-Mule-ized code in intl-win32.c.
A comment in event-Xt.c and the limitations of the message
snarfer (make-msgfile or whatever) is presumably incorrect --
it should be smart enough to handle function calls spread over
more than one line. Clean up code in event-Xt.c that was
written awkwardly for this reason.
In config.h.in, instead of NEED_ERROR_CHECK_TYPES_INLINES,
create a more general XEMACS_DEFS_NEEDS_INLINE_DECLS to
indicate when inlined functions need to be declared in
xemacs.defs.in.in, and make use of it in xemacs.defs.in.in.
We need to do this because postgresql.c now calls qxestrdup(),
which is an inline function.
Make nconc2() and other such functions MODULE_API and put
them in xemacs.defs.in.in since postgresql.c now uses them.
Clean up indentation in lread.c and a few other places.
In text.h, document ASSERT_ASCTEXT_ASCII() and
ASSERT_ASCTEXT_ASCII_LEN(), group together the stand-in
encodings and add some more for DLL symbols, function and
variable names, etc.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Tue, 26 Jan 2010 23:22:30 -0600 |
parents | a1e20876b806 |
children | 14f0dd1fabdb 8b2f75cecb89 |
rev | line source |
---|---|
3418 | 1 ## dbx init file for XEmacs -*- ksh -*- |
2 ## This is the source file for src/.dbxrc. Edit it, and rerun configure. | |
3 ## (Running config.status is not enough.) | |
4 ## The generated file depends on src/config.h (currently only in one place). | |
5 | |
6 ## Copyright (C) 1998 Free Software Foundation, Inc. | |
7 | |
8 ## This file is part of XEmacs. | |
9 | |
10 ## XEmacs is free software; you can redistribute it and/or modify it | |
11 ## under the terms of the GNU General Public License as published by the | |
12 ## Free Software Foundation; either version 2, or (at your option) any | |
13 ## later version. | |
14 | |
15 ## XEmacs is distributed in the hope that it will be useful, but WITHOUT | |
16 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
17 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
18 ## for more details. | |
19 | |
20 ## You should have received a copy of the GNU General Public License | |
21 ## along with XEmacs; see the file COPYING. If not, write to | |
22 ## the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
23 ## Boston, MA 02110-1301 USA | |
24 | |
25 ## Author: Martin Buchholz | |
26 | |
27 ## Other contributors you could ask for help: Ivan Golubev, Jerry James, | |
28 ## Stephen Turnbull. | |
29 | |
30 ## You can use this file to debug XEmacs using Sun WorkShop's dbx. | |
31 | |
32 ## Some functions defined here require a running process, but most | |
33 ## don't. Considerable effort has been expended to this end. | |
34 | |
35 ## Since this file is called `.dbxrc', it will be read by dbx | |
36 ## automatically when dbx is run in the build directory, which is where | |
37 ## developers usually debug their xemacs. | |
38 | |
39 ## See also the comments in .gdbinit. | |
40 | |
41 ## See also the question of the XEmacs FAQ, titled | |
42 ## "How to Debug an XEmacs problem with a debugger". | |
43 | |
44 ## gdb sources the ./.gdbinit in _addition_ to ~/.gdbinit. | |
45 ## But dbx does _not_ source ~/.dbxrc if it found ./.dbxrc. | |
46 ## So we simulate the gdb algorithm by doing it ourselves here. | |
47 | |
48 #define NOT_C_CODE | |
49 #include "config.h" | |
50 | |
51 if test -r $HOME/.dbxrc; then . $HOME/.dbxrc; fi | |
52 | |
53 dbxenv language_mode ansic | |
54 | |
55 ignore POLL | |
56 ignore IO | |
57 | |
58 #ifdef VDB_POSIX | |
59 ignore SIGSEGV | |
60 ignore SIGBUS | |
61 #endif | |
62 | |
63 document lbt << 'end' | |
64 Usage: lbt | |
65 Print the current Lisp stack trace. | |
66 Requires a running xemacs process. | |
67 end | |
68 | |
69 function lbt { | |
70 call debug_backtrace() | |
71 } | |
72 | |
73 document ldp << 'end' | |
74 Usage: ldp lisp_object | |
75 Print a Lisp Object value using the Lisp printer. | |
76 Requires a running xemacs process. | |
77 end | |
78 | |
79 function ldp { | |
80 call debug_print ($1); | |
81 } | |
82 | |
83 Lisp_Type_Int=-2 | |
84 | |
85 ## A bug in dbx prevents string variables from having values beginning with `-'!! | |
86 function XEmacsInit { | |
87 function ToInt { eval "$1=\$[(int) \`alloc.c\`$1]"; } | |
88 ToInt dbg_USE_UNION_TYPE | |
89 ToInt Lisp_Type_Char | |
90 ToInt Lisp_Type_Record | |
91 ToInt dbg_valbits | |
92 ToInt dbg_gctypebits | |
93 function ToLong { eval "$1=\$[(\`alloc.c\`unsigned long) \`alloc.c\`$1]"; } | |
94 ToLong dbg_valmask | |
95 ToLong dbg_typemask | |
96 xemacs_initted=yes | |
97 } | |
98 | |
99 function printvar { | |
100 for i in $*; do eval "echo $i=\$$i"; done | |
101 } | |
102 | |
103 document decode_object << 'end' | |
104 Usage: decode_object lisp_object | |
105 Extract implementation information from a Lisp Object. | |
106 Defines variables $val, $type and $imp. | |
107 end | |
108 | |
109 ## Various dbx bugs cause ugliness in following code | |
110 function decode_object { | |
111 if test -z "$xemacs_initted"; then XEmacsInit; fi; | |
112 if test $dbg_USE_UNION_TYPE = 1; then | |
113 ## Repeat after me... dbx sux, dbx sux, dbx sux... | |
114 ## Allow both `pobj Qnil' and `pobj 0x82746834' to work | |
115 case $(whatis $1) in | |
116 *Lisp_Object*) obj="$[(`alloc.c`unsigned long)(($1).i)]";; | |
117 *) obj="$[(`alloc.c`unsigned long)($1)]";; | |
118 esac | |
119 else | |
120 obj="$[(`alloc.c`unsigned long)($1)]"; | |
121 fi | |
122 if test $[(int)($obj & 1)] = 1; then | |
123 ## It's an int | |
124 val=$[(long)(((unsigned long long)$obj) >> 1)] | |
125 type=$Lisp_Type_Int | |
126 else | |
127 type=$[(int)(((void*)$obj) & $dbg_typemask)] | |
128 if test $type = $Lisp_Type_Char; then | |
129 val=$[(void*)(long)(((unsigned long long)($obj & $dbg_valmask)) >> $dbg_gctypebits)] | |
130 else | |
131 ## It's a record pointer | |
132 val=$[(void*)$obj] | |
133 if test "$val" = "(nil)"; then type=null_pointer; fi | |
134 fi | |
135 fi | |
136 | |
137 if test $type = $Lisp_Type_Record; then | |
138 lheader="((struct lrecord_header *) $val)" | |
139 lrecord_type=$[(enum lrecord_type) $lheader->type] | |
140 imp=$[(void*)(`alloc.c`lrecord_implementations_table[$lheader->type])] | |
141 else | |
142 lheader="((struct lrecord_header *) -1)" | |
143 lrecord_type=-1 | |
144 imp="0xdeadbeef" | |
145 fi | |
146 ## printvar obj val type imp | |
147 } | |
148 | |
149 function xint { | |
150 decode_object "$*" | |
151 print (long) ($val) | |
152 } | |
153 | |
154 document xtype << 'end' | |
155 Usage: xtype lisp_object | |
156 Print the Lisp type of a lisp object. | |
157 end | |
158 | |
159 function xtype { | |
160 decode_object "$*" | |
161 if test $type = $Lisp_Type_Int; then echo "int" | |
162 elif test $type = $Lisp_Type_Char; then echo "char" | |
163 elif test $type = null_pointer; then echo "null_pointer" | |
164 else | |
165 echo "record type with name: $[((struct lrecord_implementation *)$imp)->name]" | |
166 fi | |
167 } | |
168 | |
169 function lisp-shadows { | |
170 run -batch -vanilla -f list-load-path-shadows | |
171 } | |
172 | |
173 function environment-to-run-temacs { | |
174 unset EMACSLOADPATH | |
175 export EMACSBOOTSTRAPLOADPATH=../lisp/:.. | |
176 export EMACSBOOTSTRAPMODULEPATH=../modules/:.. | |
177 } | |
178 | |
179 document run-temacs << 'end' | |
180 Usage: run-temacs | |
181 Run temacs interactively, like xemacs. | |
182 Use this with debugging tools (like purify) that cannot deal with dumping, | |
183 or when temacs builds successfully, but xemacs does not. | |
184 end | |
185 | |
186 function run-temacs { | |
187 environment-to-run-temacs | |
188 run -nd -batch -l ../lisp/loadup.el run-temacs -q ${1+"$@"} | |
189 } | |
190 | |
191 document check-xemacs << 'end' | |
192 Usage: check-xemacs | |
193 Run the test suite. Equivalent to 'make check'. | |
194 end | |
195 | |
196 function check-xemacs { | |
197 run -batch -l ../tests/automated/test-harness.el -f batch-test-emacs ../tests/automated | |
198 } | |
199 | |
200 document check-temacs << 'end' | |
201 Usage: check-temacs | |
202 Run the test suite on temacs. Equivalent to 'make check-temacs'. | |
203 Use this with debugging tools (like purify) that cannot deal with dumping, | |
204 or when temacs builds successfully, but xemacs does not. | |
205 end | |
206 | |
207 function check-temacs { | |
208 run-temacs -q -batch -l ../tests/automated/test-harness.el -f batch-test-emacs ../tests/automated | |
209 } | |
210 | |
211 document update-elc << 'end' | |
212 Usage: update-elc | |
213 Run the core lisp byte compilation part of the build procedure. | |
214 Use when debugging temacs, not xemacs! | |
215 Use this when temacs builds successfully, but xemacs does not. | |
216 end | |
217 | |
218 function update-elc { | |
219 environment-to-run-temacs | |
220 run -nd -batch -l ../lisp/update-elc.el | |
221 } | |
222 | |
223 document dmp << 'end' | |
224 Usage: dmp | |
225 Run the dumping part of the build procedure. | |
226 Use when debugging temacs, not xemacs! | |
227 Use this when temacs builds successfully, but xemacs does not. | |
228 end | |
229 | |
230 function dmp { | |
231 environment-to-run-temacs | |
232 run -nd -batch -l ../lisp/loadup.el dump | |
233 } | |
234 | |
235 function pstruct { ## pstruct foo.c struct-name | |
236 module "$1" > /dev/null | |
237 type_ptr="((struct $2 *) $val)" | |
238 print $type_ptr | |
239 print *$type_ptr | |
240 } | |
241 | |
242 document pobj << 'end' | |
243 Usage: pobj lisp_object | |
244 Print the internal C representation of a Lisp Object. | |
245 end | |
246 | |
247 function pobj { | |
248 decode_object $1 | |
249 if test $type = $Lisp_Type_Int; then | |
250 print -f"Integer: %d" $val | |
251 elif test $type = $Lisp_Type_Char; then | |
252 if test $[$val > 32 && $val < 128] = 1; then | |
253 print -f"Char: %c" $val | |
254 else | |
255 print -f"Char: %d" $val | |
256 fi | |
257 elif test $lrecord_type = lrecord_type_string; then | |
258 pstruct alloc.c Lisp_String | |
259 elif test $lrecord_type = lrecord_type_cons; then | |
260 pstruct alloc.c Lisp_Cons | |
261 elif test $lrecord_type = lrecord_type_symbol; then | |
262 pstruct symbols.c Lisp_Symbol | |
263 echo "Symbol name: $[(char *)($type_ptr->name->data)]" | |
264 elif test $lrecord_type = lrecord_type_vector; then | |
265 pstruct alloc.c Lisp_Vector | |
266 echo "Vector of length $[$type_ptr->size]" | |
267 elif test $lrecord_type = lrecord_type_bit_vector; then | |
268 pstruct fns.c Lisp_Bit_Vector | |
269 elif test $lrecord_type = lrecord_type_buffer; then | |
270 pstruct buffer.c buffer | |
271 elif test $lrecord_type = lrecord_type_char_table; then | |
272 pstruct chartab.c Lisp_Char_Table | |
273 elif test $lrecord_type = lrecord_type_char_table_entry; then | |
274 pstruct chartab.c Lisp_Char_Table_Entry | |
275 elif test $lrecord_type = lrecord_type_charset; then | |
276 pstruct mule-charset.c Lisp_Charset | |
277 elif test $lrecord_type = lrecord_type_coding_system; then | |
278 pstruct file-coding.c Lisp_Coding_System | |
279 elif test $lrecord_type = lrecord_type_color_instance; then | |
280 pstruct objects.c Lisp_Color_Instance | |
281 elif test $lrecord_type = lrecord_type_command_builder; then | |
282 pstruct event-stream.c command_builder | |
283 elif test $lrecord_type = lrecord_type_compiled_function; then | |
284 pstruct bytecode.c Lisp_Compiled_Function | |
285 elif test $lrecord_type = lrecord_type_console; then | |
286 pstruct console.c console | |
287 elif test $lrecord_type = lrecord_type_database; then | |
288 pstruct database.c Lisp_Database | |
289 elif test $lrecord_type = lrecord_type_device; then | |
290 pstruct device.c device | |
291 elif test $lrecord_type = lrecord_type_event; then | |
292 pstruct events.c Lisp_Event | |
293 elif test $lrecord_type = lrecord_type_extent; then | |
294 pstruct extents.c extent | |
295 elif test $lrecord_type = lrecord_type_extent_auxiliary; then | |
296 pstruct extents.c extent_auxiliary | |
297 elif test $lrecord_type = lrecord_type_extent_info; then | |
298 pstruct extents.c extent_info | |
299 elif test $lrecord_type = lrecord_type_face; then | |
300 pstruct faces.c Lisp_Face | |
301 elif test $lrecord_type = lrecord_type_float; then | |
302 pstruct floatfns.c Lisp_Float | |
303 elif test $lrecord_type = lrecord_type_font_instance; then | |
304 pstruct objects.c Lisp_Font_Instance | |
305 elif test $lrecord_type = lrecord_type_frame; then | |
306 pstruct frame.c frame | |
307 elif test $lrecord_type = lrecord_type_glyph; then | |
308 pstruct glyph.c Lisp_Glyph | |
309 elif test $lrecord_type = lrecord_type_gui_item; then | |
310 pstruct gui.c Lisp_Gui_Item | |
311 elif test $lrecord_type = lrecord_type_hash_table; then | |
312 pstruct elhash.c Lisp_Hash_Table | |
313 elif test $lrecord_type = lrecord_type_image_instance; then | |
314 pstruct glyphs.c Lisp_Image_Instance | |
315 elif test $lrecord_type = lrecord_type_keymap; then | |
316 pstruct keymap.c Lisp_Keymap | |
317 elif test $lrecord_type = lrecord_type_lcrecord_list; then | |
318 pstruct alloc.c lcrecord_list | |
319 elif test $lrecord_type = lrecord_type_ldap; then | |
320 pstruct ldap.c Lisp_LDAP | |
321 elif test $lrecord_type = lrecord_type_lstream; then | |
322 pstruct lstream.c lstream | |
323 elif test $lrecord_type = lrecord_type_marker; then | |
324 pstruct marker.c Lisp_Marker | |
325 elif test $lrecord_type = lrecord_type_opaque; then | |
326 pstruct opaque.c Lisp_Opaque | |
327 elif test $lrecord_type = lrecord_type_opaque_ptr; then | |
328 pstruct opaque.c Lisp_Opaque_Ptr | |
329 elif test $lrecord_type = lrecord_type_popup_data; then | |
330 pstruct gui-x.c popup_data | |
331 elif test $lrecord_type = lrecord_type_process; then | |
332 pstruct process.c Lisp_Process | |
333 elif test $lrecord_type = lrecord_type_range_table; then | |
334 pstruct rangetab.c Lisp_Range_Table | |
335 elif test $lrecord_type = lrecord_type_specifier; then | |
336 pstruct specifier.c Lisp_Specifier | |
337 elif test $lrecord_type = lrecord_type_subr; then | |
338 pstruct eval.c Lisp_Subr | |
339 elif test $lrecord_type = lrecord_type_symbol_value_buffer_local; then | |
340 pstruct symbols.c symbol_value_buffer_local | |
341 elif test $lrecord_type = lrecord_type_symbol_value_forward; then | |
342 pstruct symbols.c symbol_value_forward | |
343 elif test $lrecord_type = lrecord_type_symbol_value_lisp_magic; then | |
344 pstruct symbols.c symbol_value_lisp_magic | |
345 elif test $lrecord_type = lrecord_type_symbol_value_varalias; then | |
346 pstruct symbols.c symbol_value_varalias | |
347 elif test $lrecord_type = lrecord_type_timeout; then | |
348 pstruct event-stream.c Lisp_Timeout | |
349 elif test $lrecord_type = lrecord_type_toolbar_button; then | |
350 pstruct toolbar.c toolbar_button | |
351 elif test $lrecord_type = lrecord_type_tooltalk_message; then | |
352 pstruct tooltalk.c Lisp_Tooltalk_Message | |
353 elif test $lrecord_type = lrecord_type_tooltalk_pattern; then | |
354 pstruct tooltalk.c Lisp_Tooltalk_Pattern | |
355 elif test $lrecord_type = lrecord_type_weak_list; then | |
356 pstruct data.c weak_list | |
357 elif test $lrecord_type = lrecord_type_window; then | |
358 pstruct window.c window | |
359 elif test $lrecord_type = lrecord_type_window_configuration; then | |
360 pstruct window.c window_config | |
361 elif test "$type" = "null_pointer"; then | |
362 echo "Lisp Object is a null pointer!!" | |
363 else | |
364 echo "Unknown Lisp Object type" | |
365 print $1 | |
366 fi | |
367 } | |
368 | |
369 dbxenv suppress_startup_message 4.0 | |
370 ## dbxenv mt_watchpoints on | |
371 | |
372 function dp_core { | |
373 print ((struct x_frame *)(((struct frame*)(Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget->core | |
374 } | |
375 | |
376 ## Barf! | |
377 function print_shell { | |
378 print *(`frame-x.c`TopLevelShellRec*) (((struct `frame-x.c`x_frame*) (((struct `frame-x.c`frame*) (Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget) | |
379 } | |
380 | |
381 ## ------------------------------------------------------------- | |
382 ## functions to test the debugging support itself. | |
383 ## If you change this file, make sure the following still work... | |
384 ## ------------------------------------------------------------- | |
385 function test_xtype { | |
386 function doit { echo -n "$1: "; xtype "$1"; } | |
387 test_various_objects | |
388 } | |
389 | |
390 function test_pobj { | |
391 function doit { echo '==============================='; echo -n "$1: "; pobj "$1"; } | |
392 test_various_objects | |
393 } | |
394 | |
395 function test_various_objects { | |
396 doit Vemacs_major_version | |
397 doit Vhelp_char | |
398 doit Qnil | |
399 doit Qunbound | |
400 doit Vobarray | |
401 doit Vall_weak_lists | |
402 doit Vxemacs_codename | |
403 } |