Mercurial > hg > xemacs-beta
changeset 5601:3e5d5e8e4bb7
Move etc/dbxrc.in to src/.dbxrc.in.
2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de>
* .hgignore:
* configure.ac:
Reflect move of etc/dbxrc.in to src/.dbxrc.in.
* configure: Regenerate.
2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de>
* dbxrc.in: Move to src/.dbxrc.in.
2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de>
* .dbxrc.in: Move from etc/.dbxrc.in.
author | Marcus Crestani <crestani@informatik.uni-tuebingen.de> |
---|---|
date | Mon, 21 Nov 2011 19:46:04 +0100 |
parents | 80aed35416d7 |
children | c9e5612f5424 |
files | .hgignore ChangeLog configure configure.ac etc/ChangeLog etc/dbxrc.in src/.dbxrc.in src/ChangeLog |
diffstat | 8 files changed, 429 insertions(+), 429 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Mon Nov 21 09:26:45 2011 -0500 +++ b/.hgignore Mon Nov 21 19:46:04 2011 +0100 @@ -31,7 +31,8 @@ ^modules/ldap/eldap_i\.c$ ^(xemacs|mule)-packages ^etc/PROBLEMS$ -^src/(.dbxrc|.gdbinit)(\.in)?$ +^src/\.dbxrc$ +^src/\.gdbinit(\.in)?$ ^src/(GNUmakefile|Makefile(\.in)?)$ ^src/NEEDTODUMP$ ^src/config\.h$
--- a/ChangeLog Mon Nov 21 09:26:45 2011 -0500 +++ b/ChangeLog Mon Nov 21 19:46:04 2011 +0100 @@ -1,3 +1,10 @@ +2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de> + + * .hgignore: + * configure.ac: + Reflect move of etc/dbxrc.in to src/.dbxrc.in. + * configure: Regenerate. + 2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de> * configure: Regenerate with Autoconf 2.68. Default Autoconf 2.61
--- a/configure Mon Nov 21 09:26:45 2011 -0500 +++ b/configure Mon Nov 21 19:46:04 2011 +0100 @@ -20715,11 +20715,6 @@ -if test -f "$srcdir/etc/dbxrc.in"; then - test "$verbose" = "yes" && echo "creating src/.dbxrc" - echo ". $srcdir/etc/dbxrc" > "$srcdir/src/.dbxrc" -fi - if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then test "$verbose" = "yes" && echo "creating TAGS" echo " @@ -21397,8 +21392,6 @@ -MAKE_SUBDIR="$MAKE_SUBDIR etc" && if test "$verbose" = "yes"; then echo " Appending \"etc\" to \$MAKE_SUBDIR"; fi - ac_config_commands="$ac_config_commands default" cat >confcache <<\_ACEOF @@ -22763,9 +22756,9 @@ mv -f Makefile.new .gdbinit fi - if test -r "dbxrc.in"; then + if test -r ".dbxrc.in"; then rm -f junk.c - < dbxrc.in \ + < .dbxrc.in \ sed -e '/^# Generated/d' \ -e 's%/\*\*/#.*%%' \ -e 's/^ *# */#/' \ @@ -22780,7 +22773,7 @@ s/$/"/ }' > junk.c; - echo creating $dir/dbxrc + echo creating $dir/.dbxrc $CPP -I. -I${srcdir}/src junk.c \ | sed -e 's/^\#.*//' \ -e 's/^[ TAB][ TAB]*$//'\ @@ -22793,7 +22786,7 @@ }' \ -e 's/^XCOMM /\# /' > Makefile.new chmod 444 Makefile.new - mv -f Makefile.new dbxrc + mv -f Makefile.new .dbxrc fi if test -r "xemacs.def.in"; then
--- a/configure.ac Mon Nov 21 09:26:45 2011 -0500 +++ b/configure.ac Mon Nov 21 19:46:04 2011 +0100 @@ -5375,12 +5375,6 @@ dnl .gdbinit is now handled like xemacs.def or other src files, and dnl its source is in src/.gdbinit.in.in. -dnl Create a .dbxrc useful for debugging XEmacs -if test -f "$srcdir/etc/dbxrc.in"; then - test "$verbose" = "yes" && echo "creating src/.dbxrc" - echo ". $srcdir/etc/dbxrc" > "$srcdir/src/.dbxrc" -fi - dnl Create a useful TAGS file if test -f "$srcdir/TAGS" -a ! -f "TAGS"; then test "$verbose" = "yes" && echo "creating TAGS" @@ -6009,9 +6003,6 @@ mv -f Makefile.new $2 ])dnl CPP_MAKEFILE -dnl for creation of /etc/dbxrc -XE_APPEND(etc, MAKE_SUBDIR) - AC_CONFIG_COMMANDS([default], [for dir in . $MAKE_SUBDIR; do ( @@ -6030,9 +6021,9 @@ MAKE_JUNK_C(.gdbinit.in) CPP_MAKEFILE(,.gdbinit) fi - if test -r "dbxrc.in"; then - MAKE_JUNK_C(dbxrc.in) - CPP_MAKEFILE(,dbxrc) + if test -r ".dbxrc.in"; then + MAKE_JUNK_C(.dbxrc.in) + CPP_MAKEFILE(,.dbxrc) fi if test -r "xemacs.def.in"; then dnl #### We should be using MAKE_JUNK_C instead of the next two lines.
--- a/etc/ChangeLog Mon Nov 21 09:26:45 2011 -0500 +++ b/etc/ChangeLog Mon Nov 21 19:46:04 2011 +0100 @@ -1,3 +1,7 @@ +2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de> + + * dbxrc.in: Move to src/.dbxrc.in. + 2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de> * dbxrc.in: There is no lrecord_type_lcrecord_list when using the
--- a/etc/dbxrc.in Mon Nov 21 09:26:45 2011 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,405 +0,0 @@ -## dbx init file for XEmacs -*- ksh -*- -## This is the source file for src/.dbxrc. Edit it, and rerun configure. -## (Running config.status is not enough.) -## The generated file depends on src/config.h (currently only in one place). - -## Copyright (C) 1998 Free Software Foundation, Inc. -## Copyright (C) 2010 Ben Wing. - -## This file is part of XEmacs. - -## XEmacs is free software: you can redistribute it and/or modify it -## under the terms of the GNU General Public License as published by the -## Free Software Foundation, either version 3 of the License, or (at your -## option) any later version. - -## XEmacs is distributed in the hope that it will be useful, but WITHOUT -## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -## for more details. - -## You should have received a copy of the GNU General Public License -## along with XEmacs. If not, see <http://www.gnu.org/licenses/>. - -## Author: Martin Buchholz - -## Other contributors you could ask for help: Ivan Golubev, Jerry James, -## Stephen Turnbull. - -## You can use this file to debug XEmacs using Sun WorkShop's dbx. - -## Some functions defined here require a running process, but most -## don't. Considerable effort has been expended to this end. - -## Since this file is called `.dbxrc', it will be read by dbx -## automatically when dbx is run in the build directory, which is where -## developers usually debug their xemacs. - -## See also the comments in .gdbinit. - -## See also the question of the XEmacs FAQ, titled -## "How to Debug an XEmacs problem with a debugger". - -## gdb sources the ./.gdbinit in _addition_ to ~/.gdbinit. -## But dbx does _not_ source ~/.dbxrc if it found ./.dbxrc. -## So we simulate the gdb algorithm by doing it ourselves here. - -#define NOT_C_CODE -#include "config.h" - -if test -r $HOME/.dbxrc; then . $HOME/.dbxrc; fi - -dbxenv language_mode ansic - -ignore POLL -ignore IO - -#ifdef VDB_POSIX -ignore SIGSEGV -ignore SIGBUS -#endif - -document lbt << 'end' -Usage: lbt -Print the current Lisp stack trace. -Requires a running xemacs process. -end - -function lbt { - call debug_backtrace() -} - -document ldp << 'end' -Usage: ldp lisp_object -Print a Lisp Object value using the Lisp printer. -Requires a running xemacs process. -end - -function ldp { - call debug_print ($1); -} - -Lisp_Type_Int=-2 - -## A bug in dbx prevents string variables from having values beginning with `-'!! -function XEmacsInit { - function ToInt { eval "$1=\$[(int) \`alloc.c\`$1]"; } - ToInt dbg_USE_UNION_TYPE - ToInt Lisp_Type_Char - ToInt Lisp_Type_Record - ToInt dbg_valbits - ToInt dbg_gctypebits - function ToLong { eval "$1=\$[(\`alloc.c\`unsigned long) \`alloc.c\`$1]"; } - ToLong dbg_valmask - ToLong dbg_typemask - xemacs_initted=yes -} - -function printvar { - for i in $*; do eval "echo $i=\$$i"; done -} - -document decode_object << 'end' -Usage: decode_object lisp_object -Extract implementation information from a Lisp Object. -Defines variables $val, $type and $imp. -end - -## Various dbx bugs cause ugliness in following code -function decode_object { - if test -z "$xemacs_initted"; then XEmacsInit; fi; - if test $dbg_USE_UNION_TYPE = 1; then - ## Repeat after me... dbx sux, dbx sux, dbx sux... - ## Allow both `pobj Qnil' and `pobj 0x82746834' to work - case $(whatis $1) in - *Lisp_Object*) obj="$[(`alloc.c`unsigned long)(($1).i)]";; - *) obj="$[(`alloc.c`unsigned long)($1)]";; - esac - else - obj="$[(`alloc.c`unsigned long)($1)]"; - fi - if test $[(int)($obj & 1)] = 1; then - ## It's an int - val=$[(long)(((unsigned long long)$obj) >> 1)] - type=$Lisp_Type_Int - else - type=$[(int)(((void*)$obj) & $dbg_typemask)] - if test $type = $Lisp_Type_Char; then - val=$[(void*)(long)(((unsigned long long)($obj & $dbg_valmask)) >> $dbg_gctypebits)] - else - ## It's a record pointer - val=$[(void*)$obj] - if test "$val" = "(nil)"; then type=null_pointer; fi - fi - fi - - if test $type = $Lisp_Type_Record; then - lheader="((struct lrecord_header *) $val)" - lrecord_type=$[(enum lrecord_type) $lheader->type] - imp=$[(void*)(`alloc.c`lrecord_implementations_table[$lheader->type])] - else - lheader="((struct lrecord_header *) -1)" - lrecord_type=-1 - imp="0xdeadbeef" - fi - ## printvar obj val type imp -} - -function xint { - decode_object "$*" - print (long) ($val) -} - -document xtype << 'end' -Usage: xtype lisp_object -Print the Lisp type of a lisp object. -end - -function xtype { - decode_object "$*" - if test $type = $Lisp_Type_Int; then echo "int" - elif test $type = $Lisp_Type_Char; then echo "char" - elif test $type = null_pointer; then echo "null_pointer" - else - echo "record type with name: $[((struct lrecord_implementation *)$imp)->name]" - fi -} - -function lisp-shadows { - run -batch -vanilla -f list-load-path-shadows -} - -function environment-to-run-temacs { - unset EMACSLOADPATH - export EMACSBOOTSTRAPLOADPATH=../lisp/:.. - export EMACSBOOTSTRAPMODULEPATH=../modules/:.. -} - -document run-temacs << 'end' -Usage: run-temacs -Run temacs interactively, like xemacs. -Use this with debugging tools (like purify) that cannot deal with dumping, -or when temacs builds successfully, but xemacs does not. -end - -function run-temacs { - environment-to-run-temacs - run -nd -batch -l ../lisp/loadup.el run-temacs -q ${1+"$@"} -} - -document check-xemacs << 'end' -Usage: check-xemacs -Run the test suite. Equivalent to 'make check'. -end - -function check-xemacs { - run -batch -l test-harness -f batch-test-emacs ../tests/automated -} - -document check-temacs << 'end' -Usage: check-temacs -Run the test suite on temacs. Equivalent to 'make check-temacs'. -Use this with debugging tools (like purify) that cannot deal with dumping, -or when temacs builds successfully, but xemacs does not. -end - -function check-temacs { - run-temacs -q -batch -l test-harness -f batch-test-emacs ../tests/automated -} - -document update-elc << 'end' -Usage: update-elc -Run the core lisp byte compilation part of the build procedure. -Use when debugging temacs, not xemacs! -Use this when temacs builds successfully, but xemacs does not. -end - -function update-elc { - environment-to-run-temacs - run -nd -batch -l ../lisp/update-elc.el -} - -document dmp << 'end' -Usage: dmp -Run the dumping part of the build procedure. -Use when debugging temacs, not xemacs! -Use this when temacs builds successfully, but xemacs does not. -end - -function dmp { - environment-to-run-temacs - run -nd -batch -l ../lisp/loadup.el dump -} - -function pstruct { ## pstruct foo.c struct-name - module "$1" > /dev/null - type_ptr="((struct $2 *) $val)" - print $type_ptr - print *$type_ptr -} - -document pobj << 'end' -Usage: pobj lisp_object -Print the internal C representation of a Lisp Object. -end - -function pobj { - decode_object $1 - if test $type = $Lisp_Type_Int; then - print -f"Integer: %d" $val - elif test $type = $Lisp_Type_Char; then - if test $[$val > 32 && $val < 128] = 1; then - print -f"Char: %c" $val - else - print -f"Char: %d" $val - fi - elif test $lrecord_type = lrecord_type_string; then - pstruct alloc.c Lisp_String - elif test $lrecord_type = lrecord_type_cons; then - pstruct alloc.c Lisp_Cons - elif test $lrecord_type = lrecord_type_symbol; then - pstruct symbols.c Lisp_Symbol - echo "Symbol name: $[(char *)($type_ptr->name->data)]" - elif test $lrecord_type = lrecord_type_vector; then - pstruct alloc.c Lisp_Vector - echo "Vector of length $[$type_ptr->size]" - elif test $lrecord_type = lrecord_type_bit_vector; then - pstruct fns.c Lisp_Bit_Vector - elif test $lrecord_type = lrecord_type_buffer; then - pstruct buffer.c buffer - elif test $lrecord_type = lrecord_type_char_table; then - pstruct chartab.c Lisp_Char_Table - elif test $lrecord_type = lrecord_type_char_table_entry; then - pstruct chartab.c Lisp_Char_Table_Entry - elif test $lrecord_type = lrecord_type_charset; then - pstruct mule-charset.c Lisp_Charset - elif test $lrecord_type = lrecord_type_coding_system; then - pstruct file-coding.c Lisp_Coding_System - elif test $lrecord_type = lrecord_type_color_instance; then - pstruct fontcolor.c Lisp_Color_Instance - elif test $lrecord_type = lrecord_type_command_builder; then - pstruct event-stream.c command_builder - elif test $lrecord_type = lrecord_type_compiled_function; then - pstruct bytecode.c Lisp_Compiled_Function - elif test $lrecord_type = lrecord_type_console; then - pstruct console.c console - elif test $lrecord_type = lrecord_type_database; then - pstruct database.c Lisp_Database - elif test $lrecord_type = lrecord_type_device; then - pstruct device.c device - elif test $lrecord_type = lrecord_type_event; then - pstruct events.c Lisp_Event - elif test $lrecord_type = lrecord_type_extent; then - pstruct extents.c extent - elif test $lrecord_type = lrecord_type_extent_auxiliary; then - pstruct extents.c extent_auxiliary - elif test $lrecord_type = lrecord_type_extent_info; then - pstruct extents.c extent_info - elif test $lrecord_type = lrecord_type_face; then - pstruct faces.c Lisp_Face - elif test $lrecord_type = lrecord_type_float; then - pstruct floatfns.c Lisp_Float - elif test $lrecord_type = lrecord_type_font_instance; then - pstruct fontcolor.c Lisp_Font_Instance - elif test $lrecord_type = lrecord_type_frame; then - pstruct frame.c frame - elif test $lrecord_type = lrecord_type_glyph; then - pstruct glyph.c Lisp_Glyph - elif test $lrecord_type = lrecord_type_gui_item; then - pstruct gui.c Lisp_Gui_Item - elif test $lrecord_type = lrecord_type_hash_table; then - pstruct elhash.c Lisp_Hash_Table - elif test $lrecord_type = lrecord_type_image_instance; then - pstruct glyphs.c Lisp_Image_Instance - elif test $lrecord_type = lrecord_type_keymap; then - pstruct keymap.c Lisp_Keymap -#ifndef NEW_GC - elif test $lrecord_type = lrecord_type_lcrecord_list; then - pstruct alloc.c lcrecord_list -#endif - elif test $lrecord_type = lrecord_type_ldap; then - pstruct ldap.c Lisp_LDAP - elif test $lrecord_type = lrecord_type_lstream; then - pstruct lstream.c lstream - elif test $lrecord_type = lrecord_type_marker; then - pstruct marker.c Lisp_Marker - elif test $lrecord_type = lrecord_type_opaque; then - pstruct opaque.c Lisp_Opaque - elif test $lrecord_type = lrecord_type_opaque_ptr; then - pstruct opaque.c Lisp_Opaque_Ptr - elif test $lrecord_type = lrecord_type_popup_data; then - pstruct gui-x.c popup_data - elif test $lrecord_type = lrecord_type_process; then - pstruct process.c Lisp_Process - elif test $lrecord_type = lrecord_type_range_table; then - pstruct rangetab.c Lisp_Range_Table - elif test $lrecord_type = lrecord_type_specifier; then - pstruct specifier.c Lisp_Specifier - elif test $lrecord_type = lrecord_type_subr; then - pstruct eval.c Lisp_Subr - elif test $lrecord_type = lrecord_type_symbol_value_buffer_local; then - pstruct symbols.c symbol_value_buffer_local - elif test $lrecord_type = lrecord_type_symbol_value_forward; then - pstruct symbols.c symbol_value_forward - elif test $lrecord_type = lrecord_type_symbol_value_lisp_magic; then - pstruct symbols.c symbol_value_lisp_magic - elif test $lrecord_type = lrecord_type_symbol_value_varalias; then - pstruct symbols.c symbol_value_varalias - elif test $lrecord_type = lrecord_type_timeout; then - pstruct event-stream.c Lisp_Timeout - elif test $lrecord_type = lrecord_type_toolbar_button; then - pstruct toolbar.c toolbar_button - elif test $lrecord_type = lrecord_type_tooltalk_message; then - pstruct tooltalk.c Lisp_Tooltalk_Message - elif test $lrecord_type = lrecord_type_tooltalk_pattern; then - pstruct tooltalk.c Lisp_Tooltalk_Pattern - elif test $lrecord_type = lrecord_type_weak_list; then - pstruct data.c weak_list - elif test $lrecord_type = lrecord_type_window; then - pstruct window.c window - elif test $lrecord_type = lrecord_type_window_configuration; then - pstruct window.c window_config - elif test "$type" = "null_pointer"; then - echo "Lisp Object is a null pointer!!" - else - echo "Unknown Lisp Object type" - print $lrecord_type - print $1 - fi -} - -dbxenv suppress_startup_message 4.0 -## dbxenv mt_watchpoints on - -function dp_core { - print ((struct x_frame *)(((struct frame*)(Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget->core -} - -## Barf! -function print_shell { - print *(`frame-x.c`TopLevelShellRec*) (((struct `frame-x.c`x_frame*) (((struct `frame-x.c`frame*) (Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget) -} - -## ------------------------------------------------------------- -## functions to test the debugging support itself. -## If you change this file, make sure the following still work... -## ------------------------------------------------------------- -function test_xtype { - function doit { echo -n "$1: "; xtype "$1"; } - test_various_objects -} - -function test_pobj { - function doit { echo '==============================='; echo -n "$1: "; pobj "$1"; } - test_various_objects -} - -function test_various_objects { - doit Vemacs_major_version - doit Vhelp_char - doit Qnil - doit Qunbound - doit Vobarray - doit Vall_weak_lists - doit Vxemacs_codename -}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/.dbxrc.in Mon Nov 21 19:46:04 2011 +0100 @@ -0,0 +1,405 @@ +## dbx init file for XEmacs -*- ksh -*- +## This is the source file for src/.dbxrc. Edit it, and rerun configure. +## (Running config.status is not enough.) +## The generated file depends on src/config.h (currently only in one place). + +## Copyright (C) 1998 Free Software Foundation, Inc. +## Copyright (C) 2010 Ben Wing. + +## This file is part of XEmacs. + +## XEmacs is free software: you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by the +## Free Software Foundation, either version 3 of the License, or (at your +## option) any later version. + +## XEmacs is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +## for more details. + +## You should have received a copy of the GNU General Public License +## along with XEmacs. If not, see <http://www.gnu.org/licenses/>. + +## Author: Martin Buchholz + +## Other contributors you could ask for help: Ivan Golubev, Jerry James, +## Stephen Turnbull. + +## You can use this file to debug XEmacs using Sun WorkShop's dbx. + +## Some functions defined here require a running process, but most +## don't. Considerable effort has been expended to this end. + +## Since this file is called `.dbxrc', it will be read by dbx +## automatically when dbx is run in the build directory, which is where +## developers usually debug their xemacs. + +## See also the comments in .gdbinit. + +## See also the question of the XEmacs FAQ, titled +## "How to Debug an XEmacs problem with a debugger". + +## gdb sources the ./.gdbinit in _addition_ to ~/.gdbinit. +## But dbx does _not_ source ~/.dbxrc if it found ./.dbxrc. +## So we simulate the gdb algorithm by doing it ourselves here. + +#define NOT_C_CODE +#include "config.h" + +if test -r $HOME/.dbxrc; then . $HOME/.dbxrc; fi + +dbxenv language_mode ansic + +ignore POLL +ignore IO + +#ifdef VDB_POSIX +ignore SIGSEGV +ignore SIGBUS +#endif + +document lbt << 'end' +Usage: lbt +Print the current Lisp stack trace. +Requires a running xemacs process. +end + +function lbt { + call debug_backtrace() +} + +document ldp << 'end' +Usage: ldp lisp_object +Print a Lisp Object value using the Lisp printer. +Requires a running xemacs process. +end + +function ldp { + call debug_print ($1); +} + +Lisp_Type_Int=-2 + +## A bug in dbx prevents string variables from having values beginning with `-'!! +function XEmacsInit { + function ToInt { eval "$1=\$[(int) \`alloc.c\`$1]"; } + ToInt dbg_USE_UNION_TYPE + ToInt Lisp_Type_Char + ToInt Lisp_Type_Record + ToInt dbg_valbits + ToInt dbg_gctypebits + function ToLong { eval "$1=\$[(\`alloc.c\`unsigned long) \`alloc.c\`$1]"; } + ToLong dbg_valmask + ToLong dbg_typemask + xemacs_initted=yes +} + +function printvar { + for i in $*; do eval "echo $i=\$$i"; done +} + +document decode_object << 'end' +Usage: decode_object lisp_object +Extract implementation information from a Lisp Object. +Defines variables $val, $type and $imp. +end + +## Various dbx bugs cause ugliness in following code +function decode_object { + if test -z "$xemacs_initted"; then XEmacsInit; fi; + if test $dbg_USE_UNION_TYPE = 1; then + ## Repeat after me... dbx sux, dbx sux, dbx sux... + ## Allow both `pobj Qnil' and `pobj 0x82746834' to work + case $(whatis $1) in + *Lisp_Object*) obj="$[(`alloc.c`unsigned long)(($1).i)]";; + *) obj="$[(`alloc.c`unsigned long)($1)]";; + esac + else + obj="$[(`alloc.c`unsigned long)($1)]"; + fi + if test $[(int)($obj & 1)] = 1; then + ## It's an int + val=$[(long)(((unsigned long long)$obj) >> 1)] + type=$Lisp_Type_Int + else + type=$[(int)(((void*)$obj) & $dbg_typemask)] + if test $type = $Lisp_Type_Char; then + val=$[(void*)(long)(((unsigned long long)($obj & $dbg_valmask)) >> $dbg_gctypebits)] + else + ## It's a record pointer + val=$[(void*)$obj] + if test "$val" = "(nil)"; then type=null_pointer; fi + fi + fi + + if test $type = $Lisp_Type_Record; then + lheader="((struct lrecord_header *) $val)" + lrecord_type=$[(enum lrecord_type) $lheader->type] + imp=$[(void*)(`alloc.c`lrecord_implementations_table[$lheader->type])] + else + lheader="((struct lrecord_header *) -1)" + lrecord_type=-1 + imp="0xdeadbeef" + fi + ## printvar obj val type imp +} + +function xint { + decode_object "$*" + print (long) ($val) +} + +document xtype << 'end' +Usage: xtype lisp_object +Print the Lisp type of a lisp object. +end + +function xtype { + decode_object "$*" + if test $type = $Lisp_Type_Int; then echo "int" + elif test $type = $Lisp_Type_Char; then echo "char" + elif test $type = null_pointer; then echo "null_pointer" + else + echo "record type with name: $[((struct lrecord_implementation *)$imp)->name]" + fi +} + +function lisp-shadows { + run -batch -vanilla -f list-load-path-shadows +} + +function environment-to-run-temacs { + unset EMACSLOADPATH + export EMACSBOOTSTRAPLOADPATH=../lisp/:.. + export EMACSBOOTSTRAPMODULEPATH=../modules/:.. +} + +document run-temacs << 'end' +Usage: run-temacs +Run temacs interactively, like xemacs. +Use this with debugging tools (like purify) that cannot deal with dumping, +or when temacs builds successfully, but xemacs does not. +end + +function run-temacs { + environment-to-run-temacs + run -nd -batch -l ../lisp/loadup.el run-temacs -q ${1+"$@"} +} + +document check-xemacs << 'end' +Usage: check-xemacs +Run the test suite. Equivalent to 'make check'. +end + +function check-xemacs { + run -batch -l test-harness -f batch-test-emacs ../tests/automated +} + +document check-temacs << 'end' +Usage: check-temacs +Run the test suite on temacs. Equivalent to 'make check-temacs'. +Use this with debugging tools (like purify) that cannot deal with dumping, +or when temacs builds successfully, but xemacs does not. +end + +function check-temacs { + run-temacs -q -batch -l test-harness -f batch-test-emacs ../tests/automated +} + +document update-elc << 'end' +Usage: update-elc +Run the core lisp byte compilation part of the build procedure. +Use when debugging temacs, not xemacs! +Use this when temacs builds successfully, but xemacs does not. +end + +function update-elc { + environment-to-run-temacs + run -nd -batch -l ../lisp/update-elc.el +} + +document dmp << 'end' +Usage: dmp +Run the dumping part of the build procedure. +Use when debugging temacs, not xemacs! +Use this when temacs builds successfully, but xemacs does not. +end + +function dmp { + environment-to-run-temacs + run -nd -batch -l ../lisp/loadup.el dump +} + +function pstruct { ## pstruct foo.c struct-name + module "$1" > /dev/null + type_ptr="((struct $2 *) $val)" + print $type_ptr + print *$type_ptr +} + +document pobj << 'end' +Usage: pobj lisp_object +Print the internal C representation of a Lisp Object. +end + +function pobj { + decode_object $1 + if test $type = $Lisp_Type_Int; then + print -f"Integer: %d" $val + elif test $type = $Lisp_Type_Char; then + if test $[$val > 32 && $val < 128] = 1; then + print -f"Char: %c" $val + else + print -f"Char: %d" $val + fi + elif test $lrecord_type = lrecord_type_string; then + pstruct alloc.c Lisp_String + elif test $lrecord_type = lrecord_type_cons; then + pstruct alloc.c Lisp_Cons + elif test $lrecord_type = lrecord_type_symbol; then + pstruct symbols.c Lisp_Symbol + echo "Symbol name: $[(char *)($type_ptr->name->data)]" + elif test $lrecord_type = lrecord_type_vector; then + pstruct alloc.c Lisp_Vector + echo "Vector of length $[$type_ptr->size]" + elif test $lrecord_type = lrecord_type_bit_vector; then + pstruct fns.c Lisp_Bit_Vector + elif test $lrecord_type = lrecord_type_buffer; then + pstruct buffer.c buffer + elif test $lrecord_type = lrecord_type_char_table; then + pstruct chartab.c Lisp_Char_Table + elif test $lrecord_type = lrecord_type_char_table_entry; then + pstruct chartab.c Lisp_Char_Table_Entry + elif test $lrecord_type = lrecord_type_charset; then + pstruct mule-charset.c Lisp_Charset + elif test $lrecord_type = lrecord_type_coding_system; then + pstruct file-coding.c Lisp_Coding_System + elif test $lrecord_type = lrecord_type_color_instance; then + pstruct fontcolor.c Lisp_Color_Instance + elif test $lrecord_type = lrecord_type_command_builder; then + pstruct event-stream.c command_builder + elif test $lrecord_type = lrecord_type_compiled_function; then + pstruct bytecode.c Lisp_Compiled_Function + elif test $lrecord_type = lrecord_type_console; then + pstruct console.c console + elif test $lrecord_type = lrecord_type_database; then + pstruct database.c Lisp_Database + elif test $lrecord_type = lrecord_type_device; then + pstruct device.c device + elif test $lrecord_type = lrecord_type_event; then + pstruct events.c Lisp_Event + elif test $lrecord_type = lrecord_type_extent; then + pstruct extents.c extent + elif test $lrecord_type = lrecord_type_extent_auxiliary; then + pstruct extents.c extent_auxiliary + elif test $lrecord_type = lrecord_type_extent_info; then + pstruct extents.c extent_info + elif test $lrecord_type = lrecord_type_face; then + pstruct faces.c Lisp_Face + elif test $lrecord_type = lrecord_type_float; then + pstruct floatfns.c Lisp_Float + elif test $lrecord_type = lrecord_type_font_instance; then + pstruct fontcolor.c Lisp_Font_Instance + elif test $lrecord_type = lrecord_type_frame; then + pstruct frame.c frame + elif test $lrecord_type = lrecord_type_glyph; then + pstruct glyph.c Lisp_Glyph + elif test $lrecord_type = lrecord_type_gui_item; then + pstruct gui.c Lisp_Gui_Item + elif test $lrecord_type = lrecord_type_hash_table; then + pstruct elhash.c Lisp_Hash_Table + elif test $lrecord_type = lrecord_type_image_instance; then + pstruct glyphs.c Lisp_Image_Instance + elif test $lrecord_type = lrecord_type_keymap; then + pstruct keymap.c Lisp_Keymap +#ifndef NEW_GC + elif test $lrecord_type = lrecord_type_lcrecord_list; then + pstruct alloc.c lcrecord_list +#endif + elif test $lrecord_type = lrecord_type_ldap; then + pstruct ldap.c Lisp_LDAP + elif test $lrecord_type = lrecord_type_lstream; then + pstruct lstream.c lstream + elif test $lrecord_type = lrecord_type_marker; then + pstruct marker.c Lisp_Marker + elif test $lrecord_type = lrecord_type_opaque; then + pstruct opaque.c Lisp_Opaque + elif test $lrecord_type = lrecord_type_opaque_ptr; then + pstruct opaque.c Lisp_Opaque_Ptr + elif test $lrecord_type = lrecord_type_popup_data; then + pstruct gui-x.c popup_data + elif test $lrecord_type = lrecord_type_process; then + pstruct process.c Lisp_Process + elif test $lrecord_type = lrecord_type_range_table; then + pstruct rangetab.c Lisp_Range_Table + elif test $lrecord_type = lrecord_type_specifier; then + pstruct specifier.c Lisp_Specifier + elif test $lrecord_type = lrecord_type_subr; then + pstruct eval.c Lisp_Subr + elif test $lrecord_type = lrecord_type_symbol_value_buffer_local; then + pstruct symbols.c symbol_value_buffer_local + elif test $lrecord_type = lrecord_type_symbol_value_forward; then + pstruct symbols.c symbol_value_forward + elif test $lrecord_type = lrecord_type_symbol_value_lisp_magic; then + pstruct symbols.c symbol_value_lisp_magic + elif test $lrecord_type = lrecord_type_symbol_value_varalias; then + pstruct symbols.c symbol_value_varalias + elif test $lrecord_type = lrecord_type_timeout; then + pstruct event-stream.c Lisp_Timeout + elif test $lrecord_type = lrecord_type_toolbar_button; then + pstruct toolbar.c toolbar_button + elif test $lrecord_type = lrecord_type_tooltalk_message; then + pstruct tooltalk.c Lisp_Tooltalk_Message + elif test $lrecord_type = lrecord_type_tooltalk_pattern; then + pstruct tooltalk.c Lisp_Tooltalk_Pattern + elif test $lrecord_type = lrecord_type_weak_list; then + pstruct data.c weak_list + elif test $lrecord_type = lrecord_type_window; then + pstruct window.c window + elif test $lrecord_type = lrecord_type_window_configuration; then + pstruct window.c window_config + elif test "$type" = "null_pointer"; then + echo "Lisp Object is a null pointer!!" + else + echo "Unknown Lisp Object type" + print $lrecord_type + print $1 + fi +} + +dbxenv suppress_startup_message 4.0 +## dbxenv mt_watchpoints on + +function dp_core { + print ((struct x_frame *)(((struct frame*)(Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget->core +} + +## Barf! +function print_shell { + print *(`frame-x.c`TopLevelShellRec*) (((struct `frame-x.c`x_frame*) (((struct `frame-x.c`frame*) (Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))->widget) +} + +## ------------------------------------------------------------- +## functions to test the debugging support itself. +## If you change this file, make sure the following still work... +## ------------------------------------------------------------- +function test_xtype { + function doit { echo -n "$1: "; xtype "$1"; } + test_various_objects +} + +function test_pobj { + function doit { echo '==============================='; echo -n "$1: "; pobj "$1"; } + test_various_objects +} + +function test_various_objects { + doit Vemacs_major_version + doit Vhelp_char + doit Qnil + doit Qunbound + doit Vobarray + doit Vall_weak_lists + doit Vxemacs_codename +}
--- a/src/ChangeLog Mon Nov 21 09:26:45 2011 -0500 +++ b/src/ChangeLog Mon Nov 21 19:46:04 2011 +0100 @@ -1,3 +1,7 @@ +2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de> + + * .dbxrc.in: Move from etc/.dbxrc.in. + 2011-11-21 Marcus Crestani <crestani@informatik.uni-tuebingen.de> * .gdbinit.in.in: There is no lrecord_type_lcrecord_list when