# This is a patch for xemacs-21.5.20 to update it to xemacs-21.5.21 # # To apply this patch: # STEP 1: Chdir to the source directory. # STEP 2: Run the 'applypatch' program with this patch file as input. # # If you do not have 'applypatch', it is part of the 'makepatch' package # that you can fetch from the Comprehensive Perl Archive Network: # http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz # In the above URL, 'x' should be 2 or higher. # # To apply this patch without the use of 'applypatch': # STEP 1: Chdir to the source directory. # If you have a decent Bourne-type shell: # STEP 2: Run the shell with this file as input. # If you don't have such a shell, you may need to manually create # the files as shown below. # STEP 3: Run the 'patch' program with this file as input. # # These are the commands needed to create/delete files/directories: # touch './src/mc-alloc.c' chmod 0644 './src/mc-alloc.c' touch './src/mc-alloc.h' chmod 0644 './src/mc-alloc.h' # # This command terminates the shell and need not be executed manually. exit # #### End of Preamble #### #### Patch data follows #### diff --text -u 'xemacs-21.5.20/CHANGES-beta' 'xemacs-21.5.21/CHANGES-beta' Index: ./CHANGES-beta --- ./CHANGES-beta Sat Mar 12 03:56:16 2005 +++ ./CHANGES-beta Fri May 27 18:12:57 2005 @@ -1,8 +1,74 @@ +to 21.5.21 "corn" + +Major features + +-- New: An alternative memory allocator. (Marcus Crestani) + +User-Visible Bug Fixes and Minor Improvements + +-- Fix: Calculations in font-spatial-to-canonical. (Ralf Angeli) +-- Fix: Honor coding system argument when creating a file. (Aidan Kehoe) +-- Fix: Prevent stripping of items from Command menu. (Ralf Angeli) +-- Fix: Selection handling on Win32. (Fabrice Popineau) +-- Improve: Better defaults for mail-user-agent. (Aidan Kehoe) +-- Improve: Deprecate use of Emacs X resource class. (Aidan Kehoe) +-- Improve: Initialize fontlock properly in *scratch*. (Aidan Kehoe) +-- Improve: Make %backup%~ honor auto-save-directory. (Steve Youngs, + Jamie Zawinski) +-- Improve: Recognize some constructed Unicode keysyms. (Aidan Kehoe) +-- Improve: Synch dired features from GNU Emacs. (Mike Sperber, + Richard Stallman, Luc Teirlinck, Stefan Monnier, Andreas Schwab) +-- Improve: Syntax and case mapping for ISO 8859 parts 14-16. (Aidan Kehoe) +-- Improve: Warn about unbound Unicode keysyms. (Aidan Kehoe) + +Build Infrastructure + +-- Fix: Asserts can't contain active code. (Melvin Hadasht) +-- Fix: Avoid "head -#", coreutils doesn't like it. (Vin Shelton) +-- Fix: Build for non-DEBUG_XEMACS native Windows build. (Marcus Crestani) +-- Fix: Cater to OpenBSD /bin/sh. (Malcolm Purvis) +-- Fix: Check $ac_cv_build not $canonical for libossaudio. (Aidan Kehoe) +-- Fix: Define elfw(type) for unexec on Alpha and amd64 for FreeBSD. + (Andrey Slusar) +-- Fix: Make get-user-response available regardless of config. (Mike Sperber) +-- Fix: Make srcdir absolute, include X header, terminate lines. + (Malcolm Purvis) +-- Fix: Remove do-nothing --no-gnu-linker in Solaris builds. (Vin Shelton) +-- Fix: Specifying optimization flags implies optimization. (Stephen Turnbull) +-- Fix: Use HAVE_DECL_SYS_SIGLIST, not SYS_SIGLIST_DECLARED. (Volker Zell) +-- Fix: configure needs to include X11/Intrinsic.h to check for Xaw. + (Robert Delius Royar, Aidan Kehoe, Jerry James) +-- Fix: egetenv needs process.h in device-x.c. (Marcus Crestani) +-- New: Conditionally compile insert-data-in-exec. (Marcus Crestani) + +Documentation + +-- Fix: Add "--with" prefix in docstrings in configure.ac. (Aidan Kehoe) +-- Fix: Documentation typos. (Aidan Kehoe, Adrian Aichner) +-- Improve: Mention and deprecate atomic extents in docstring. (Aidan Kehoe) +-- Improve: Texinfo docs. (Aidan Kehoe, Stephen Turnbull, Ben Wing) + +Lisp API + +-- Improve: Use override-redirect to suppress WM decorations. + (Stephen Turnbull) +-- New: More stats for show-memory-usage. (Marcus Crestani) + +Internal API and Implementation + +-- Fix: Argument count in issue_call_trapping_problems_warning. + (Stephen Turnbull) +-- Fix: Avoid use of nonexistent insert-for-yank. (Aidan Kehoe) +-- Fix: Buffer overflow in pdump backtrace array. (Jerry James) +-- Fix: Control-1 handling in CCL. (Aidan Kehoe) +-- Fix: fakemail for FreeBSD >= 4. (Andrey Slusar) +-- Improve: Dynamic diagnostic backtrace for KKCC. (Marcus Crestani) + to 21.5.20 "cilantro" Major Features --- New: Handle various X selection targets properly. (Aidan Kehoe) +-- New: Handle various X selection targets properly. (Aidan Kehoe) User-Visible Bug Fixes and Minor Improvements diff --text -u 'xemacs-21.5.20/ChangeLog' 'xemacs-21.5.21/ChangeLog' Index: ./ChangeLog --- ./ChangeLog Sat Mar 12 04:17:36 2005 +++ ./ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,98 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + +2005-05-28 Stephen J. Turnbull + + * configure.ac: Explain how to turn off KKCC, too. + +2005-05-19 Marcus Crestani + + * configure: + * configure.ac: Enable new allocator and KKCC by default. + +2005-05-27 Stephen J. Turnbull + + * CHANGES-beta: Update for release. + +2005-04-22 Malcolm Purvis + + * configure.ac: Make srcdir absolute before calling + AC_CONFIG_AUX_DIR_DEFAULT, include X headers for shape.h, + terminate checking lines when testing for dynamic libraries. + * configure: Regenerated. + +2005-04-01 Marcus Crestani + + The new allocator. + + New configure flag: `MC_ALLOC': + + * configure.ac (XE_COMPLEX_ARG_ENABLE): Add `--enable-mc-alloc' as + a new configure flag. + * configure.in (AC_INIT_PARSE_ARGS): Add `--mc-alloc' as a new + configure flag. + * configure.usage: Add description for `mc-alloc'. + + DUMP_IN_EXEC: + + * Makefile.in.in: Condition the installation of a separate dump + file on !DUMP_ON_EXEC. + * configure.ac (XE_COMPLEX_ARG_ENABLE): Add + `--enable-dump-in-exec' as a new configure flag. + * configure.ac: DUMP_IN_EXEC is define as default for PDUMP but + not default for MC_ALLOC. + * configure.in (AC_INIT_PARSE_ARGS): Add `--dump-in-exec' as a + new configure flag. + * configure.in: DUMP_IN_EXEC is define as default for PDUMP but + not default for MC_ALLOC. + * configure.usage: Add description for `dump-in-exec'. + +2005-03-31 Jerry James + + * configure.ac: Aidan's 2005-03-30 patch, but against + configure.ac. + +2005-03-30 Aidan Kehoe + + * configure: #include -> #include + , thank you Robert Delius Royar. + +2005-03-15 Jerry James + + * configure.ac: Include when checking for + usability. + +2005-03-23 Vin Shelton + + * configure.in: Remove -fno-gnu-linker option from Solaris + dynodump builds; it doesn't do anything. + + Don't use 'head -1' - it's deprecated by coreutils-5.3.0 on some + platforms. + +2005-03-24 Aidan Kehoe + + * configure: Regenerate. + * configure.ac (XE_COMPLEX_ARG_ENABLE): --OPTION -> --with-OPTION + in various docstrings and error messages. + +2005-03-15 Stephen J. Turnbull + + * configure.ac (--with-cflags-optimization): + (--with-cflags-debugging): + If the user specifies them, use them, and don't make her beg. + * configure.ac (Autodetect PNG): PNG & TIFF need -lz in AC_CHECK_LIB. + +2005-03-15 Malcolm Purvis + + * configure.ac: Fix problems with OpenBSD /bin/sh. + +2005-03-13 Aidan Kehoe + + * configure.ac (TAB): Check $ac_cv_build, not $canonical, when + working out whether to link against libossaudio.so on NetBSD. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/Makefile.in.in' 'xemacs-21.5.21/Makefile.in.in' Index: ./Makefile.in.in --- ./Makefile.in.in Tue Feb 1 05:01:50 2005 +++ ./Makefile.in.in Sat Apr 9 08:10:02 2005 @@ -388,7 +388,7 @@ for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \ do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \ else true; fi -#if defined(PDUMP) && defined(WIN32_NATIVE) +#if (defined(PDUMP) && !defined (DUMP_IN_EXEC)) || (defined (PDUMP) && defined(WIN32_NATIVE)) ${INSTALL_DATA} src/${PROGNAME}.dmp ${bindir}/${PROGNAME}-${version}-`src/${PROGNAME} -sd`.dmp #endif #ifdef WIN32_NATIVE diff --text -u 'xemacs-21.5.20/autom4te.cache/output.0' 'xemacs-21.5.21/autom4te.cache/output.0' Index: ./autom4te.cache/output.0 --- ./autom4te.cache/output.0 Sat Mar 12 04:17:35 2005 +++ ./autom4te.cache/output.0 Sat May 28 15:10:15 2005 @@ -356,7 +356,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS inststaticdir statedir build build_cpu build_vendor build_os LN_S blddir configuration CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP start_flags ld_switch_shared start_files ld lib_gcc RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA YACC SET_MAKE GTK_CONFIG X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS install_pp libs_xauth dnd_objs LIBSTDCPP dll_ld dll_cflags dll_ldflags dll_post dll_ldo ld_dynamic_link_flags with_modules MOD_CC MODARCHDIR MAKE_DOCFILE MODCFLAGS INSTALLPATH MOD_INSTALL_PROGRAM OBJECT_TO_BUILD ldap_libs postgresql_libs lwlib_objs ALLOCA have_esd_config SRC_SUBDIR_DEPS INSTALL_ARCH_DEP_SUBDIR MAKE_SUBDIR SUBDIR_MAKEFILES PROGNAME version instvardir srcdir extra_includes PREFIX_USER_DEFINED PREFIX EXEC_PREFIX_USER_DEFINED EXEC_PREFIX INFODIR_USER_DEFINED INFODIR infopath INFOPATH_USER_DEFINED INFOPATH package_path PACKAGE_PATH_USER_DEFINED PACKAGE_PATH lispdir LISPDIR_USER_DEFINED LISPDIR moduledir MODULEDIR_USER_DEFINED MODULEDIR sitelispdir SITELISPDIR_USER_DEFINED SITELISPDIR sitemoduledir SITEMODULEDIR_USER_DEFINED SITEMODULEDIR etcdir ETCDIR_USER_DEFINED ETCDIR archlibdir ARCHLIBDIR_USER_DEFINED ARCHLIBDIR docdir DOCDIR_USER_DEFINED DOCDIR bitmapdir extra_objs machfile opsysfile c_switch_general c_switch_window_system c_switch_all ld_switch_general ld_switch_window_system ld_switch_all ld_libs_general ld_libs_window_system ld_libs_all RECURSIVE_MAKE_ARGS native_sound_lib sound_cflags dynodump_arch XEMACS_CC XE_CFLAGS internal_makefile_list LIB@&t@OBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS inststaticdir statedir LN_S blddir build build_cpu build_vendor build_os configuration CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP start_flags ld_switch_shared start_files ld lib_gcc RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA YACC SET_MAKE GTK_CONFIG X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS install_pp libs_xauth dnd_objs LIBSTDCPP dll_ld dll_cflags dll_ldflags dll_post dll_ldo ld_dynamic_link_flags with_modules MOD_CC MODARCHDIR MAKE_DOCFILE MODCFLAGS INSTALLPATH MOD_INSTALL_PROGRAM OBJECT_TO_BUILD ldap_libs postgresql_libs lwlib_objs ALLOCA have_esd_config SRC_SUBDIR_DEPS INSTALL_ARCH_DEP_SUBDIR MAKE_SUBDIR SUBDIR_MAKEFILES PROGNAME version instvardir srcdir extra_includes PREFIX_USER_DEFINED PREFIX EXEC_PREFIX_USER_DEFINED EXEC_PREFIX INFODIR_USER_DEFINED INFODIR infopath INFOPATH_USER_DEFINED INFOPATH package_path PACKAGE_PATH_USER_DEFINED PACKAGE_PATH lispdir LISPDIR_USER_DEFINED LISPDIR moduledir MODULEDIR_USER_DEFINED MODULEDIR sitelispdir SITELISPDIR_USER_DEFINED SITELISPDIR sitemoduledir SITEMODULEDIR_USER_DEFINED SITEMODULEDIR etcdir ETCDIR_USER_DEFINED ETCDIR archlibdir ARCHLIBDIR_USER_DEFINED ARCHLIBDIR docdir DOCDIR_USER_DEFINED DOCDIR bitmapdir extra_objs machfile opsysfile c_switch_general c_switch_window_system c_switch_all ld_switch_general ld_switch_window_system ld_switch_all ld_libs_general ld_libs_window_system ld_libs_all RECURSIVE_MAKE_ARGS native_sound_lib sound_cflags dynodump_arch XEMACS_CC XE_CFLAGS internal_makefile_list LIB@&t@OBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -907,9 +907,13 @@ Support XEmacs server for text widgets in other applications. --enable-kkcc Enable new GC algorithms. + --enable-mc-alloc Enable new allocator. --enable-union-type Use union definition of Lisp_Object type. Known to trigger bugs in some compilers. --enable-pdump Enable portable LISP preloader. + --enable-dump-in-exec Enable dumping into executable (enabled by default + for `pdump', not enabled by default in combination + with `mc-alloc'). --enable-debug Enable additional debugging information. No time cost. --enable-assertions @@ -967,7 +971,7 @@ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-prefix=no Don't compile the value of --prefix into the + --with-prefix=no Don't compile the value for `prefix' into the executable. --with-site-lisp=no Allow for a site-lisp directory in the XEmacs hierarchy searched before the installation packages. @@ -1072,8 +1076,9 @@ --with-compiler C compiler to use --with-xemacs-compiler compiler to use to compile just the xemacs executable and C modules. If you want to compile - XEmacs as C++, use e.g. `--xemacs-compiler=g++'. - This turns on a lot of additional error-checking. + XEmacs as C++, use e.g. + `--with-xemacs-compiler=g++'. This turns on a lot of + additional error-checking. --with-cflags Compiler flags (such as -O); setting this overrides all default compiler flags except those that control warnings. @@ -1584,7 +1589,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -2132,6 +2137,11 @@ enableval="$enable_kkcc" fi; +# Check whether --enable-mc-alloc or --disable-mc-alloc was given. +if test "${enable_mc_alloc+set}" = set; then + enableval="$enable_mc_alloc" + +fi; # Check whether --enable-union-type or --disable-union-type was given. if test "${enable_union_type+set}" = set; then enableval="$enable_union_type" @@ -2142,6 +2152,11 @@ enableval="$enable_pdump" fi; +# Check whether --enable-dump-in-exec or --disable-dump-in-exec was given. +if test "${enable_dump_in_exec+set}" = set; then + enableval="$enable_dump_in_exec" + +fi; # Check whether --enable-debug or --disable-debug was given. if test "${enable_debug+set}" = set; then enableval="$enable_debug" @@ -2334,7 +2349,7 @@ if test "$enable_database_dbm" = "yes" -a "$enable_database_gdbm" = "yes"; then (echo "$progname: Usage error:" echo " " "Only one of \`dbm' and \`gnudbm' may be specified -with the \`--$optname' option." +with the \`--enable-database' option." echo " Use \`$progname --help' to show usage.") >&2 && exit 1 fi @@ -2714,63 +2729,6 @@ statedir=$with_statedir -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 @@ -2829,6 +2787,64 @@ vpath %.in $(srcdir)' fi +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + . "$srcdir/version.sh" || exit 1; if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi : "${verbose=$beta}" @@ -3045,7 +3061,7 @@ case "$ac_cv_build" in *-*-netbsd* ) - case "ac_cv_build" in + case "${ac_cv_build}" in i[3-9]86-*-netbsd*) machine=intel386 ;; hp300-*-netbsd* | amiga-*-netbsd* | sun3-*-netbsd* | mac68k-*-netbsd* | da30-*-netbsd* | m68k-*-netbsd* ) machine=hp9000s300 ;; @@ -3468,12 +3484,12 @@ else cflags_warning_specified=no; fi -if test "${cflags_optimization-unset}" != unset +if test "${with_cflags_optimization-unset}" != unset then cflags_optimization_specified=yes; else cflags_optimization_specified=no; fi -if test "${cflags_debugging-unset}" != unset +if test "${with_cflags_debugging-unset}" != unset then cflags_debugging_specified=yes; else cflags_debugging_specified=no; fi @@ -3485,7 +3501,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then @@ -4406,7 +4422,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -4416,7 +4432,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 @@ -4647,7 +4663,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -4701,7 +4717,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then @@ -5421,7 +5437,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -5432,7 +5448,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then @@ -6152,7 +6168,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -6163,7 +6179,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then @@ -6883,7 +6899,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -6953,7 +6969,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 @@ -7184,7 +7200,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -7556,6 +7572,19 @@ lib_gcc= fi +test -z "$enable_kkcc" && enable_kkcc=yes +test -z "$enable_mc_alloc" && enable_mc_alloc=yes + +if test -z "$enable_dump_in_exec"; then + if test "$enable_pdump" = "yes"; then + if test "$enable_mc_alloc" = "yes"; then + enable_dump_in_exec=no + else + enable_dump_in_exec=yes + fi + fi +fi + test "$verbose" = "yes" && \ for var in libs_machine libs_system libs_termcap libs_standard objects_machine objects_system c_switch_machine c_switch_system ld_switch_machine ld_switch_system unexec ld_switch_shared ld lib_gcc ld_text_start_addr start_files ordinary_link have_terminfo mail_use_flock mail_use_lockf; do eval "echo \"$var = '\$$var'\""; done && echo "" @@ -7691,11 +7720,11 @@ fi -if test -z "$with_optimization" ; then - if test -n "$emacs_is_beta" ; then - with_optimization=no - else +if test -z "$with_optimization"; then + if test -z "$emacs_is_beta" -o "$cflags_optimization_specified" = "yes"; then with_optimization=yes + else + with_optimization=no fi fi @@ -8000,7 +8029,6 @@ *86* ) dynodump_arch=i386 ;; powerpc ) dynodump_arch=ppc ;; esac - test "$GCC" = "yes" && ld_switch_site="$ld_switch_site -fno-gnu-linker" && if test "$verbose" = "yes"; then echo " Appending \"-fno-gnu-linker\" to \$ld_switch_site"; fi fi @@ -8010,7 +8038,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -8116,11 +8144,11 @@ echo $ECHO_N "checking for compiler version information... $ECHO_C" >&6 if test "$GCC" = "yes"; then - compiler_version=`$XEMACS_CC --version | head -1` - gcc_compiler_specs=`$XEMACS_CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | head -1` + compiler_version=`$XEMACS_CC --version | sed 1q` + gcc_compiler_specs=`$XEMACS_CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | sed 1q` else case "$XEMACS_CC" in ic*) - compiler_version=`icc -V 2>&1 | head -1` + compiler_version=`icc -V 2>&1 | sed 1q` ;; *) case "$ac_cv_build" in *-*-aix* ) @@ -8145,7 +8173,7 @@ ;; *-*-solaris*) - compiler_version=`$XEMACS_CC -V 2>&1 | head -1` + compiler_version=`$XEMACS_CC -V 2>&1 | sed 1q` ;; alpha*-dec-osf*) @@ -17831,25 +17859,22 @@ fi if test "$with_x11" = "yes"; then - if test "${ac_cv_header_X11_extensions_shape_h+set}" = set; then echo "$as_me:$LINENO: checking for X11/extensions/shape.h" >&5 echo $ECHO_N "checking for X11/extensions/shape.h... $ECHO_C" >&6 if test "${ac_cv_header_X11_extensions_shape_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_shape_h" >&5 -echo "${ECHO_T}$ac_cv_header_X11_extensions_shape_h" >&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking X11/extensions/shape.h usability" >&5 -echo $ECHO_N "checking X11/extensions/shape.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default + +#include +#include + + @%:@include _ACEOF rm -f conftest.$ac_objext @@ -17873,100 +17898,17 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_header_compiler=yes + ac_cv_header_X11_extensions_shape_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no +ac_cv_header_X11_extensions_shape_h=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking X11/extensions/shape.h presence" >&5 -echo $ECHO_N "checking X11/extensions/shape.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -@%:@@%:@ ------------------------------------------ @%:@@%:@ -@%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ -@%:@@%:@ ------------------------------------------ @%:@@%:@ -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for X11/extensions/shape.h" >&5 -echo $ECHO_N "checking for X11/extensions/shape.h... $ECHO_C" >&6 -if test "${ac_cv_header_X11_extensions_shape_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_X11_extensions_shape_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_shape_h" >&5 echo "${ECHO_T}$ac_cv_header_X11_extensions_shape_h" >&6 - -fi if test $ac_cv_header_X11_extensions_shape_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -18432,12 +18374,15 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_dl=yes + have_dl=yes ; echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 ac_save_LIBS="$LIBS" @@ -18478,12 +18423,15 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_dl=yes + have_dl=yes; echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 LIBS="$ac_save_LIBS -lsvld" @@ -18523,12 +18471,14 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_dl=yes + have_dl=yes; echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -LIBS="$ac_save_LIBS" +LIBS="$ac_save_LIBS" ; echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -18723,12 +18673,15 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_dl=yes + have_dl=yes; echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 echo "$as_me:$LINENO: checking for shl_load in -ldl" >&5 echo $ECHO_N "checking for shl_load in -ldl... $ECHO_C" >&6 ac_save_LIBS="$LIBS" @@ -18774,7 +18727,8 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -LIBS="$ac_save_LIBS" +LIBS="$ac_save_LIBS"; echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -18980,6 +18934,8 @@ fi + echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 if test "$have_dl" = "yes"; then cat >>confdefs.h <<\_ACEOF @%:@define HAVE_LTDL 1 @@ -22464,7 +22420,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lpng $LIBS" +LIBS="-lpng -lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -22748,7 +22704,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-ltiff $LIBS" +LIBS="-ltiff -lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -23501,25 +23457,21 @@ { echo "$as_me:$LINENO: WARNING: Could not find a non-3d Athena header set." >&5 echo "$as_me: WARNING: Could not find a non-3d Athena header set." >&2;} else - if test "${ac_cv_header_X11_Xaw_XawInit_h+set}" = set; then echo "$as_me:$LINENO: checking for X11/Xaw/XawInit.h" >&5 echo $ECHO_N "checking for X11/Xaw/XawInit.h... $ECHO_C" >&6 if test "${ac_cv_header_X11_Xaw_XawInit_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_XawInit_h" >&5 -echo "${ECHO_T}$ac_cv_header_X11_Xaw_XawInit_h" >&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking X11/Xaw/XawInit.h usability" >&5 -echo $ECHO_N "checking X11/Xaw/XawInit.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default + +#include + + @%:@include _ACEOF rm -f conftest.$ac_objext @@ -23543,100 +23495,17 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_header_compiler=yes + ac_cv_header_X11_Xaw_XawInit_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no +ac_cv_header_X11_Xaw_XawInit_h=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking X11/Xaw/XawInit.h presence" >&5 -echo $ECHO_N "checking X11/Xaw/XawInit.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -@%:@include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -@%:@@%:@ ------------------------------------------ @%:@@%:@ -@%:@@%:@ Report this to the AC_PACKAGE_NAME lists. @%:@@%:@ -@%:@@%:@ ------------------------------------------ @%:@@%:@ -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for X11/Xaw/XawInit.h" >&5 -echo $ECHO_N "checking for X11/Xaw/XawInit.h... $ECHO_C" >&6 -if test "${ac_cv_header_X11_Xaw_XawInit_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_X11_Xaw_XawInit_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_XawInit_h" >&5 echo "${ECHO_T}$ac_cv_header_X11_Xaw_XawInit_h" >&6 - -fi if test $ac_cv_header_X11_Xaw_XawInit_h = yes; then athena_h_path=X11/Xaw else @@ -23665,6 +23534,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include @%:@include @@ -23865,6 +23735,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include @%:@include <$athena_variant/XawInit.h> @@ -24065,6 +23936,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include @%:@include @@ -24268,6 +24140,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include @%:@include @@ -32519,10 +32392,12 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then sound_found=yes - case "$canonical" in + case "${ac_cv_build}" in *netbsd* ) # #### this is probably not the right way to do this # we should port to native NetBSD stuff + + echo "$as_me:$LINENO: checking for _oss_ioctl in -lossaudio" >&5 echo $ECHO_N "checking for _oss_ioctl in -lossaudio... $ECHO_C" >&6 if test "${ac_cv_lib_ossaudio__oss_ioctl+set}" = set; then @@ -32587,7 +32462,7 @@ echo "$as_me:$LINENO: result: $ac_cv_lib_ossaudio__oss_ioctl" >&5 echo "${ECHO_T}$ac_cv_lib_ossaudio__oss_ioctl" >&6 if test $ac_cv_lib_ossaudio__oss_ioctl = yes; then - native_sound_lib=-lossaudio + with_native_sound_lib=-lossaudio { echo "$as_me:$LINENO: WARNING: Using NetBSD-deprecated -lossaudio" >&5 echo "$as_me: WARNING: Using NetBSD-deprecated -lossaudio" >&2;} else @@ -36137,6 +36012,10 @@ @%:@define USE_KKCC 1 _ACEOF +test "$enable_mc_alloc" = "yes" && cat >>confdefs.h <<\_ACEOF +@%:@define MC_ALLOC 1 +_ACEOF + test "$enable_quick_build" = "yes" && cat >>confdefs.h <<\_ACEOF @%:@define QUICK_BUILD 1 _ACEOF @@ -36169,6 +36048,10 @@ @%:@define PDUMP 1 _ACEOF +test "$enable_dump_in_exec" = "yes" && cat >>confdefs.h <<\_ACEOF +@%:@define DUMP_IN_EXEC 1 +_ACEOF + test "$with_ipv6_cname" = "yes" && cat >>confdefs.h <<\_ACEOF @%:@define IPV6_CANONICALIZE 1 _ACEOF @@ -36414,8 +36297,24 @@ echo " WARNING: More recent versions may be safer, or not." echo " WARNING: ---------------------------------------------------------" fi -test "$enable_kkcc" = yes && echo " Using the new GC algorithms." +if test "$enable_kkcc" = yes ; then + echo " Using the new GC algorithms." + echo " WARNING: ---------------------------------------------------------" + echo " WARNING: The new algorithms are experimental. They are enabled by" + echo " WARNING: default for this release. Use \`--disable-kkcc' to" + echo " WARNING: turn it off." + echo " WARNING: ---------------------------------------------------------" +fi +if test "$enable_mc_alloc" = yes ; then + echo " Using the new allocator." + echo " WARNING: ---------------------------------------------------------" + echo " WARNING: The new allocator is experimental. It is enabled by" + echo " WARNING: default for this release. Use \`--disable-mc-alloc' to" + echo " WARNING: turn it off." + echo " WARNING: ---------------------------------------------------------" +fi test "$enable_pdump" = yes && echo " Using the new portable dumper." +test "$enable_dump_in_exec" = yes && echo " Dumping into executable." test "$enable_debug" = yes && echo " Compiling in support for extra debugging code." test "$usage_tracking" = yes && echo " Compiling in support for active usage tracking (Sun internal)." if test "$enable_error_checking_extents $enable_error_checking_types $enable_error_checking_text $enable_error_checking_gc $enable_error_checking_malloc $enable_error_checking_glyphs $enable_error_checking_byte_code $enable_error_checking_display $enable_error_checking_structures" \ @@ -37094,12 +36993,12 @@ s,@LIBS@,$LIBS,;t t s,@inststaticdir@,$inststaticdir,;t t s,@statedir@,$statedir,;t t +s,@LN_S@,$LN_S,;t t +s,@blddir@,$blddir,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t -s,@LN_S@,$LN_S,;t t -s,@blddir@,$blddir,;t t s,@configuration@,$configuration,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t diff --text -u 'xemacs-21.5.20/autom4te.cache/requests' 'xemacs-21.5.21/autom4te.cache/requests' Index: ./autom4te.cache/requests --- ./autom4te.cache/requests Sat Mar 12 04:17:54 2005 +++ ./autom4te.cache/requests Sat May 28 15:10:16 2005 @@ -17,19 +17,19 @@ { 'm4_pattern_forbid' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, - 'AC_C_VOLATILE' => 1, 'AC_TYPE_OFF_T' => 1, + 'AC_C_VOLATILE' => 1, 'AC_FUNC_CLOSEDIR_VOID' => 1, 'AC_REPLACE_FNMATCH' => 1, 'AC_PROG_LIBTOOL' => 1, 'AC_FUNC_STAT' => 1, - 'AC_FUNC_WAIT3' => 1, 'AC_HEADER_TIME' => 1, - 'AC_FUNC_LSTAT' => 1, - 'AC_STRUCT_TM' => 1, + 'AC_FUNC_WAIT3' => 1, 'AM_AUTOMAKE_VERSION' => 1, - 'AC_FUNC_GETMNTENT' => 1, + 'AC_STRUCT_TM' => 1, + 'AC_FUNC_LSTAT' => 1, 'AC_TYPE_MODE_T' => 1, + 'AC_FUNC_GETMNTENT' => 1, 'AC_FUNC_STRTOD' => 1, 'AC_CHECK_HEADERS' => 1, 'AC_FUNC_STRNLEN' => 1, @@ -48,17 +48,17 @@ 'AC_STRUCT_ST_BLOCKS' => 1, 'AC_TYPE_SIGNAL' => 1, 'AC_TYPE_UID_T' => 1, - 'AC_PROG_MAKE_SET' => 1, 'AC_CONFIG_AUX_DIR' => 1, - 'm4_pattern_allow' => 1, + 'AC_PROG_MAKE_SET' => 1, 'sinclude' => 1, + 'm4_pattern_allow' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'AC_FUNC_STRERROR_R' => 1, 'AC_PROG_CC' => 1, - 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_FORK' => 1, - 'AC_FUNC_STRCOLL' => 1, + 'AC_DECL_SYS_SIGLIST' => 1, 'AC_FUNC_VPRINTF' => 1, + 'AC_FUNC_STRCOLL' => 1, 'AC_PROG_YACC' => 1, 'AC_INIT' => 1, 'AC_STRUCT_TIMEZONE' => 1, @@ -80,33 +80,33 @@ 'AM_MAINTAINER_MODE' => 1, 'AC_FUNC_UTIME_NULL' => 1, 'AC_FUNC_SELECT_ARGTYPES' => 1, - 'AC_HEADER_STAT' => 1, 'AC_FUNC_STRFTIME' => 1, - 'AC_PROG_CPP' => 1, + 'AC_HEADER_STAT' => 1, 'AC_C_INLINE' => 1, - 'AC_PROG_LEX' => 1, - 'AC_C_CONST' => 1, + 'AC_PROG_CPP' => 1, 'AC_TYPE_PID_T' => 1, + 'AC_C_CONST' => 1, + 'AC_PROG_LEX' => 1, 'AC_CONFIG_FILES' => 1, 'include' => 1, 'AC_FUNC_SETVBUF_REVERSED' => 1, 'AC_PROG_INSTALL' => 1, 'AM_GNU_GETTEXT' => 1, - 'AC_CHECK_LIB' => 1, 'AC_FUNC_OBSTACK' => 1, + 'AC_CHECK_LIB' => 1, 'AC_FUNC_MALLOC' => 1, 'AC_FUNC_GETGROUPS' => 1, 'AC_FUNC_GETLOADAVG' => 1, 'AH_OUTPUT' => 1, 'AC_FUNC_FSEEKO' => 1, 'AM_PROG_CC_C_O' => 1, - 'AC_FUNC_MKTIME' => 1, - 'AC_CANONICAL_SYSTEM' => 1, 'AM_CONDITIONAL' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_FUNC_MKTIME' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_HEADER_SYS_WAIT' => 1, - 'AC_PROG_LN_S' => 1, 'AC_FUNC_MEMCMP' => 1, + 'AC_PROG_LN_S' => 1, 'm4_include' => 1, 'AC_HEADER_DIRENT' => 1, 'AC_CHECK_FUNCS' => 1 diff --text -u 'xemacs-21.5.20/autom4te.cache/traces.0' 'xemacs-21.5.21/autom4te.cache/traces.0' Index: ./autom4te.cache/traces.0 --- ./autom4te.cache/traces.0 Sat Mar 12 04:17:35 2005 +++ ./autom4te.cache/traces.0 Sat May 28 15:10:15 2005 @@ -254,42 +254,42 @@ m4trace:configure.ac:718: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.ac:718: the top level]) -m4trace:configure.ac:721: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +m4trace:configure.ac:723: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:721: the top level]) -m4trace:configure.ac:724: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:723: the top level]) +m4trace:configure.ac:726: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:724: the top level]) -m4trace:configure.ac:728: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:726: the top level]) +m4trace:configure.ac:729: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:728: the top level]) +configure.ac:729: the top level]) m4trace:configure.ac:732: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.ac:732: the top level]) -m4trace:configure.ac:744: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +m4trace:configure.ac:736: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:744: the top level]) -m4trace:configure.ac:748: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:736: the top level]) +m4trace:configure.ac:740: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:748: the top level]) -m4trace:configure.ac:755: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:740: the top level]) +m4trace:configure.ac:752: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:755: the top level]) -m4trace:configure.ac:761: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:752: the top level]) +m4trace:configure.ac:756: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:761: the top level]) -m4trace:configure.ac:767: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:756: the top level]) +m4trace:configure.ac:763: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:767: the top level]) -m4trace:configure.ac:772: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:763: the top level]) +m4trace:configure.ac:769: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:772: the top level]) -m4trace:configure.ac:777: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:769: the top level]) +m4trace:configure.ac:775: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:777: the top level]) -m4trace:configure.ac:781: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:775: the top level]) +m4trace:configure.ac:780: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:781: the top level]) +configure.ac:780: the top level]) m4trace:configure.ac:785: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.ac:785: the top level]) @@ -311,136 +311,98 @@ m4trace:configure.ac:809: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.ac:809: the top level]) +m4trace:configure.ac:813: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.ac:813: the top level]) m4trace:configure.ac:817: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.ac:817: the top level]) -m4trace:configure.ac:837: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +m4trace:configure.ac:825: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:837: the top level]) +configure.ac:825: the top level]) m4trace:configure.ac:845: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.ac:845: the top level]) m4trace:configure.ac:853: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... configure.ac:853: the top level]) -m4trace:configure.ac:860: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +m4trace:configure.ac:861: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:860: the top level]) -m4trace:configure.ac:866: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:861: the top level]) +m4trace:configure.ac:868: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:866: the top level]) -m4trace:configure.ac:882: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +configure.ac:868: the top level]) +m4trace:configure.ac:874: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:882: the top level]) -m4trace:configure.ac:887: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:887: the top level]) -m4trace:configure.ac:893: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:893: the top level]) -m4trace:configure.ac:900: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. -You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... -configure.ac:900: the top level]) -m4trace:configure.ac:922: -1- AC_DEFINE_TRACE_LITERAL([EXEC_PREFIX_USER_DEFINED]) -m4trace:configure.ac:926: -1- AC_DEFINE_TRACE_LITERAL([INFODIR_USER_DEFINED]) -m4trace:configure.ac:927: -1- AC_DEFINE_TRACE_LITERAL([LISPDIR_USER_DEFINED]) -m4trace:configure.ac:928: -1- AC_DEFINE_TRACE_LITERAL([MODULEDIR_USER_DEFINED]) -m4trace:configure.ac:929: -1- AC_DEFINE_TRACE_LITERAL([ETCDIR_USER_DEFINED]) -m4trace:configure.ac:930: -1- AC_DEFINE_TRACE_LITERAL([DOCDIR_USER_DEFINED]) -m4trace:configure.ac:931: -1- AC_DEFINE_TRACE_LITERAL([ARCHLIBDIR_USER_DEFINED]) -m4trace:configure.ac:937: -1- AC_DEFINE_TRACE_LITERAL([ARCHLIBDIR_USER_DEFINED]) -m4trace:configure.ac:945: -1- AC_DEFINE_TRACE_LITERAL([INFODIR_USER_DEFINED]) -m4trace:configure.ac:955: -1- AC_SUBST([inststaticdir]) -m4trace:configure.ac:956: -1- AC_SUBST([statedir], [$with_statedir]) -m4trace:configure.ac:960: -1- AC_SUBST([build], [$ac_cv_build]) -m4trace:configure.ac:960: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) -m4trace:configure.ac:960: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) -m4trace:configure.ac:960: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) -m4trace:configure.ac:963: -1- AC_PROG_LN_S -m4trace:configure.ac:963: -1- AC_SUBST([LN_S], [$as_ln_s]) -m4trace:configure.ac:985: -1- AC_SUBST([blddir]) -m4trace:configure.ac:1022: -1- AC_DEFINE_TRACE_LITERAL([EMACS_MAJOR_VERSION]) -m4trace:configure.ac:1023: -1- AC_DEFINE_TRACE_LITERAL([EMACS_MINOR_VERSION]) -m4trace:configure.ac:1027: -1- AC_DEFINE_TRACE_LITERAL([EMACS_BETA_VERSION]) -m4trace:configure.ac:1030: -1- AC_DEFINE_TRACE_LITERAL([EMACS_PATCH_LEVEL]) -m4trace:configure.ac:1033: -1- AC_DEFINE_TRACE_LITERAL([XEMACS_CODENAME]) -m4trace:configure.ac:1035: -1- AC_DEFINE_TRACE_LITERAL([XEMACS_EXTRA_NAME]) -m4trace:configure.ac:1038: -1- AC_DEFINE_TRACE_LITERAL([XEMACS_RELEASE_DATE]) -m4trace:configure.ac:1040: -1- AC_DEFINE_TRACE_LITERAL([EMACS_VERSION]) -m4trace:configure.ac:1052: -1- AC_DEFINE_TRACE_LITERAL([INFODOCK_MAJOR_VERSION]) -m4trace:configure.ac:1053: -1- AC_DEFINE_TRACE_LITERAL([INFODOCK_MINOR_VERSION]) -m4trace:configure.ac:1054: -1- AC_DEFINE_TRACE_LITERAL([INFODOCK_BUILD_VERSION]) -m4trace:configure.ac:1062: -1- AC_DEFINE_TRACE_LITERAL([EMACS_PROGNAME]) -m4trace:configure.ac:1070: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_EXTENTS]) -m4trace:configure.ac:1071: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_TYPES]) -m4trace:configure.ac:1072: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_TEXT]) -m4trace:configure.ac:1073: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_GC]) -m4trace:configure.ac:1074: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_MALLOC]) -m4trace:configure.ac:1075: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_BYTE_CODE]) -m4trace:configure.ac:1076: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_GLYPHS]) -m4trace:configure.ac:1077: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_DISPLAY]) -m4trace:configure.ac:1078: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_STRUCTURES]) -m4trace:configure.ac:1085: -1- AC_DEFINE_TRACE_LITERAL([DEBUG_XEMACS]) -m4trace:configure.ac:1087: -1- AC_DEFINE_TRACE_LITERAL([USE_ASSERTIONS]) -m4trace:configure.ac:1088: -1- AC_DEFINE_TRACE_LITERAL([MEMORY_USAGE_STATS]) -m4trace:configure.ac:1099: -1- AC_SUBST([configuration], [$ac_cv_build]) -m4trace:configure.ac:1505: -1- AC_DEFINE_TRACE_LITERAL([OS_RELEASE]) -m4trace:configure.ac:1612: -1- AC_DEFINE_TRACE_LITERAL([config_machfile]) -m4trace:configure.ac:1620: -1- AC_DEFINE_TRACE_LITERAL([config_opsysfile]) -m4trace:configure.ac:1650: -1- AC_DEFINE_TRACE_LITERAL([DLSYM_NEEDS_UNDERSCORE]) -m4trace:configure.ac:1670: -1- AC_DEFINE_TRACE_LITERAL([STACK_TRACE_EYE_CATCHER]) -m4trace:configure.ac:1680: -1- AC_DEFINE_TRACE_LITERAL([SUNPRO]) -m4trace:configure.ac:1684: -1- AC_DEFINE_TRACE_LITERAL([CLASH_DETECTION]) -m4trace:configure.ac:1721: -1- AH_OUTPUT([_ALL_SOURCE], [/* Define to 1 if on AIX 3. +configure.ac:874: the top level]) +m4trace:configure.ac:890: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.ac:890: the top level]) +m4trace:configure.ac:895: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.ac:895: the top level]) +m4trace:configure.ac:901: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.ac:901: the top level]) +m4trace:configure.ac:908: -2- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [autoconf/general.m4:219: AC_HELP_STRING is expanded from... +configure.ac:908: the top level]) +m4trace:configure.ac:930: -1- AC_DEFINE_TRACE_LITERAL([EXEC_PREFIX_USER_DEFINED]) +m4trace:configure.ac:934: -1- AC_DEFINE_TRACE_LITERAL([INFODIR_USER_DEFINED]) +m4trace:configure.ac:935: -1- AC_DEFINE_TRACE_LITERAL([LISPDIR_USER_DEFINED]) +m4trace:configure.ac:936: -1- AC_DEFINE_TRACE_LITERAL([MODULEDIR_USER_DEFINED]) +m4trace:configure.ac:937: -1- AC_DEFINE_TRACE_LITERAL([ETCDIR_USER_DEFINED]) +m4trace:configure.ac:938: -1- AC_DEFINE_TRACE_LITERAL([DOCDIR_USER_DEFINED]) +m4trace:configure.ac:939: -1- AC_DEFINE_TRACE_LITERAL([ARCHLIBDIR_USER_DEFINED]) +m4trace:configure.ac:945: -1- AC_DEFINE_TRACE_LITERAL([ARCHLIBDIR_USER_DEFINED]) +m4trace:configure.ac:953: -1- AC_DEFINE_TRACE_LITERAL([INFODIR_USER_DEFINED]) +m4trace:configure.ac:963: -1- AC_SUBST([inststaticdir]) +m4trace:configure.ac:964: -1- AC_SUBST([statedir], [$with_statedir]) +m4trace:configure.ac:968: -1- AC_PROG_LN_S +m4trace:configure.ac:968: -1- AC_SUBST([LN_S], [$as_ln_s]) +m4trace:configure.ac:990: -1- AC_SUBST([blddir]) +m4trace:configure.ac:1021: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:1021: -1- AC_SUBST([build_cpu], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\1/'`]) +m4trace:configure.ac:1021: -1- AC_SUBST([build_vendor], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\2/'`]) +m4trace:configure.ac:1021: -1- AC_SUBST([build_os], [`echo $ac_cv_build | sed 's/^\([[^-]]*\)-\([[^-]]*\)-\(.*\)$/\3/'`]) +m4trace:configure.ac:1032: -1- AC_DEFINE_TRACE_LITERAL([EMACS_MAJOR_VERSION]) +m4trace:configure.ac:1033: -1- AC_DEFINE_TRACE_LITERAL([EMACS_MINOR_VERSION]) +m4trace:configure.ac:1037: -1- AC_DEFINE_TRACE_LITERAL([EMACS_BETA_VERSION]) +m4trace:configure.ac:1040: -1- AC_DEFINE_TRACE_LITERAL([EMACS_PATCH_LEVEL]) +m4trace:configure.ac:1043: -1- AC_DEFINE_TRACE_LITERAL([XEMACS_CODENAME]) +m4trace:configure.ac:1045: -1- AC_DEFINE_TRACE_LITERAL([XEMACS_EXTRA_NAME]) +m4trace:configure.ac:1048: -1- AC_DEFINE_TRACE_LITERAL([XEMACS_RELEASE_DATE]) +m4trace:configure.ac:1050: -1- AC_DEFINE_TRACE_LITERAL([EMACS_VERSION]) +m4trace:configure.ac:1062: -1- AC_DEFINE_TRACE_LITERAL([INFODOCK_MAJOR_VERSION]) +m4trace:configure.ac:1063: -1- AC_DEFINE_TRACE_LITERAL([INFODOCK_MINOR_VERSION]) +m4trace:configure.ac:1064: -1- AC_DEFINE_TRACE_LITERAL([INFODOCK_BUILD_VERSION]) +m4trace:configure.ac:1072: -1- AC_DEFINE_TRACE_LITERAL([EMACS_PROGNAME]) +m4trace:configure.ac:1080: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_EXTENTS]) +m4trace:configure.ac:1081: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_TYPES]) +m4trace:configure.ac:1082: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_TEXT]) +m4trace:configure.ac:1083: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_GC]) +m4trace:configure.ac:1084: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_MALLOC]) +m4trace:configure.ac:1085: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_BYTE_CODE]) +m4trace:configure.ac:1086: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_GLYPHS]) +m4trace:configure.ac:1087: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_DISPLAY]) +m4trace:configure.ac:1088: -1- AC_DEFINE_TRACE_LITERAL([ERROR_CHECK_STRUCTURES]) +m4trace:configure.ac:1095: -1- AC_DEFINE_TRACE_LITERAL([DEBUG_XEMACS]) +m4trace:configure.ac:1097: -1- AC_DEFINE_TRACE_LITERAL([USE_ASSERTIONS]) +m4trace:configure.ac:1098: -1- AC_DEFINE_TRACE_LITERAL([MEMORY_USAGE_STATS]) +m4trace:configure.ac:1109: -1- AC_SUBST([configuration], [$ac_cv_build]) +m4trace:configure.ac:1515: -1- AC_DEFINE_TRACE_LITERAL([OS_RELEASE]) +m4trace:configure.ac:1622: -1- AC_DEFINE_TRACE_LITERAL([config_machfile]) +m4trace:configure.ac:1630: -1- AC_DEFINE_TRACE_LITERAL([config_opsysfile]) +m4trace:configure.ac:1660: -1- AC_DEFINE_TRACE_LITERAL([DLSYM_NEEDS_UNDERSCORE]) +m4trace:configure.ac:1680: -1- AC_DEFINE_TRACE_LITERAL([STACK_TRACE_EYE_CATCHER]) +m4trace:configure.ac:1690: -1- AC_DEFINE_TRACE_LITERAL([SUNPRO]) +m4trace:configure.ac:1694: -1- AC_DEFINE_TRACE_LITERAL([CLASH_DETECTION]) +m4trace:configure.ac:1731: -1- AH_OUTPUT([_ALL_SOURCE], [/* Define to 1 if on AIX 3. System headers sometimes define this. We just want to avoid a redefinition error message. */ @%:@ifndef _ALL_SOURCE @%:@ undef _ALL_SOURCE @%:@endif]) -m4trace:configure.ac:1721: -1- AC_PROG_CC -m4trace:configure.ac:1721: -1- AC_SUBST([CC]) -m4trace:configure.ac:1721: -1- AC_SUBST([CFLAGS]) -m4trace:configure.ac:1721: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.ac:1721: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:1721: -1- AC_SUBST([CC]) -m4trace:configure.ac:1721: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1721: -1- AC_SUBST([CC]) -m4trace:configure.ac:1721: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1721: -1- AC_SUBST([CC]) -m4trace:configure.ac:1721: -1- AC_SUBST([CC]) -m4trace:configure.ac:1721: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1721: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) -m4trace:configure.ac:1721: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) -m4trace:configure.ac:1721: -1- AC_PROG_CPP -m4trace:configure.ac:1721: -1- AC_SUBST([CPP]) -m4trace:configure.ac:1721: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:1721: -1- AC_SUBST([CPP]) -m4trace:configure.ac:1721: -1- AC_SUBST([EGREP]) -m4trace:configure.ac:1721: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) -m4trace:configure.ac:1723: -1- AC_PROG_CC -m4trace:configure.ac:1723: -1- AC_SUBST([CC]) -m4trace:configure.ac:1723: -1- AC_SUBST([CFLAGS]) -m4trace:configure.ac:1723: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.ac:1723: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:1723: -1- AC_SUBST([CC]) -m4trace:configure.ac:1723: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1723: -1- AC_SUBST([CC]) -m4trace:configure.ac:1723: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1723: -1- AC_SUBST([CC]) -m4trace:configure.ac:1723: -1- AC_SUBST([CC]) -m4trace:configure.ac:1723: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1728: -1- AC_PROG_CC -m4trace:configure.ac:1728: -1- AC_SUBST([CC]) -m4trace:configure.ac:1728: -1- AC_SUBST([CFLAGS]) -m4trace:configure.ac:1728: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.ac:1728: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:1728: -1- AC_SUBST([CC]) -m4trace:configure.ac:1728: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1728: -1- AC_SUBST([CC]) -m4trace:configure.ac:1728: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1728: -1- AC_SUBST([CC]) -m4trace:configure.ac:1728: -1- AC_SUBST([CC]) -m4trace:configure.ac:1728: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.ac:1731: -1- AC_PROG_CC m4trace:configure.ac:1731: -1- AC_SUBST([CC]) m4trace:configure.ac:1731: -1- AC_SUBST([CFLAGS]) @@ -453,540 +415,584 @@ m4trace:configure.ac:1731: -1- AC_SUBST([CC]) m4trace:configure.ac:1731: -1- AC_SUBST([CC]) m4trace:configure.ac:1731: -1- AC_SUBST([ac_ct_CC]) -m4trace:configure.ac:1746: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:1746: the top level]) -m4trace:configure.ac:1773: -1- AC_PROG_CPP -m4trace:configure.ac:1773: -1- AC_SUBST([CPP]) -m4trace:configure.ac:1773: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:1773: -1- AC_SUBST([CPP]) -m4trace:configure.ac:1788: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:1731: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:1731: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:1731: -1- AC_PROG_CPP +m4trace:configure.ac:1731: -1- AC_SUBST([CPP]) +m4trace:configure.ac:1731: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:1731: -1- AC_SUBST([CPP]) +m4trace:configure.ac:1731: -1- AC_SUBST([EGREP]) +m4trace:configure.ac:1731: -1- AC_DEFINE_TRACE_LITERAL([_ALL_SOURCE]) +m4trace:configure.ac:1733: -1- AC_PROG_CC +m4trace:configure.ac:1733: -1- AC_SUBST([CC]) +m4trace:configure.ac:1733: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:1733: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:1733: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:1733: -1- AC_SUBST([CC]) +m4trace:configure.ac:1733: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1733: -1- AC_SUBST([CC]) +m4trace:configure.ac:1733: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1733: -1- AC_SUBST([CC]) +m4trace:configure.ac:1733: -1- AC_SUBST([CC]) +m4trace:configure.ac:1733: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1738: -1- AC_PROG_CC +m4trace:configure.ac:1738: -1- AC_SUBST([CC]) +m4trace:configure.ac:1738: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:1738: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:1738: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:1738: -1- AC_SUBST([CC]) +m4trace:configure.ac:1738: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1738: -1- AC_SUBST([CC]) +m4trace:configure.ac:1738: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1738: -1- AC_SUBST([CC]) +m4trace:configure.ac:1738: -1- AC_SUBST([CC]) +m4trace:configure.ac:1738: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1741: -1- AC_PROG_CC +m4trace:configure.ac:1741: -1- AC_SUBST([CC]) +m4trace:configure.ac:1741: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:1741: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:1741: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:1741: -1- AC_SUBST([CC]) +m4trace:configure.ac:1741: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1741: -1- AC_SUBST([CC]) +m4trace:configure.ac:1741: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1741: -1- AC_SUBST([CC]) +m4trace:configure.ac:1741: -1- AC_SUBST([CC]) +m4trace:configure.ac:1741: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:1756: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:1756: the top level]) +m4trace:configure.ac:1783: -1- AC_PROG_CPP +m4trace:configure.ac:1783: -1- AC_SUBST([CPP]) +m4trace:configure.ac:1783: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:1783: -1- AC_SUBST([CPP]) +m4trace:configure.ac:1798: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:1788: the top level]) -m4trace:configure.ac:1792: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) -m4trace:configure.ac:1799: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) -m4trace:configure.ac:1802: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) -m4trace:configure.ac:1803: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE_EXTENDED]) -m4trace:configure.ac:1806: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE]) -m4trace:configure.ac:1808: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) -m4trace:configure.ac:1809: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE_EXTENDED]) -m4trace:configure.ac:1812: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE]) -m4trace:configure.ac:1814: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) -m4trace:configure.ac:1842: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:1842: the top level]) -m4trace:configure.ac:1970: -1- AC_DEFINE_TRACE_LITERAL([SYSTEM_TYPE]) -m4trace:configure.ac:2027: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:1798: the top level]) +m4trace:configure.ac:1802: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:1809: -1- AC_DEFINE_TRACE_LITERAL([__EXTENSIONS__]) +m4trace:configure.ac:1812: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:1813: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE_EXTENDED]) +m4trace:configure.ac:1816: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE]) +m4trace:configure.ac:1818: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:1819: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE_EXTENDED]) +m4trace:configure.ac:1822: -1- AC_DEFINE_TRACE_LITERAL([_POSIX_C_SOURCE]) +m4trace:configure.ac:1824: -1- AC_DEFINE_TRACE_LITERAL([_XOPEN_SOURCE]) +m4trace:configure.ac:1852: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:1852: the top level]) +m4trace:configure.ac:1980: -1- AC_DEFINE_TRACE_LITERAL([SYSTEM_TYPE]) +m4trace:configure.ac:2052: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -configure.ac:2027: the top level]) -m4trace:configure.ac:2027: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:2052: the top level]) +m4trace:configure.ac:2052: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -configure.ac:2027: the top level]) -m4trace:configure.ac:2270: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: checking for \"-z nocombreloc\" linker flag], []) -m4trace:configure.ac:2270: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for \"-z nocombreloc\" linker flag... ], []) -m4trace:configure.ac:2297: -1- AC_DEFINE_TRACE_LITERAL([DYNODUMP]) -m4trace:configure.ac:2328: -1- AC_CHECK_LIB([c], [terminateAndUnload], [XE_APPEND(-lC, libs_system)]) -m4trace:configure.ac:2333: -1- AC_SUBST([start_flags]) -m4trace:configure.ac:2335: -1- AC_SUBST([ld_switch_shared]) -m4trace:configure.ac:2336: -1- AC_SUBST([start_files]) -m4trace:configure.ac:2342: -1- AC_SUBST([ld]) -m4trace:configure.ac:2343: -1- AC_SUBST([lib_gcc]) -m4trace:configure.ac:2580: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:2052: the top level]) +m4trace:configure.ac:2295: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: checking for \"-z nocombreloc\" linker flag], []) +m4trace:configure.ac:2295: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for \"-z nocombreloc\" linker flag... ], []) +m4trace:configure.ac:2322: -1- AC_DEFINE_TRACE_LITERAL([DYNODUMP]) +m4trace:configure.ac:2351: -1- AC_CHECK_LIB([c], [terminateAndUnload], [XE_APPEND(-lC, libs_system)]) +m4trace:configure.ac:2356: -1- AC_SUBST([start_flags]) +m4trace:configure.ac:2358: -1- AC_SUBST([ld_switch_shared]) +m4trace:configure.ac:2359: -1- AC_SUBST([start_files]) +m4trace:configure.ac:2365: -1- AC_SUBST([ld]) +m4trace:configure.ac:2366: -1- AC_SUBST([lib_gcc]) +m4trace:configure.ac:2603: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -configure.ac:2580: the top level]) -m4trace:configure.ac:2586: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: result: "\"${dash_r}\""], []) -m4trace:configure.ac:2586: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: ${ECHO_T}"\"${dash_r}\""], []) -m4trace:configure.ac:2622: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:2603: the top level]) +m4trace:configure.ac:2609: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: result: "\"${dash_r}\""], []) +m4trace:configure.ac:2609: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: ${ECHO_T}"\"${dash_r}\""], []) +m4trace:configure.ac:2645: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -configure.ac:2622: the top level]) -m4trace:configure.ac:2640: -1- AC_DEFINE_TRACE_LITERAL([DOUG_LEA_MALLOC]) -m4trace:configure.ac:2644: -1- AC_DEFINE_TRACE_LITERAL([_NO_MALLOC_WARNING_]) -m4trace:configure.ac:2669: -1- AC_PROG_RANLIB -m4trace:configure.ac:2669: -1- AC_SUBST([RANLIB]) -m4trace:configure.ac:2669: -1- AC_SUBST([ac_ct_RANLIB]) -m4trace:configure.ac:2670: -1- AC_PROG_INSTALL -m4trace:configure.ac:2670: -1- AC_SUBST([INSTALL_PROGRAM]) -m4trace:configure.ac:2670: -1- AC_SUBST([INSTALL_SCRIPT]) -m4trace:configure.ac:2670: -1- AC_SUBST([INSTALL_DATA]) -m4trace:configure.ac:2671: -1- AC_PROG_YACC -m4trace:configure.ac:2671: -1- AC_SUBST([YACC]) -m4trace:configure.ac:2694: -1- AC_CHECK_HEADERS([ a.out.h elf.h cygwin/version.h fcntl.h inttypes.h libgen.h locale.h wchar.h mach/mach.h sys/param.h sys/pstat.h sys/resource.h sys/time.h sys/timeb.h sys/times.h sys/un.h sys/vlimit.h ulimit.h unistd.h ]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_A_OUT_H], [/* Define to 1 if you have the header file. */ +configure.ac:2645: the top level]) +m4trace:configure.ac:2663: -1- AC_DEFINE_TRACE_LITERAL([DOUG_LEA_MALLOC]) +m4trace:configure.ac:2667: -1- AC_DEFINE_TRACE_LITERAL([_NO_MALLOC_WARNING_]) +m4trace:configure.ac:2692: -1- AC_PROG_RANLIB +m4trace:configure.ac:2692: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:2692: -1- AC_SUBST([ac_ct_RANLIB]) +m4trace:configure.ac:2693: -1- AC_PROG_INSTALL +m4trace:configure.ac:2693: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:2693: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:2693: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:2694: -1- AC_PROG_YACC +m4trace:configure.ac:2694: -1- AC_SUBST([YACC]) +m4trace:configure.ac:2717: -1- AC_CHECK_HEADERS([ a.out.h elf.h cygwin/version.h fcntl.h inttypes.h libgen.h locale.h wchar.h mach/mach.h sys/param.h sys/pstat.h sys/resource.h sys/time.h sys/timeb.h sys/times.h sys/un.h sys/vlimit.h ulimit.h unistd.h ]) +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_A_OUT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_A_OUT_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_ELF_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_ELF_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ELF_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_CYGWIN_VERSION_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_CYGWIN_VERSION_H], [/* Define to 1 if you have the header file. */ #undef HAVE_CYGWIN_VERSION_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_FCNTL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_LIBGEN_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_LIBGEN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LIBGEN_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_LOCALE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_WCHAR_H], [/* Define to 1 if you have the header file. */ #undef HAVE_WCHAR_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_MACH_MACH_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_MACH_MACH_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MACH_MACH_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_PARAM_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PARAM_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_PSTAT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_PSTAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PSTAT_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_RESOURCE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_TIME_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_TIMEB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMEB_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_TIMES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIMES_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_UN_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_UN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_UN_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_VLIMIT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_VLIMIT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_VLIMIT_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_ULIMIT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_ULIMIT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_ULIMIT_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.ac:2694: -1- AC_HEADER_STDC -m4trace:configure.ac:2694: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +m4trace:configure.ac:2717: -1- AC_HEADER_STDC +m4trace:configure.ac:2717: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:2717: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) -m4trace:configure.ac:2694: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +m4trace:configure.ac:2717: -1- AC_CHECK_HEADERS([sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h], [], [], [$ac_includes_default]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) -m4trace:configure.ac:2694: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2717: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) -m4trace:configure.ac:2695: -1- AC_HEADER_SYS_WAIT -m4trace:configure.ac:2695: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) -m4trace:configure.ac:2695: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have that is POSIX.1 compatible. */ +m4trace:configure.ac:2718: -1- AC_HEADER_SYS_WAIT +m4trace:configure.ac:2718: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYS_WAIT_H]) +m4trace:configure.ac:2718: -1- AH_OUTPUT([HAVE_SYS_WAIT_H], [/* Define to 1 if you have that is POSIX.1 compatible. */ #undef HAVE_SYS_WAIT_H]) -m4trace:configure.ac:2696: -1- AC_HEADER_STDC -m4trace:configure.ac:2696: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) -m4trace:configure.ac:2696: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +m4trace:configure.ac:2719: -1- AC_HEADER_STDC +m4trace:configure.ac:2719: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:2719: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) -m4trace:configure.ac:2697: -1- AC_HEADER_TIME -m4trace:configure.ac:2697: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) -m4trace:configure.ac:2697: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ +m4trace:configure.ac:2720: -1- AC_HEADER_TIME +m4trace:configure.ac:2720: -1- AC_DEFINE_TRACE_LITERAL([TIME_WITH_SYS_TIME]) +m4trace:configure.ac:2720: -1- AH_OUTPUT([TIME_WITH_SYS_TIME], [/* Define to 1 if you can safely include both and . */ #undef TIME_WITH_SYS_TIME]) -m4trace:configure.ac:2704: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) -m4trace:configure.ac:2704: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you +m4trace:configure.ac:2727: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:2727: -1- AH_OUTPUT([HAVE_DECL_SYS_SIGLIST], [/* Define to 1 if you have the declaration of `sys_siglist\', and to 0 if you don\'t. */ #undef HAVE_DECL_SYS_SIGLIST]) -m4trace:configure.ac:2704: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) -m4trace:configure.ac:2721: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:2727: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_SYS_SIGLIST]) +m4trace:configure.ac:2744: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:2721: the top level]) -m4trace:configure.ac:2721: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UTIME]) -m4trace:configure.ac:2721: -1- AC_CHECK_FUNCS([utimes]) -m4trace:configure.ac:2721: -1- AH_OUTPUT([HAVE_UTIMES], [/* Define to 1 if you have the `utimes\' function. */ +configure.ac:2744: the top level]) +m4trace:configure.ac:2744: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UTIME]) +m4trace:configure.ac:2744: -1- AC_CHECK_FUNCS([utimes]) +m4trace:configure.ac:2744: -1- AH_OUTPUT([HAVE_UTIMES], [/* Define to 1 if you have the `utimes\' function. */ #undef HAVE_UTIMES]) -m4trace:configure.ac:2725: -1- AC_TYPE_SIGNAL -m4trace:configure.ac:2725: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) -m4trace:configure.ac:2725: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ +m4trace:configure.ac:2748: -1- AC_TYPE_SIGNAL +m4trace:configure.ac:2748: -1- AC_DEFINE_TRACE_LITERAL([RETSIGTYPE]) +m4trace:configure.ac:2748: -1- AH_OUTPUT([RETSIGTYPE], [/* Define as the return type of signal handlers (`int\' or `void\'). */ #undef RETSIGTYPE]) -m4trace:configure.ac:2726: -1- AC_TYPE_SIZE_T -m4trace:configure.ac:2726: -1- AC_DEFINE_TRACE_LITERAL([size_t]) -m4trace:configure.ac:2726: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if does not define. */ +m4trace:configure.ac:2749: -1- AC_TYPE_SIZE_T +m4trace:configure.ac:2749: -1- AC_DEFINE_TRACE_LITERAL([size_t]) +m4trace:configure.ac:2749: -1- AH_OUTPUT([size_t], [/* Define to `unsigned\' if does not define. */ #undef size_t]) -m4trace:configure.ac:2727: -1- AC_TYPE_PID_T -m4trace:configure.ac:2727: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) -m4trace:configure.ac:2727: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if does not define. */ +m4trace:configure.ac:2750: -1- AC_TYPE_PID_T +m4trace:configure.ac:2750: -1- AC_DEFINE_TRACE_LITERAL([pid_t]) +m4trace:configure.ac:2750: -1- AH_OUTPUT([pid_t], [/* Define to `int\' if does not define. */ #undef pid_t]) -m4trace:configure.ac:2728: -1- AC_TYPE_UID_T -m4trace:configure.ac:2728: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) -m4trace:configure.ac:2728: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ +m4trace:configure.ac:2751: -1- AC_TYPE_UID_T +m4trace:configure.ac:2751: -1- AC_DEFINE_TRACE_LITERAL([uid_t]) +m4trace:configure.ac:2751: -1- AH_OUTPUT([uid_t], [/* Define to `int\' if doesn\'t define. */ #undef uid_t]) -m4trace:configure.ac:2728: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) -m4trace:configure.ac:2728: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ +m4trace:configure.ac:2751: -1- AC_DEFINE_TRACE_LITERAL([gid_t]) +m4trace:configure.ac:2751: -1- AH_OUTPUT([gid_t], [/* Define to `int\' if doesn\'t define. */ #undef gid_t]) -m4trace:configure.ac:2729: -1- AC_TYPE_MODE_T -m4trace:configure.ac:2729: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) -m4trace:configure.ac:2729: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if does not define. */ +m4trace:configure.ac:2752: -1- AC_TYPE_MODE_T +m4trace:configure.ac:2752: -1- AC_DEFINE_TRACE_LITERAL([mode_t]) +m4trace:configure.ac:2752: -1- AH_OUTPUT([mode_t], [/* Define to `int\' if does not define. */ #undef mode_t]) -m4trace:configure.ac:2730: -1- AC_TYPE_OFF_T -m4trace:configure.ac:2730: -1- AC_DEFINE_TRACE_LITERAL([off_t]) -m4trace:configure.ac:2730: -1- AH_OUTPUT([off_t], [/* Define to `long\' if does not define. */ +m4trace:configure.ac:2753: -1- AC_TYPE_OFF_T +m4trace:configure.ac:2753: -1- AC_DEFINE_TRACE_LITERAL([off_t]) +m4trace:configure.ac:2753: -1- AH_OUTPUT([off_t], [/* Define to `long\' if does not define. */ #undef off_t]) -m4trace:configure.ac:2731: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) -m4trace:configure.ac:2731: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if does not define. */ +m4trace:configure.ac:2754: -1- AC_DEFINE_TRACE_LITERAL([ssize_t]) +m4trace:configure.ac:2754: -1- AH_OUTPUT([ssize_t], [/* Define to `int\' if does not define. */ #undef ssize_t]) -m4trace:configure.ac:2740: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:2763: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:2740: the top level]) -m4trace:configure.ac:2740: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTPTR_T_IN_SYS_TYPES_H]) -m4trace:configure.ac:2756: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +configure.ac:2763: the top level]) +m4trace:configure.ac:2763: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTPTR_T_IN_SYS_TYPES_H]) +m4trace:configure.ac:2779: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:2756: the top level]) -m4trace:configure.ac:2756: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +configure.ac:2779: the top level]) +m4trace:configure.ac:2779: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from... autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:2756: the top level]) -m4trace:configure.ac:2756: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) -m4trace:configure.ac:2756: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) -m4trace:configure.ac:2773: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +configure.ac:2779: the top level]) +m4trace:configure.ac:2779: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) +m4trace:configure.ac:2779: -1- AC_DEFINE_TRACE_LITERAL([socklen_t]) +m4trace:configure.ac:2796: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:2773: the top level]) -m4trace:configure.ac:2773: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL]) -m4trace:configure.ac:2776: -1- AC_STRUCT_TM -m4trace:configure.ac:2776: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) -m4trace:configure.ac:2776: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares `struct tm\'. */ +configure.ac:2796: the top level]) +m4trace:configure.ac:2796: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIMEVAL]) +m4trace:configure.ac:2799: -1- AC_STRUCT_TM +m4trace:configure.ac:2799: -1- AC_DEFINE_TRACE_LITERAL([TM_IN_SYS_TIME]) +m4trace:configure.ac:2799: -1- AH_OUTPUT([TM_IN_SYS_TIME], [/* Define to 1 if your declares `struct tm\'. */ #undef TM_IN_SYS_TIME]) -m4trace:configure.ac:2777: -1- AC_STRUCT_TIMEZONE -m4trace:configure.ac:2777: -1- AC_CHECK_MEMBERS([struct tm.tm_zone], [], [], [#include +m4trace:configure.ac:2800: -1- AC_STRUCT_TIMEZONE +m4trace:configure.ac:2800: -1- AC_CHECK_MEMBERS([struct tm.tm_zone], [], [], [#include #include <$ac_cv_struct_tm> ]) -m4trace:configure.ac:2777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE]) -m4trace:configure.ac:2777: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is member of `struct tm\'. */ +m4trace:configure.ac:2800: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TM_TM_ZONE]) +m4trace:configure.ac:2800: -1- AH_OUTPUT([HAVE_STRUCT_TM_TM_ZONE], [/* Define to 1 if `tm_zone\' is member of `struct tm\'. */ #undef HAVE_STRUCT_TM_TM_ZONE]) -m4trace:configure.ac:2777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE]) -m4trace:configure.ac:2777: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use +m4trace:configure.ac:2800: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TM_ZONE]) +m4trace:configure.ac:2800: -1- AH_OUTPUT([HAVE_TM_ZONE], [/* Define to 1 if your `struct tm\' has `tm_zone\'. Deprecated, use `HAVE_STRUCT_TM_TM_ZONE\' instead. */ #undef HAVE_TM_ZONE]) -m4trace:configure.ac:2777: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME]) -m4trace:configure.ac:2777: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array +m4trace:configure.ac:2800: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TZNAME]) +m4trace:configure.ac:2800: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you don\'t have `tm_zone\' but do have the external array `tzname\'. */ #undef HAVE_TZNAME]) -m4trace:configure.ac:2780: -1- AC_C_CONST -m4trace:configure.ac:2780: -1- AC_DEFINE_TRACE_LITERAL([const]) -m4trace:configure.ac:2780: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ +m4trace:configure.ac:2803: -1- AC_C_CONST +m4trace:configure.ac:2803: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.ac:2803: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ #undef const]) -m4trace:configure.ac:2783: -1- AC_PROG_MAKE_SET -m4trace:configure.ac:2783: -1- AC_SUBST([SET_MAKE]) -m4trace:configure.ac:2786: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) -m4trace:configure.ac:2786: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte +m4trace:configure.ac:2806: -1- AC_PROG_MAKE_SET +m4trace:configure.ac:2806: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:2809: -1- AC_DEFINE_TRACE_LITERAL([WORDS_BIGENDIAN]) +m4trace:configure.ac:2809: -1- AH_OUTPUT([WORDS_BIGENDIAN], [/* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ #undef WORDS_BIGENDIAN]) -m4trace:configure.ac:2789: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) -m4trace:configure.ac:2789: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a `short\', as computed by sizeof. */ +m4trace:configure.ac:2812: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_SHORT]) +m4trace:configure.ac:2812: -1- AH_OUTPUT([SIZEOF_SHORT], [/* The size of a `short\', as computed by sizeof. */ #undef SIZEOF_SHORT]) -m4trace:configure.ac:2796: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) -m4trace:configure.ac:2796: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a `int\', as computed by sizeof. */ +m4trace:configure.ac:2819: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT]) +m4trace:configure.ac:2819: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of a `int\', as computed by sizeof. */ #undef SIZEOF_INT]) -m4trace:configure.ac:2797: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) -m4trace:configure.ac:2797: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a `long\', as computed by sizeof. */ +m4trace:configure.ac:2820: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG]) +m4trace:configure.ac:2820: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of a `long\', as computed by sizeof. */ #undef SIZEOF_LONG]) -m4trace:configure.ac:2798: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) -m4trace:configure.ac:2798: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a `long long\', as computed by sizeof. */ +m4trace:configure.ac:2821: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG]) +m4trace:configure.ac:2821: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of a `long long\', as computed by sizeof. */ #undef SIZEOF_LONG_LONG]) -m4trace:configure.ac:2799: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_VOID_P]) -m4trace:configure.ac:2799: -1- AH_OUTPUT([SIZEOF_VOID_P], [/* The size of a `void *\', as computed by sizeof. */ +m4trace:configure.ac:2822: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_VOID_P]) +m4trace:configure.ac:2822: -1- AH_OUTPUT([SIZEOF_VOID_P], [/* The size of a `void *\', as computed by sizeof. */ #undef SIZEOF_VOID_P]) -m4trace:configure.ac:2800: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE]) -m4trace:configure.ac:2800: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a `double\', as computed by sizeof. */ +m4trace:configure.ac:2823: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_DOUBLE]) +m4trace:configure.ac:2823: -1- AH_OUTPUT([SIZEOF_DOUBLE], [/* The size of a `double\', as computed by sizeof. */ #undef SIZEOF_DOUBLE]) -m4trace:configure.ac:2803: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_FILE_NAMES]) -m4trace:configure.ac:2803: -1- AH_OUTPUT([HAVE_LONG_FILE_NAMES], [/* Define to 1 if you support file names longer than 14 characters. */ +m4trace:configure.ac:2826: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_FILE_NAMES]) +m4trace:configure.ac:2826: -1- AH_OUTPUT([HAVE_LONG_FILE_NAMES], [/* Define to 1 if you support file names longer than 14 characters. */ #undef HAVE_LONG_FILE_NAMES]) -m4trace:configure.ac:2806: -2- AC_CHECK_LIB([m], [sin]) -m4trace:configure.ac:2806: -2- AH_OUTPUT([HAVE_LIBM], [/* Define to 1 if you have the `m\' library (-lm). */ +m4trace:configure.ac:2829: -2- AC_CHECK_LIB([m], [sin]) +m4trace:configure.ac:2829: -2- AH_OUTPUT([HAVE_LIBM], [/* Define to 1 if you have the `m\' library (-lm). */ #undef HAVE_LIBM]) -m4trace:configure.ac:2806: -2- AC_DEFINE_TRACE_LITERAL([HAVE_LIBM]) -m4trace:configure.ac:2810: -2- AC_DEFINE_TRACE_LITERAL([HAVE_INVERSE_HYPERBOLIC]) -m4trace:configure.ac:2810: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +m4trace:configure.ac:2829: -2- AC_DEFINE_TRACE_LITERAL([HAVE_LIBM]) +m4trace:configure.ac:2833: -2- AC_DEFINE_TRACE_LITERAL([HAVE_INVERSE_HYPERBOLIC]) +m4trace:configure.ac:2833: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -configure.ac:2810: the top level]) -m4trace:configure.ac:2813: -1- AC_CHECK_FUNCS([mkstemp]) -m4trace:configure.ac:2813: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the `mkstemp\' function. */ +configure.ac:2833: the top level]) +m4trace:configure.ac:2836: -1- AC_CHECK_FUNCS([mkstemp]) +m4trace:configure.ac:2836: -1- AH_OUTPUT([HAVE_MKSTEMP], [/* Define to 1 if you have the `mkstemp\' function. */ #undef HAVE_MKSTEMP]) -m4trace:configure.ac:2816: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:2839: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:2816: the top level]) -m4trace:configure.ac:2817: -1- AC_CHECK_FUNCS([lockf flock]) -m4trace:configure.ac:2817: -1- AH_OUTPUT([HAVE_LOCKF], [/* Define to 1 if you have the `lockf\' function. */ +configure.ac:2839: the top level]) +m4trace:configure.ac:2840: -1- AC_CHECK_FUNCS([lockf flock]) +m4trace:configure.ac:2840: -1- AH_OUTPUT([HAVE_LOCKF], [/* Define to 1 if you have the `lockf\' function. */ #undef HAVE_LOCKF]) -m4trace:configure.ac:2817: -1- AH_OUTPUT([HAVE_FLOCK], [/* Define to 1 if you have the `flock\' function. */ +m4trace:configure.ac:2840: -1- AH_OUTPUT([HAVE_FLOCK], [/* Define to 1 if you have the `flock\' function. */ #undef HAVE_FLOCK]) -m4trace:configure.ac:2828: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_LOCKF]) -m4trace:configure.ac:2829: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_FLOCK]) -m4trace:configure.ac:2830: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_LOCKING]) -m4trace:configure.ac:2834: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_MMDF]) -m4trace:configure.ac:2835: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_DOT]) -m4trace:configure.ac:2845: -1- AC_CHECK_LIB([pthreads], [cma_open]) -m4trace:configure.ac:2845: -1- AH_OUTPUT([HAVE_LIBPTHREADS], [/* Define to 1 if you have the `pthreads\' library (-lpthreads). */ +m4trace:configure.ac:2851: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_LOCKF]) +m4trace:configure.ac:2852: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_FLOCK]) +m4trace:configure.ac:2853: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_LOCKING]) +m4trace:configure.ac:2857: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_MMDF]) +m4trace:configure.ac:2858: -1- AC_DEFINE_TRACE_LITERAL([MAIL_LOCK_DOT]) +m4trace:configure.ac:2868: -1- AC_CHECK_LIB([pthreads], [cma_open]) +m4trace:configure.ac:2868: -1- AH_OUTPUT([HAVE_LIBPTHREADS], [/* Define to 1 if you have the `pthreads\' library (-lpthreads). */ #undef HAVE_LIBPTHREADS]) -m4trace:configure.ac:2845: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPTHREADS]) -m4trace:configure.ac:2866: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: checking for \"-z ignore\" linker flag], []) -m4trace:configure.ac:2866: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for \"-z ignore\" linker flag... ], []) -m4trace:configure.ac:2879: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:2868: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBPTHREADS]) +m4trace:configure.ac:2889: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: checking for \"-z ignore\" linker flag], []) +m4trace:configure.ac:2889: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for \"-z ignore\" linker flag... ], []) +m4trace:configure.ac:2902: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:2879: the top level]) -m4trace:configure.ac:2908: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GNOME]) -m4trace:configure.ac:2952: -1- AC_CHECK_LIB([gdk_imlib], [main], [libs_gtk="-lgdk_imlib $libs_gtk" && if test "$verbose" = "yes"; then echo " Prepending \"-lgdk_imlib\" to \$libs_gtk"; fi]) -m4trace:configure.ac:2953: -1- AC_CHECK_LIB([Imlib], [Imlib_init], [libs_gtk="$libs_gtk -lImlib" && if test "$verbose" = "yes"; then echo " Appending \"-lImlib\" to \$libs_gtk"; fi]) -m4trace:configure.ac:2954: -1- AC_CHECK_FUNCS([gdk_imlib_init]) -m4trace:configure.ac:2954: -1- AH_OUTPUT([HAVE_GDK_IMLIB_INIT], [/* Define to 1 if you have the `gdk_imlib_init\' function. */ +configure.ac:2902: the top level]) +m4trace:configure.ac:2931: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GNOME]) +m4trace:configure.ac:2975: -1- AC_CHECK_LIB([gdk_imlib], [main], [libs_gtk="-lgdk_imlib $libs_gtk" && if test "$verbose" = "yes"; then echo " Prepending \"-lgdk_imlib\" to \$libs_gtk"; fi]) +m4trace:configure.ac:2976: -1- AC_CHECK_LIB([Imlib], [Imlib_init], [libs_gtk="$libs_gtk -lImlib" && if test "$verbose" = "yes"; then echo " Appending \"-lImlib\" to \$libs_gtk"; fi]) +m4trace:configure.ac:2977: -1- AC_CHECK_FUNCS([gdk_imlib_init]) +m4trace:configure.ac:2977: -1- AH_OUTPUT([HAVE_GDK_IMLIB_INIT], [/* Define to 1 if you have the `gdk_imlib_init\' function. */ #undef HAVE_GDK_IMLIB_INIT]) -m4trace:configure.ac:2956: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XPM]) -m4trace:configure.ac:2957: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GTK]) -m4trace:configure.ac:2958: -1- AC_SUBST([GTK_CONFIG]) -m4trace:configure.ac:2995: -1- AC_CHECK_HEADERS([glade/glade.h glade.h]) -m4trace:configure.ac:2995: -1- AH_OUTPUT([HAVE_GLADE_GLADE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:2979: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XPM]) +m4trace:configure.ac:2980: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GTK]) +m4trace:configure.ac:2981: -1- AC_SUBST([GTK_CONFIG]) +m4trace:configure.ac:3018: -1- AC_CHECK_HEADERS([glade/glade.h glade.h]) +m4trace:configure.ac:3018: -1- AH_OUTPUT([HAVE_GLADE_GLADE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_GLADE_GLADE_H]) -m4trace:configure.ac:2995: -1- AH_OUTPUT([HAVE_GLADE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:3018: -1- AH_OUTPUT([HAVE_GLADE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_GLADE_H]) -m4trace:configure.ac:2996: -1- AC_CHECK_LIB([xml], [main], [libs_gtk="-lxml $libs_gtk" && if test "$verbose" = "yes"; then echo " Prepending \"-lxml\" to \$libs_gtk"; fi]) -m4trace:configure.ac:2997: -1- AC_CHECK_LIB([glade], [main], [libs_gtk="-lglade $libs_gtk" && if test "$verbose" = "yes"; then echo " Prepending \"-lglade\" to \$libs_gtk"; fi]) -m4trace:configure.ac:2998: -1- AC_CHECK_LIB([glade-gnome], [main], [libs_gtk="-lglade-gnome $libs_gtk" && if test "$verbose" = "yes"; then echo " Prepending \"-lglade-gnome\" to \$libs_gtk"; fi]) -m4trace:configure.ac:3002: -1- AC_DEFINE_TRACE_LITERAL([LIBGLADE_XML_TXTDOMAIN]) -m4trace:configure.ac:3047: -1- AC_PATH_X([]) -m4trace:configure.ac:3047: -1- AC_DEFINE_TRACE_LITERAL([X_DISPLAY_MISSING]) -m4trace:configure.ac:3047: -1- AH_OUTPUT([X_DISPLAY_MISSING], [/* Define to 1 if the X Window System is missing or not being used. */ +m4trace:configure.ac:3019: -1- AC_CHECK_LIB([xml], [main], [libs_gtk="-lxml $libs_gtk" && if test "$verbose" = "yes"; then echo " Prepending \"-lxml\" to \$libs_gtk"; fi]) +m4trace:configure.ac:3020: -1- AC_CHECK_LIB([glade], [main], [libs_gtk="-lglade $libs_gtk" && if test "$verbose" = "yes"; then echo " Prepending \"-lglade\" to \$libs_gtk"; fi]) +m4trace:configure.ac:3021: -1- AC_CHECK_LIB([glade-gnome], [main], [libs_gtk="-lglade-gnome $libs_gtk" && if test "$verbose" = "yes"; then echo " Prepending \"-lglade-gnome\" to \$libs_gtk"; fi]) +m4trace:configure.ac:3025: -1- AC_DEFINE_TRACE_LITERAL([LIBGLADE_XML_TXTDOMAIN]) +m4trace:configure.ac:3070: -1- AC_PATH_X([]) +m4trace:configure.ac:3070: -1- AC_DEFINE_TRACE_LITERAL([X_DISPLAY_MISSING]) +m4trace:configure.ac:3070: -1- AH_OUTPUT([X_DISPLAY_MISSING], [/* Define to 1 if the X Window System is missing or not being used. */ #undef X_DISPLAY_MISSING]) -m4trace:configure.ac:3047: -1- AC_CHECK_LIB([dnet], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) -m4trace:configure.ac:3047: -1- AC_CHECK_LIB([dnet_stub], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) -m4trace:configure.ac:3047: -1- AC_CHECK_LIB([nsl], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"]) -m4trace:configure.ac:3047: -1- AC_CHECK_LIB([bsd], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"]) -m4trace:configure.ac:3047: -1- AC_CHECK_LIB([socket], [connect], [X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"], [], [$X_EXTRA_LIBS]) -m4trace:configure.ac:3047: -1- AC_CHECK_LIB([posix], [remove], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"]) -m4trace:configure.ac:3047: -1- AC_CHECK_LIB([ipc], [shmat], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"]) -m4trace:configure.ac:3047: -1- AC_CHECK_LIB([ICE], [IceConnectionNumber], [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], [], [$X_EXTRA_LIBS]) -m4trace:configure.ac:3047: -1- AC_SUBST([X_CFLAGS]) -m4trace:configure.ac:3047: -1- AC_SUBST([X_PRE_LIBS]) -m4trace:configure.ac:3047: -1- AC_SUBST([X_LIBS]) -m4trace:configure.ac:3047: -1- AC_SUBST([X_EXTRA_LIBS]) -m4trace:configure.ac:3061: -1- AC_DEFINE_TRACE_LITERAL([HAVE_X_WINDOWS]) -m4trace:configure.ac:3066: -1- AC_CHECK_LIB([Xm], [XmStringFree], [got_motif=yes]) -m4trace:configure.ac:3136: -1- AC_DEFINE_TRACE_LITERAL([BITMAPDIR]) -m4trace:configure.ac:3139: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:3070: -1- AC_CHECK_LIB([dnet], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) +m4trace:configure.ac:3070: -1- AC_CHECK_LIB([dnet_stub], [dnet_ntoa], [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) +m4trace:configure.ac:3070: -1- AC_CHECK_LIB([nsl], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"]) +m4trace:configure.ac:3070: -1- AC_CHECK_LIB([bsd], [gethostbyname], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"]) +m4trace:configure.ac:3070: -1- AC_CHECK_LIB([socket], [connect], [X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"], [], [$X_EXTRA_LIBS]) +m4trace:configure.ac:3070: -1- AC_CHECK_LIB([posix], [remove], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"]) +m4trace:configure.ac:3070: -1- AC_CHECK_LIB([ipc], [shmat], [X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"]) +m4trace:configure.ac:3070: -1- AC_CHECK_LIB([ICE], [IceConnectionNumber], [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], [], [$X_EXTRA_LIBS]) +m4trace:configure.ac:3070: -1- AC_SUBST([X_CFLAGS]) +m4trace:configure.ac:3070: -1- AC_SUBST([X_PRE_LIBS]) +m4trace:configure.ac:3070: -1- AC_SUBST([X_LIBS]) +m4trace:configure.ac:3070: -1- AC_SUBST([X_EXTRA_LIBS]) +m4trace:configure.ac:3084: -1- AC_DEFINE_TRACE_LITERAL([HAVE_X_WINDOWS]) +m4trace:configure.ac:3089: -1- AC_CHECK_LIB([Xm], [XmStringFree], [got_motif=yes]) +m4trace:configure.ac:3159: -1- AC_DEFINE_TRACE_LITERAL([BITMAPDIR]) +m4trace:configure.ac:3162: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3139: the top level]) -m4trace:configure.ac:3179: -1- AC_CHECK_LIB([X11], [XOpenDisplay], [have_lib_x11=yes]) -m4trace:configure.ac:3184: -1- AC_CHECK_LIB([X11], [XGetFontProperty], [ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site"], [AC_MSG_ERROR([Unable to find X11 libraries.])], [-b i486-linuxaout]) -m4trace:configure.ac:3190: -1- AC_CHECK_LIB([Xext], [XShapeSelectInput], [libs_x="-lXext $libs_x" && if test "$verbose" = "yes"; then echo " Prepending \"-lXext\" to \$libs_x"; fi]) -m4trace:configure.ac:3194: -1- AC_CHECK_LIB([Xt], [XtOpenDisplay], [libs_x="-lXt $libs_x" && if test "$verbose" = "yes"; then echo " Prepending \"-lXt\" to \$libs_x"; fi], [{ { echo "$as_me:$LINENO: error: Unable to find X11 libraries." >&5 +configure.ac:3162: the top level]) +m4trace:configure.ac:3202: -1- AC_CHECK_LIB([X11], [XOpenDisplay], [have_lib_x11=yes]) +m4trace:configure.ac:3207: -1- AC_CHECK_LIB([X11], [XGetFontProperty], [ld_switch_x_site="-b i486-linuxaout $ld_switch_x_site"], [AC_MSG_ERROR([Unable to find X11 libraries.])], [-b i486-linuxaout]) +m4trace:configure.ac:3213: -1- AC_CHECK_LIB([Xext], [XShapeSelectInput], [libs_x="-lXext $libs_x" && if test "$verbose" = "yes"; then echo " Prepending \"-lXext\" to \$libs_x"; fi]) +m4trace:configure.ac:3217: -1- AC_CHECK_LIB([Xt], [XtOpenDisplay], [libs_x="-lXt $libs_x" && if test "$verbose" = "yes"; then echo " Prepending \"-lXt\" to \$libs_x"; fi], [{ { echo "$as_me:$LINENO: error: Unable to find X11 libraries." >&5 echo "$as_me: error: Unable to find X11 libraries." >&2;} { (exit 1); exit 1; }; }]) -m4trace:configure.ac:3210: -1- AC_CHECK_FUNCS([XConvertCase XtRegisterDrawable]) -m4trace:configure.ac:3210: -1- AH_OUTPUT([HAVE_XCONVERTCASE], [/* Define to 1 if you have the `XConvertCase\' function. */ +m4trace:configure.ac:3233: -1- AC_CHECK_FUNCS([XConvertCase XtRegisterDrawable]) +m4trace:configure.ac:3233: -1- AH_OUTPUT([HAVE_XCONVERTCASE], [/* Define to 1 if you have the `XConvertCase\' function. */ #undef HAVE_XCONVERTCASE]) -m4trace:configure.ac:3210: -1- AH_OUTPUT([HAVE_XTREGISTERDRAWABLE], [/* Define to 1 if you have the `XtRegisterDrawable\' function. */ +m4trace:configure.ac:3233: -1- AH_OUTPUT([HAVE_XTREGISTERDRAWABLE], [/* Define to 1 if you have the `XtRegisterDrawable\' function. */ #undef HAVE_XTREGISTERDRAWABLE]) -m4trace:configure.ac:3212: -1- AC_CHECK_HEADERS([X11/Xlocale.h X11/Xfuncproto.h]) -m4trace:configure.ac:3212: -1- AH_OUTPUT([HAVE_X11_XLOCALE_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:3235: -1- AC_CHECK_HEADERS([X11/Xlocale.h X11/Xfuncproto.h]) +m4trace:configure.ac:3235: -1- AH_OUTPUT([HAVE_X11_XLOCALE_H], [/* Define to 1 if you have the header file. */ #undef HAVE_X11_XLOCALE_H]) -m4trace:configure.ac:3212: -1- AH_OUTPUT([HAVE_X11_XFUNCPROTO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:3235: -1- AH_OUTPUT([HAVE_X11_XFUNCPROTO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_X11_XFUNCPROTO_H]) -m4trace:configure.ac:3215: -1- AC_CHECK_FUNCS([XRegisterIMInstantiateCallback]) -m4trace:configure.ac:3215: -1- AH_OUTPUT([HAVE_XREGISTERIMINSTANTIATECALLBACK], [/* Define to 1 if you have the `XRegisterIMInstantiateCallback\' function. */ +m4trace:configure.ac:3238: -1- AC_CHECK_FUNCS([XRegisterIMInstantiateCallback]) +m4trace:configure.ac:3238: -1- AH_OUTPUT([HAVE_XREGISTERIMINSTANTIATECALLBACK], [/* Define to 1 if you have the `XRegisterIMInstantiateCallback\' function. */ #undef HAVE_XREGISTERIMINSTANTIATECALLBACK]) -m4trace:configure.ac:3225: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:3248: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:3225: the top level]) -m4trace:configure.ac:3225: -1- AC_DEFINE_TRACE_LITERAL([XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE]) -m4trace:configure.ac:3229: -1- AC_CHECK_LIB([Xmu], [XmuReadBitmapDataFromFile], [with_xmu=yes], [with_xmu=no]) -m4trace:configure.ac:3234: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XMU]) -m4trace:configure.ac:3239: -1- AC_CHECK_LIB([Xbsd], [main], [libs_x="-lXbsd $libs_x" && if test "$verbose" = "yes"; then echo " Prepending \"-lXbsd\" to \$libs_x"; fi]) -m4trace:configure.ac:3259: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +configure.ac:3248: the top level]) +m4trace:configure.ac:3248: -1- AC_DEFINE_TRACE_LITERAL([XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE]) +m4trace:configure.ac:3252: -1- AC_CHECK_LIB([Xmu], [XmuReadBitmapDataFromFile], [with_xmu=yes], [with_xmu=no]) +m4trace:configure.ac:3257: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XMU]) +m4trace:configure.ac:3262: -1- AC_CHECK_LIB([Xbsd], [main], [libs_x="-lXbsd $libs_x" && if test "$verbose" = "yes"; then echo " Prepending \"-lXbsd\" to \$libs_x"; fi]) +m4trace:configure.ac:3282: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3259: the top level]) -m4trace:configure.ac:3260: -1- AC_CHECK_LIB([gdi32], [main], [with_msw=yes]) -m4trace:configure.ac:3262: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MS_WINDOWS]) -m4trace:configure.ac:3288: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:3288: the top level]) -m4trace:configure.ac:3288: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MSG_SELECT]) -m4trace:configure.ac:3292: -1- AC_SUBST([install_pp]) -m4trace:configure.ac:3345: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BALLOON_HELP]) -m4trace:configure.ac:3368: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +configure.ac:3282: the top level]) +m4trace:configure.ac:3283: -1- AC_CHECK_LIB([gdi32], [main], [with_msw=yes]) +m4trace:configure.ac:3285: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MS_WINDOWS]) +m4trace:configure.ac:3311: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:3311: the top level]) +m4trace:configure.ac:3311: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MSG_SELECT]) +m4trace:configure.ac:3315: -1- AC_SUBST([install_pp]) +m4trace:configure.ac:3372: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BALLOON_HELP]) +m4trace:configure.ac:3395: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3368: the top level]) -m4trace:configure.ac:3371: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WMCOMMAND]) -m4trace:configure.ac:3378: -1- AC_CHECK_LIB([Xau], [XauGetAuthByAddr], [:], [with_xauth=no]) -m4trace:configure.ac:3381: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XAUTH]) -m4trace:configure.ac:3384: -1- AC_SUBST([libs_xauth]) -m4trace:configure.ac:3388: -1- AC_SUBST([dnd_objs]) -m4trace:configure.ac:3400: -1- AC_SUBST([LIBSTDCPP]) -m4trace:configure.ac:3404: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +configure.ac:3395: the top level]) +m4trace:configure.ac:3398: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WMCOMMAND]) +m4trace:configure.ac:3405: -1- AC_CHECK_LIB([Xau], [XauGetAuthByAddr], [:], [with_xauth=no]) +m4trace:configure.ac:3408: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XAUTH]) +m4trace:configure.ac:3411: -1- AC_SUBST([libs_xauth]) +m4trace:configure.ac:3415: -1- AC_SUBST([dnd_objs]) +m4trace:configure.ac:3427: -1- AC_SUBST([LIBSTDCPP]) +m4trace:configure.ac:3431: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3404: the top level]) -m4trace:configure.ac:3409: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DYLD]) -m4trace:configure.ac:3425: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:3431: the top level]) +m4trace:configure.ac:3436: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DYLD]) +m4trace:configure.ac:3455: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... -configure.ac:3425: the top level]) -m4trace:configure.ac:3425: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:3455: the top level]) +m4trace:configure.ac:3455: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... -configure.ac:3425: the top level]) -m4trace:configure.ac:3425: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:3455: the top level]) +m4trace:configure.ac:3455: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... -configure.ac:3425: the top level]) -m4trace:configure.ac:3427: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLOPEN]) -m4trace:configure.ac:3438: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:3455: the top level]) +m4trace:configure.ac:3457: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLOPEN]) +m4trace:configure.ac:3470: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... -configure.ac:3438: the top level]) -m4trace:configure.ac:3438: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:3470: the top level]) +m4trace:configure.ac:3470: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/general.m4:2215: AC_LINK_IFELSE is expanded from... autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... -configure.ac:3438: the top level]) -m4trace:configure.ac:3440: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SHL_LOAD]) -m4trace:configure.ac:3448: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:3470: the top level]) +m4trace:configure.ac:3472: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SHL_LOAD]) +m4trace:configure.ac:3480: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... -configure.ac:3448: the top level]) -m4trace:configure.ac:3450: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LTDL]) -m4trace:configure.ac:3462: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +configure.ac:3480: the top level]) +m4trace:configure.ac:3483: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LTDL]) +m4trace:configure.ac:3495: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... aclocal.m4:628: XE_SHLIB_STUFF is expanded from... -configure.ac:3462: the top level]) -m4trace:configure.ac:3462: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +configure.ac:3495: the top level]) +m4trace:configure.ac:3495: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... aclocal.m4:628: XE_SHLIB_STUFF is expanded from... -configure.ac:3462: the top level]) -m4trace:configure.ac:3462: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. +configure.ac:3495: the top level]) +m4trace:configure.ac:3495: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from... aclocal.m4:628: XE_SHLIB_STUFF is expanded from... -configure.ac:3462: the top level]) -m4trace:configure.ac:3462: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:3495: the top level]) +m4trace:configure.ac:3495: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... aclocal.m4:628: XE_SHLIB_STUFF is expanded from... -configure.ac:3462: the top level]) -m4trace:configure.ac:3462: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. +configure.ac:3495: the top level]) +m4trace:configure.ac:3495: -1- _m4_warn([obsolete], [The macro `AC_FD_CC' is obsolete. You should run autoupdate.], [autoconf/general.m4:376: AC_FD_CC is expanded from... aclocal.m4:628: XE_SHLIB_STUFF is expanded from... -configure.ac:3462: the top level]) -m4trace:configure.ac:3462: -1- AC_SUBST([dll_ld]) -m4trace:configure.ac:3462: -1- AC_SUBST([dll_cflags]) -m4trace:configure.ac:3462: -1- AC_SUBST([dll_ldflags]) -m4trace:configure.ac:3462: -1- AC_SUBST([dll_post]) -m4trace:configure.ac:3462: -1- AC_SUBST([dll_ldo]) -m4trace:configure.ac:3462: -1- AC_SUBST([ld_dynamic_link_flags]) -m4trace:configure.ac:3466: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SHLIB]) -m4trace:configure.ac:3473: -1- AC_CHECK_FUNCS([dlerror _dlerror]) -m4trace:configure.ac:3473: -1- AH_OUTPUT([HAVE_DLERROR], [/* Define to 1 if you have the `dlerror\' function. */ +configure.ac:3495: the top level]) +m4trace:configure.ac:3495: -1- AC_SUBST([dll_ld]) +m4trace:configure.ac:3495: -1- AC_SUBST([dll_cflags]) +m4trace:configure.ac:3495: -1- AC_SUBST([dll_ldflags]) +m4trace:configure.ac:3495: -1- AC_SUBST([dll_post]) +m4trace:configure.ac:3495: -1- AC_SUBST([dll_ldo]) +m4trace:configure.ac:3495: -1- AC_SUBST([ld_dynamic_link_flags]) +m4trace:configure.ac:3499: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SHLIB]) +m4trace:configure.ac:3506: -1- AC_CHECK_FUNCS([dlerror _dlerror]) +m4trace:configure.ac:3506: -1- AH_OUTPUT([HAVE_DLERROR], [/* Define to 1 if you have the `dlerror\' function. */ #undef HAVE_DLERROR]) -m4trace:configure.ac:3473: -1- AH_OUTPUT([HAVE__DLERROR], [/* Define to 1 if you have the `_dlerror\' function. */ +m4trace:configure.ac:3506: -1- AH_OUTPUT([HAVE__DLERROR], [/* Define to 1 if you have the `_dlerror\' function. */ #undef HAVE__DLERROR]) -m4trace:configure.ac:3498: -1- AC_SUBST([with_modules], [$enable_modules]) -m4trace:configure.ac:3499: -1- AC_SUBST([MOD_CC]) -m4trace:configure.ac:3500: -1- AC_SUBST([MODARCHDIR]) -m4trace:configure.ac:3501: -1- AC_SUBST([MAKE_DOCFILE]) -m4trace:configure.ac:3502: -1- AC_SUBST([MODCFLAGS]) -m4trace:configure.ac:3503: -1- AC_SUBST([INSTALLPATH]) -m4trace:configure.ac:3504: -1- AC_SUBST([MOD_INSTALL_PROGRAM]) -m4trace:configure.ac:3505: -1- AC_SUBST([OBJECT_TO_BUILD]) -m4trace:configure.ac:3524: -1- AC_CHECK_LIB([tt], [tt_message_create], [tt_libs="-ltt $extra_libs"; break], [:], [$extra_libs]) -m4trace:configure.ac:3535: -1- AC_DEFINE_TRACE_LITERAL([TOOLTALK]) -m4trace:configure.ac:3536: -1- AC_DEFINE_TRACE_LITERAL([TT_C_H_FILE]) -m4trace:configure.ac:3542: -1- AC_CHECK_LIB([DtSvc], [DtDndDragStart], [:], [with_cde=no]) -m4trace:configure.ac:3545: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: --with-cde forced to \`no'; no generic Drag'n'Drop support], []) -m4trace:configure.ac:3545: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: --with-cde forced to \`no'; no generic Drag'n'Drop support], []) -m4trace:configure.ac:3551: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CDE]) -m4trace:configure.ac:3566: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: --with-offix forced to \`no'; no real Xmu support], []) -m4trace:configure.ac:3566: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: --with-offix forced to \`no'; no real Xmu support], []) -m4trace:configure.ac:3572: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: --with-offix forced to \`no'; no generic Drag'n'Drop support], []) -m4trace:configure.ac:3572: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: --with-offix forced to \`no'; no generic Drag'n'Drop support], []) -m4trace:configure.ac:3578: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: --with-offix forced to \`no'; CDE already found], []) -m4trace:configure.ac:3578: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: --with-offix forced to \`no'; CDE already found], []) -m4trace:configure.ac:3584: -1- AC_DEFINE_TRACE_LITERAL([HAVE_OFFIX_DND]) -m4trace:configure.ac:3599: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DRAGNDROP]) -m4trace:configure.ac:3608: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:3531: -1- AC_SUBST([with_modules], [$enable_modules]) +m4trace:configure.ac:3532: -1- AC_SUBST([MOD_CC]) +m4trace:configure.ac:3533: -1- AC_SUBST([MODARCHDIR]) +m4trace:configure.ac:3534: -1- AC_SUBST([MAKE_DOCFILE]) +m4trace:configure.ac:3535: -1- AC_SUBST([MODCFLAGS]) +m4trace:configure.ac:3536: -1- AC_SUBST([INSTALLPATH]) +m4trace:configure.ac:3537: -1- AC_SUBST([MOD_INSTALL_PROGRAM]) +m4trace:configure.ac:3538: -1- AC_SUBST([OBJECT_TO_BUILD]) +m4trace:configure.ac:3557: -1- AC_CHECK_LIB([tt], [tt_message_create], [tt_libs="-ltt $extra_libs"; break], [:], [$extra_libs]) +m4trace:configure.ac:3568: -1- AC_DEFINE_TRACE_LITERAL([TOOLTALK]) +m4trace:configure.ac:3569: -1- AC_DEFINE_TRACE_LITERAL([TT_C_H_FILE]) +m4trace:configure.ac:3575: -1- AC_CHECK_LIB([DtSvc], [DtDndDragStart], [:], [with_cde=no]) +m4trace:configure.ac:3578: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: --with-cde forced to \`no'; no generic Drag'n'Drop support], []) +m4trace:configure.ac:3578: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: --with-cde forced to \`no'; no generic Drag'n'Drop support], []) +m4trace:configure.ac:3584: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CDE]) +m4trace:configure.ac:3599: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: --with-offix forced to \`no'; no real Xmu support], []) +m4trace:configure.ac:3599: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: --with-offix forced to \`no'; no real Xmu support], []) +m4trace:configure.ac:3605: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: --with-offix forced to \`no'; no generic Drag'n'Drop support], []) +m4trace:configure.ac:3605: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: --with-offix forced to \`no'; no generic Drag'n'Drop support], []) +m4trace:configure.ac:3611: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: WARNING: --with-offix forced to \`no'; CDE already found], []) +m4trace:configure.ac:3611: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: WARNING: --with-offix forced to \`no'; CDE already found], []) +m4trace:configure.ac:3617: -1- AC_DEFINE_TRACE_LITERAL([HAVE_OFFIX_DND]) +m4trace:configure.ac:3632: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DRAGNDROP]) +m4trace:configure.ac:3641: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3608: the top level]) -m4trace:configure.ac:3613: -1- AC_CHECK_LIB([ldap], [ldap_search], [with_ldap=yes]) -m4trace:configure.ac:3615: -1- AC_CHECK_LIB([ldap], [ldap_open], [with_ldap=yes with_ldap_lber=yes], [], [-llber]) -m4trace:configure.ac:3616: -1- AC_CHECK_LIB([ldap], [ldap_open], [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes], [], [-llber -lkrb]) -m4trace:configure.ac:3617: -1- AC_CHECK_LIB([ldap], [ldap_open], [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes with_ldap_des=yes], [], [-llber -lkrb -ldes]) -m4trace:configure.ac:3624: -1- AC_CHECK_LIB([lber], [ber_pvt_opt_on], [with_ldap_lber=yes]) -m4trace:configure.ac:3627: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LDAP]) -m4trace:configure.ac:3639: -1- AC_CHECK_FUNCS([ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result]) -m4trace:configure.ac:3639: -1- AH_OUTPUT([HAVE_LDAP_SET_OPTION], [/* Define to 1 if you have the `ldap_set_option\' function. */ +configure.ac:3641: the top level]) +m4trace:configure.ac:3646: -1- AC_CHECK_LIB([ldap], [ldap_search], [with_ldap=yes]) +m4trace:configure.ac:3648: -1- AC_CHECK_LIB([ldap], [ldap_open], [with_ldap=yes with_ldap_lber=yes], [], [-llber]) +m4trace:configure.ac:3649: -1- AC_CHECK_LIB([ldap], [ldap_open], [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes], [], [-llber -lkrb]) +m4trace:configure.ac:3650: -1- AC_CHECK_LIB([ldap], [ldap_open], [with_ldap=yes with_ldap_lber=yes with_ldap_krb=yes with_ldap_des=yes], [], [-llber -lkrb -ldes]) +m4trace:configure.ac:3657: -1- AC_CHECK_LIB([lber], [ber_pvt_opt_on], [with_ldap_lber=yes]) +m4trace:configure.ac:3660: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LDAP]) +m4trace:configure.ac:3672: -1- AC_CHECK_FUNCS([ldap_set_option ldap_get_lderrno ldap_result2error ldap_parse_result]) +m4trace:configure.ac:3672: -1- AH_OUTPUT([HAVE_LDAP_SET_OPTION], [/* Define to 1 if you have the `ldap_set_option\' function. */ #undef HAVE_LDAP_SET_OPTION]) -m4trace:configure.ac:3639: -1- AH_OUTPUT([HAVE_LDAP_GET_LDERRNO], [/* Define to 1 if you have the `ldap_get_lderrno\' function. */ +m4trace:configure.ac:3672: -1- AH_OUTPUT([HAVE_LDAP_GET_LDERRNO], [/* Define to 1 if you have the `ldap_get_lderrno\' function. */ #undef HAVE_LDAP_GET_LDERRNO]) -m4trace:configure.ac:3639: -1- AH_OUTPUT([HAVE_LDAP_RESULT2ERROR], [/* Define to 1 if you have the `ldap_result2error\' function. */ +m4trace:configure.ac:3672: -1- AH_OUTPUT([HAVE_LDAP_RESULT2ERROR], [/* Define to 1 if you have the `ldap_result2error\' function. */ #undef HAVE_LDAP_RESULT2ERROR]) -m4trace:configure.ac:3639: -1- AH_OUTPUT([HAVE_LDAP_PARSE_RESULT], [/* Define to 1 if you have the `ldap_parse_result\' function. */ +m4trace:configure.ac:3672: -1- AH_OUTPUT([HAVE_LDAP_PARSE_RESULT], [/* Define to 1 if you have the `ldap_parse_result\' function. */ #undef HAVE_LDAP_PARSE_RESULT]) -m4trace:configure.ac:3647: -1- AC_SUBST([ldap_libs]) -m4trace:configure.ac:3658: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:3680: -1- AC_SUBST([ldap_libs]) +m4trace:configure.ac:3691: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3658: the top level]) -m4trace:configure.ac:3666: -1- AC_CHECK_LIB([pq], [PQconnectdb], [have_libpq=yes]) -m4trace:configure.ac:3670: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSTGRESQL]) -m4trace:configure.ac:3673: -1- AC_CHECK_LIB([pq], [PQconnectStart], [ +configure.ac:3691: the top level]) +m4trace:configure.ac:3699: -1- AC_CHECK_LIB([pq], [PQconnectdb], [have_libpq=yes]) +m4trace:configure.ac:3703: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSTGRESQL]) +m4trace:configure.ac:3706: -1- AC_CHECK_LIB([pq], [PQconnectStart], [ with_postgresqlv7=yes; AC_DEFINE(HAVE_POSTGRESQLV7)]) -m4trace:configure.ac:3673: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSTGRESQLV7]) -m4trace:configure.ac:3674: -1- AC_DEFINE_TRACE_LITERAL([LIBPQ_FE_H_FILE]) -m4trace:configure.ac:3685: -1- AC_SUBST([postgresql_libs]) -m4trace:configure.ac:3692: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:3706: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSTGRESQLV7]) +m4trace:configure.ac:3707: -1- AC_DEFINE_TRACE_LITERAL([LIBPQ_FE_H_FILE]) +m4trace:configure.ac:3718: -1- AC_SUBST([postgresql_libs]) +m4trace:configure.ac:3725: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3692: the top level]) -m4trace:configure.ac:3752: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:3752: the top level]) -m4trace:configure.ac:3760: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XPM]) -m4trace:configure.ac:3764: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: checking for \"FOR_MSW\" xpm], []) -m4trace:configure.ac:3764: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for \"FOR_MSW\" xpm... ], []) -m4trace:configure.ac:3768: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:3725: the top level]) +m4trace:configure.ac:3785: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:3785: the top level]) +m4trace:configure.ac:3793: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XPM]) +m4trace:configure.ac:3797: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: checking for \"FOR_MSW\" xpm], []) +m4trace:configure.ac:3797: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: checking for \"FOR_MSW\" xpm... ], []) +m4trace:configure.ac:3801: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -configure.ac:3768: the top level]) -m4trace:configure.ac:3772: -1- AC_DEFINE_TRACE_LITERAL([FOR_MSW]) -m4trace:configure.ac:3778: -1- AC_CHECK_LIB([compface], [UnGenFace], [: ], [with_xface=no]) -m4trace:configure.ac:3781: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XFACE]) -m4trace:configure.ac:3790: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GIF]) -m4trace:configure.ac:3798: -1- AC_CHECK_LIB([c], [inflate], [:], [ +configure.ac:3801: the top level]) +m4trace:configure.ac:3805: -1- AC_DEFINE_TRACE_LITERAL([FOR_MSW]) +m4trace:configure.ac:3811: -1- AC_CHECK_LIB([compface], [UnGenFace], [: ], [with_xface=no]) +m4trace:configure.ac:3814: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XFACE]) +m4trace:configure.ac:3823: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GIF]) +m4trace:configure.ac:3831: -1- AC_CHECK_LIB([c], [inflate], [:], [ AC_CHECK_LIB(z, inflate, [XE_PREPEND(-lz, libs_x)],[ AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])])]) -m4trace:configure.ac:3798: -1- AC_CHECK_LIB([z], [inflate], [XE_PREPEND(-lz, libs_x)], [ +m4trace:configure.ac:3831: -1- AC_CHECK_LIB([z], [inflate], [XE_PREPEND(-lz, libs_x)], [ AC_CHECK_LIB(gz, inflate, [XE_PREPEND(-lgz, libs_x)])]) -m4trace:configure.ac:3798: -1- AC_CHECK_LIB([gz], [inflate], [XE_PREPEND(-lgz, libs_x)]) -m4trace:configure.ac:3803: -1- AC_CHECK_LIB([jpeg], [jpeg_destroy_decompress], [:], [with_jpeg=no]) -m4trace:configure.ac:3806: -1- AC_DEFINE_TRACE_LITERAL([HAVE_JPEG]) -m4trace:configure.ac:3814: -1- AC_CHECK_LIB([png], [png_read_image], [:], [with_png=no]) -m4trace:configure.ac:3839: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:3839: the top level]) -m4trace:configure.ac:3844: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PNG]) -m4trace:configure.ac:3850: -1- AC_CHECK_LIB([tiff], [TIFFClientOpen], [:], [with_tiff=no]) -m4trace:configure.ac:3853: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIFF]) -m4trace:configure.ac:3865: -1- AC_CHECK_LIB([compface], [UnGenFace], [: ], [with_xface=no]) -m4trace:configure.ac:3868: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XFACE]) -m4trace:configure.ac:3879: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:3831: -1- AC_CHECK_LIB([gz], [inflate], [XE_PREPEND(-lgz, libs_x)]) +m4trace:configure.ac:3836: -1- AC_CHECK_LIB([jpeg], [jpeg_destroy_decompress], [:], [with_jpeg=no]) +m4trace:configure.ac:3839: -1- AC_DEFINE_TRACE_LITERAL([HAVE_JPEG]) +m4trace:configure.ac:3847: -1- AC_CHECK_LIB([png], [png_read_image], [:], [with_png=no], [-lz]) +m4trace:configure.ac:3872: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:3872: the top level]) +m4trace:configure.ac:3877: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PNG]) +m4trace:configure.ac:3883: -1- AC_CHECK_LIB([tiff], [TIFFClientOpen], [:], [with_tiff=no], [-lz]) +m4trace:configure.ac:3886: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TIFF]) +m4trace:configure.ac:3898: -1- AC_CHECK_LIB([compface], [UnGenFace], [: ], [with_xface=no]) +m4trace:configure.ac:3901: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XFACE]) +m4trace:configure.ac:3912: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3879: the top level]) -m4trace:configure.ac:3891: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +configure.ac:3912: the top level]) +m4trace:configure.ac:3924: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:3891: the top level]) -m4trace:configure.ac:3913: -1- AC_CHECK_LIB([$athena_variant], [XawScrollbarSetThumb], [ +configure.ac:3924: the top level]) +m4trace:configure.ac:3946: -1- AC_CHECK_LIB([$athena_variant], [XawScrollbarSetThumb], [ dnl Must not be a 3d library... AC_CHECK_LIB($athena_variant, threeDClassRec, [AC_MSG_WARN([Could not find a non-3d Athena widget library.])], athena_lib=$athena_variant) ], [{ echo "$as_me:$LINENO: WARNING: Could not find an Athena widget library." >&5 echo "$as_me: WARNING: Could not find an Athena widget library." >&2;}]) -m4trace:configure.ac:3913: -1- AC_CHECK_LIB([$athena_variant], [threeDClassRec], [AC_MSG_WARN([Could not find a non-3d Athena widget library.])], [athena_lib=$athena_variant]) -m4trace:configure.ac:3924: -2- AC_CHECK_LIB([Xaw], [threeDClassRec], [ +m4trace:configure.ac:3946: -1- AC_CHECK_LIB([$athena_variant], [threeDClassRec], [AC_MSG_WARN([Could not find a non-3d Athena widget library.])], [athena_lib=$athena_variant]) +m4trace:configure.ac:3957: -2- AC_CHECK_LIB([Xaw], [threeDClassRec], [ athena_lib=Xaw; AC_MSG_WARN([Assuming that libXaw is actually $athena_variant.]); ], [AC_MSG_WARN([Could not find a 3d Athena widget library that looked like $athena_variant.])]) -m4trace:configure.ac:3924: -1- AC_CHECK_LIB([$athena_variant], [threeDClassRec], [athena_lib=$athena_variant], [ echo "$as_me:$LINENO: checking for threeDClassRec in -lXaw" >&5 +m4trace:configure.ac:3957: -1- AC_CHECK_LIB([$athena_variant], [threeDClassRec], [athena_lib=$athena_variant], [ echo "$as_me:$LINENO: checking for threeDClassRec in -lXaw" >&5 echo $ECHO_N "checking for threeDClassRec in -lXaw... $ECHO_C" >&6 if test "${ac_cv_lib_Xaw_threeDClassRec+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1060,78 +1066,78 @@ echo "$as_me: WARNING: Could not find a 3d Athena widget library that looked like $athena_variant." >&2;} fi ]) -m4trace:configure.ac:4017: -1- AC_CHECK_LIB([Xm], [XmStringCreate], [have_motif=yes], [have_motif=no]) -m4trace:configure.ac:4076: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Scrollbar_h_]) -m4trace:configure.ac:4077: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Dialog_h_]) -m4trace:configure.ac:4078: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Form_h_]) -m4trace:configure.ac:4079: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Command_h_]) -m4trace:configure.ac:4080: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Label_h_]) -m4trace:configure.ac:4081: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_LabelP_h_]) -m4trace:configure.ac:4082: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Toggle_h_]) -m4trace:configure.ac:4083: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_ToggleP_h_]) -m4trace:configure.ac:4084: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_AsciiText_h_]) -m4trace:configure.ac:4085: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_XawInit_h_]) -m4trace:configure.ac:4087: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_USES_ATHENA]) -m4trace:configure.ac:4088: -1- AC_DEFINE_TRACE_LITERAL([NEED_ATHENA]) -m4trace:configure.ac:4092: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ATHENA_3D]) -m4trace:configure.ac:4098: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_USES_MOTIF]) -m4trace:configure.ac:4099: -1- AC_DEFINE_TRACE_LITERAL([NEED_MOTIF]) -m4trace:configure.ac:4113: -1- AC_DEFINE_TRACE_LITERAL([NEED_LUCID]) -m4trace:configure.ac:4117: -1- AC_SUBST([lwlib_objs]) -m4trace:configure.ac:4119: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_SCROLLBARS_ATHENA]) -m4trace:configure.ac:4120: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_DIALOGS_ATHENA]) -m4trace:configure.ac:4123: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_SCROLLBARS_ATHENA3D]) -m4trace:configure.ac:4124: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_DIALOGS_ATHENA3D]) -m4trace:configure.ac:4127: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_WIDGETS_ATHENA]) -m4trace:configure.ac:4129: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_TABS_LUCID]) -m4trace:configure.ac:4131: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MENUBARS]) -m4trace:configure.ac:4132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SCROLLBARS]) -m4trace:configure.ac:4133: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DIALOGS]) -m4trace:configure.ac:4134: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TOOLBARS]) -m4trace:configure.ac:4135: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WIDGETS]) -m4trace:configure.ac:4137: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_MENUBARS_LUCID]) -m4trace:configure.ac:4138: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_SCROLLBARS_LUCID]) -m4trace:configure.ac:4140: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_MENUBARS_MOTIF]) -m4trace:configure.ac:4141: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_SCROLLBARS_MOTIF]) -m4trace:configure.ac:4142: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_DIALOGS_MOTIF]) -m4trace:configure.ac:4143: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_WIDGETS_MOTIF]) -m4trace:configure.ac:4159: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEFAULT_EOL_DETECTION]) -m4trace:configure.ac:4163: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:4057: -1- AC_CHECK_LIB([Xm], [XmStringCreate], [have_motif=yes], [have_motif=no]) +m4trace:configure.ac:4116: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Scrollbar_h_]) +m4trace:configure.ac:4117: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Dialog_h_]) +m4trace:configure.ac:4118: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Form_h_]) +m4trace:configure.ac:4119: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Command_h_]) +m4trace:configure.ac:4120: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Label_h_]) +m4trace:configure.ac:4121: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_LabelP_h_]) +m4trace:configure.ac:4122: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_Toggle_h_]) +m4trace:configure.ac:4123: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_ToggleP_h_]) +m4trace:configure.ac:4124: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_AsciiText_h_]) +m4trace:configure.ac:4125: -1- AC_DEFINE_TRACE_LITERAL([ATHENA_XawInit_h_]) +m4trace:configure.ac:4127: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_USES_ATHENA]) +m4trace:configure.ac:4128: -1- AC_DEFINE_TRACE_LITERAL([NEED_ATHENA]) +m4trace:configure.ac:4132: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ATHENA_3D]) +m4trace:configure.ac:4138: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_USES_MOTIF]) +m4trace:configure.ac:4139: -1- AC_DEFINE_TRACE_LITERAL([NEED_MOTIF]) +m4trace:configure.ac:4153: -1- AC_DEFINE_TRACE_LITERAL([NEED_LUCID]) +m4trace:configure.ac:4157: -1- AC_SUBST([lwlib_objs]) +m4trace:configure.ac:4159: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_SCROLLBARS_ATHENA]) +m4trace:configure.ac:4160: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_DIALOGS_ATHENA]) +m4trace:configure.ac:4163: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_SCROLLBARS_ATHENA3D]) +m4trace:configure.ac:4164: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_DIALOGS_ATHENA3D]) +m4trace:configure.ac:4167: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_WIDGETS_ATHENA]) +m4trace:configure.ac:4169: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_TABS_LUCID]) +m4trace:configure.ac:4171: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MENUBARS]) +m4trace:configure.ac:4172: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SCROLLBARS]) +m4trace:configure.ac:4173: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DIALOGS]) +m4trace:configure.ac:4174: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TOOLBARS]) +m4trace:configure.ac:4175: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WIDGETS]) +m4trace:configure.ac:4177: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_MENUBARS_LUCID]) +m4trace:configure.ac:4178: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_SCROLLBARS_LUCID]) +m4trace:configure.ac:4180: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_MENUBARS_MOTIF]) +m4trace:configure.ac:4181: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_SCROLLBARS_MOTIF]) +m4trace:configure.ac:4182: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_DIALOGS_MOTIF]) +m4trace:configure.ac:4183: -1- AC_DEFINE_TRACE_LITERAL([LWLIB_WIDGETS_MOTIF]) +m4trace:configure.ac:4199: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEFAULT_EOL_DETECTION]) +m4trace:configure.ac:4203: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:4163: the top level]) -m4trace:configure.ac:4164: -1- AC_DEFINE_TRACE_LITERAL([MULE]) -m4trace:configure.ac:4167: -1- AC_CHECK_HEADERS([libintl.h]) -m4trace:configure.ac:4167: -1- AH_OUTPUT([HAVE_LIBINTL_H], [/* Define to 1 if you have the header file. */ +configure.ac:4203: the top level]) +m4trace:configure.ac:4204: -1- AC_DEFINE_TRACE_LITERAL([MULE]) +m4trace:configure.ac:4207: -1- AC_CHECK_HEADERS([libintl.h]) +m4trace:configure.ac:4207: -1- AH_OUTPUT([HAVE_LIBINTL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LIBINTL_H]) -m4trace:configure.ac:4168: -1- AC_CHECK_LIB([intl], [strerror]) -m4trace:configure.ac:4168: -1- AH_OUTPUT([HAVE_LIBINTL], [/* Define to 1 if you have the `intl\' library (-lintl). */ +m4trace:configure.ac:4208: -1- AC_CHECK_LIB([intl], [strerror]) +m4trace:configure.ac:4208: -1- AH_OUTPUT([HAVE_LIBINTL], [/* Define to 1 if you have the `intl\' library (-lintl). */ #undef HAVE_LIBINTL]) -m4trace:configure.ac:4168: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBINTL]) -m4trace:configure.ac:4170: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:4208: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBINTL]) +m4trace:configure.ac:4210: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:4170: the top level]) -m4trace:configure.ac:4175: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +configure.ac:4210: the top level]) +m4trace:configure.ac:4215: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:4175: the top level]) -m4trace:configure.ac:4176: -1- AC_CHECK_LIB([X11], [XOpenIM], [with_xim=xlib], [with_xim=no]) -m4trace:configure.ac:4179: -1- AC_CHECK_LIB([Xm], [XmImMbLookupString], [with_xim=motif]) -m4trace:configure.ac:4183: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XIM]) -m4trace:configure.ac:4185: -1- AC_DEFINE_TRACE_LITERAL([XIM_XLIB]) -m4trace:configure.ac:4189: -1- AC_DEFINE_TRACE_LITERAL([XIM_MOTIF]) -m4trace:configure.ac:4200: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +configure.ac:4215: the top level]) +m4trace:configure.ac:4216: -1- AC_CHECK_LIB([X11], [XOpenIM], [with_xim=xlib], [with_xim=no]) +m4trace:configure.ac:4219: -1- AC_CHECK_LIB([Xm], [XmImMbLookupString], [with_xim=motif]) +m4trace:configure.ac:4223: -1- AC_DEFINE_TRACE_LITERAL([HAVE_XIM]) +m4trace:configure.ac:4225: -1- AC_DEFINE_TRACE_LITERAL([XIM_XLIB]) +m4trace:configure.ac:4229: -1- AC_DEFINE_TRACE_LITERAL([XIM_MOTIF]) +m4trace:configure.ac:4240: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:4200: the top level]) -m4trace:configure.ac:4201: -1- AC_CHECK_LIB([X11], [XmbDrawString], [:], [with_xfs=no]) -m4trace:configure.ac:4203: -1- AC_DEFINE_TRACE_LITERAL([USE_XFONTSET]) -m4trace:configure.ac:4217: -1- AC_CHECK_FUNCS([crypt]) -m4trace:configure.ac:4217: -1- AH_OUTPUT([HAVE_CRYPT], [/* Define to 1 if you have the `crypt\' function. */ +configure.ac:4240: the top level]) +m4trace:configure.ac:4241: -1- AC_CHECK_LIB([X11], [XmbDrawString], [:], [with_xfs=no]) +m4trace:configure.ac:4243: -1- AC_DEFINE_TRACE_LITERAL([USE_XFONTSET]) +m4trace:configure.ac:4257: -1- AC_CHECK_FUNCS([crypt]) +m4trace:configure.ac:4257: -1- AH_OUTPUT([HAVE_CRYPT], [/* Define to 1 if you have the `crypt\' function. */ #undef HAVE_CRYPT]) -m4trace:configure.ac:4218: -1- AC_CHECK_LIB([crypt], [crypt]) -m4trace:configure.ac:4218: -1- AH_OUTPUT([HAVE_LIBCRYPT], [/* Define to 1 if you have the `crypt\' library (-lcrypt). */ +m4trace:configure.ac:4258: -1- AC_CHECK_LIB([crypt], [crypt]) +m4trace:configure.ac:4258: -1- AH_OUTPUT([HAVE_LIBCRYPT], [/* Define to 1 if you have the `crypt\' library (-lcrypt). */ #undef HAVE_LIBCRYPT]) -m4trace:configure.ac:4218: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBCRYPT]) -m4trace:configure.ac:4225: -4- AC_CHECK_LIB([wnn6_fromsrc], [dic_list_e], [libwnn=wnn6_fromsrc], [with_wnn=no]) -m4trace:configure.ac:4225: -3- AC_CHECK_LIB([wnn6], [jl_dic_list_e], [libwnn=wnn6], [echo "$as_me:$LINENO: checking for dic_list_e in -lwnn6_fromsrc" >&5 +m4trace:configure.ac:4258: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBCRYPT]) +m4trace:configure.ac:4265: -4- AC_CHECK_LIB([wnn6_fromsrc], [dic_list_e], [libwnn=wnn6_fromsrc], [with_wnn=no]) +m4trace:configure.ac:4265: -3- AC_CHECK_LIB([wnn6], [jl_dic_list_e], [libwnn=wnn6], [echo "$as_me:$LINENO: checking for dic_list_e in -lwnn6_fromsrc" >&5 echo $ECHO_N "checking for dic_list_e in -lwnn6_fromsrc... $ECHO_C" >&6 if test "${ac_cv_lib_wnn6_fromsrc_dic_list_e+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1200,7 +1206,7 @@ with_wnn=no fi ]) -m4trace:configure.ac:4225: -2- AC_CHECK_LIB([wnn4], [jl_dic_list_e], [libwnn=wnn4], [echo "$as_me:$LINENO: checking for jl_dic_list_e in -lwnn6" >&5 +m4trace:configure.ac:4265: -2- AC_CHECK_LIB([wnn4], [jl_dic_list_e], [libwnn=wnn4], [echo "$as_me:$LINENO: checking for jl_dic_list_e in -lwnn6" >&5 echo $ECHO_N "checking for jl_dic_list_e in -lwnn6... $ECHO_C" >&6 if test "${ac_cv_lib_wnn6_jl_dic_list_e+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1337,7 +1343,7 @@ fi ]) -m4trace:configure.ac:4225: -1- AC_CHECK_LIB([wnn], [jl_dic_list_e], [libwnn=wnn], [echo "$as_me:$LINENO: checking for jl_dic_list_e in -lwnn4" >&5 +m4trace:configure.ac:4265: -1- AC_CHECK_LIB([wnn], [jl_dic_list_e], [libwnn=wnn], [echo "$as_me:$LINENO: checking for jl_dic_list_e in -lwnn4" >&5 echo $ECHO_N "checking for jl_dic_list_e in -lwnn4... $ECHO_C" >&6 if test "${ac_cv_lib_wnn4_jl_dic_list_e+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1542,302 +1548,302 @@ fi ]) -m4trace:configure.ac:4229: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WNN]) -m4trace:configure.ac:4232: -1- AC_CHECK_LIB([$libwnn], [jl_fi_dic_list], [with_wnn6=yes]) -m4trace:configure.ac:4233: -1- AC_DEFINE_TRACE_LITERAL([WNN6]) -m4trace:configure.ac:4254: -1- AC_CHECK_LIB([RKC], [RkBgnBun], [:], [with_canna=no]) -m4trace:configure.ac:4255: -1- AC_CHECK_LIB([canna], [jrKanjiControl], [:], [with_canna=no]) -m4trace:configure.ac:4258: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CANNA]) -m4trace:configure.ac:4276: -1- AC_CHECK_LIB([i18n], [layout_object_getvalue], [XE_PREPEND(-li18n, libs_x)]) -m4trace:configure.ac:4284: -1- AC_CHECK_FUNCS([cbrt closedir dup2 eaccess fmod fpathconf frexp fsync ftime ftruncate getaddrinfo gethostname getnameinfo getpagesize getrlimit gettimeofday getcwd link logb lrand48 matherr mkdir mktime perror poll random readlink rename res_init rint rmdir select setitimer setpgid setsid sigblock sighold sigprocmask snprintf strerror strlwr strupr symlink tzset ulimit umask usleep vlimit vsnprintf waitpid wcscmp wcslen]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_CBRT], [/* Define to 1 if you have the `cbrt\' function. */ +m4trace:configure.ac:4269: -1- AC_DEFINE_TRACE_LITERAL([HAVE_WNN]) +m4trace:configure.ac:4272: -1- AC_CHECK_LIB([$libwnn], [jl_fi_dic_list], [with_wnn6=yes]) +m4trace:configure.ac:4273: -1- AC_DEFINE_TRACE_LITERAL([WNN6]) +m4trace:configure.ac:4294: -1- AC_CHECK_LIB([RKC], [RkBgnBun], [:], [with_canna=no]) +m4trace:configure.ac:4295: -1- AC_CHECK_LIB([canna], [jrKanjiControl], [:], [with_canna=no]) +m4trace:configure.ac:4298: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CANNA]) +m4trace:configure.ac:4316: -1- AC_CHECK_LIB([i18n], [layout_object_getvalue], [XE_PREPEND(-li18n, libs_x)]) +m4trace:configure.ac:4324: -1- AC_CHECK_FUNCS([cbrt closedir dup2 eaccess fmod fpathconf frexp fsync ftime ftruncate getaddrinfo gethostname getnameinfo getpagesize getrlimit gettimeofday getcwd link logb lrand48 matherr mkdir mktime perror poll random readlink rename res_init rint rmdir select setitimer setpgid setsid sigblock sighold sigprocmask snprintf strerror strlwr strupr symlink tzset ulimit umask usleep vlimit vsnprintf waitpid wcscmp wcslen]) +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_CBRT], [/* Define to 1 if you have the `cbrt\' function. */ #undef HAVE_CBRT]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_CLOSEDIR], [/* Define to 1 if you have the `closedir\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_CLOSEDIR], [/* Define to 1 if you have the `closedir\' function. */ #undef HAVE_CLOSEDIR]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_DUP2], [/* Define to 1 if you have the `dup2\' function. */ #undef HAVE_DUP2]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_EACCESS], [/* Define to 1 if you have the `eaccess\' function. */ #undef HAVE_EACCESS]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_FMOD], [/* Define to 1 if you have the `fmod\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_FMOD], [/* Define to 1 if you have the `fmod\' function. */ #undef HAVE_FMOD]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_FPATHCONF], [/* Define to 1 if you have the `fpathconf\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_FPATHCONF], [/* Define to 1 if you have the `fpathconf\' function. */ #undef HAVE_FPATHCONF]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_FREXP], [/* Define to 1 if you have the `frexp\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_FREXP], [/* Define to 1 if you have the `frexp\' function. */ #undef HAVE_FREXP]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_FSYNC], [/* Define to 1 if you have the `fsync\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_FSYNC], [/* Define to 1 if you have the `fsync\' function. */ #undef HAVE_FSYNC]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_FTIME], [/* Define to 1 if you have the `ftime\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_FTIME], [/* Define to 1 if you have the `ftime\' function. */ #undef HAVE_FTIME]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_FTRUNCATE], [/* Define to 1 if you have the `ftruncate\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_FTRUNCATE], [/* Define to 1 if you have the `ftruncate\' function. */ #undef HAVE_FTRUNCATE]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_GETADDRINFO], [/* Define to 1 if you have the `getaddrinfo\' function. */ #undef HAVE_GETADDRINFO]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_GETHOSTNAME], [/* Define to 1 if you have the `gethostname\' function. */ #undef HAVE_GETHOSTNAME]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_GETNAMEINFO], [/* Define to 1 if you have the `getnameinfo\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_GETNAMEINFO], [/* Define to 1 if you have the `getnameinfo\' function. */ #undef HAVE_GETNAMEINFO]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */ #undef HAVE_GETPAGESIZE]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_GETRLIMIT], [/* Define to 1 if you have the `getrlimit\' function. */ #undef HAVE_GETRLIMIT]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_GETTIMEOFDAY], [/* Define to 1 if you have the `gettimeofday\' function. */ #undef HAVE_GETTIMEOFDAY]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_GETCWD], [/* Define to 1 if you have the `getcwd\' function. */ #undef HAVE_GETCWD]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_LINK], [/* Define to 1 if you have the `link\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_LINK], [/* Define to 1 if you have the `link\' function. */ #undef HAVE_LINK]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_LOGB], [/* Define to 1 if you have the `logb\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_LOGB], [/* Define to 1 if you have the `logb\' function. */ #undef HAVE_LOGB]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_LRAND48], [/* Define to 1 if you have the `lrand48\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_LRAND48], [/* Define to 1 if you have the `lrand48\' function. */ #undef HAVE_LRAND48]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_MATHERR], [/* Define to 1 if you have the `matherr\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_MATHERR], [/* Define to 1 if you have the `matherr\' function. */ #undef HAVE_MATHERR]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_MKDIR], [/* Define to 1 if you have the `mkdir\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_MKDIR], [/* Define to 1 if you have the `mkdir\' function. */ #undef HAVE_MKDIR]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_MKTIME], [/* Define to 1 if you have the `mktime\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_MKTIME], [/* Define to 1 if you have the `mktime\' function. */ #undef HAVE_MKTIME]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_PERROR], [/* Define to 1 if you have the `perror\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_PERROR], [/* Define to 1 if you have the `perror\' function. */ #undef HAVE_PERROR]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_POLL], [/* Define to 1 if you have the `poll\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_POLL], [/* Define to 1 if you have the `poll\' function. */ #undef HAVE_POLL]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_RANDOM], [/* Define to 1 if you have the `random\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_RANDOM], [/* Define to 1 if you have the `random\' function. */ #undef HAVE_RANDOM]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_READLINK], [/* Define to 1 if you have the `readlink\' function. */ #undef HAVE_READLINK]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_RENAME], [/* Define to 1 if you have the `rename\' function. */ #undef HAVE_RENAME]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_RES_INIT], [/* Define to 1 if you have the `res_init\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_RES_INIT], [/* Define to 1 if you have the `res_init\' function. */ #undef HAVE_RES_INIT]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_RINT], [/* Define to 1 if you have the `rint\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_RINT], [/* Define to 1 if you have the `rint\' function. */ #undef HAVE_RINT]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_RMDIR], [/* Define to 1 if you have the `rmdir\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_RMDIR], [/* Define to 1 if you have the `rmdir\' function. */ #undef HAVE_RMDIR]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SELECT], [/* Define to 1 if you have the `select\' function. */ #undef HAVE_SELECT]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SETITIMER], [/* Define to 1 if you have the `setitimer\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SETITIMER], [/* Define to 1 if you have the `setitimer\' function. */ #undef HAVE_SETITIMER]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SETPGID], [/* Define to 1 if you have the `setpgid\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SETPGID], [/* Define to 1 if you have the `setpgid\' function. */ #undef HAVE_SETPGID]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SETSID], [/* Define to 1 if you have the `setsid\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SETSID], [/* Define to 1 if you have the `setsid\' function. */ #undef HAVE_SETSID]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SIGBLOCK], [/* Define to 1 if you have the `sigblock\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SIGBLOCK], [/* Define to 1 if you have the `sigblock\' function. */ #undef HAVE_SIGBLOCK]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SIGHOLD], [/* Define to 1 if you have the `sighold\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SIGHOLD], [/* Define to 1 if you have the `sighold\' function. */ #undef HAVE_SIGHOLD]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SIGPROCMASK], [/* Define to 1 if you have the `sigprocmask\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SIGPROCMASK], [/* Define to 1 if you have the `sigprocmask\' function. */ #undef HAVE_SIGPROCMASK]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */ #undef HAVE_SNPRINTF]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */ #undef HAVE_STRERROR]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_STRLWR], [/* Define to 1 if you have the `strlwr\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_STRLWR], [/* Define to 1 if you have the `strlwr\' function. */ #undef HAVE_STRLWR]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_STRUPR], [/* Define to 1 if you have the `strupr\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_STRUPR], [/* Define to 1 if you have the `strupr\' function. */ #undef HAVE_STRUPR]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_SYMLINK], [/* Define to 1 if you have the `symlink\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_SYMLINK], [/* Define to 1 if you have the `symlink\' function. */ #undef HAVE_SYMLINK]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_TZSET], [/* Define to 1 if you have the `tzset\' function. */ #undef HAVE_TZSET]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_ULIMIT], [/* Define to 1 if you have the `ulimit\' function. */ #undef HAVE_ULIMIT]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_UMASK], [/* Define to 1 if you have the `umask\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_UMASK], [/* Define to 1 if you have the `umask\' function. */ #undef HAVE_UMASK]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_USLEEP], [/* Define to 1 if you have the `usleep\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_USLEEP], [/* Define to 1 if you have the `usleep\' function. */ #undef HAVE_USLEEP]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_VLIMIT], [/* Define to 1 if you have the `vlimit\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_VLIMIT], [/* Define to 1 if you have the `vlimit\' function. */ #undef HAVE_VLIMIT]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */ #undef HAVE_VSNPRINTF]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_WAITPID], [/* Define to 1 if you have the `waitpid\' function. */ #undef HAVE_WAITPID]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_WCSCMP], [/* Define to 1 if you have the `wcscmp\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_WCSCMP], [/* Define to 1 if you have the `wcscmp\' function. */ #undef HAVE_WCSCMP]) -m4trace:configure.ac:4284: -1- AH_OUTPUT([HAVE_WCSLEN], [/* Define to 1 if you have the `wcslen\' function. */ +m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_WCSLEN], [/* Define to 1 if you have the `wcslen\' function. */ #undef HAVE_WCSLEN]) -m4trace:configure.ac:4304: -1- AC_CHECK_FUNCS([getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp]) -m4trace:configure.ac:4304: -1- AH_OUTPUT([HAVE_GETPT], [/* Define to 1 if you have the `getpt\' function. */ +m4trace:configure.ac:4344: -1- AC_CHECK_FUNCS([getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp]) +m4trace:configure.ac:4344: -1- AH_OUTPUT([HAVE_GETPT], [/* Define to 1 if you have the `getpt\' function. */ #undef HAVE_GETPT]) -m4trace:configure.ac:4304: -1- AH_OUTPUT([HAVE__GETPTY], [/* Define to 1 if you have the `_getpty\' function. */ +m4trace:configure.ac:4344: -1- AH_OUTPUT([HAVE__GETPTY], [/* Define to 1 if you have the `_getpty\' function. */ #undef HAVE__GETPTY]) -m4trace:configure.ac:4304: -1- AH_OUTPUT([HAVE_GRANTPT], [/* Define to 1 if you have the `grantpt\' function. */ +m4trace:configure.ac:4344: -1- AH_OUTPUT([HAVE_GRANTPT], [/* Define to 1 if you have the `grantpt\' function. */ #undef HAVE_GRANTPT]) -m4trace:configure.ac:4304: -1- AH_OUTPUT([HAVE_UNLOCKPT], [/* Define to 1 if you have the `unlockpt\' function. */ +m4trace:configure.ac:4344: -1- AH_OUTPUT([HAVE_UNLOCKPT], [/* Define to 1 if you have the `unlockpt\' function. */ #undef HAVE_UNLOCKPT]) -m4trace:configure.ac:4304: -1- AH_OUTPUT([HAVE_PTSNAME], [/* Define to 1 if you have the `ptsname\' function. */ +m4trace:configure.ac:4344: -1- AH_OUTPUT([HAVE_PTSNAME], [/* Define to 1 if you have the `ptsname\' function. */ #undef HAVE_PTSNAME]) -m4trace:configure.ac:4304: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */ +m4trace:configure.ac:4344: -1- AH_OUTPUT([HAVE_KILLPG], [/* Define to 1 if you have the `killpg\' function. */ #undef HAVE_KILLPG]) -m4trace:configure.ac:4304: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */ +m4trace:configure.ac:4344: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */ #undef HAVE_TCGETPGRP]) -m4trace:configure.ac:4312: -1- AC_CHECK_LIB([util], [openpty], [have_openpty=yes need_libutil=yes]) -m4trace:configure.ac:4314: -1- AC_DEFINE_TRACE_LITERAL([HAVE_OPENPTY]) -m4trace:configure.ac:4315: -1- AC_CHECK_HEADERS([libutil.h util.h], [break]) -m4trace:configure.ac:4315: -1- AH_OUTPUT([HAVE_LIBUTIL_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4352: -1- AC_CHECK_LIB([util], [openpty], [have_openpty=yes need_libutil=yes]) +m4trace:configure.ac:4354: -1- AC_DEFINE_TRACE_LITERAL([HAVE_OPENPTY]) +m4trace:configure.ac:4355: -1- AC_CHECK_HEADERS([libutil.h util.h], [break]) +m4trace:configure.ac:4355: -1- AH_OUTPUT([HAVE_LIBUTIL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_LIBUTIL_H]) -m4trace:configure.ac:4315: -1- AH_OUTPUT([HAVE_UTIL_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4355: -1- AH_OUTPUT([HAVE_UTIL_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UTIL_H]) -m4trace:configure.ac:4323: -1- AC_CHECK_HEADERS([sys/ptyio.h]) -m4trace:configure.ac:4323: -1- AH_OUTPUT([HAVE_SYS_PTYIO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4363: -1- AC_CHECK_HEADERS([sys/ptyio.h]) +m4trace:configure.ac:4363: -1- AH_OUTPUT([HAVE_SYS_PTYIO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PTYIO_H]) -m4trace:configure.ac:4324: -1- AC_CHECK_HEADERS([pty.h]) -m4trace:configure.ac:4324: -1- AH_OUTPUT([HAVE_PTY_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4364: -1- AC_CHECK_HEADERS([pty.h]) +m4trace:configure.ac:4364: -1- AH_OUTPUT([HAVE_PTY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_PTY_H]) -m4trace:configure.ac:4325: -1- AC_CHECK_HEADERS([sys/pty.h]) -m4trace:configure.ac:4325: -1- AH_OUTPUT([HAVE_SYS_PTY_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4365: -1- AC_CHECK_HEADERS([sys/pty.h]) +m4trace:configure.ac:4365: -1- AH_OUTPUT([HAVE_SYS_PTY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_PTY_H]) -m4trace:configure.ac:4331: -1- AC_CHECK_HEADERS([stropts.h]) -m4trace:configure.ac:4331: -1- AH_OUTPUT([HAVE_STROPTS_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4371: -1- AC_CHECK_HEADERS([stropts.h]) +m4trace:configure.ac:4371: -1- AH_OUTPUT([HAVE_STROPTS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STROPTS_H]) -m4trace:configure.ac:4333: -1- AC_CHECK_FUNCS([isastream]) -m4trace:configure.ac:4333: -1- AH_OUTPUT([HAVE_ISASTREAM], [/* Define to 1 if you have the `isastream\' function. */ +m4trace:configure.ac:4373: -1- AC_CHECK_FUNCS([isastream]) +m4trace:configure.ac:4373: -1- AH_OUTPUT([HAVE_ISASTREAM], [/* Define to 1 if you have the `isastream\' function. */ #undef HAVE_ISASTREAM]) -m4trace:configure.ac:4334: -1- AC_CHECK_HEADERS([strtio.h]) -m4trace:configure.ac:4334: -1- AH_OUTPUT([HAVE_STRTIO_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4374: -1- AC_CHECK_HEADERS([strtio.h]) +m4trace:configure.ac:4374: -1- AH_OUTPUT([HAVE_STRTIO_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRTIO_H]) -m4trace:configure.ac:4338: -1- AC_CHECK_FUNCS([getloadavg]) -m4trace:configure.ac:4338: -1- AH_OUTPUT([HAVE_GETLOADAVG], [/* Define to 1 if you have the `getloadavg\' function. */ +m4trace:configure.ac:4378: -1- AC_CHECK_FUNCS([getloadavg]) +m4trace:configure.ac:4378: -1- AH_OUTPUT([HAVE_GETLOADAVG], [/* Define to 1 if you have the `getloadavg\' function. */ #undef HAVE_GETLOADAVG]) -m4trace:configure.ac:4344: -1- AC_CHECK_HEADERS([sys/loadavg.h]) -m4trace:configure.ac:4344: -1- AH_OUTPUT([HAVE_SYS_LOADAVG_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4384: -1- AC_CHECK_HEADERS([sys/loadavg.h]) +m4trace:configure.ac:4384: -1- AH_OUTPUT([HAVE_SYS_LOADAVG_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_LOADAVG_H]) -m4trace:configure.ac:4350: -1- AC_CHECK_LIB([kstat], [kstat_open]) -m4trace:configure.ac:4350: -1- AH_OUTPUT([HAVE_LIBKSTAT], [/* Define to 1 if you have the `kstat\' library (-lkstat). */ +m4trace:configure.ac:4390: -1- AC_CHECK_LIB([kstat], [kstat_open]) +m4trace:configure.ac:4390: -1- AH_OUTPUT([HAVE_LIBKSTAT], [/* Define to 1 if you have the `kstat\' library (-lkstat). */ #undef HAVE_LIBKSTAT]) -m4trace:configure.ac:4350: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKSTAT]) -m4trace:configure.ac:4351: -1- AC_CHECK_HEADERS([kstat.h]) -m4trace:configure.ac:4351: -1- AH_OUTPUT([HAVE_KSTAT_H], [/* Define to 1 if you have the header file. */ +m4trace:configure.ac:4390: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKSTAT]) +m4trace:configure.ac:4391: -1- AC_CHECK_HEADERS([kstat.h]) +m4trace:configure.ac:4391: -1- AH_OUTPUT([HAVE_KSTAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_KSTAT_H]) -m4trace:configure.ac:4354: -1- AC_CHECK_LIB([kvm], [kvm_read]) -m4trace:configure.ac:4354: -1- AH_OUTPUT([HAVE_LIBKVM], [/* Define to 1 if you have the `kvm\' library (-lkvm). */ +m4trace:configure.ac:4394: -1- AC_CHECK_LIB([kvm], [kvm_read]) +m4trace:configure.ac:4394: -1- AH_OUTPUT([HAVE_LIBKVM], [/* Define to 1 if you have the `kvm\' library (-lkvm). */ #undef HAVE_LIBKVM]) -m4trace:configure.ac:4354: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKVM]) -m4trace:configure.ac:4363: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +m4trace:configure.ac:4394: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBKVM]) +m4trace:configure.ac:4403: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -configure.ac:4363: the top level]) -m4trace:configure.ac:4363: -1- AC_DEFINE_TRACE_LITERAL([HAVE_H_ERRNO]) -m4trace:configure.ac:4370: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +configure.ac:4403: the top level]) +m4trace:configure.ac:4403: -1- AC_DEFINE_TRACE_LITERAL([HAVE_H_ERRNO]) +m4trace:configure.ac:4410: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:4370: the top level]) -m4trace:configure.ac:4370: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGSETJMP]) -m4trace:configure.ac:4416: -1- AC_DEFINE_TRACE_LITERAL([LOCALTIME_CACHE]) -m4trace:configure.ac:4439: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:4410: the top level]) +m4trace:configure.ac:4410: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SIGSETJMP]) +m4trace:configure.ac:4456: -1- AC_DEFINE_TRACE_LITERAL([LOCALTIME_CACHE]) +m4trace:configure.ac:4479: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... -configure.ac:4439: the top level]) -m4trace:configure.ac:4439: -1- AC_DEFINE_TRACE_LITERAL([GETTIMEOFDAY_ONE_ARGUMENT]) -m4trace:configure.ac:4443: -1- AC_C_INLINE -m4trace:configure.ac:4443: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler +configure.ac:4479: the top level]) +m4trace:configure.ac:4479: -1- AC_DEFINE_TRACE_LITERAL([GETTIMEOFDAY_ONE_ARGUMENT]) +m4trace:configure.ac:4483: -1- AC_C_INLINE +m4trace:configure.ac:4483: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler calls it, or to nothing if \'inline\' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif]) -m4trace:configure.ac:4450: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:4490: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:4450: the top level]) -m4trace:configure.ac:4450: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +configure.ac:4490: the top level]) +m4trace:configure.ac:4490: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... autoconf/general.m4:2173: AC_COMPILE_IFELSE is expanded from... autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:4450: the top level]) -m4trace:configure.ac:4453: -1- AC_DEFINE_TRACE_LITERAL([TYPEOF]) -m4trace:configure.ac:4463: -1- AC_FUNC_ALLOCA -m4trace:configure.ac:4463: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) -m4trace:configure.ac:4463: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). +configure.ac:4490: the top level]) +m4trace:configure.ac:4493: -1- AC_DEFINE_TRACE_LITERAL([TYPEOF]) +m4trace:configure.ac:4503: -1- AC_FUNC_ALLOCA +m4trace:configure.ac:4503: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA_H]) +m4trace:configure.ac:4503: -1- AH_OUTPUT([HAVE_ALLOCA_H], [/* Define to 1 if you have and it should be used (not on Ultrix). */ #undef HAVE_ALLOCA_H]) -m4trace:configure.ac:4463: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) -m4trace:configure.ac:4463: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ +m4trace:configure.ac:4503: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ALLOCA]) +m4trace:configure.ac:4503: -1- AH_OUTPUT([HAVE_ALLOCA], [/* Define to 1 if you have `alloca\', as a function or macro. */ #undef HAVE_ALLOCA]) -m4trace:configure.ac:4463: -1- AC_LIBSOURCE([alloca.c]) -m4trace:configure.ac:4463: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) -m4trace:configure.ac:4463: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) -m4trace:configure.ac:4463: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ +m4trace:configure.ac:4503: -1- AC_LIBSOURCE([alloca.c]) +m4trace:configure.ac:4503: -1- AC_SUBST([ALLOCA], [alloca.$ac_objext]) +m4trace:configure.ac:4503: -1- AC_DEFINE_TRACE_LITERAL([C_ALLOCA]) +m4trace:configure.ac:4503: -1- AH_OUTPUT([C_ALLOCA], [/* Define to 1 if using `alloca.c\'. */ #undef C_ALLOCA]) -m4trace:configure.ac:4463: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) -m4trace:configure.ac:4463: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP +m4trace:configure.ac:4503: -1- AC_DEFINE_TRACE_LITERAL([CRAY_STACKSEG_END]) +m4trace:configure.ac:4503: -1- AH_OUTPUT([CRAY_STACKSEG_END], [/* Define to one of `_getb67\', `GETB67\', `getb67\' for Cray-2 and Cray-YMP systems. This function is required for `alloca.c\' support on those systems. */ #undef CRAY_STACKSEG_END]) -m4trace:configure.ac:4463: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the +m4trace:configure.ac:4503: -1- AH_OUTPUT([STACK_DIRECTION], [/* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. STACK_DIRECTION > 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward lower addresses STACK_DIRECTION = 0 => direction of growth unknown */ @%:@undef STACK_DIRECTION]) -m4trace:configure.ac:4463: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) -m4trace:configure.ac:4517: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:4517: the top level]) -m4trace:configure.ac:4520: -1- AC_DEFINE_TRACE_LITERAL([BROKEN_ALLOCA_IN_FUNCTION_CALLS]) -m4trace:configure.ac:4534: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:4534: the top level]) -m4trace:configure.ac:4537: -1- AC_DEFINE_TRACE_LITERAL([CYGWIN_SCANF_BUG]) -m4trace:configure.ac:4541: -1- AC_FUNC_STRCOLL -m4trace:configure.ac:4541: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) -m4trace:configure.ac:4541: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined. +m4trace:configure.ac:4503: -1- AC_DEFINE_TRACE_LITERAL([STACK_DIRECTION]) +m4trace:configure.ac:4557: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:4557: the top level]) +m4trace:configure.ac:4560: -1- AC_DEFINE_TRACE_LITERAL([BROKEN_ALLOCA_IN_FUNCTION_CALLS]) +m4trace:configure.ac:4574: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:4574: the top level]) +m4trace:configure.ac:4577: -1- AC_DEFINE_TRACE_LITERAL([CYGWIN_SCANF_BUG]) +m4trace:configure.ac:4581: -1- AC_FUNC_STRCOLL +m4trace:configure.ac:4581: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRCOLL]) +m4trace:configure.ac:4581: -1- AH_OUTPUT([HAVE_STRCOLL], [/* Define to 1 if you have the `strcoll\' function and it is properly defined. */ #undef HAVE_STRCOLL]) -m4trace:configure.ac:4546: -1- AC_CHECK_FUNCS([getpgrp]) -m4trace:configure.ac:4546: -1- AH_OUTPUT([HAVE_GETPGRP], [/* Define to 1 if you have the `getpgrp\' function. */ +m4trace:configure.ac:4586: -1- AC_CHECK_FUNCS([getpgrp]) +m4trace:configure.ac:4586: -1- AH_OUTPUT([HAVE_GETPGRP], [/* Define to 1 if you have the `getpgrp\' function. */ #undef HAVE_GETPGRP]) -m4trace:configure.ac:4547: -1- AC_FUNC_GETPGRP -m4trace:configure.ac:4547: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID]) -m4trace:configure.ac:4547: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */ +m4trace:configure.ac:4587: -1- AC_FUNC_GETPGRP +m4trace:configure.ac:4587: -1- AC_DEFINE_TRACE_LITERAL([GETPGRP_VOID]) +m4trace:configure.ac:4587: -1- AH_OUTPUT([GETPGRP_VOID], [/* Define to 1 if the `getpgrp\' function requires zero arguments. */ #undef GETPGRP_VOID]) -m4trace:configure.ac:4582: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:4582: the top level]) -m4trace:configure.ac:4585: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) -m4trace:configure.ac:4603: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:4622: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:4622: the top level]) +m4trace:configure.ac:4625: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP]) +m4trace:configure.ac:4643: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:4603: the top level]) -m4trace:configure.ac:4608: -1- AC_DEFINE_TRACE_LITERAL([REL_ALLOC]) -m4trace:configure.ac:4613: -2- AC_DEFINE_TRACE_LITERAL([HAVE_TERMIOS]) -m4trace:configure.ac:4614: -2- AC_DEFINE_TRACE_LITERAL([SIGNALS_VIA_CHARACTERS]) -m4trace:configure.ac:4615: -2- AC_DEFINE_TRACE_LITERAL([NO_TERMIO]) -m4trace:configure.ac:4616: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TERMIO]) -m4trace:configure.ac:4640: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKETS]) -m4trace:configure.ac:4640: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:4643: the top level]) +m4trace:configure.ac:4648: -1- AC_DEFINE_TRACE_LITERAL([REL_ALLOC]) +m4trace:configure.ac:4653: -2- AC_DEFINE_TRACE_LITERAL([HAVE_TERMIOS]) +m4trace:configure.ac:4654: -2- AC_DEFINE_TRACE_LITERAL([SIGNALS_VIA_CHARACTERS]) +m4trace:configure.ac:4655: -2- AC_DEFINE_TRACE_LITERAL([NO_TERMIO]) +m4trace:configure.ac:4656: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TERMIO]) +m4trace:configure.ac:4680: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKETS]) +m4trace:configure.ac:4680: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... autoconf/functions.m4:74: AC_CHECK_FUNC is expanded from... -configure.ac:4640: the top level]) -m4trace:configure.ac:4640: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKADDR_SUN_LEN]) -m4trace:configure.ac:4640: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +configure.ac:4680: the top level]) +m4trace:configure.ac:4680: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKADDR_SUN_LEN]) +m4trace:configure.ac:4680: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. You should run autoupdate.], [autoconf/general.m4:2223: AC_TRY_LINK is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... autoconf/headers.m4:91: AC_CHECK_HEADER is expanded from... autoconf/functions.m4:74: AC_CHECK_FUNC is expanded from... -configure.ac:4640: the top level]) -m4trace:configure.ac:4640: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MULTICAST]) -m4trace:configure.ac:4646: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYSVIPC]) -m4trace:configure.ac:4650: -1- AC_DEFINE_TRACE_LITERAL([SYSV_SYSTEM_DIR]) -m4trace:configure.ac:4650: -1- AC_DEFINE_TRACE_LITERAL([NONSYSTEM_DIR_LIBRARY]) -m4trace:configure.ac:4653: -2- AC_DEFINE_TRACE_LITERAL([NLIST_STRUCT]) -m4trace:configure.ac:4658: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +configure.ac:4680: the top level]) +m4trace:configure.ac:4680: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MULTICAST]) +m4trace:configure.ac:4686: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SYSVIPC]) +m4trace:configure.ac:4690: -1- AC_DEFINE_TRACE_LITERAL([SYSV_SYSTEM_DIR]) +m4trace:configure.ac:4690: -1- AC_DEFINE_TRACE_LITERAL([NONSYSTEM_DIR_LIBRARY]) +m4trace:configure.ac:4693: -2- AC_DEFINE_TRACE_LITERAL([NLIST_STRUCT]) +m4trace:configure.ac:4698: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:4658: the top level]) -m4trace:configure.ac:4698: -1- AC_CHECK_LIB([audio], [ALopenport], [with_native_sound_lib="-laudio"]) -m4trace:configure.ac:4706: -1- AC_CHECK_LIB([Alib], [AOpenAudio], [with_native_sound_lib="-lAlib"]) -m4trace:configure.ac:4745: -1- AC_CHECK_LIB([ossaudio], [_oss_ioctl], [native_sound_lib=-lossaudio +configure.ac:4698: the top level]) +m4trace:configure.ac:4738: -1- AC_CHECK_LIB([audio], [ALopenport], [with_native_sound_lib="-laudio"]) +m4trace:configure.ac:4746: -1- AC_CHECK_LIB([Alib], [AOpenAudio], [with_native_sound_lib="-lAlib"]) +m4trace:configure.ac:4791: -1- AC_CHECK_LIB([ossaudio], [_oss_ioctl], [with_native_sound_lib=-lossaudio AC_MSG_WARN([Using NetBSD-deprecated -lossaudio])], [sound_found=no]) -m4trace:configure.ac:4751: -1- AC_DEFINE_TRACE_LITERAL([SOUNDCARD_H_FILE]) -m4trace:configure.ac:4766: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NATIVE_SOUND]) -m4trace:configure.ac:4773: -1- AC_CHECK_LIB([audio], [AuOpenServer], [have_nas_sound=yes]) -m4trace:configure.ac:4776: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NAS_SOUND]) -m4trace:configure.ac:4781: -1- AC_DEFINE_TRACE_LITERAL([NAS_NO_ERROR_JUMP]) -m4trace:configure.ac:4791: -1- AC_SUBST([have_esd_config]) -m4trace:configure.ac:4805: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ESD_SOUND]) -m4trace:configure.ac:4822: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:4797: -1- AC_DEFINE_TRACE_LITERAL([SOUNDCARD_H_FILE]) +m4trace:configure.ac:4812: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NATIVE_SOUND]) +m4trace:configure.ac:4819: -1- AC_CHECK_LIB([audio], [AuOpenServer], [have_nas_sound=yes]) +m4trace:configure.ac:4822: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NAS_SOUND]) +m4trace:configure.ac:4827: -1- AC_DEFINE_TRACE_LITERAL([NAS_NO_ERROR_JUMP]) +m4trace:configure.ac:4837: -1- AC_SUBST([have_esd_config]) +m4trace:configure.ac:4851: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ESD_SOUND]) +m4trace:configure.ac:4868: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:4822: the top level]) -m4trace:configure.ac:4823: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TTY]) -m4trace:configure.ac:4827: -1- AC_CHECK_LIB([ncurses], [tgetent], [with_ncurses=yes], [with_ncurses=no]) -m4trace:configure.ac:4830: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NCURSES]) -m4trace:configure.ac:4856: -1- AC_CHECK_LIB([$lib], [tgetent], [LIBS="-l${lib} $LIBS" && if test "$verbose" = "yes"; then echo " Prepending \"-l${lib}\" to \$LIBS"; fi; break]) -m4trace:configure.ac:4870: -2- AC_CHECK_LIB([termcap], [tgetent], [LIBS="-ltermcap $LIBS" && if test "$verbose" = "yes"; then echo " Prepending \"-ltermcap\" to \$LIBS"; fi], [extra_objs="$extra_objs termcap.o" && if test "$verbose" = "yes"; then +configure.ac:4868: the top level]) +m4trace:configure.ac:4869: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TTY]) +m4trace:configure.ac:4873: -1- AC_CHECK_LIB([ncurses], [tgetent], [with_ncurses=yes], [with_ncurses=no]) +m4trace:configure.ac:4876: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NCURSES]) +m4trace:configure.ac:4902: -1- AC_CHECK_LIB([$lib], [tgetent], [LIBS="-l${lib} $LIBS" && if test "$verbose" = "yes"; then echo " Prepending \"-l${lib}\" to \$LIBS"; fi; break]) +m4trace:configure.ac:4916: -2- AC_CHECK_LIB([termcap], [tgetent], [LIBS="-ltermcap $LIBS" && if test "$verbose" = "yes"; then echo " Prepending \"-ltermcap\" to \$LIBS"; fi], [extra_objs="$extra_objs termcap.o" && if test "$verbose" = "yes"; then echo " xemacs will be linked with \"termcap.o\"" fi]) -m4trace:configure.ac:4870: -1- AC_CHECK_LIB([curses], [tgetent], [LIBS="-lcurses $LIBS" && if test "$verbose" = "yes"; then echo " Prepending \"-lcurses\" to \$LIBS"; fi], [echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 +m4trace:configure.ac:4916: -1- AC_CHECK_LIB([curses], [tgetent], [LIBS="-lcurses $LIBS" && if test "$verbose" = "yes"; then echo " Prepending \"-lcurses\" to \$LIBS"; fi], [echo "$as_me:$LINENO: checking for tgetent in -ltermcap" >&5 echo $ECHO_N "checking for tgetent in -ltermcap... $ECHO_C" >&6 if test "${ac_cv_lib_termcap_tgetent+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -1908,157 +1914,159 @@ fi fi ]) -m4trace:configure.ac:4874: -1- AC_DEFINE_TRACE_LITERAL([CURSES_H_FILE]) -m4trace:configure.ac:4875: -1- AC_DEFINE_TRACE_LITERAL([TERM_H_FILE]) -m4trace:configure.ac:4880: -1- AC_CHECK_LIB([gpm], [Gpm_Open], [have_gpm=yes]) -m4trace:configure.ac:4883: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GPM]) -m4trace:configure.ac:4907: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. +m4trace:configure.ac:4920: -1- AC_DEFINE_TRACE_LITERAL([CURSES_H_FILE]) +m4trace:configure.ac:4921: -1- AC_DEFINE_TRACE_LITERAL([TERM_H_FILE]) +m4trace:configure.ac:4926: -1- AC_CHECK_LIB([gpm], [Gpm_Open], [have_gpm=yes]) +m4trace:configure.ac:4929: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GPM]) +m4trace:configure.ac:4953: -1- _m4_warn([obsolete], [The macro `AC_CHECKING' is obsolete. You should run autoupdate.], [autoconf/general.m4:1966: AC_CHECKING is expanded from... -configure.ac:4907: the top level]) -m4trace:configure.ac:4925: -1- AC_CHECK_LIB([gdbm], [dbm_open], [ +configure.ac:4953: the top level]) +m4trace:configure.ac:4971: -1- AC_CHECK_LIB([gdbm], [dbm_open], [ enable_database_gdbm=yes enable_database_dbm=no libdbm=-lgdbm], [ if test "$enable_database_gdbm" = "yes"; then XE_DIE("Required GNU DBM support cannot be provided.") fi enable_database_gdbm=no]) -m4trace:configure.ac:4934: -1- AC_CHECK_LIB([dbm], [dbm_open], [enable_database_dbm=yes libdbm=-ldbm], [ +m4trace:configure.ac:4980: -1- AC_CHECK_LIB([dbm], [dbm_open], [enable_database_dbm=yes libdbm=-ldbm], [ test "$enable_database_dbm" = "yes" && \ XE_DIE("Required DBM support cannot be provided.") enable_database_dbm=no]) -m4trace:configure.ac:4941: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DBM]) -m4trace:configure.ac:4962: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. +m4trace:configure.ac:4987: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DBM]) +m4trace:configure.ac:5008: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete. You should run autoupdate.], [autoconf/general.m4:2180: AC_TRY_COMPILE is expanded from... -configure.ac:4962: the top level]) -m4trace:configure.ac:4991: -1- AC_CHECK_LIB([db], [$dbfunc], [enable_database_berkdb=yes need_libdb=yes]) -m4trace:configure.ac:5004: -1- AC_CHECK_LIB([db], [$dbfunc], [enable_database_berkdb=yes need_libdb=yes]) -m4trace:configure.ac:5008: -1- AC_DEFINE_TRACE_LITERAL([DB_H_FILE]) -m4trace:configure.ac:5009: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BERKELEY_DB]) -m4trace:configure.ac:5017: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DATABASE]) -m4trace:configure.ac:5022: -1- AC_CHECK_LIB([socks], [SOCKSinit]) -m4trace:configure.ac:5022: -1- AH_OUTPUT([HAVE_LIBSOCKS], [/* Define to 1 if you have the `socks\' library (-lsocks). */ +configure.ac:5008: the top level]) +m4trace:configure.ac:5037: -1- AC_CHECK_LIB([db], [$dbfunc], [enable_database_berkdb=yes need_libdb=yes]) +m4trace:configure.ac:5050: -1- AC_CHECK_LIB([db], [$dbfunc], [enable_database_berkdb=yes need_libdb=yes]) +m4trace:configure.ac:5054: -1- AC_DEFINE_TRACE_LITERAL([DB_H_FILE]) +m4trace:configure.ac:5055: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BERKELEY_DB]) +m4trace:configure.ac:5063: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DATABASE]) +m4trace:configure.ac:5068: -1- AC_CHECK_LIB([socks], [SOCKSinit]) +m4trace:configure.ac:5068: -1- AH_OUTPUT([HAVE_LIBSOCKS], [/* Define to 1 if you have the `socks\' library (-lsocks). */ #undef HAVE_LIBSOCKS]) -m4trace:configure.ac:5022: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKS]) -m4trace:configure.ac:5023: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKS]) -m4trace:configure.ac:5028: -1- AC_DEFINE_TRACE_LITERAL([USAGE_TRACKING]) -m4trace:configure.ac:5035: -1- AC_CHECK_LIB([gmp], [__gmpz_init], [have_mpz_init=yes]) -m4trace:configure.ac:5037: -1- AC_DEFINE_TRACE_LITERAL([WITH_NUMBER_TYPES]) -m4trace:configure.ac:5038: -1- AC_DEFINE_TRACE_LITERAL([WITH_GMP]) -m4trace:configure.ac:5048: -1- AC_CHECK_LIB([mp], [mp_mfree], [have_mp_mfree=yes; break], [ +m4trace:configure.ac:5068: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBSOCKS]) +m4trace:configure.ac:5069: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKS]) +m4trace:configure.ac:5074: -1- AC_DEFINE_TRACE_LITERAL([USAGE_TRACKING]) +m4trace:configure.ac:5081: -1- AC_CHECK_LIB([gmp], [__gmpz_init], [have_mpz_init=yes]) +m4trace:configure.ac:5083: -1- AC_DEFINE_TRACE_LITERAL([WITH_NUMBER_TYPES]) +m4trace:configure.ac:5084: -1- AC_DEFINE_TRACE_LITERAL([WITH_GMP]) +m4trace:configure.ac:5094: -1- AC_CHECK_LIB([mp], [mp_mfree], [have_mp_mfree=yes; break], [ AC_CHECK_LIB(mp, mfree, have_mfree=yes; break, , $library)], [$library]) -m4trace:configure.ac:5048: -1- AC_CHECK_LIB([mp], [mfree], [have_mfree=yes; break], [], [$library]) -m4trace:configure.ac:5051: -1- AC_DEFINE_TRACE_LITERAL([MP_PREFIX]) -m4trace:configure.ac:5056: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MP_MOVE]) -m4trace:configure.ac:5062: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MP_MOVE]) -m4trace:configure.ac:5066: -1- AC_DEFINE_TRACE_LITERAL([WITH_NUMBER_TYPES]) -m4trace:configure.ac:5067: -1- AC_DEFINE_TRACE_LITERAL([WITH_MP]) -m4trace:configure.ac:5089: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... -configure.ac:5089: the top level]) -m4trace:configure.ac:5093: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNIX_PROCESSES]) -m4trace:configure.ac:5126: -1- AC_SUBST([SRC_SUBDIR_DEPS]) -m4trace:configure.ac:5140: -1- AC_SUBST([INSTALL_ARCH_DEP_SUBDIR]) -m4trace:configure.ac:5141: -1- AC_SUBST([MAKE_SUBDIR]) -m4trace:configure.ac:5142: -1- AC_SUBST([SUBDIR_MAKEFILES]) -m4trace:configure.ac:5213: -1- AC_SUBST([PROGNAME]) -m4trace:configure.ac:5214: -1- AC_SUBST([version]) -m4trace:configure.ac:5215: -1- AC_SUBST([inststaticdir]) -m4trace:configure.ac:5216: -1- AC_SUBST([instvardir]) -m4trace:configure.ac:5217: -1- AC_SUBST([srcdir]) -m4trace:configure.ac:5218: -1- AC_SUBST([bindir]) -m4trace:configure.ac:5219: -1- AC_SUBST([datadir]) -m4trace:configure.ac:5220: -1- AC_SUBST([statedir]) -m4trace:configure.ac:5221: -1- AC_SUBST([libdir]) -m4trace:configure.ac:5222: -1- AC_SUBST([mandir]) -m4trace:configure.ac:5223: -1- AC_SUBST([extra_includes]) -m4trace:configure.ac:5225: -1- AC_SUBST([prefix]) -m4trace:configure.ac:5226: -1- AC_SUBST([PREFIX_USER_DEFINED]) -m4trace:configure.ac:5235: -1- AC_SUBST([PREFIX]) -m4trace:configure.ac:5237: -1- AC_SUBST([exec_prefix]) -m4trace:configure.ac:5238: -1- AC_SUBST([EXEC_PREFIX_USER_DEFINED]) -m4trace:configure.ac:5246: -1- AC_SUBST([EXEC_PREFIX]) -m4trace:configure.ac:5248: -1- AC_SUBST([infodir]) -m4trace:configure.ac:5249: -1- AC_SUBST([INFODIR_USER_DEFINED]) -m4trace:configure.ac:5257: -1- AC_SUBST([INFODIR]) -m4trace:configure.ac:5259: -1- AC_SUBST([infopath], [$with_infopath]) -m4trace:configure.ac:5260: -1- AC_SUBST([INFOPATH_USER_DEFINED]) -m4trace:configure.ac:5268: -1- AC_SUBST([INFOPATH]) -m4trace:configure.ac:5278: -1- AC_SUBST([package_path], [$with_package_path]) -m4trace:configure.ac:5279: -1- AC_SUBST([PACKAGE_PATH_USER_DEFINED]) -m4trace:configure.ac:5287: -1- AC_SUBST([PACKAGE_PATH]) -m4trace:configure.ac:5289: -1- AC_SUBST([lispdir], [$with_lispdir]) -m4trace:configure.ac:5290: -1- AC_SUBST([LISPDIR_USER_DEFINED]) -m4trace:configure.ac:5298: -1- AC_SUBST([LISPDIR]) -m4trace:configure.ac:5300: -1- AC_SUBST([moduledir], [$with_moduledir]) -m4trace:configure.ac:5301: -1- AC_SUBST([MODULEDIR_USER_DEFINED]) -m4trace:configure.ac:5309: -1- AC_SUBST([MODULEDIR]) -m4trace:configure.ac:5311: -1- AC_SUBST([sitelispdir], [$with_sitelispdir]) -m4trace:configure.ac:5312: -1- AC_SUBST([SITELISPDIR_USER_DEFINED]) -m4trace:configure.ac:5320: -1- AC_SUBST([SITELISPDIR]) -m4trace:configure.ac:5322: -1- AC_SUBST([sitemoduledir]) -m4trace:configure.ac:5323: -1- AC_SUBST([SITEMODULEDIR_USER_DEFINED]) -m4trace:configure.ac:5331: -1- AC_SUBST([SITEMODULEDIR]) -m4trace:configure.ac:5333: -1- AC_SUBST([etcdir], [$with_etcdir]) -m4trace:configure.ac:5334: -1- AC_SUBST([ETCDIR_USER_DEFINED]) -m4trace:configure.ac:5342: -1- AC_SUBST([ETCDIR]) -m4trace:configure.ac:5344: -1- AC_SUBST([archlibdir], [$with_archlibdir]) -m4trace:configure.ac:5345: -1- AC_SUBST([ARCHLIBDIR_USER_DEFINED]) -m4trace:configure.ac:5353: -1- AC_SUBST([ARCHLIBDIR]) -m4trace:configure.ac:5355: -1- AC_SUBST([docdir], [$with_docdir]) -m4trace:configure.ac:5356: -1- AC_SUBST([DOCDIR_USER_DEFINED]) -m4trace:configure.ac:5364: -1- AC_SUBST([DOCDIR]) -m4trace:configure.ac:5366: -1- AC_SUBST([docdir]) -m4trace:configure.ac:5367: -1- AC_SUBST([bitmapdir]) -m4trace:configure.ac:5368: -1- AC_SUBST([extra_objs]) -m4trace:configure.ac:5375: -1- AC_SUBST([machfile]) -m4trace:configure.ac:5376: -1- AC_SUBST([opsysfile]) -m4trace:configure.ac:5377: -1- AC_SUBST([c_switch_general]) -m4trace:configure.ac:5378: -1- AC_SUBST([c_switch_window_system]) -m4trace:configure.ac:5379: -1- AC_SUBST([c_switch_all]) -m4trace:configure.ac:5380: -1- AC_SUBST([ld_switch_general]) -m4trace:configure.ac:5381: -1- AC_SUBST([ld_switch_window_system]) -m4trace:configure.ac:5382: -1- AC_SUBST([ld_switch_all]) -m4trace:configure.ac:5383: -1- AC_SUBST([ld_libs_general]) -m4trace:configure.ac:5384: -1- AC_SUBST([ld_libs_window_system]) -m4trace:configure.ac:5385: -1- AC_SUBST([ld_libs_all]) -m4trace:configure.ac:5386: -1- AC_SUBST([CFLAGS]) -m4trace:configure.ac:5387: -1- AC_SUBST([CPPFLAGS]) -m4trace:configure.ac:5388: -1- AC_SUBST([LDFLAGS]) -m4trace:configure.ac:5390: -1- AC_SUBST([RECURSIVE_MAKE_ARGS]) -m4trace:configure.ac:5392: -1- AC_SUBST([native_sound_lib], [$with_native_sound_lib]) -m4trace:configure.ac:5393: -1- AC_SUBST([sound_cflags]) -m4trace:configure.ac:5394: -1- AC_SUBST([RANLIB]) -m4trace:configure.ac:5395: -1- AC_SUBST([dynodump_arch]) -m4trace:configure.ac:5397: -1- AC_SUBST([XEMACS_CC]) -m4trace:configure.ac:5398: -1- AC_SUBST([XE_CFLAGS]) -m4trace:configure.ac:5402: -1- AC_DEFINE_TRACE_LITERAL([PREFIX_USER_DEFINED]) -m4trace:configure.ac:5407: -1- AC_DEFINE_TRACE_LITERAL([INHIBIT_SITE_LISP]) -m4trace:configure.ac:5411: -1- AC_DEFINE_TRACE_LITERAL([INHIBIT_SITE_MODULES]) -m4trace:configure.ac:5415: -1- AC_DEFINE_TRACE_LITERAL([EMACS_CONFIGURATION]) -m4trace:configure.ac:5416: -1- AC_DEFINE_TRACE_LITERAL([EMACS_CONFIG_OPTIONS]) -m4trace:configure.ac:5421: -1- AC_DEFINE_TRACE_LITERAL([LD_SWITCH_X_SITE]) -m4trace:configure.ac:5422: -1- AC_DEFINE_TRACE_LITERAL([LD_SWITCH_X_SITE_AUX]) -m4trace:configure.ac:5423: -1- AC_DEFINE_TRACE_LITERAL([C_SWITCH_X_SITE]) -m4trace:configure.ac:5424: -1- AC_DEFINE_TRACE_LITERAL([LD_SWITCH_SITE]) -m4trace:configure.ac:5425: -1- AC_DEFINE_TRACE_LITERAL([C_SWITCH_SITE]) -m4trace:configure.ac:5433: -1- AC_DEFINE_TRACE_LITERAL([GNU_MALLOC]) -m4trace:configure.ac:5434: -1- AC_DEFINE_TRACE_LITERAL([USE_SYSTEM_MALLOC]) -m4trace:configure.ac:5435: -1- AC_DEFINE_TRACE_LITERAL([USE_DEBUG_MALLOC]) -m4trace:configure.ac:5436: -1- AC_DEFINE_TRACE_LITERAL([USE_SYSTEM_MALLOC]) -m4trace:configure.ac:5438: -1- AC_DEFINE_TRACE_LITERAL([USE_GCC]) -m4trace:configure.ac:5439: -1- AC_DEFINE_TRACE_LITERAL([EXTERNAL_WIDGET]) -m4trace:configure.ac:5440: -1- AC_DEFINE_TRACE_LITERAL([USE_KKCC]) -m4trace:configure.ac:5441: -1- AC_DEFINE_TRACE_LITERAL([QUICK_BUILD]) -m4trace:configure.ac:5442: -1- AC_DEFINE_TRACE_LITERAL([PURIFY]) -m4trace:configure.ac:5443: -1- AC_DEFINE_TRACE_LITERAL([QUANTIFY]) -m4trace:configure.ac:5444: -1- AC_DEFINE_TRACE_LITERAL([MAIL_USE_POP]) -m4trace:configure.ac:5445: -1- AC_DEFINE_TRACE_LITERAL([KERBEROS]) -m4trace:configure.ac:5446: -1- AC_DEFINE_TRACE_LITERAL([HESIOD]) -m4trace:configure.ac:5447: -1- AC_DEFINE_TRACE_LITERAL([USE_UNION_TYPE]) -m4trace:configure.ac:5448: -1- AC_DEFINE_TRACE_LITERAL([PDUMP]) -m4trace:configure.ac:5449: -1- AC_DEFINE_TRACE_LITERAL([IPV6_CANONICALIZE]) -m4trace:configure.ac:5720: -1- AC_CONFIG_HEADERS([src/config.h lwlib/config.h]) -m4trace:configure.ac:5723: -1- AC_SUBST([internal_makefile_list]) -m4trace:configure.ac:5741: -1- AC_CONFIG_FILES([$file]) -m4trace:configure.ac:5743: -1- AC_CONFIG_FILES([src/paths.h src/xemacs.def.in lib-src/config.values]) -m4trace:configure.ac:5744: -1- AC_CONFIG_FILES([lib-src/ellcc.h]) -m4trace:configure.ac:5842: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) -m4trace:configure.ac:5842: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:5094: -1- AC_CHECK_LIB([mp], [mfree], [have_mfree=yes; break], [], [$library]) +m4trace:configure.ac:5097: -1- AC_DEFINE_TRACE_LITERAL([MP_PREFIX]) +m4trace:configure.ac:5102: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MP_MOVE]) +m4trace:configure.ac:5108: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MP_MOVE]) +m4trace:configure.ac:5112: -1- AC_DEFINE_TRACE_LITERAL([WITH_NUMBER_TYPES]) +m4trace:configure.ac:5113: -1- AC_DEFINE_TRACE_LITERAL([WITH_MP]) +m4trace:configure.ac:5135: -1- _m4_warn([cross], [AC_RUN_IFELSE called without default to allow cross compiling], [autoconf/general.m4:2281: AC_RUN_IFELSE is expanded from... +configure.ac:5135: the top level]) +m4trace:configure.ac:5139: -1- AC_DEFINE_TRACE_LITERAL([HAVE_UNIX_PROCESSES]) +m4trace:configure.ac:5172: -1- AC_SUBST([SRC_SUBDIR_DEPS]) +m4trace:configure.ac:5186: -1- AC_SUBST([INSTALL_ARCH_DEP_SUBDIR]) +m4trace:configure.ac:5187: -1- AC_SUBST([MAKE_SUBDIR]) +m4trace:configure.ac:5188: -1- AC_SUBST([SUBDIR_MAKEFILES]) +m4trace:configure.ac:5259: -1- AC_SUBST([PROGNAME]) +m4trace:configure.ac:5260: -1- AC_SUBST([version]) +m4trace:configure.ac:5261: -1- AC_SUBST([inststaticdir]) +m4trace:configure.ac:5262: -1- AC_SUBST([instvardir]) +m4trace:configure.ac:5263: -1- AC_SUBST([srcdir]) +m4trace:configure.ac:5264: -1- AC_SUBST([bindir]) +m4trace:configure.ac:5265: -1- AC_SUBST([datadir]) +m4trace:configure.ac:5266: -1- AC_SUBST([statedir]) +m4trace:configure.ac:5267: -1- AC_SUBST([libdir]) +m4trace:configure.ac:5268: -1- AC_SUBST([mandir]) +m4trace:configure.ac:5269: -1- AC_SUBST([extra_includes]) +m4trace:configure.ac:5271: -1- AC_SUBST([prefix]) +m4trace:configure.ac:5272: -1- AC_SUBST([PREFIX_USER_DEFINED]) +m4trace:configure.ac:5281: -1- AC_SUBST([PREFIX]) +m4trace:configure.ac:5283: -1- AC_SUBST([exec_prefix]) +m4trace:configure.ac:5284: -1- AC_SUBST([EXEC_PREFIX_USER_DEFINED]) +m4trace:configure.ac:5292: -1- AC_SUBST([EXEC_PREFIX]) +m4trace:configure.ac:5294: -1- AC_SUBST([infodir]) +m4trace:configure.ac:5295: -1- AC_SUBST([INFODIR_USER_DEFINED]) +m4trace:configure.ac:5303: -1- AC_SUBST([INFODIR]) +m4trace:configure.ac:5305: -1- AC_SUBST([infopath], [$with_infopath]) +m4trace:configure.ac:5306: -1- AC_SUBST([INFOPATH_USER_DEFINED]) +m4trace:configure.ac:5314: -1- AC_SUBST([INFOPATH]) +m4trace:configure.ac:5324: -1- AC_SUBST([package_path], [$with_package_path]) +m4trace:configure.ac:5325: -1- AC_SUBST([PACKAGE_PATH_USER_DEFINED]) +m4trace:configure.ac:5333: -1- AC_SUBST([PACKAGE_PATH]) +m4trace:configure.ac:5335: -1- AC_SUBST([lispdir], [$with_lispdir]) +m4trace:configure.ac:5336: -1- AC_SUBST([LISPDIR_USER_DEFINED]) +m4trace:configure.ac:5344: -1- AC_SUBST([LISPDIR]) +m4trace:configure.ac:5346: -1- AC_SUBST([moduledir], [$with_moduledir]) +m4trace:configure.ac:5347: -1- AC_SUBST([MODULEDIR_USER_DEFINED]) +m4trace:configure.ac:5355: -1- AC_SUBST([MODULEDIR]) +m4trace:configure.ac:5357: -1- AC_SUBST([sitelispdir], [$with_sitelispdir]) +m4trace:configure.ac:5358: -1- AC_SUBST([SITELISPDIR_USER_DEFINED]) +m4trace:configure.ac:5366: -1- AC_SUBST([SITELISPDIR]) +m4trace:configure.ac:5368: -1- AC_SUBST([sitemoduledir]) +m4trace:configure.ac:5369: -1- AC_SUBST([SITEMODULEDIR_USER_DEFINED]) +m4trace:configure.ac:5377: -1- AC_SUBST([SITEMODULEDIR]) +m4trace:configure.ac:5379: -1- AC_SUBST([etcdir], [$with_etcdir]) +m4trace:configure.ac:5380: -1- AC_SUBST([ETCDIR_USER_DEFINED]) +m4trace:configure.ac:5388: -1- AC_SUBST([ETCDIR]) +m4trace:configure.ac:5390: -1- AC_SUBST([archlibdir], [$with_archlibdir]) +m4trace:configure.ac:5391: -1- AC_SUBST([ARCHLIBDIR_USER_DEFINED]) +m4trace:configure.ac:5399: -1- AC_SUBST([ARCHLIBDIR]) +m4trace:configure.ac:5401: -1- AC_SUBST([docdir], [$with_docdir]) +m4trace:configure.ac:5402: -1- AC_SUBST([DOCDIR_USER_DEFINED]) +m4trace:configure.ac:5410: -1- AC_SUBST([DOCDIR]) +m4trace:configure.ac:5412: -1- AC_SUBST([docdir]) +m4trace:configure.ac:5413: -1- AC_SUBST([bitmapdir]) +m4trace:configure.ac:5414: -1- AC_SUBST([extra_objs]) +m4trace:configure.ac:5421: -1- AC_SUBST([machfile]) +m4trace:configure.ac:5422: -1- AC_SUBST([opsysfile]) +m4trace:configure.ac:5423: -1- AC_SUBST([c_switch_general]) +m4trace:configure.ac:5424: -1- AC_SUBST([c_switch_window_system]) +m4trace:configure.ac:5425: -1- AC_SUBST([c_switch_all]) +m4trace:configure.ac:5426: -1- AC_SUBST([ld_switch_general]) +m4trace:configure.ac:5427: -1- AC_SUBST([ld_switch_window_system]) +m4trace:configure.ac:5428: -1- AC_SUBST([ld_switch_all]) +m4trace:configure.ac:5429: -1- AC_SUBST([ld_libs_general]) +m4trace:configure.ac:5430: -1- AC_SUBST([ld_libs_window_system]) +m4trace:configure.ac:5431: -1- AC_SUBST([ld_libs_all]) +m4trace:configure.ac:5432: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:5433: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:5434: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:5436: -1- AC_SUBST([RECURSIVE_MAKE_ARGS]) +m4trace:configure.ac:5438: -1- AC_SUBST([native_sound_lib], [$with_native_sound_lib]) +m4trace:configure.ac:5439: -1- AC_SUBST([sound_cflags]) +m4trace:configure.ac:5440: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:5441: -1- AC_SUBST([dynodump_arch]) +m4trace:configure.ac:5443: -1- AC_SUBST([XEMACS_CC]) +m4trace:configure.ac:5444: -1- AC_SUBST([XE_CFLAGS]) +m4trace:configure.ac:5448: -1- AC_DEFINE_TRACE_LITERAL([PREFIX_USER_DEFINED]) +m4trace:configure.ac:5453: -1- AC_DEFINE_TRACE_LITERAL([INHIBIT_SITE_LISP]) +m4trace:configure.ac:5457: -1- AC_DEFINE_TRACE_LITERAL([INHIBIT_SITE_MODULES]) +m4trace:configure.ac:5461: -1- AC_DEFINE_TRACE_LITERAL([EMACS_CONFIGURATION]) +m4trace:configure.ac:5462: -1- AC_DEFINE_TRACE_LITERAL([EMACS_CONFIG_OPTIONS]) +m4trace:configure.ac:5467: -1- AC_DEFINE_TRACE_LITERAL([LD_SWITCH_X_SITE]) +m4trace:configure.ac:5468: -1- AC_DEFINE_TRACE_LITERAL([LD_SWITCH_X_SITE_AUX]) +m4trace:configure.ac:5469: -1- AC_DEFINE_TRACE_LITERAL([C_SWITCH_X_SITE]) +m4trace:configure.ac:5470: -1- AC_DEFINE_TRACE_LITERAL([LD_SWITCH_SITE]) +m4trace:configure.ac:5471: -1- AC_DEFINE_TRACE_LITERAL([C_SWITCH_SITE]) +m4trace:configure.ac:5479: -1- AC_DEFINE_TRACE_LITERAL([GNU_MALLOC]) +m4trace:configure.ac:5480: -1- AC_DEFINE_TRACE_LITERAL([USE_SYSTEM_MALLOC]) +m4trace:configure.ac:5481: -1- AC_DEFINE_TRACE_LITERAL([USE_DEBUG_MALLOC]) +m4trace:configure.ac:5482: -1- AC_DEFINE_TRACE_LITERAL([USE_SYSTEM_MALLOC]) +m4trace:configure.ac:5484: -1- AC_DEFINE_TRACE_LITERAL([USE_GCC]) +m4trace:configure.ac:5485: -1- AC_DEFINE_TRACE_LITERAL([EXTERNAL_WIDGET]) +m4trace:configure.ac:5486: -1- AC_DEFINE_TRACE_LITERAL([USE_KKCC]) +m4trace:configure.ac:5487: -1- AC_DEFINE_TRACE_LITERAL([MC_ALLOC]) +m4trace:configure.ac:5488: -1- AC_DEFINE_TRACE_LITERAL([QUICK_BUILD]) +m4trace:configure.ac:5489: -1- AC_DEFINE_TRACE_LITERAL([PURIFY]) +m4trace:configure.ac:5490: -1- AC_DEFINE_TRACE_LITERAL([QUANTIFY]) +m4trace:configure.ac:5491: -1- AC_DEFINE_TRACE_LITERAL([MAIL_USE_POP]) +m4trace:configure.ac:5492: -1- AC_DEFINE_TRACE_LITERAL([KERBEROS]) +m4trace:configure.ac:5493: -1- AC_DEFINE_TRACE_LITERAL([HESIOD]) +m4trace:configure.ac:5494: -1- AC_DEFINE_TRACE_LITERAL([USE_UNION_TYPE]) +m4trace:configure.ac:5495: -1- AC_DEFINE_TRACE_LITERAL([PDUMP]) +m4trace:configure.ac:5496: -1- AC_DEFINE_TRACE_LITERAL([DUMP_IN_EXEC]) +m4trace:configure.ac:5497: -1- AC_DEFINE_TRACE_LITERAL([IPV6_CANONICALIZE]) +m4trace:configure.ac:5784: -1- AC_CONFIG_HEADERS([src/config.h lwlib/config.h]) +m4trace:configure.ac:5787: -1- AC_SUBST([internal_makefile_list]) +m4trace:configure.ac:5805: -1- AC_CONFIG_FILES([$file]) +m4trace:configure.ac:5807: -1- AC_CONFIG_FILES([src/paths.h src/xemacs.def.in lib-src/config.values]) +m4trace:configure.ac:5808: -1- AC_CONFIG_FILES([lib-src/ellcc.h]) +m4trace:configure.ac:5906: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:5906: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) diff --text -u 'xemacs-21.5.20/configure' 'xemacs-21.5.21/configure' Index: ./configure --- ./configure Sat Mar 12 04:17:36 2005 +++ ./configure Sat May 28 15:10:16 2005 @@ -356,7 +356,7 @@ # include #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS inststaticdir statedir build build_cpu build_vendor build_os LN_S blddir configuration CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP start_flags ld_switch_shared start_files ld lib_gcc RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA YACC SET_MAKE GTK_CONFIG X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS install_pp libs_xauth dnd_objs LIBSTDCPP dll_ld dll_cflags dll_ldflags dll_post dll_ldo ld_dynamic_link_flags with_modules MOD_CC MODARCHDIR MAKE_DOCFILE MODCFLAGS INSTALLPATH MOD_INSTALL_PROGRAM OBJECT_TO_BUILD ldap_libs postgresql_libs lwlib_objs ALLOCA have_esd_config SRC_SUBDIR_DEPS INSTALL_ARCH_DEP_SUBDIR MAKE_SUBDIR SUBDIR_MAKEFILES PROGNAME version instvardir srcdir extra_includes PREFIX_USER_DEFINED PREFIX EXEC_PREFIX_USER_DEFINED EXEC_PREFIX INFODIR_USER_DEFINED INFODIR infopath INFOPATH_USER_DEFINED INFOPATH package_path PACKAGE_PATH_USER_DEFINED PACKAGE_PATH lispdir LISPDIR_USER_DEFINED LISPDIR moduledir MODULEDIR_USER_DEFINED MODULEDIR sitelispdir SITELISPDIR_USER_DEFINED SITELISPDIR sitemoduledir SITEMODULEDIR_USER_DEFINED SITEMODULEDIR etcdir ETCDIR_USER_DEFINED ETCDIR archlibdir ARCHLIBDIR_USER_DEFINED ARCHLIBDIR docdir DOCDIR_USER_DEFINED DOCDIR bitmapdir extra_objs machfile opsysfile c_switch_general c_switch_window_system c_switch_all ld_switch_general ld_switch_window_system ld_switch_all ld_libs_general ld_libs_window_system ld_libs_all RECURSIVE_MAKE_ARGS native_sound_lib sound_cflags dynodump_arch XEMACS_CC XE_CFLAGS internal_makefile_list LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS inststaticdir statedir LN_S blddir build build_cpu build_vendor build_os configuration CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP EGREP start_flags ld_switch_shared start_files ld lib_gcc RANLIB ac_ct_RANLIB INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA YACC SET_MAKE GTK_CONFIG X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS install_pp libs_xauth dnd_objs LIBSTDCPP dll_ld dll_cflags dll_ldflags dll_post dll_ldo ld_dynamic_link_flags with_modules MOD_CC MODARCHDIR MAKE_DOCFILE MODCFLAGS INSTALLPATH MOD_INSTALL_PROGRAM OBJECT_TO_BUILD ldap_libs postgresql_libs lwlib_objs ALLOCA have_esd_config SRC_SUBDIR_DEPS INSTALL_ARCH_DEP_SUBDIR MAKE_SUBDIR SUBDIR_MAKEFILES PROGNAME version instvardir srcdir extra_includes PREFIX_USER_DEFINED PREFIX EXEC_PREFIX_USER_DEFINED EXEC_PREFIX INFODIR_USER_DEFINED INFODIR infopath INFOPATH_USER_DEFINED INFOPATH package_path PACKAGE_PATH_USER_DEFINED PACKAGE_PATH lispdir LISPDIR_USER_DEFINED LISPDIR moduledir MODULEDIR_USER_DEFINED MODULEDIR sitelispdir SITELISPDIR_USER_DEFINED SITELISPDIR sitemoduledir SITEMODULEDIR_USER_DEFINED SITEMODULEDIR etcdir ETCDIR_USER_DEFINED ETCDIR archlibdir ARCHLIBDIR_USER_DEFINED ARCHLIBDIR docdir DOCDIR_USER_DEFINED DOCDIR bitmapdir extra_objs machfile opsysfile c_switch_general c_switch_window_system c_switch_all ld_switch_general ld_switch_window_system ld_switch_all ld_libs_general ld_libs_window_system ld_libs_all RECURSIVE_MAKE_ARGS native_sound_lib sound_cflags dynodump_arch XEMACS_CC XE_CFLAGS internal_makefile_list LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -907,9 +907,13 @@ Support XEmacs server for text widgets in other applications. --enable-kkcc Enable new GC algorithms. + --enable-mc-alloc Enable new allocator. --enable-union-type Use union definition of Lisp_Object type. Known to trigger bugs in some compilers. --enable-pdump Enable portable LISP preloader. + --enable-dump-in-exec Enable dumping into executable (enabled by default + for `pdump', not enabled by default in combination + with `mc-alloc'). --enable-debug Enable additional debugging information. No time cost. --enable-assertions @@ -967,7 +971,7 @@ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-prefix=no Don't compile the value of --prefix into the + --with-prefix=no Don't compile the value for `prefix' into the executable. --with-site-lisp=no Allow for a site-lisp directory in the XEmacs hierarchy searched before the installation packages. @@ -1072,8 +1076,9 @@ --with-compiler C compiler to use --with-xemacs-compiler compiler to use to compile just the xemacs executable and C modules. If you want to compile - XEmacs as C++, use e.g. `--xemacs-compiler=g++'. - This turns on a lot of additional error-checking. + XEmacs as C++, use e.g. + `--with-xemacs-compiler=g++'. This turns on a lot of + additional error-checking. --with-cflags Compiler flags (such as -O); setting this overrides all default compiler flags except those that control warnings. @@ -1584,7 +1589,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -2132,6 +2137,11 @@ enableval="$enable_kkcc" fi; +# Check whether --enable-mc-alloc or --disable-mc-alloc was given. +if test "${enable_mc_alloc+set}" = set; then + enableval="$enable_mc_alloc" + +fi; # Check whether --enable-union-type or --disable-union-type was given. if test "${enable_union_type+set}" = set; then enableval="$enable_union_type" @@ -2142,6 +2152,11 @@ enableval="$enable_pdump" fi; +# Check whether --enable-dump-in-exec or --disable-dump-in-exec was given. +if test "${enable_dump_in_exec+set}" = set; then + enableval="$enable_dump_in_exec" + +fi; # Check whether --enable-debug or --disable-debug was given. if test "${enable_debug+set}" = set; then enableval="$enable_debug" @@ -2334,7 +2349,7 @@ if test "$enable_database_dbm" = "yes" -a "$enable_database_gdbm" = "yes"; then (echo "$progname: Usage error:" echo " " "Only one of \`dbm' and \`gnudbm' may be specified -with the \`--$optname' option." +with the \`--enable-database' option." echo " Use \`$progname --help' to show usage.") >&2 && exit 1 fi @@ -2714,63 +2729,6 @@ statedir=$with_statedir -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - echo "$as_me:$LINENO: checking whether ln -s works" >&5 echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 @@ -2829,6 +2787,64 @@ vpath %.in $(srcdir)' fi +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f $ac_dir/shtool; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + + . "$srcdir/version.sh" || exit 1; if test -n "$emacs_is_beta"; then beta=yes; else beta=no; fi : "${verbose=$beta}" @@ -3045,7 +3061,7 @@ case "$ac_cv_build" in *-*-netbsd* ) - case "ac_cv_build" in + case "${ac_cv_build}" in i[3-9]86-*-netbsd*) machine=intel386 ;; hp300-*-netbsd* | amiga-*-netbsd* | sun3-*-netbsd* | mac68k-*-netbsd* | da30-*-netbsd* | m68k-*-netbsd* ) machine=hp9000s300 ;; @@ -3468,12 +3484,12 @@ else cflags_warning_specified=no; fi -if test "${cflags_optimization-unset}" != unset +if test "${with_cflags_optimization-unset}" != unset then cflags_optimization_specified=yes; else cflags_optimization_specified=no; fi -if test "${cflags_debugging-unset}" != unset +if test "${with_cflags_debugging-unset}" != unset then cflags_debugging_specified=yes; else cflags_debugging_specified=no; fi @@ -3485,7 +3501,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then @@ -4406,7 +4422,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -4416,7 +4432,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 @@ -4647,7 +4663,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -4701,7 +4717,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then @@ -5421,7 +5437,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -5432,7 +5448,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then @@ -6152,7 +6168,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -6163,7 +6179,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then @@ -6883,7 +6899,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -6953,7 +6969,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 @@ -7184,7 +7200,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -7556,6 +7572,19 @@ lib_gcc= fi +test -z "$enable_kkcc" && enable_kkcc=yes +test -z "$enable_mc_alloc" && enable_mc_alloc=yes + +if test -z "$enable_dump_in_exec"; then + if test "$enable_pdump" = "yes"; then + if test "$enable_mc_alloc" = "yes"; then + enable_dump_in_exec=no + else + enable_dump_in_exec=yes + fi + fi +fi + test "$verbose" = "yes" && \ for var in libs_machine libs_system libs_termcap libs_standard objects_machine objects_system c_switch_machine c_switch_system ld_switch_machine ld_switch_system unexec ld_switch_shared ld lib_gcc ld_text_start_addr start_files ordinary_link have_terminfo mail_use_flock mail_use_lockf; do eval "echo \"$var = '\$$var'\""; done && echo "" @@ -7691,11 +7720,11 @@ fi -if test -z "$with_optimization" ; then - if test -n "$emacs_is_beta" ; then - with_optimization=no - else +if test -z "$with_optimization"; then + if test -z "$emacs_is_beta" -o "$cflags_optimization_specified" = "yes"; then with_optimization=yes + else + with_optimization=no fi fi @@ -8000,7 +8029,6 @@ *86* ) dynodump_arch=i386 ;; powerpc ) dynodump_arch=ppc ;; esac - test "$GCC" = "yes" && ld_switch_site="$ld_switch_site -fno-gnu-linker" && if test "$verbose" = "yes"; then echo " Appending \"-fno-gnu-linker\" to \$ld_switch_site"; fi fi @@ -8010,7 +8038,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&5' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu @@ -8116,11 +8144,11 @@ echo $ECHO_N "checking for compiler version information... $ECHO_C" >&6 if test "$GCC" = "yes"; then - compiler_version=`$XEMACS_CC --version | head -1` - gcc_compiler_specs=`$XEMACS_CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | head -1` + compiler_version=`$XEMACS_CC --version | sed 1q` + gcc_compiler_specs=`$XEMACS_CC -v 2>&1 | sed 's/.* \([^ ]\)/\1/' | sed 1q` else case "$XEMACS_CC" in ic*) - compiler_version=`icc -V 2>&1 | head -1` + compiler_version=`icc -V 2>&1 | sed 1q` ;; *) case "$ac_cv_build" in *-*-aix* ) @@ -8145,7 +8173,7 @@ ;; *-*-solaris*) - compiler_version=`$XEMACS_CC -V 2>&1 | head -1` + compiler_version=`$XEMACS_CC -V 2>&1 | sed 1q` ;; alpha*-dec-osf*) @@ -17831,25 +17859,22 @@ fi if test "$with_x11" = "yes"; then - if test "${ac_cv_header_X11_extensions_shape_h+set}" = set; then echo "$as_me:$LINENO: checking for X11/extensions/shape.h" >&5 echo $ECHO_N "checking for X11/extensions/shape.h... $ECHO_C" >&6 if test "${ac_cv_header_X11_extensions_shape_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_shape_h" >&5 -echo "${ECHO_T}$ac_cv_header_X11_extensions_shape_h" >&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking X11/extensions/shape.h usability" >&5 -echo $ECHO_N "checking X11/extensions/shape.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default + +#include +#include + + #include _ACEOF rm -f conftest.$ac_objext @@ -17873,100 +17898,17 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_header_compiler=yes + ac_cv_header_X11_extensions_shape_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no +ac_cv_header_X11_extensions_shape_h=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking X11/extensions/shape.h presence" >&5 -echo $ECHO_N "checking X11/extensions/shape.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/extensions/shape.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: X11/extensions/shape.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for X11/extensions/shape.h" >&5 -echo $ECHO_N "checking for X11/extensions/shape.h... $ECHO_C" >&6 -if test "${ac_cv_header_X11_extensions_shape_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_X11_extensions_shape_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_X11_extensions_shape_h" >&5 echo "${ECHO_T}$ac_cv_header_X11_extensions_shape_h" >&6 - -fi if test $ac_cv_header_X11_extensions_shape_h = yes; then cat >>confdefs.h <<\_ACEOF @@ -18432,12 +18374,15 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_dl=yes + have_dl=yes ; echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 ac_save_LIBS="$LIBS" @@ -18478,12 +18423,15 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_dl=yes + have_dl=yes; echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 LIBS="$ac_save_LIBS -lsvld" @@ -18523,12 +18471,14 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_dl=yes + have_dl=yes; echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -LIBS="$ac_save_LIBS" +LIBS="$ac_save_LIBS" ; echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -18723,12 +18673,15 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - have_dl=yes + have_dl=yes; echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 echo "$as_me:$LINENO: checking for shl_load in -ldl" >&5 echo $ECHO_N "checking for shl_load in -ldl... $ECHO_C" >&6 ac_save_LIBS="$LIBS" @@ -18774,7 +18727,8 @@ echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -LIBS="$ac_save_LIBS" +LIBS="$ac_save_LIBS"; echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext @@ -18980,6 +18934,8 @@ fi + echo "$as_me:$LINENO: result: $have_dl" >&5 +echo "${ECHO_T}$have_dl" >&6 if test "$have_dl" = "yes"; then cat >>confdefs.h <<\_ACEOF #define HAVE_LTDL 1 @@ -22464,7 +22420,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lpng $LIBS" +LIBS="-lpng -lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -22748,7 +22704,7 @@ echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-ltiff $LIBS" +LIBS="-ltiff -lz $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -23501,25 +23457,21 @@ { echo "$as_me:$LINENO: WARNING: Could not find a non-3d Athena header set." >&5 echo "$as_me: WARNING: Could not find a non-3d Athena header set." >&2;} else - if test "${ac_cv_header_X11_Xaw_XawInit_h+set}" = set; then echo "$as_me:$LINENO: checking for X11/Xaw/XawInit.h" >&5 echo $ECHO_N "checking for X11/Xaw/XawInit.h... $ECHO_C" >&6 if test "${ac_cv_header_X11_Xaw_XawInit_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_XawInit_h" >&5 -echo "${ECHO_T}$ac_cv_header_X11_Xaw_XawInit_h" >&6 else - # Is the header compilable? -echo "$as_me:$LINENO: checking X11/Xaw/XawInit.h usability" >&5 -echo $ECHO_N "checking X11/Xaw/XawInit.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF + cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -$ac_includes_default + +#include + + #include _ACEOF rm -f conftest.$ac_objext @@ -23543,100 +23495,17 @@ ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - ac_header_compiler=yes + ac_cv_header_X11_Xaw_XawInit_h=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -ac_header_compiler=no +ac_cv_header_X11_Xaw_XawInit_h=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking X11/Xaw/XawInit.h presence" >&5 -echo $ECHO_N "checking X11/Xaw/XawInit.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: X11/Xaw/XawInit.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: X11/Xaw/XawInit.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for X11/Xaw/XawInit.h" >&5 -echo $ECHO_N "checking for X11/Xaw/XawInit.h... $ECHO_C" >&6 -if test "${ac_cv_header_X11_Xaw_XawInit_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_X11_Xaw_XawInit_h=$ac_header_preproc fi echo "$as_me:$LINENO: result: $ac_cv_header_X11_Xaw_XawInit_h" >&5 echo "${ECHO_T}$ac_cv_header_X11_Xaw_XawInit_h" >&6 - -fi if test $ac_cv_header_X11_Xaw_XawInit_h = yes; then athena_h_path=X11/Xaw else @@ -23665,6 +23534,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include #include @@ -23865,6 +23735,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include #include <$athena_variant/XawInit.h> @@ -24065,6 +23936,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include #include @@ -24268,6 +24140,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include #include @@ -32519,10 +32392,12 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then sound_found=yes - case "$canonical" in + case "${ac_cv_build}" in *netbsd* ) # #### this is probably not the right way to do this # we should port to native NetBSD stuff + + echo "$as_me:$LINENO: checking for _oss_ioctl in -lossaudio" >&5 echo $ECHO_N "checking for _oss_ioctl in -lossaudio... $ECHO_C" >&6 if test "${ac_cv_lib_ossaudio__oss_ioctl+set}" = set; then @@ -32587,7 +32462,7 @@ echo "$as_me:$LINENO: result: $ac_cv_lib_ossaudio__oss_ioctl" >&5 echo "${ECHO_T}$ac_cv_lib_ossaudio__oss_ioctl" >&6 if test $ac_cv_lib_ossaudio__oss_ioctl = yes; then - native_sound_lib=-lossaudio + with_native_sound_lib=-lossaudio { echo "$as_me:$LINENO: WARNING: Using NetBSD-deprecated -lossaudio" >&5 echo "$as_me: WARNING: Using NetBSD-deprecated -lossaudio" >&2;} else @@ -36137,6 +36012,10 @@ #define USE_KKCC 1 _ACEOF +test "$enable_mc_alloc" = "yes" && cat >>confdefs.h <<\_ACEOF +#define MC_ALLOC 1 +_ACEOF + test "$enable_quick_build" = "yes" && cat >>confdefs.h <<\_ACEOF #define QUICK_BUILD 1 _ACEOF @@ -36169,6 +36048,10 @@ #define PDUMP 1 _ACEOF +test "$enable_dump_in_exec" = "yes" && cat >>confdefs.h <<\_ACEOF +#define DUMP_IN_EXEC 1 +_ACEOF + test "$with_ipv6_cname" = "yes" && cat >>confdefs.h <<\_ACEOF #define IPV6_CANONICALIZE 1 _ACEOF @@ -36414,8 +36297,24 @@ echo " WARNING: More recent versions may be safer, or not." echo " WARNING: ---------------------------------------------------------" fi -test "$enable_kkcc" = yes && echo " Using the new GC algorithms." +if test "$enable_kkcc" = yes ; then + echo " Using the new GC algorithms." + echo " WARNING: ---------------------------------------------------------" + echo " WARNING: The new algorithms are experimental. They are enabled by" + echo " WARNING: default for this release. Use \`--disable-kkcc' to" + echo " WARNING: turn it off." + echo " WARNING: ---------------------------------------------------------" +fi +if test "$enable_mc_alloc" = yes ; then + echo " Using the new allocator." + echo " WARNING: ---------------------------------------------------------" + echo " WARNING: The new allocator is experimental. It is enabled by" + echo " WARNING: default for this release. Use \`--disable-mc-alloc' to" + echo " WARNING: turn it off." + echo " WARNING: ---------------------------------------------------------" +fi test "$enable_pdump" = yes && echo " Using the new portable dumper." +test "$enable_dump_in_exec" = yes && echo " Dumping into executable." test "$enable_debug" = yes && echo " Compiling in support for extra debugging code." test "$usage_tracking" = yes && echo " Compiling in support for active usage tracking (Sun internal)." if test "$enable_error_checking_extents $enable_error_checking_types $enable_error_checking_text $enable_error_checking_gc $enable_error_checking_malloc $enable_error_checking_glyphs $enable_error_checking_byte_code $enable_error_checking_display $enable_error_checking_structures" \ @@ -37094,12 +36993,12 @@ s,@LIBS@,$LIBS,;t t s,@inststaticdir@,$inststaticdir,;t t s,@statedir@,$statedir,;t t +s,@LN_S@,$LN_S,;t t +s,@blddir@,$blddir,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t s,@build_os@,$build_os,;t t -s,@LN_S@,$LN_S,;t t -s,@blddir@,$blddir,;t t s,@configuration@,$configuration,;t t s,@CC@,$CC,;t t s,@CFLAGS@,$CFLAGS,;t t diff --text -u 'xemacs-21.5.20/configure.ac' 'xemacs-21.5.21/configure.ac' Index: ./configure.ac --- ./configure.ac Fri Mar 11 20:19:01 2005 +++ ./configure.ac Sat May 28 13:51:28 2005 @@ -11,7 +11,7 @@ xe_ldflags='$LDFLAGS $ld_switch_site $ld_switch_machine $ld_switch_system $ld_switch_x_site $ld_switch_run' xe_libs='$ld_call_shared $xe_check_libs $X_EXTRA_LIBS $libs_x $libs_gtk $X_PRE_LIBS $LIBS $libs_machine $libs_system $libs_standard' ac_cpp='$CPP '"$xe_cppflags" -ac_compile='$CC -c $CFLAGS'"$xe_cppflags"' conftest.$ac_ext >&AS_MESSAGE_LOG_FD' +ac_compile='$CC -c $CFLAGS '"$xe_cppflags"' conftest.$ac_ext >&AS_MESSAGE_LOG_FD' ac_link='$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"' conftest.$ac_ext '"$xe_libs"' >&AS_MESSAGE_LOG_FD' ac_compiler_gnu=$ac_cv_c_compiler_gnu ]) @@ -492,7 +492,7 @@ dnl parse flags AC_ARG_WITH([prefix], - AC_HELP_STRING([--with-prefix=no],[Don't compile the value of --prefix into the executable.]), + AC_HELP_STRING([--with-prefix=no],[Don't compile the value for `prefix' into the executable.]), [true], [with_prefix=yes]) AC_ARG_WITH([site-lisp], AC_HELP_STRING([--with-site-lisp=no],[Allow for a site-lisp directory in the XEmacs hierarchy searched before the installation packages.]), @@ -708,12 +708,20 @@ AC_ARG_ENABLE([kkcc], AC_HELP_STRING([--enable-kkcc],[Enable new GC algorithms.]), [], []) +AC_ARG_ENABLE([mc-alloc], + AC_HELP_STRING([--enable-mc-alloc],[Enable new allocator.]), + [], []) AC_ARG_ENABLE([union-type], AC_HELP_STRING([--enable-union-type],[Use union definition of Lisp_Object type. Known to trigger bugs in some compilers.]), [], []) AC_ARG_ENABLE([pdump], AC_HELP_STRING([--enable-pdump],[Enable portable LISP preloader.]), [], []) +AC_ARG_ENABLE([dump-in-exec], + AC_HELP_STRING([--enable-dump-in-exec],[Enable dumping into executable (enabled by default + for `pdump', not enabled by default in combination + with `mc-alloc').]), + [], []) AC_ARG_ENABLE([debug], AC_HELP_STRING([--enable-debug],[Enable additional debugging information. No time cost.]), [], []) @@ -751,7 +759,7 @@ AC_ARG_WITH([xemacs-compiler], AC_HELP_STRING([--with-xemacs-compiler],[compiler to use to compile just the xemacs executable and C modules. If you want to compile XEmacs as C++, use e.g. - `--xemacs-compiler=g++'. This turns on a lot of + `--with-xemacs-compiler=g++'. This turns on a lot of additional error-checking.]), [], []) @@ -818,7 +826,7 @@ [ if test "$enable_database_dbm" = "yes" -a "$enable_database_gdbm" = "yes"; then USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified -with the \`--$optname' option.") +with the \`--enable-database' option.") fi ], [], @@ -956,9 +964,6 @@ AC_SUBST(statedir,$with_statedir) dnl ------------------------------------------------------------------------- -AC_CONFIG_AUX_DIR_DEFAULT -AC_CANONICAL_BUILD -dnl ------------------------------------------------------------------------- AC_PROG_LN_S @@ -1011,6 +1016,11 @@ vpath %.in $(srcdir)' fi +dnl ------------------------------------------------------------------------- +AC_CONFIG_AUX_DIR_DEFAULT +AC_CANONICAL_BUILD +dnl ------------------------------------------------------------------------- + dnl ---------------------------------------- dnl Find out which version of XEmacs this is dnl ---------------------------------------- @@ -1200,7 +1210,7 @@ dnl NetBSD ports *-*-netbsd* ) - case "ac_cv_build" in + case "${ac_cv_build}" in i[[3-9]]86-*-netbsd*) machine=intel386 ;; hp300-*-netbsd* | amiga-*-netbsd* | sun3-*-netbsd* | mac68k-*-netbsd* | da30-*-netbsd* | m68k-*-netbsd* ) dnl Yes, this is somewhat bogus. @@ -1685,7 +1695,7 @@ fi dnl Choose a compiler from (in order) -dnl --compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC +dnl --with-compiler, env var CC, with_gcc=no && ${NON_GNU_CC:-cc}, AC_PROG_CC test -n "$with_compiler" && CC="$with_compiler" if test "$with_gcc" = "no"; then dnl Try to find a non-gcc compiler case "$CC" in "" | *gcc* ) CC="${NON_GNU_CC-cc}" ;; esac @@ -1706,12 +1716,12 @@ else cflags_warning_specified=no; fi -if test "${cflags_optimization-unset}" != unset +if test "${with_cflags_optimization-unset}" != unset then cflags_optimization_specified=yes; else cflags_optimization_specified=no; fi -if test "${cflags_debugging-unset}" != unset +if test "${with_cflags_debugging-unset}" != unset then cflags_debugging_specified=yes; else cflags_debugging_specified=no; fi @@ -1753,7 +1763,7 @@ dnl The compiler used to build xemacs, as opposed to the compiler dnl used by configure and lib-src, is determined from the following dnl sources, in order of priority: -dnl o --xemacs-compiler configure flag +dnl o --with-xemacs-compiler configure flag dnl o XEMACS_CC environment variable dnl o same as the regular compiler, (determined previously) @@ -1983,6 +1993,21 @@ lib_gcc= fi +dnl Enable KKCC and MC-ALLOC by default +test -z "$enable_kkcc" && enable_kkcc=yes +test -z "$enable_mc_alloc" && enable_mc_alloc=yes + +dnl Dump into executable +if test -z "$enable_dump_in_exec"; then + if test "$enable_pdump" = "yes"; then + if test "$enable_mc_alloc" = "yes"; then + enable_dump_in_exec=no + else + enable_dump_in_exec=yes + fi + fi +fi + dnl For debugging... test "$verbose" = "yes" && \ PRINT_VAR(libs_machine libs_system libs_termcap libs_standard @@ -2048,11 +2073,11 @@ dnl Calculate optimization flags. These will be off by default in beta dnl versions and on in release versions. -if test -z "$with_optimization" ; then - if test -n "$emacs_is_beta" ; then - with_optimization=no - else +if test -z "$with_optimization"; then + if test -z "$emacs_is_beta" -o "$cflags_optimization_specified" = "yes"; then with_optimization=yes + else + with_optimization=no fi fi @@ -2302,8 +2327,6 @@ *86* ) dynodump_arch=i386 ;; powerpc ) dynodump_arch=ppc ;; esac - dnl Dynodump requires the system linker - test "$GCC" = "yes" && XE_APPEND(-fno-gnu-linker, ld_switch_site) fi dnl Feed s&m crud to src/Makefile @@ -2359,12 +2382,12 @@ dnl run through the AC_PROG_CC mill. dnl Would anybody really build libsrc with GCC and XEmacs with non-GCC? if test "$GCC" = "yes"; then - compiler_version=`$XEMACS_CC --version | head -1` - gcc_compiler_specs=`$XEMACS_CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | head -1` + compiler_version=`$XEMACS_CC --version | sed 1q` + gcc_compiler_specs=`$XEMACS_CC -v 2>&1 | sed 's/.* \([[^ ]]\)/\1/' | sed 1q` else case "$XEMACS_CC" in dnl The Intel cc compiler ic*) - compiler_version=`icc -V 2>&1 | head -1` + compiler_version=`icc -V 2>&1 | sed 1q` ;; dnl non-gcc machine-specific magic - contributions welcome *) case "$ac_cv_build" in @@ -2393,7 +2416,7 @@ ;; *-*-solaris*) - compiler_version=`$XEMACS_CC -V 2>&1 | head -1` + compiler_version=`$XEMACS_CC -V 2>&1 | sed 1q` ;; alpha*-dec-osf*) @@ -3342,7 +3365,11 @@ if test "$with_x11" = "yes"; then AC_CHECK_HEADER(X11/extensions/shape.h, [ AC_DEFINE(HAVE_BALLOON_HELP) - ]) + ],[], +[ +#include +#include +]) fi dnl FSF 19.29 has some bitmapdir stuff here. @@ -3413,16 +3440,19 @@ AC_CHECK_HEADER(dlfcn.h, [ AC_MSG_CHECKING([for dlopen in -lc]) AC_TRY_LINK([#include ],dnl - [dlopen ("", 0);], [ have_dl=yes ], [ + [dlopen ("", 0);], [ have_dl=yes ; AC_MSG_RESULT($have_dl)], [ + AC_MSG_RESULT([no]) AC_MSG_CHECKING([for dlopen in -ldl]) ac_save_LIBS="$LIBS" LIBS="$LIBS -ldl" AC_TRY_LINK([#include ],dnl - [dlopen ("", 0);], [ have_dl=yes ], [ + [dlopen ("", 0);], [ have_dl=yes; AC_MSG_RESULT($have_dl)], [ + AC_MSG_RESULT([no]) AC_MSG_CHECKING([for dlopen in -lsvld]) LIBS="$ac_save_LIBS -lsvld" AC_TRY_LINK([#include ],dnl - [dlopen ("", 0);], [ have_dl=yes ], [LIBS="$ac_save_LIBS"])])])]) + [dlopen ("", 0);], [ have_dl=yes; AC_MSG_RESULT($have_dl) ], + [LIBS="$ac_save_LIBS" ; AC_MSG_RESULT([no])])])])]) if test "$have_dl" = "yes"; then AC_DEFINE(HAVE_DLOPEN) else @@ -3430,12 +3460,14 @@ AC_CHECK_HEADER(dl.h, [ AC_MSG_CHECKING([for shl_load in -lc]) AC_TRY_LINK([#include ],dnl - [shl_load ("", 0, 0);], [have_dl=yes], [ + [shl_load ("", 0, 0);], [have_dl=yes; AC_MSG_RESULT($have_dl)], [ + AC_MSG_RESULT([no]) AC_MSG_CHECKING([for shl_load in -ldl]) ac_save_LIBS="$LIBS" LIBS="$LIBS -ldld" AC_TRY_LINK([#include ],dnl - [shl_load ("", 0, 0);], [have_dl=yes], [LIBS="$ac_save_LIBS"])])]) + [shl_load ("", 0, 0);], [have_dl=yes], + [LIBS="$ac_save_LIBS"; AC_MSG_RESULT([no])])])]) if test "$have_dl" = "yes"; then AC_DEFINE(HAVE_SHL_LOAD) else @@ -3446,6 +3478,7 @@ LIBS="$LIBS -lltdl" AC_TRY_LINK([#include ],dnl [lt_dlinit ();], [have_dl=yes], [LIBS="$ac_save_LIBS"])]) + AC_MSG_RESULT($have_dl) if test "$have_dl" = "yes"; then AC_DEFINE(HAVE_LTDL) fi @@ -3811,7 +3844,7 @@ png_problem="" test -z "$with_png" && { AC_CHECK_FUNC(pow, ,with_png=no) } test -z "$with_png" && { AC_CHECK_HEADER(png.h, ,with_png=no) } - test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no) } + test -z "$with_png" && { AC_CHECK_LIB(png, png_read_image,[:],with_png=no,[-lz]) } if test -z "$with_png"; then AC_MSG_CHECKING(for workable png version information) xe_check_libs="-lpng -lz" @@ -3847,7 +3880,7 @@ dnl autodetect TIFF test -z "$with_tiff" && { AC_CHECK_HEADER(tiffio.h, ,with_tiff=no) } - test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no) } + test -z "$with_tiff" && { AC_CHECK_LIB(tiff, TIFFClientOpen,[:],with_tiff=no,[-lz]) } test -z "$with_tiff" && with_tiff=yes if test "$with_tiff" = "yes"; then AC_DEFINE(HAVE_TIFF) @@ -3930,7 +3963,10 @@ [AC_MSG_WARN([Could not find a non-3d Athena header set.])], [AC_CHECK_HEADER(X11/Xaw/XawInit.h, [athena_h_path=X11/Xaw], - [AC_MSG_WARN([Could not find a non-3d Athena header set.])])]) + [AC_MSG_WARN([Could not find a non-3d Athena header set.])], +[ +#include +])]) else dnl The three-d Athena headers are so much more slippery. dnl Curse this `Lets replace standard libraries' thing that they did. :/ @@ -3941,6 +3977,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include ]) dnl Is the variant specific header directory directly under include? @@ -3952,6 +3989,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include ]) fi @@ -3967,6 +4005,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include ]) fi @@ -3982,6 +4021,7 @@ #if HAVE_X11_XFUNCPROTO_H #include #endif +#include ]) fi @@ -4730,12 +4770,18 @@ for dir in "machine" "sys" "linux"; do AC_CHECK_HEADER([${dir}/soundcard.h], [ sound_found=yes - case "$canonical" in + case "${ac_cv_build}" in *netbsd* ) # #### this is probably not the right way to do this # we should port to native NetBSD stuff + + dnl Aidan says: We have other things to be doing. If some + dnl energetic NetBSD partisan volunteers, then yeah, cool, + dnl but as it is, this works, and is unlikely to stop + dnl working any time soon. + AC_CHECK_LIB(ossaudio, _oss_ioctl, - [native_sound_lib=-lossaudio + [with_native_sound_lib=-lossaudio AC_MSG_WARN([Using NetBSD-deprecated -lossaudio])], [sound_found=no]) ;; @@ -5438,6 +5484,7 @@ test "$GCC" = "yes" && AC_DEFINE(USE_GCC) test "$enable_external_widget" = "yes" && AC_DEFINE(EXTERNAL_WIDGET) test "$enable_kkcc" = "yes" && AC_DEFINE(USE_KKCC) +test "$enable_mc_alloc" = "yes" && AC_DEFINE(MC_ALLOC) test "$enable_quick_build" = "yes" && AC_DEFINE(QUICK_BUILD) test "$with_purify" = "yes" && AC_DEFINE(PURIFY) test "$with_quantify" = "yes" && AC_DEFINE(QUANTIFY) @@ -5446,6 +5493,7 @@ test "$with_hesiod" = "yes" && AC_DEFINE(HESIOD) test "$enable_union_type" = "yes" && AC_DEFINE(USE_UNION_TYPE) test "$enable_pdump" = "yes" && AC_DEFINE(PDUMP) +test "$enable_dump_in_exec" = "yes" && AC_DEFINE(DUMP_IN_EXEC) test "$with_ipv6_cname" = "yes" && AC_DEFINE(IPV6_CANONICALIZE) @@ -5697,8 +5745,24 @@ echo " WARNING: More recent versions may be safer, or not." echo " WARNING: ---------------------------------------------------------" fi -test "$enable_kkcc" = yes && echo " Using the new GC algorithms." +if test "$enable_kkcc" = yes ; then + echo " Using the new GC algorithms." + echo " WARNING: ---------------------------------------------------------" + echo " WARNING: The new algorithms are experimental. They are enabled by" + echo " WARNING: default for this release. Use \`--disable-kkcc' to" + echo " WARNING: turn it off." + echo " WARNING: ---------------------------------------------------------" +fi +if test "$enable_mc_alloc" = yes ; then + echo " Using the new allocator." + echo " WARNING: ---------------------------------------------------------" + echo " WARNING: The new allocator is experimental. It is enabled by" + echo " WARNING: default for this release. Use \`--disable-mc-alloc' to" + echo " WARNING: turn it off." + echo " WARNING: ---------------------------------------------------------" +fi test "$enable_pdump" = yes && echo " Using the new portable dumper." +test "$enable_dump_in_exec" = yes && echo " Dumping into executable." test "$enable_debug" = yes && echo " Compiling in support for extra debugging code." test "$usage_tracking" = yes && echo " Compiling in support for active usage tracking (Sun internal)." if test "$enable_error_checking_extents $enable_error_checking_types $enable_error_checking_text $enable_error_checking_gc $enable_error_checking_malloc $enable_error_checking_glyphs $enable_error_checking_byte_code $enable_error_checking_display $enable_error_checking_structures" \ diff --text -u 'xemacs-21.5.20/configure.in' 'xemacs-21.5.21/configure.in' Index: ./configure.in --- ./configure.in Wed Mar 2 07:43:34 2005 +++ ./configure.in Sat Apr 9 08:10:14 2005 @@ -535,11 +535,13 @@ with_ipv6_cname | \ external_widget | \ use_kkcc | \ + mc_alloc | \ verbose | \ extra_verbose | \ usage_tracking | \ use_union_type | \ pdump | \ + dump_in_exec | \ debug | \ use_assertions | \ memory_usage_stats | \ @@ -1612,6 +1614,17 @@ esac fi +dnl Dump into executable +if test -z "$dump_in_exec"; then + if test "$pdump" = "yes"; then + if test "$mc_alloc" = "yes"; then + dump_in_exec=no + else + dump_in_exec=yes + fi + fi +fi + if test -z "$dynamic"; then case "$opsys" in hpux* | sunos4* ) dynamic=no ;; @@ -5457,6 +5470,7 @@ test "$GCC" = "yes" && AC_DEFINE(USE_GCC) test "$external_widget" = "yes" && AC_DEFINE(EXTERNAL_WIDGET) test "$use_kkcc" = "yes" && AC_DEFINE(USE_KKCC) +test "$mc_alloc" = "yes" && AC_DEFINE(MC_ALLOC) test "$quick_build" = "yes" && AC_DEFINE(QUICK_BUILD) test "$with_purify" = "yes" && AC_DEFINE(PURIFY) test "$with_quantify" = "yes" && AC_DEFINE(QUANTIFY) @@ -5465,6 +5479,7 @@ test "$with_hesiod" = "yes" && AC_DEFINE(HESIOD) test "$use_union_type" = "yes" && AC_DEFINE(USE_UNION_TYPE) test "$pdump" = "yes" && AC_DEFINE(PDUMP) +test "$dump_in_exec" = "yes" && AC_DEFINE(DUMP_IN_EXEC) test "$with_ipv6_cname" = "yes" && AC_DEFINE(IPV6_CANONICALIZE) dnl ------------------------------- @@ -5708,7 +5723,9 @@ echo " WARNING: ---------------------------------------------------------" fi test "$use_kkcc" = yes && echo " Using the new GC algorithms." +test "$mc_alloc" = yes && echo " Using the new allocator." test "$pdump" = yes && echo " Using the new portable dumper." +test "$dump_in_exec" = yes && echo " Dumping into executable." test "$debug" = yes && echo " Compiling in support for extra debugging code." test "$usage_tracking" = yes && echo " Compiling in support for active usage tracking (Sun internal)." if test "$error_check_extents $error_check_types $error_check_text $error_check_gc $error_check_malloc $error_check_glyphs $error_check_byte_code $error_check_display $error_check_structures" \ diff --text -u 'xemacs-21.5.20/configure.usage' 'xemacs-21.5.21/configure.usage' Index: ./configure.usage --- ./configure.usage Wed Jan 26 19:02:13 2005 +++ ./configure.usage Sat Apr 9 08:10:15 2005 @@ -382,7 +382,11 @@ might say. (Infamous for being the former "experimental, don't-sue-me-if-your-house-collapses- and-your-wife-leaves-you" portable dumper.) +--dump-in-exec Put the dump image into the executable (enabled by + default for `pdump', not enabled by default in + combination with `mc-alloc'. --use-kkcc Enable the use of new GC algorithms. (EXPERIMENTAL) +--mc-alloc Enable the new allocator. (EXPERIMENTAL) --with-modules (*) Compile in experimental support for dynamically loaded libraries (Dynamic Shared Objects). diff --text -u 'xemacs-21.5.20/etc/ChangeLog' 'xemacs-21.5.21/etc/ChangeLog' Index: ./etc/ChangeLog --- ./etc/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./etc/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,20 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + +2005-05-05 Aidan Kehoe + + * NEWS: reseource -> resources (spelling fix.) + +2005-03-24 Aidan Kehoe + + * NEWS: Mention the move to XEmacs as the application class. + * sample.Xresources: Emacs as app class -> XEmacs as app class + +2005-03-23 Adrian Aichner + + * TUTORIAL: Typo fixes from Jon Ericson. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/etc/NEWS' 'xemacs-21.5.21/etc/NEWS' Index: ./etc/NEWS --- ./etc/NEWS Tue Sep 21 18:24:11 2004 +++ ./etc/NEWS Fri May 6 02:10:19 2005 @@ -35,6 +35,7 @@ -- Bignums have been implemented. -- Windows users have benefit of the full Win32 Unicode API. -- (in process) Xft provides antialiased fonts on X11. + -- "XEmacs" used as X11 application class ** Bignum implementation. @@ -43,6 +44,18 @@ This also means that large buffers (over 2^30 = 1GB) can be manipulated. +** "XEmacs" used as X11 application class + +Previously, XEmacs checked the X11 resource database for resources starting +with XEmacs, and used "XEmacs" as its application class if any existed; +otherwise it used "Emacs", for backward compatibility. Because of +divergence between the resources that GNU Emacs and XEmacs use, we've +changed this. If you don't have the time to migrate your resource DB right +now, set USE_EMACS_AS_DEFAULT_APPLICATION_CLASS in your environment before +starting XEmacs, for the old behavior. This workaround will go away in the +course of the next major release, though, so you will have to migrate your +resources at some point. + * Changes in XEmacs 21.4 ======================== diff --text -u 'xemacs-21.5.20/etc/TUTORIAL' 'xemacs-21.5.21/etc/TUTORIAL' Index: ./etc/TUTORIAL --- ./etc/TUTORIAL Wed Mar 13 17:51:24 2002 +++ ./etc/TUTORIAL Thu Mar 24 07:52:13 2005 @@ -2,8 +2,8 @@ XEmacs commands generally involve the CONTROL key (sometimes labeled CTRL or CTL) or the META key. "META" is a traditional Emacs term; on -most keyboards, the key is labelled "Alt". (On Sun keyboards, the META -key is labelled with a diamond, and is *NOT* the Alt key, which also +most keyboards, the key is labeled "Alt". (On Sun keyboards, the META +key is labeled with a diamond, and is *NOT* the Alt key, which also exists.) On some TTY's, there is no META key; in this case, use ESC. Rather than write out META or CONTROL each time we want you to prefix a character, we'll use the following abbreviations: @@ -45,7 +45,7 @@ it's useful to know the older bindings, either in case you ever use a TTY or so that you can make sense of references to them. From now on, we will mention the TTY bindings in parentheses, and expect that TTY users will -subsitute them whenever we mention a cursor key.) +substitute them whenever we mention a cursor key.) Now you may ask, what is a TTY? A TTY (or "TeleTYpe")is a text-only connection, the kind you get when you use the "telnet" program to log into @@ -107,7 +107,7 @@ META An abstract name for a particular modifier key, which has different correspondences depending on your keyboard. On most keyboards, META is the Alt key, but on Sun keyboards it's - a key labelled with a diamond, and *NOT* the Alt key, which + a key labeled with a diamond, and *NOT* the Alt key, which also exists. META can also be simulated by pressing ESC before the other key, but in reality this is just two separate keys, not a modifier plus a key: If you want to do M-f M-f, normally @@ -129,7 +129,7 @@ cursor A block or bar showing where in the text the current insertion point is. cursor key Any of the keys used for moving the cursor, such as the arrow - keys, and (often labelled PgUp and PgDn), + keys, and (often labeled PgUp and PgDn), and , etc. Usually set off to the right of the main part of the keyboard, often painted gray. echo area A one-line area at the bottom of the frame where messages are @@ -160,7 +160,7 @@ "kills" are remembered, not only the most recent, and can be accessed using M-y. "kill" is also sometimes used in general to refer to deleting anything other than text, e.g. buffers, - toolbar items, local variables, subprocesses, abbrevations, + toolbar items, local variables, subprocesses, abbreviations, or to terminating the XEmacs process. minibuffer A small buffer (usually one line, but it may expand as necessary) at the bottom of the frame, used when commands need @@ -283,7 +283,7 @@ If moving by characters is too slow, you can move by words. C- (CONTROL + right-arrow key) moves forward a word and C- moves back a -word. On TTY's, use M-f instead of C- and M-p instead of C-. +word. On TTY's, use M-f instead of C- and M-b instead of C-. >> Type a few C-'s and C-'s. @@ -474,7 +474,7 @@ Hitting ESC ESC will get you out of almost any weird mode, including selected text, split windows, the minibuffer, recursive edits, "stranded minibuffer requests", and the like. If you have many problems at once, -each invokation of ESC ESC will get rid of one, so keep repeating until +each invocation of ESC ESC will get rid of one, so keep repeating until everything's fixed. REMEMBER: ESC ESC does not work if XEmacs is hung doing some time-consuming operation or running broken code. Use C-g for that. diff --text -u 'xemacs-21.5.20/etc/sample.Xresources' 'xemacs-21.5.21/etc/sample.Xresources' Index: ./etc/sample.Xresources --- ./etc/sample.Xresources Mon Jun 30 18:12:28 2003 +++ ./etc/sample.Xresources Thu Mar 24 21:17:51 2005 @@ -27,66 +27,66 @@ ! one of "black" or "white" on monochrome systems. ! ! The valid color names on your system can be found by looking in the file -! `rgb.txt', usually found in /usr/lib/X11/ or /usr/openwin/lib/X11/. +! `rgb.txt', usually found in /usr/X11R6/lib/X11/ or /usr/openwin/lib/X11/. ! Set the foreground and background colors of the `default' face. ! The default face colors are the base for most of the other faces' ! colors. The default background is gray80, and the default foreground ! is black. -Emacs.default.attributeBackground: gray80 -Emacs.default.attributeForeground: black +XEmacs.default.attributeBackground: gray80 +XEmacs.default.attributeForeground: black ! Set the modeline colors. -Emacs.modeline*attributeForeground: Black -Emacs.modeline*attributeBackground: Gray75 +XEmacs.modeline*attributeForeground: Black +XEmacs.modeline*attributeBackground: Gray75 ! Set the color of the text cursor. -Emacs.text-cursor*attributeBackground: Red3 +XEmacs.text-cursor*attributeBackground: Red3 ! If you want to set the color of the mouse pointer, do this: -! Emacs.pointer*attributeForeground: Black +! XEmacs.pointer*attributeForeground: Black ! If you want to set the background of the mouse pointer, do this: -! Emacs.pointer*attributeBackground: White +! XEmacs.pointer*attributeBackground: White ! Note that by default, the pointer foreground and background are the same ! as the default face. ! Set the menubar colors. This overrides the default foreground and ! background colors specified above. -Emacs*menubar*Foreground: Gray30 -Emacs*menubar*Background: Gray75 +XEmacs*menubar*Foreground: Gray30 +XEmacs*menubar*Background: Gray75 ! This is for buttons in the menubar. ! Yellow would be better, but that would map to white on monochrome. -Emacs*menubar.buttonForeground: Blue -Emacs*XlwMenu.selectColor: ForestGreen -Emacs*XmToggleButton.selectColor: ForestGreen +XEmacs*menubar.buttonForeground: Blue +XEmacs*XlwMenu.selectColor: ForestGreen +XEmacs*XmToggleButton.selectColor: ForestGreen ! Specify the colors of popup menus. -Emacs*popup*Foreground: Black -Emacs*popup*Background: Gray75 +XEmacs*popup*Foreground: Black +XEmacs*popup*Background: Gray75 ! Specify the colors of the various sub-widgets of the dialog boxes. -Emacs*dialog*Foreground: Black +XEmacs*dialog*Foreground: Black ! #A5C0C1 is a shade of blue -Emacs*dialog*Background: #A5C0C1 +XEmacs*dialog*Background: #A5C0C1 ! The following three are for Motif dialog boxes ... -Emacs*dialog*XmTextField*Background: WhiteSmoke -Emacs*dialog*XmText*Background: WhiteSmoke -Emacs*dialog*XmList*Background: WhiteSmoke +XEmacs*dialog*XmTextField*Background: WhiteSmoke +XEmacs*dialog*XmText*Background: WhiteSmoke +XEmacs*dialog*XmList*Background: WhiteSmoke ! While this one is for Athena dialog boxes. -Emacs*dialog*Command*Background: WhiteSmoke +XEmacs*dialog*Command*Background: WhiteSmoke ! Athena dialog boxes are sometimes built with the Xaw3d ! variant of the Athena toolkit. ! XEmacs being nice to 8bit displays, it defaults to: -Emacs*dialog*Command*beNiceToColormap: true +XEmacs*dialog*Command*beNiceToColormap: true ! If you are shocked by the ugliness of the 3d rendition, ! you may want to set (even on 8bit displays) the above to false. ! Xlw Scrollbar colors -Emacs*XlwScrollBar.Foreground: Gray30 -Emacs*XlwScrollBar.Background: Gray75 -Emacs*XmScrollBar.Foreground: Gray30 -Emacs*XmScrollBar.Background: Gray75 +XEmacs*XlwScrollBar.Foreground: Gray30 +XEmacs*XlwScrollBar.Background: Gray75 +XEmacs*XmScrollBar.Foreground: Gray30 +XEmacs*XmScrollBar.Background: Gray75 ! ! The Lucid Scrollbar supports two added resources, SliderStyle is either @@ -95,8 +95,8 @@ ! either "opposite" (default) or "same". Opposite puts the arrows at opposite ! of the scrollbar, same puts both arrows at the same end, like the Amiga. ! -! Emacs*XlwScrollBar.SliderStyle: dimple -! Emacs*XlwScrollBar.ArrowPosition: opposite +! XEmacs*XlwScrollBar.SliderStyle: dimple +! XEmacs*XlwScrollBar.ArrowPosition: opposite ! @@ -107,53 +107,53 @@ ! ! To change the heights and widths of the toolbars: ! -! Emacs.topToolBarHeight: 37 -! Emacs.bottomToolBarHeight: 0 -! Emacs.leftToolBarWidth: 0 -! Emacs.rightToolBarWidth: 0 - -Emacs*topToolBarShadowColor: Gray90 -Emacs*bottomToolBarShadowColor: Gray40 -Emacs*backgroundToolBarColor: Gray75 -Emacs*toolBarShadowThickness: 2 +! XEmacs.topToolBarHeight: 37 +! XEmacs.bottomToolBarHeight: 0 +! XEmacs.leftToolBarWidth: 0 +! XEmacs.rightToolBarWidth: 0 + +XEmacs*topToolBarShadowColor: Gray90 +XEmacs*bottomToolBarShadowColor: Gray40 +XEmacs*backgroundToolBarColor: Gray75 +XEmacs*toolBarShadowThickness: 2 ! If you want to turn off vertical scrollbars, or change the default ! pixel width of the vertical scrollbars, do it like this (0 width ! means no vertical scrollbars): ! -! Emacs.scrollBarWidth: 0 +! XEmacs.scrollBarWidth: 0 ! ! To change it for a particular frame, do this: ! -! Emacs*FRAME-NAME.scrollBarWidth: 0 +! XEmacs*FRAME-NAME.scrollBarWidth: 0 ! If you want to turn off horizontal scrollbars, or change the default ! pixel height of the horizontal scrollbars, do it like this (0 height ! means no horizontal scrollbars): ! -! Emacs.scrollBarHeight: 0 +! XEmacs.scrollBarHeight: 0 ! ! To change it for a particular frame, do this: ! -! Emacs*FRAME-NAME.scrollBarHeight: 0 +! XEmacs*FRAME-NAME.scrollBarHeight: 0 ! To dynamically change the labels used for menubar buttons... ! -! Emacs*XlwMenu.resourceLabels: True -! Emacs*XlwMenu.newFrame.labelString: Open Another Window +! XEmacs*XlwMenu.resourceLabels: True +! XEmacs*XlwMenu.newFrame.labelString: Open Another Window ! To have the Motif scrollbars on the left instead of the right, do this: ! -! Emacs*scrollBarPlacement: BOTTOM_LEFT +! XEmacs*scrollBarPlacement: BOTTOM_LEFT ! ! To have the Athena scrollbars on the right, use `BOTTOM_RIGHT' instead ! To have Motif scrollbars act more like Xt scrollbars... ! -! Emacs*XmScrollBar.translations: #override \n\ +! XEmacs*XmScrollBar.translations: #override \n\ ! : PageDownOrRight(0) \n\ ! : PageUpOrLeft(0) @@ -179,22 +179,22 @@ ! by lisp code which tries a number of different possibilities in order ! of preference. If you wish to override it, use this: ! -! Emacs.default.attributeFont: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* +! XEmacs.default.attributeFont: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* ! If you choose a font which does not have an italic version, you can specify ! some other font to use for it here: ! -! Emacs.italic.attributeFont: -*-courier-medium-o-*-*-*-120-*-*-*-*-iso8859-* +! XEmacs.italic.attributeFont: -*-courier-medium-o-*-*-*-120-*-*-*-*-iso8859-* ! ! If you choose a font which does not have a bold-italic version, ! you can specify some other font to use for it here: ! -! Emacs.bold-italic.attributeFont: -*-courier-bold-o-*-*-*-120-*-*-*-*-iso8859-* +! XEmacs.bold-italic.attributeFont: -*-courier-bold-o-*-*-*-120-*-*-*-*-iso8859-* ! ! And here is how you would set the background color of the `highlight' face, ! but only on the screen named `debugger': ! -! Emacs*debugger.highlight.attributeBackground: PaleTurquoise +! XEmacs*debugger.highlight.attributeBackground: PaleTurquoise ! ! See the NEWS file (C-h n) for a more complete description of the resource ! syntax of faces. @@ -230,29 +230,29 @@ ! (Motif uses `fontList' while most other things use `font' - if you don't ! know why you probably don't want to.) ! -Emacs*XmDialogShell*FontList: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* -Emacs*XmTextField*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* -Emacs*XmText*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* -Emacs*XmList*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* +XEmacs*XmDialogShell*FontList: -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-* +XEmacs*XmTextField*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* +XEmacs*XmText*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* +XEmacs*XmList*FontList: -*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-* ! Font in the Athena dialog boxes. ! I think 14-point looks nicer than 12-point. ! Some people use 12-point anyway because you get more text, but ! there's no purpose at all in doing this for dialog boxes. -Emacs*Dialog*Font: -*-helvetica-bold-r-*-*-*-140-*-*-*-*-iso8859-* +XEmacs*Dialog*Font: -*-helvetica-bold-r-*-*-*-140-*-*-*-*-iso8859-* ! Dialog box translations. ! ======================= ! This accelerator binds in a dialog box to on button1 -Emacs*dialog*button1.accelerators:#override\ +XEmacs*dialog*button1.accelerators:#override\ Return: ArmAndActivate()\n\ KP_Enter: ArmAndActivate()\n\ Ctrlm: ArmAndActivate()\n ! Translations to make the TextField widget behave more like XEmacs -Emacs*XmTextField.translations: #override\n\ +XEmacs*XmTextField.translations: #override\n\ !osfBackSpace: delete-previous-character()\n\ !osfDelete: delete-previous-character()\n\ !Ctrlh: delete-previous-character()\n\ @@ -280,7 +280,7 @@ ! ArmAndActivate() for buttons that appear in dialog boxes. This is ! not 100% Motif compliant but the benefits far outweight the ! compliancy problem. -Emacs*dialog*XmPushButton.translations:#override\n\ +XEmacs*dialog*XmPushButton.translations:#override\n\ : Arm()\n\ ,: Activate()\ Disarm()\n\ @@ -301,7 +301,7 @@ ! ximStyles is a (whitespace or comma-separated) list of XIMStyles in ! order of user's preference. ! Choose a subset of the following styles or reorder to taste -Emacs*ximStyles: XIMPreeditPosition|XIMStatusArea\ +XEmacs*ximStyles: XIMPreeditPosition|XIMStatusArea\ XIMPreeditPosition|XIMStatusNothing\ XIMPreeditPosition|XIMStatusNone\ XIMPreeditNothing|XIMStatusArea\ @@ -312,8 +312,8 @@ XIMPreeditNone|XIMStatusNone ! XIM Preedit and Status foreground and background -Emacs*EmacsFrame.ximForeground: black -Emacs*EmacsFrame.ximBackground: white +XEmacs*EmacsFrame.ximForeground: black +XEmacs*EmacsFrame.ximBackground: white ! XIM fontset (defaults to system fontset default) -! Emacs*EmacsFrame.FontSet: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-* +! XEmacs*EmacsFrame.FontSet: -dt-interface user-medium-r-normal-s*-*-*-*-*-*-*-*-* diff --text -u 'xemacs-21.5.20/lib-src/ChangeLog' 'xemacs-21.5.21/lib-src/ChangeLog' Index: ./lib-src/ChangeLog --- ./lib-src/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./lib-src/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,22 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + +2005-04-01 Marcus Crestani + + The new allocator. + + DUMP_IN_EXEC: + + * Makefile.in.in: Only compile insert-data-in-exec if + DUMP_IN_EXEC is defined. + +2005-03-25 Andrey Slusar + + * fakemail.c (CURRENT_USER): Define it if FreeBSD version is >= + 400000. Also, when FreeBSD version is >= 400000 geteuid returns + uid_t instead of unsigned short. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/lib-src/Makefile.in.in' 'xemacs-21.5.21/lib-src/Makefile.in.in' Index: ./lib-src/Makefile.in.in --- ./lib-src/Makefile.in.in Fri Apr 16 05:56:17 2004 +++ ./lib-src/Makefile.in.in Sat Apr 9 08:10:36 2005 @@ -129,7 +129,11 @@ ## Things that XEmacs uses during the build process itself. ## Not installed. +#ifdef DUMP_IN_EXEC BUILD_UTILITIES = make-path make-dump-id insert-data-in-exec +#else +BUILD_UTILITIES = make-path make-dump-id +#endif EXES = ${PUBLIC_INSTALLABLE_EXES} ${PRIVATE_INSTALLABLE_EXES} ${BUILD_UTILITIES} SCRIPTS = ${PUBLIC_INSTALLABLE_SCRIPTS} ${PRIVATE_INSTALLABLE_SCRIPTS} @@ -375,8 +379,10 @@ make-dump-id: ${srcdir}/make-dump-id.c $(CC) $(cflags) ${srcdir}/make-dump-id.c $(ldflags) -o $@ +#ifndef DUMP_IN_EXEC insert-data-in-exec: ${srcdir}/insert-data-in-exec.c $(CC) $(cflags) ${srcdir}/insert-data-in-exec.c $(ldflags) -o $@ +#endif /* not DUMP_IN_EXEC */ cflags_gnuserv = $(CFLAGS) $(cppflags) $(c_switch_all) ldflags_gnuserv = $(LDFLAGS) $(ld_switch_all) @libs_xauth@ $(ld_libs_general) diff --text -u 'xemacs-21.5.20/lib-src/fakemail.c' 'xemacs-21.5.21/lib-src/fakemail.c' Index: ./lib-src/fakemail.c --- ./lib-src/fakemail.c Wed Jan 26 18:53:28 2005 +++ ./lib-src/fakemail.c Sat Mar 26 01:34:54 2005 @@ -149,9 +149,17 @@ extern char *malloc (), *realloc (); #endif +#if defined(__FreeBSD_version) && __FreeBSD_version >= 400000 +#define CURRENT_USER +#endif + #ifdef CURRENT_USER extern struct passwd *getpwuid (); -extern unsigned short geteuid (); +#if defined(__FreeBSD_version) && __FreeBSD_version >= 400000 +extern uid_t geteuid (); +#else +extern unsigned short geteuid (); +#endif static struct passwd *my_entry; #define cuserid(s) \ (my_entry = getpwuid ((int) geteuid ()), \ diff --text -u 'xemacs-21.5.20/lisp/ChangeLog' 'xemacs-21.5.21/lisp/ChangeLog' Index: ./lisp/ChangeLog --- ./lisp/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./lisp/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,154 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + +2005-05-15 Marcus Crestani + + * diagnose.el: Lrecord and string data statistics. + * diagnose.el (show-memory-usage): Add output for additional + lrecord statistics (currently only string data). + * diagnose.el (show-lrecord-stats): New. Print detailed lrecord + statistics. + +2005-05-10 Aidan Kehoe + + * menubar-items.el (default-menubar): + * simple.el: + * simple.el (mail-user-agent): + * simple.el (vm-user-agent): + * simple.el ('vm-user-agent): New. + * simple.el (xemacs-default-composefunc): New. + * simple.el (xemacs-default-sendfunc): New. + * simple.el ('xemacs-default-mail-user-agent): New. + Update the docstring for mail-user-agent to mention VM; default to + sendmail-user-agent, but on first use, give a huge warning that it + is underfeatured and not likely to get better in the medium term, + and the user should choose another mail client. + +2005-05-10 Aidan Kehoe + + * x-init.el (x-initialize-keyboard): Give info about any unbound + Unicode keysyms. + +2005-05-10 Aidan Kehoe + + * mule/european.el: + * mule/latin.el: + Add full syntax table and case mapping information for + iso-8859-14, iso-8859-15, iso-8859-16. + +2005-05-05 Aidan Kehoe + + * mule/mule-ccl.el (define-ccl-program): Spelling and grammar fix + in docstring. + +2005-05-05 Aidan Kehoe + + * map-ynp.el: Grammar fix in comment. + +2005-05-05 Aidan Kehoe + + * startup.el (command-line): Call font-lock-set-defaults to make + the user's choice of fontification take effect in *scratch*. + +2005-04-12 Mike Sperber + + * minibuf.el (get-user-response): Move here from dialog.el so it + works even when dialogs are not available. + * dialog.el: See above. + +2005-04-01 Marcus Crestani + + The new allocator. + + MEMORY_USAGE_STATS + + * diagnose.el: Add new lisp function to pretty print statistics + about the new allocator. + * diagnose.el (show-mc-alloc-memory-usage): New. + +2005-04-08 Aidan Kehoe + + * files.el (find-file): Honour the coding system argument even in + the case where we're creating a new file. + +2005-04-04 Steve Youngs + + * files.el (backup-buffer): Write "%backup%~" in + `auto-save-directory' and fall back to $HOME if for some reason + that isn't possible. + Suggested By: Jamie Zawinski + +2005-03-31 Aidan Kehoe + + * faces.el (face-complain-about-font): + * x-faces.el: + The warnings when there wasn't a bold or italic version of a given + font available still specified "Emacs" as the X11 resource + class. Change this to "XEmacs." + +2005-03-29 Aidan Kehoe + + * startup.el (command-line): Move Mule initialisation before + window-system initialisation, because the latter depends on + Unicode support with X11 and Unicode keysyms. + +2005-03-28 Aidan Kehoe + + * register.el (insert-register): Revert part of Ben's incomplete + sync of 2005-01-26--we don't have insert-for-yank. + +2005-03-25 Ralf Angeli + + * easymenu.el (easy-menu-remove): As described in + E1D4Nn5-0001lq-EU@neutrino.iwi.uni-sb.de; don't strip everything + except the "Command" menu from mode-popup-menu. + +2005-03-25 Ralf Angeli + + * font.el (font-spatial-to-canonical): Correct calculation of + return value for pixel-based input value. + +2005-03-17 Mike Sperber + + * files.el: Merge the following changes from GNU Emacs: + + 2005-01-04 Andreas Schwab + + * files.el (insert-directory): Only look for error lines in + inserted text. Don't move too far after processing --dired markers. + + 2004-12-27 Richard M. Stallman + + * files.el (insert-directory-ls-version): New variable. + (insert-directory): When ls returns an error, test the version + number to decide what the return code means. + With --dired output format, detect and distinguish lines + that are really error messages. + (insert-directory-adj-pos): New function. + + 2004-09-25 Stefan Monnier + + * files.el (insert-directory): Obey --dired even with symlinks. + + 2004-05-25 Luc Teirlinck + + (insert-directory): Check that lines were really inserted by + the --dired switch, before erasing them. + + 2004-04-17 Richard M. Stallman + + * files.el (insert-directory): Delete any error msg output by the + `insert-directory-program'. + +2005-03-12 Fabrice Popineau + + * select.el (get-selection): As described in + u0nj9nvq.fsf@esemetz.metz.supelec.fr , get-selection-internal + returns nil instead of signalling a selection-conversion + error on win32. Also, Aidan had a logic error while traversing a + list. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/lisp/diagnose.el' 'xemacs-21.5.21/lisp/diagnose.el' Index: ./lisp/diagnose.el --- ./lisp/diagnose.el Mon Feb 28 16:43:18 2005 +++ ./lisp/diagnose.el Mon May 16 01:37:56 2005 @@ -139,8 +139,9 @@ (princ (make-string 40 ?-)) (princ "\n") (map-plist #'(lambda (stat num) - (when (string-match "\\(.*\\)-storage$" - (symbol-name stat)) + (when (string-match + "\\(.*\\)-storage\\(-additional\\)?$" + (symbol-name stat)) (incf total num) (princ (format fmt (match-string 1 (symbol-name stat)) @@ -163,3 +164,236 @@ (princ (format "\n\ngrand total: %s\n" grandtotal))) grandtotal)))) + + +(defun show-lrecord-stats () + "Show statistics about lrecord usage in XEmacs." + (interactive) + (garbage-collect) + (let ((buffer "*lrecord statistics*") + (plist (lrecord-stats)) + (fmt "%-30s%10s%10s\n") + (grandtotal 0) + begin) + (flet ((show-stats (match-string) + (princ (format fmt "object" "count" "storage")) + (princ (make-string 50 ?-)) + (princ "\n") + (let ((total-use 0) + (total-use-overhead 0) + (total-count 0)) + (map-plist + #'(lambda (stat num) + (when (string-match match-string + (symbol-name stat)) + (let ((storage-use num) + (storage-use-overhead + (plist-get + plist + (intern (concat (match-string 1 (symbol-name stat)) + "-storage-including-overhead")))) + (storage-count + (or (plist-get + plist + (intern + (concat (match-string 1 (symbol-name stat)) + "s-used"))) + (plist-get + plist + (intern + (concat (match-string 1 (symbol-name stat)) + "es-used"))) + (plist-get + plist + (intern + (concat (match-string 1 (symbol-name stat)) + "-used")))))) + (incf total-use storage-use) + (incf total-use-overhead (if storage-use-overhead + storage-use-overhead + storage-use)) + (incf total-count storage-count) + (princ (format fmt + (match-string 1 (symbol-name stat)) + storage-count storage-use))))) + plist) + (princ "\n") + (princ (format fmt "total" + total-count total-use-overhead)) + (incf grandtotal total-use-overhead) + (sort-numeric-fields -1 + (save-excursion + (goto-char begin) + (forward-line 2) + (point)) + (save-excursion + (forward-line -2) + (point)))))) + (with-output-to-temp-buffer buffer + (save-excursion + (set-buffer buffer) + (setq begin (point)) + (princ "Allocated with new allocator:\n") + (show-stats "\\(.*\\)-storage$") + (princ "\n\n") + (setq begin (point)) + (princ "Allocated additionally:\n") + (show-stats "\\(.*\\)-storage-additional$") + (princ (format "\n\ngrand total: %s\n" grandtotal))) + grandtotal)))) + + +(defun show-mc-alloc-memory-usage () + "Show statistics about memory usage of the new allocator." + (interactive) + (garbage-collect) + (let* ((stats (mc-alloc-memory-usage)) + (page-size (first stats)) + (heap-sects (second stats)) + (used-plhs (third stats)) + (unmanaged-plhs (fourth stats)) + (free-plhs (fifth stats)) + (globals (sixth stats)) + (mc-malloced-bytes (seventh stats))) + (with-output-to-temp-buffer "*memory usage*" + (flet ((print-used-plhs (text plhs) + (let ((sum-n-pages 0) + (sum-used-n-cells 0) + (sum-used-space 0) + (sum-used-total 0) + (sum-total-n-cells 0) + (sum-total-space 0) + (sum-total-total 0) + (fmt "%7s%7s|%7s%9s%9s%4s|%7s%9s%9s%4s|%4s\n")) + (princ (format "%-14s|%-29s|%-29s|\n" + text + " currently in use" + " total available")) + (princ (format fmt "cell-sz" "#pages" + "#cells" "space" "total" "% " + "#cells" "space" "total" "% " "% ")) + (princ (make-string 79 ?-)) + (princ "\n") + (while plhs + (let* ((elem (car plhs)) + (cell-size (first elem)) + (n-pages (second elem)) + (used-n-cells (third elem)) + (used-space (fourth elem)) + (used-total (if (zerop cell-size) + (sixth elem) + (* cell-size used-n-cells))) + (used-eff (floor (if (not (zerop used-total)) + (* (/ (* used-space 1.0) + (* used-total 1.0)) + 100.0) + 0))) + (total-n-cells (fifth elem)) + (total-space (if (zerop cell-size) + used-space + (* cell-size total-n-cells))) + (total-total (sixth elem)) + (total-eff (floor (if (not (zerop total-total)) + (* (/ (* total-space 1.0) + (* total-total 1.0)) + 100.0) + 0))) + (eff (floor (if (not (zerop total-total)) + (* (/ (* used-space 1.0) + (* total-total 1.0)) + 100.0) + 0)))) + (princ (format fmt + cell-size n-pages used-n-cells used-space + used-total used-eff total-n-cells + total-space total-total total-eff eff)) + (incf sum-n-pages n-pages) + (incf sum-used-n-cells used-n-cells) + (incf sum-used-space used-space) + (incf sum-used-total used-total) + (incf sum-total-n-cells total-n-cells) + (incf sum-total-space total-space) + (incf sum-total-total total-total)) + (setq plhs (cdr plhs))) + (let ((avg-used-eff (floor (if (not (zerop sum-used-total)) + (* (/ (* sum-used-space 1.0) + (* sum-used-total 1.0)) + 100.0) + 0))) + (avg-total-eff (floor (if (not (zerop sum-total-total)) + (* (/ (* sum-total-space 1.0) + (* sum-total-total 1.0)) + 100.0) + 0))) + (avg-eff (floor (if (not (zerop sum-total-total)) + (* (/ (* sum-used-space 1.0) + (* sum-total-total 1.0)) + 100.0) + 0)))) + (princ (format fmt "sum " sum-n-pages sum-used-n-cells + sum-used-space sum-used-total avg-used-eff + sum-total-n-cells sum-total-space + sum-total-total avg-total-eff avg-eff)) + (princ "\n")))) + + + (print-free-plhs (text plhs) + (let ((sum-n-pages 0) + (sum-n-sects 0) + (sum-space 0) + (sum-total 0) + (fmt "%6s%10s |%7s%10s\n")) + (princ (format "%s\n" text)) + (princ (format fmt "#pages" "space" "#sects" "total")) + (princ (make-string 35 ?-)) + (princ "\n") + (while plhs + (let* ((elem (car plhs)) + (n-pages (first elem)) + (n-sects (second elem)) + (space (* n-pages page-size)) + (total (* n-sects space))) + (princ (format fmt n-pages space n-sects total)) + (incf sum-n-pages n-pages) + (incf sum-n-sects n-sects) + (incf sum-space space) + (incf sum-total total)) + (setq plhs (cdr plhs))) + (princ (make-string 35 ?=)) + (princ "\n") + (princ (format fmt sum-n-pages sum-space + sum-n-sects sum-total)) + (princ "\n")))) + + (princ (format "%-12s%10s\n\n" "PAGE_SIZE" page-size)) + + (print-used-plhs "USED HEAP" used-plhs) + (princ "\n\n") + + (print-used-plhs "UNMANAGED HEAP" unmanaged-plhs) + (princ "\n\n") + + (print-free-plhs "FREE HEAP" free-plhs) + (princ "\n\n") + + (let ((fmt "%-30s%10s\n")) + (princ (format fmt "heap sections" "")) + (princ (make-string 40 ?-)) + (princ "\n") + (princ (format fmt "number of heap sects" + (first heap-sects))) + (princ (format fmt "used size" (second heap-sects))) + (princ (make-string 40 ?-)) + (princ "\n") + (princ (format fmt "real size" (third heap-sects))) + (princ (format fmt "global allocator structs" globals)) + (princ (make-string 40 ?-)) + (princ "\n") + (princ (format fmt "real size + structs" + (+ (third heap-sects) globals))) + (princ "\n") + (princ (make-string 40 ?=)) + (princ "\n") + (princ (format fmt "grand total" mc-malloced-bytes))) + + (+ mc-malloced-bytes))))) diff --text -u 'xemacs-21.5.20/lisp/dialog.el' 'xemacs-21.5.21/lisp/dialog.el' Index: ./lisp/dialog.el --- ./lisp/dialog.el Thu Nov 28 21:34:44 2002 +++ ./lisp/dialog.el Thu Apr 14 14:58:45 2005 @@ -92,116 +92,6 @@ `[,(car x) (dialog-box-finish ',(cdr x)) t]))) (cdr contents)))) -(defun get-user-response (position question answers) - "Ask a question and get a response from the user, in minibuffer or dialog box. -POSITION specifies which frame to use. -This is normally an event or a window or frame. -If POSITION is t or nil, it means to use the frame the mouse is on. -The dialog box appears in the middle of the specified frame. - -QUESTION is the question to ask (it should end with a question mark followed -by a space). - -ANSWERS are the possible answers. It is a list; each item looks like - - (KEY BUTTON-TEXT RESPONSE) - -where KEY is the key to be pressed in the minibuffer, BUTTON-TEXT is the -text to be displayed in a dialog box button (you should put %_ in it to -indicate the accelerator), and RESPONSE is a value (typically a symbol) -to be returned if the user selects this response. KEY should be either a -single character or a string; which one you use needs to be consistent for -all responses and determines whether the user responds by hitting a single -key or typing in a string and hitting ENTER. - -An item may also be just a string--that makes a nonselectable item in the -dialog box and is ignored in the minibuffer. - -An item may also be nil -- that means to put all preceding items -on the left of the dialog box and all following items on the right; ignored -in the minibuffer." - (if (should-use-dialog-box-p) - (get-dialog-box-response - position - (cons question - (mapcar #'(lambda (x) - (cond - ((null x) nil) - ((stringp x) x) - (t (cons (second x) (third x))))) - answers))) - (save-excursion - (let* ((answers (remove-if-not #'consp answers)) - (possible - (gettext - (flet ((car-to-string-if (x) - (setq x (car x)) - (if (stringp x) x (char-to-string x)))) - (concat (mapconcat #'car-to-string-if - (butlast answers) ", ") " or " - (car-to-string-if (car (last answers))))))) - (question (gettext question)) - (p (format "%s(%s) " question possible))) - (block nil - (if (stringp (caar answers)) - ;; based on yes-or-no-p. - (while t - (let* ((ans (downcase (read-string p nil t))) ;no history - (res (member* ans answers :test #'equal :key #'car))) - (if res (return (third (car res))) - (ding nil 'yes-or-no-p) - (discard-input) - (message "Please answer %s." possible) - (sleep-for 2)))) - ;; based on y-or-n-p. - (save-excursion - (let* ((pre "") event) - (while t - (if (let ((cursor-in-echo-area t) - (inhibit-quit t)) - (message "%s%s(%s) " pre question possible) - (setq event (next-command-event event)) - (condition-case nil - (prog1 - (or quit-flag (eq 'keyboard-quit - (key-binding event))) - (setq quit-flag nil)) - (wrong-type-argument t))) - (progn - (message "%s%s(%s) %s" pre question possible - (single-key-description event)) - (setq quit-flag nil) - (signal 'quit '()))) - (let* ((keys (events-to-keys (vector event))) - (def (lookup-key query-replace-map keys))) - (cond -; ((eq def 'skip) -; (message "%s%sNo" question possible) -; (return nil)) -; ((eq def 'act) -; (message "%s%sYes" question possible) -; (return t)) - ((eq def 'recenter) - (recenter)) - ((or (eq def 'quit) (eq def 'exit-prefix)) - (signal 'quit '())) - ((button-release-event-p event) ; ignore them - nil) - (t - (let ((res (member* (event-to-character event) answers - :key #'car))) - (if res (return (third (car res))) - (message "%s%s(%s) %s" pre question possible - (single-key-description event)) - (ding nil 'y-or-n-p) - (discard-input) - (if (= (length pre) 0) - (setq pre (format "Please answer %s. " - ;; 17 parens! a record in - ;; our lisp code. - possible))))))))))))))))) - - (defun message-box (fmt &rest args) "Display a message, in a dialog box if possible. If the selected device has no dialog-box support, use the echo area. diff --text -u 'xemacs-21.5.20/lisp/easymenu.el' 'xemacs-21.5.21/lisp/easymenu.el' Index: ./lisp/easymenu.el --- ./lisp/easymenu.el Thu Feb 3 14:03:38 2005 +++ ./lisp/easymenu.el Sat Mar 26 01:15:56 2005 @@ -203,7 +203,7 @@ "Remove MENU from the current menu bar." (when (featurep 'menubar) (setq easy-menu-all-popups (delq menu easy-menu-all-popups) - mode-popup-menu (if (< (length easy-menu-all-popups) 1) + mode-popup-menu (if (> (length easy-menu-all-popups) 1) (cons (easy-menu-title) (reverse easy-menu-all-popups)) (let ((same-as-menu diff --text -u 'xemacs-21.5.20/lisp/faces.el' 'xemacs-21.5.21/lisp/faces.el' Index: ./lisp/faces.el --- ./lisp/faces.el Tue Dec 3 23:02:50 2002 +++ ./lisp/faces.el Thu Mar 31 20:28:44 2005 @@ -1746,9 +1746,9 @@ visually distinguishable from the default face. For example, you could add one of the following to $HOME/Emacs: -Emacs.%s.attributeFont: -dt-*-medium-i-* +XEmacs.%s.attributeFont: -dt-*-medium-i-* or -Emacs.%s.attributeForeground: hotpink\n" +XEmacs.%s.attributeForeground: hotpink\n" invocation-name (if (string-match "\\`[aeiouAEIOU]" face) "an" "a") face diff --text -u 'xemacs-21.5.20/lisp/files.el' 'xemacs-21.5.21/lisp/files.el' Index: ./lisp/files.el --- ./lisp/files.el Sun Dec 12 11:47:09 2004 +++ ./lisp/files.el Fri Apr 8 23:07:00 2005 @@ -864,12 +864,20 @@ (read-coding-system "Coding system: ")) t)) (if codesys - (let ((coding-system-for-read - (get-coding-system codesys))) - (let ((value (find-file-noselect filename nil nil wildcards))) - (if (listp value) - (mapcar 'switch-to-buffer (nreverse value)) - (switch-to-buffer value)))) + (let* ((coding-system-for-read (get-coding-system codesys)) + (value (find-file-noselect filename nil nil wildcards)) + (bufname (if (listp value) (car (nreverse value)) value))) + ;; If a user explicitly specified the coding system with a prefix + ;; argument when opening a nonexistent file, insert-file-contents + ;; hasn't preserved that coding system as the local + ;; buffer-file-coding-system. Do that ourselves. + (unless (and bufname + (file-exists-p (buffer-file-name bufname)) + (local-variable-p 'buffer-file-coding-system bufname)) + (save-excursion + (set-buffer bufname) + (setq buffer-file-coding-system coding-system-for-read))) + (switch-to-buffer bufname)) (let ((value (find-file-noselect filename nil nil wildcards))) (if (listp value) (mapcar 'switch-to-buffer (nreverse value)) @@ -2390,10 +2398,15 @@ (rename-file real-file-name backupname t) (setq setmodes (file-modes backupname))) (file-error - ;; If trouble writing the backup, write it in ~. + ;; If trouble writing the backup, write + ;; it in `auto-save-directory'. Fall + ;; back to $HOME if that's not possible. (setq backupname - (expand-file-name - (convert-standard-filename "~/%backup%~"))) + (expand-file-name "%backup%~" + (or (when (and auto-save-directory + (file-writable-p auto-save-directory)) + auto-save-directory) + (getenv "HOME")))) (lwarn 'file 'alert "Cannot write backup file; backing up in %s" (file-name-nondirectory backupname)) (sleep-for 1) @@ -4085,6 +4098,8 @@ ;; END SYNC WITH FSF 21.2. +(defvar insert-directory-ls-version 'unknown) + (defun insert-directory (file switches &optional wildcard full-directory-p) "Insert directory listing for FILE, formatted according to SWITCHES. Leaves point after the inserted text. @@ -4165,13 +4180,73 @@ ;;#### Unix-specific ".") file)))))))) + + ;; If we got "//DIRED//" in the output, it means we got a real + ;; directory listing, even if `ls' returned nonzero. + ;; So ignore any errors. + (when (if (stringp switches) + (string-match "--dired\\>" switches) + (member "--dired" switches)) + (save-excursion + (forward-line -2) + (when (looking-at "//SUBDIRED//") + (forward-line -1)) + (if (looking-at "//DIRED//") + (setq result 0)))) + + (when (and (not (eq 0 result)) + (eq insert-directory-ls-version 'unknown)) + ;; The first time ls returns an error, + ;; find the version numbers of ls, + ;; and set insert-directory-ls-version + ;; to > if it is more than 5.2.1, < if it is less, nil if it + ;; is equal or if the info cannot be obtained. + ;; (That can mean it isn't GNU ls.) + (let ((version-out + (with-temp-buffer + (call-process "ls" nil t nil "--version") + (buffer-string)))) + (if (string-match "ls (.*utils) \\([0-9.]*\\)$" version-out) + (let* ((version (match-string 1 version-out)) + (split (split-string version "[.]")) + (numbers (mapcar 'string-to-int split)) + (min '(5 2 1)) + comparison) + (while (and (not comparison) (or numbers min)) + (cond ((null min) + (setq comparison '>)) + ((null numbers) + (setq comparison '<)) + ((> (car numbers) (car min)) + (setq comparison '>)) + ((< (car numbers) (car min)) + (setq comparison '<)) + (t + (setq numbers (cdr numbers) + min (cdr min))))) + (setq insert-directory-ls-version (or comparison '=))) + (setq insert-directory-ls-version nil)))) + + ;; For GNU ls versions 5.2.2 and up, ignore minor errors. + (when (and (eq 1 result) (eq insert-directory-ls-version '>)) + (setq result 0)) + ;; If `insert-directory-program' failed, signal an error. - (if (/= result 0) - ;; On non-Posix systems, we cannot open a directory, so - ;; don't even try, because that will always result in - ;; the ubiquitous "Access denied". Instead, show the - ;; command line so the user can try to guess what went wrong. - (error "Listing directory failed.")) + (unless (eq 0 result) + ;; Delete the error message it may have output. + (delete-region beg (point)) + ;; On non-Posix systems, we cannot open a directory, so + ;; don't even try, because that will always result in + ;; the ubiquitous "Access denied". Instead, show the + ;; command line so the user can try to guess what went wrong. + (if (and (file-directory-p file) + (memq system-type '(ms-dos windows-nt))) + (error + "Reading directory: \"%s %s -- %s\" exited with status %s" + insert-directory-program + (if (listp switches) (concat switches) switches) + file result) + (error "Listing directory failed"))) (when (or (and (listp switches) (member "--dired" switches)) @@ -4180,28 +4255,64 @@ (when (looking-at "//SUBDIRED//") (delete-region (point) (progn (forward-line 1) (point))) (forward-line -1)) - (let ((end (line-end-position))) - (forward-word 1) - (forward-char 3) - (while (< (point) end) - (let ((start (+ beg (read (current-buffer)))) - (end (+ beg (read (current-buffer))))) - (if (= (char-after end) ?\n) - (let ((filename-extent (make-extent start end))) - (set-extent-property filename-extent 'dired-file-name t) - (set-extent-property filename-extent 'start-open t) - (set-extent-property filename-extent 'end-open t)) - ;; It seems that we can't trust ls's output as to - ;; byte positions of filenames. - (map-extents - #'(lambda (extent maparg) - (delete-extent extent) - nil) - nil beg (point) nil nil 'dired-file-name) - (end-of-line)))) - (goto-char end) - (beginning-of-line) - (delete-region (point) (progn (forward-line 2) (point)))))))))) + (if (looking-at "//DIRED//") + (let ((end (line-end-position)) + (linebeg (point)) + error-lines) + ;; Find all the lines that are error messages, + ;; and record the bounds of each one. + (goto-char beg) + (while (< (point) linebeg) + (or (eql (following-char) ?\s) + (push (list (point) (line-end-position)) error-lines)) + (forward-line 1)) + (setq error-lines (nreverse error-lines)) + ;; Now read the numeric positions of file names. + (goto-char linebeg) + (forward-word 1) + (forward-char 3) + (while (< (point) end) + (let ((start (insert-directory-adj-pos + (+ beg (read (current-buffer))) + error-lines)) + (end (insert-directory-adj-pos + (+ beg (read (current-buffer))) + error-lines))) + (if (memq (char-after end) '(?\n ?\ )) + ;; End is followed by \n or by " -> ". + (let ((filename-extent (make-extent start end))) + (set-extent-property filename-extent 'dired-file-name t) + (set-extent-property filename-extent 'start-open t) + (set-extent-property filename-extent 'end-open t)) + ;; It seems that we can't trust ls's output as to + ;; byte positions of filenames. + (map-extents + #'(lambda (extent maparg) + (delete-extent extent) + nil) + nil beg (point) nil nil 'dired-file-name) + (end-of-line)))) + (goto-char end) + (beginning-of-line) + (delete-region (point) (progn (forward-line 1) (point)))) + ;; Take care of the case where the ls output contains a + ;; "//DIRED-OPTIONS//"-line, but no "//DIRED//"-line + ;; and we went one line too far back (see above). + (forward-line 1)) + (if (looking-at "//DIRED-OPTIONS//") + (delete-region (point) (progn (forward-line 1) (point)))))))))) + +(defun insert-directory-adj-pos (pos error-lines) + "Convert `ls --dired' file name position value POS to a buffer position. +File name position values returned in ls --dired output +count only stdout; they don't count the error messages sent to stderr. +So this function converts to them to real buffer positions. +ERROR-LINES is a list of buffer positions of error message lines, +of the form (START END)." + (while (and error-lines (< (caar error-lines) pos)) + (setq pos (+ pos (- (nth 1 (car error-lines)) (nth 0 (car error-lines))))) + (pop error-lines)) + pos) ;; BEGIN SYNC WITH FSF 21.2. diff --text -u 'xemacs-21.5.20/lisp/font.el' 'xemacs-21.5.21/lisp/font.el' Index: ./lisp/font.el --- ./lisp/font.el Fri Jan 28 11:58:40 2005 +++ ./lisp/font.el Sat Mar 26 00:58:03 2005 @@ -311,8 +311,8 @@ a number, it is interpreted as the desired point size and returned unchanged. Otherwise SPEC must be a string consisting of a number and an optional type. The type may be the strings \"px\", \"pix\", or \"pixel\" (pixels), \"pt\" or -\"point\" (points), \"pa\" or \"pica\" (picas), \"in\" or \"inch\" (inches), \"cm\" -(centimeters), or \"mm\" (millimeters). +\"point\" (points), \"pa\" or \"pica\" (picas), \"in\" or \"inch\" (inches), +\"cm\" (centimeters), or \"mm\" (millimeters). 1 in = 2.54 cm = 6 pa = 25.4 mm = 72 pt. Pixel size is device-dependent." (cond @@ -351,7 +351,7 @@ (setq num (string-to-number spec)) (cond ((member type '("pixel" "px" "pix")) - (setq retval (* num (/ pix-width mm-width) (/ 25.4 72.0)))) + (setq retval (* num (/ mm-width pix-width) (/ 72.0 25.4)))) ((member type '("point" "pt")) (setq retval num)) ((member type '("pica" "pa")) diff --text -u 'xemacs-21.5.20/lisp/map-ynp.el' 'xemacs-21.5.21/lisp/map-ynp.el' Index: ./lisp/map-ynp.el --- ./lisp/map-ynp.el Thu Feb 3 14:03:38 2005 +++ ./lisp/map-ynp.el Fri May 6 02:10:32 2005 @@ -30,7 +30,7 @@ ;; map-y-or-n-p is a general-purpose question-asking function. ;; It asks a series of y/n questions (a la y-or-n-p), and decides to -;; applies an action to each element of a list based on the answer. +;; apply an action to each element of a list based on the answer. ;; The nice thing is that you also get some other possible answers ;; to use, reminiscent of query-replace: ! to answer y to all remaining ;; questions; ESC or q to answer n to all remaining questions; . to answer diff --text -u 'xemacs-21.5.20/lisp/menubar-items.el' 'xemacs-21.5.21/lisp/menubar-items.el' Index: ./lisp/menubar-items.el --- ./lisp/menubar-items.el Thu Feb 3 14:03:38 2005 +++ ./lisp/menubar-items.el Wed May 11 02:35:58 2005 @@ -886,7 +886,12 @@ :active (boundp 'ps-print-color-p)]) ("%_Internet" ("%_Compose Mail With" - ["Default Emacs Mailer" + ["VM mail package" + (customize-set-variable 'mail-user-agent 'vm-user-agent) + :style radio + :selected (eq mail-user-agent 'vm-user-agent) + :active (get 'vm-user-agent 'composefunc)] + ["Bare-bones Emacs Mailer" (customize-set-variable 'mail-user-agent 'sendmail-user-agent) :style radio :selected (eq mail-user-agent 'sendmail-user-agent)] diff --text -u 'xemacs-21.5.20/lisp/minibuf.el' 'xemacs-21.5.21/lisp/minibuf.el' Index: ./lisp/minibuf.el --- ./lisp/minibuf.el Thu Feb 24 07:25:16 2005 +++ ./lisp/minibuf.el Thu Apr 14 14:58:46 2005 @@ -2244,4 +2244,113 @@ (button-release-event-p last-command-event) (misc-user-event-p last-command-event)))) +(defun get-user-response (position question answers) + "Ask a question and get a response from the user, in minibuffer or dialog box. +POSITION specifies which frame to use. +This is normally an event or a window or frame. +If POSITION is t or nil, it means to use the frame the mouse is on. +The dialog box appears in the middle of the specified frame. + +QUESTION is the question to ask (it should end with a question mark followed +by a space). + +ANSWERS are the possible answers. It is a list; each item looks like + + (KEY BUTTON-TEXT RESPONSE) + +where KEY is the key to be pressed in the minibuffer, BUTTON-TEXT is the +text to be displayed in a dialog box button (you should put %_ in it to +indicate the accelerator), and RESPONSE is a value (typically a symbol) +to be returned if the user selects this response. KEY should be either a +single character or a string; which one you use needs to be consistent for +all responses and determines whether the user responds by hitting a single +key or typing in a string and hitting ENTER. + +An item may also be just a string--that makes a nonselectable item in the +dialog box and is ignored in the minibuffer. + +An item may also be nil -- that means to put all preceding items +on the left of the dialog box and all following items on the right; ignored +in the minibuffer." + (if (should-use-dialog-box-p) + (get-dialog-box-response + position + (cons question + (mapcar #'(lambda (x) + (cond + ((null x) nil) + ((stringp x) x) + (t (cons (second x) (third x))))) + answers))) + (save-excursion + (let* ((answers (remove-if-not #'consp answers)) + (possible + (gettext + (flet ((car-to-string-if (x) + (setq x (car x)) + (if (stringp x) x (char-to-string x)))) + (concat (mapconcat #'car-to-string-if + (butlast answers) ", ") " or " + (car-to-string-if (car (last answers))))))) + (question (gettext question)) + (p (format "%s(%s) " question possible))) + (block nil + (if (stringp (caar answers)) + ;; based on yes-or-no-p. + (while t + (let* ((ans (downcase (read-string p nil t))) ;no history + (res (member* ans answers :test #'equal :key #'car))) + (if res (return (third (car res))) + (ding nil 'yes-or-no-p) + (discard-input) + (message "Please answer %s." possible) + (sleep-for 2)))) + ;; based on y-or-n-p. + (save-excursion + (let* ((pre "") event) + (while t + (if (let ((cursor-in-echo-area t) + (inhibit-quit t)) + (message "%s%s(%s) " pre question possible) + (setq event (next-command-event event)) + (condition-case nil + (prog1 + (or quit-flag (eq 'keyboard-quit + (key-binding event))) + (setq quit-flag nil)) + (wrong-type-argument t))) + (progn + (message "%s%s(%s) %s" pre question possible + (single-key-description event)) + (setq quit-flag nil) + (signal 'quit '()))) + (let* ((keys (events-to-keys (vector event))) + (def (lookup-key query-replace-map keys))) + (cond +; ((eq def 'skip) +; (message "%s%sNo" question possible) +; (return nil)) +; ((eq def 'act) +; (message "%s%sYes" question possible) +; (return t)) + ((eq def 'recenter) + (recenter)) + ((or (eq def 'quit) (eq def 'exit-prefix)) + (signal 'quit '())) + ((button-release-event-p event) ; ignore them + nil) + (t + (let ((res (member* (event-to-character event) answers + :key #'car))) + (if res (return (third (car res))) + (message "%s%s(%s) %s" pre question possible + (single-key-description event)) + (ding nil 'y-or-n-p) + (discard-input) + (if (= (length pre) 0) + (setq pre (format "Please answer %s. " + ;; 17 parens! a record in + ;; our lisp code. + possible))))))))))))))))) + ;;; minibuf.el ends here diff --text -u 'xemacs-21.5.20/lisp/mule/european.el' 'xemacs-21.5.21/lisp/mule/european.el' Index: ./lisp/mule/european.el --- ./lisp/mule/european.el Thu Feb 10 03:06:40 2005 +++ ./lisp/mule/european.el Wed May 11 02:02:59 2005 @@ -145,34 +145,79 @@ long-name "RHP of Latin-10 (ISO 8859-16)" )) -(loop for c from 64 to 127 +;; Latin-1 is dealt with in iso8859-1.el, which see. + +;; ISO 8859-14. +;; +;; Initialise all characters to word syntax. +(loop for c from #xa0 to #xff + do (modify-syntax-entry (make-char 'latin-iso8859-14 c) "w")) + +;; Now, the exceptions. There's just punctuation in this character set. +(dolist (code '(#xa0 ;; NO BREAK SPACE + #xa3 ;; POUND SIGN + #xa7 ;; SECTION SIGN + #xa9 ;; COPYRIGHT + #xad ;; SOFT HYPHEN + #xae ;; REGISTERED + #xb6)) ;; PILCROW SIGN + (modify-syntax-entry (make-char 'latin-iso8859-14 code) "_")) +;; end of ISO 8859-14. + +;; ISO 8859-16. +;; +;; Initialise all of iso-8859-16 to word syntax. +(loop for c from #xa0 to #xff do (modify-syntax-entry (make-char 'latin-iso8859-16 c) "w")) -(mapc (lambda (c) - (modify-syntax-entry (make-char 'latin-iso8859-16 c) "w")) - '(#xA1 #xA2 #xA3 #xA6 #xA8 #xAA #xAC #xAE #xAF - #xB3 #xB4 #xB5 #xB8 #xB9 #xBA #xBC #xBD #xBE #xBF)) - - -;; For syntax of Latin-1 characters. -(loop for c from 64 to 127 ; from ',A@(B' to ',A(B' - do (modify-syntax-entry (make-char 'latin-iso8859-1 c) "w")) - -(modify-syntax-entry (make-char 'latin-iso8859-1 32) "w") ; no-break space -(modify-syntax-entry ?,AW(B "_") -(modify-syntax-entry ?,Aw(B "_") - -;; For syntax of Latin-9 characters. -;; Based on Latin-1 and differences from Jukka Korpela -;; http://www.cs.tut.fi/~jkorpela/latin9.html + +;; And then do the exceptions. First, the punctuation (following the model +;; of Latin-1): +(dolist (code '(#xa0 ;; NO BREAK SPACE + #xa4 ;; EURO SIGN + #xa7 ;; SECTION SIGN + #xa9 ;; COPYRIGHT + #xad ;; SOFT HYPHEN + #xb0 ;; DEGREE + #xb1 ;; PLUS-MINUS SIGN + #xb6 ;; PILCROW SIGN + #xb7)) ;; MIDDLE DOT + (modify-syntax-entry (make-char 'latin-iso8859-16 code) "_")) + +;; Mark the DOUBLE LOW-9 QUOTATION MARK and its closing character as +;; quotation marks. +(modify-syntax-entry (make-char 'latin-iso8859-16 #xa5) "\"") +(modify-syntax-entry (make-char 'latin-iso8859-16 #xb5) "\"") + +;; For some crazy reason--well, in truth, probably because Jamie never used +;; them in anger--the guillemets have open- and close-parenthesis syntax in +;; Latin 1. We will probably change that in the future; for the moment, I'm +;; preserving it. +(modify-syntax-entry (make-char 'latin-iso8859-16 #xab) + (format "(%c" (make-char 'latin-iso8859-16 #xbb))) +(modify-syntax-entry (make-char 'latin-iso8859-16 #xbb) + (format ")%c" (make-char 'latin-iso8859-16 #xab))) + +;; end of ISO 8859-16. + +;; ISO 8859-15. +;; +;; Based on Latin-1 and differences therefrom. +;; +;; First, initialise the syntax from the corresponding Latin-1 characters. +(loop for c from #xa0 to #xff + do (modify-syntax-entry + (make-char 'latin-iso8859-15 c) + (string (char-syntax (make-char 'latin-iso8859-1 c))))) +;; Now, the exceptions (loop for c in '(?,b&(B ?,b((B ?,b4(B ?,b8(B ?,b<(B ?,b=(B ?,b>(B) do (modify-syntax-entry c "w")) -(loop for c from 64 to 127 ; from ',b@(B' to ',b(B' - do (modify-syntax-entry (make-char 'latin-iso8859-1 c) "w")) - -(modify-syntax-entry (make-char 'latin-iso8859-15 32) "w") ; no-break space -(modify-syntax-entry ?,bW(B "_") -(modify-syntax-entry ?,bw(B "_") +;; Again, perpetuating insanity with the guillemets. +(modify-syntax-entry (make-char 'latin-iso8859-16 #xab) + (format "(%c" (make-char 'latin-iso8859-16 #xbb))) +(modify-syntax-entry (make-char 'latin-iso8859-16 #xbb) + (format ")%c" (make-char 'latin-iso8859-16 #xab))) +;; end of ISO 8859-15. ;; For syntax of Latin-2 (loop for c in '(?,B!(B ?,B#(B ?,B%(B ?,B&(B ?,B)(B ?,B*(B ?,B+(B ?,B,(B ?,B.(B ?,B/(B ?,B1(B ?,B3(B ?,B5(B ?,B6(B ?,B9(B ?,B:(B ?,B;(B ?,B<(B) diff --text -u 'xemacs-21.5.20/lisp/mule/latin.el' 'xemacs-21.5.21/lisp/mule/latin.el' Index: ./lisp/mule/latin.el --- ./lisp/mule/latin.el Sat May 5 07:42:23 2001 +++ ./lisp/mule/latin.el Wed May 11 02:03:00 2005 @@ -1,6 +1,6 @@ ;;; latin.el --- Support for Latin charsets. -*- coding: iso-2022-7bit; -*- -;; Copyright (C) 2001 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2005 Free Software Foundation, Inc. ;; Author: Hrvoje Niksic ;; Maintainer: XEmacs Development Team @@ -242,6 +242,140 @@ ; (220 252) ;latin letter u with diaeresis ; (222 254) ;latin letter s with cedilla ; )) + +;; Latin 9. +(setup-case-pairs + 'latin-iso8859-15 + '((166 168) ;latin letter s with caron * + (180 184) ;latin letter z with caron * + (188 189) ;latin ligature oe * + (190 255) ;latin letter y with diaeresis * + (192 224) ;latin letter a with grave + (193 225) ;latin letter a with acute + (194 226) ;latin letter a with circumflex + (195 227) ;latin letter a with tilde + (196 228) ;latin letter a with diaeresis + (197 229) ;latin letter a with ring above + (198 230) ;latin letter ae + (199 231) ;latin letter c with cedilla + (200 232) ;latin letter e with grave + (201 233) ;latin letter e with acute + (202 234) ;latin letter e with circumflex + (203 235) ;latin letter e with diaeresis + (204 236) ;latin letter i with grave + (205 237) ;latin letter i with acute + (206 238) ;latin letter i with circumflex + (207 239) ;latin letter i with diaeresis + (208 240) ;latin letter eth + (209 241) ;latin letter n with tilde + (210 242) ;latin letter o with grave + (211 243) ;latin letter o with acute + (212 244) ;latin letter o with circumflex + (213 245) ;latin letter o with tilde + (214 246) ;latin letter o with diaeresis + (216 248) ;latin letter o with stroke + (217 249) ;latin letter u with grave + (218 250) ;latin letter u with acute + (219 251) ;latin letter u with circumflex + (220 252) ;latin letter u with diaeresis + (221 253) ;latin letter y with acute + (222 254) ;latin letter thorn + )) + +;; ISO 8859-14, not in FSF, our mapping. +(setup-case-pairs + 'latin-iso8859-14 + '((161 162) ;latin letter b with dot above + (164 165) ;latin letter c with dot above + (166 171) ;latin letter d with dot above + (168 184) ;latin letter w with grave + (170 186) ;latin letter w with acute + (172 188) ;latin letter y with grave + (175 255) ;latin letter y with diaeresis + (176 177) ;latin letter f with dot above + (178 179) ;latin letter g with dot above + (180 181) ;latin letter m with dot above + (183 185) ;latin letter p with dot above + (187 191) ;latin letter s with dot above + (189 190) ;latin letter w with diaeresis + (192 224) ;latin letter a with grave + (193 225) ;latin letter a with acute + (194 226) ;latin letter a with circumflex + (195 227) ;latin letter a with tilde + (196 228) ;latin letter a with diaeresis + (197 229) ;latin letter a with ring above + (198 230) ;latin letter ae + (199 231) ;latin letter c with cedilla + (200 232) ;latin letter e with grave + (201 233) ;latin letter e with acute + (202 234) ;latin letter e with circumflex + (203 235) ;latin letter e with diaeresis + (204 236) ;latin letter i with grave + (205 237) ;latin letter i with acute + (206 238) ;latin letter i with circumflex + (207 239) ;latin letter i with diaeresis + (208 240) ;latin letter w with circumflex + (209 241) ;latin letter n with tilde + (210 242) ;latin letter o with grave + (211 243) ;latin letter o with acute + (212 244) ;latin letter o with circumflex + (213 245) ;latin letter o with tilde + (214 246) ;latin letter o with diaeresis + (215 247) ;latin letter t with dot above + (216 248) ;latin letter o with stroke + (217 249) ;latin letter u with grave + (218 250) ;latin letter u with acute + (219 251) ;latin letter u with circumflex + (220 252) ;latin letter u with diaeresis + (221 253) ;latin letter y with acute + (222 254) ;latin letter y with circumflex + )) + +;; ISO 8859-16, not in FSF, our mapping. +(setup-case-pairs + 'latin-iso8859-16 + '((161 162) ;latin letter a with ogonek + (163 179) ;latin letter l with stroke + (166 168) ;latin letter s with caron + (170 186) ;latin letter s with comma below + (172 174) ;latin letter z with acute + (175 191) ;latin letter z with dot above + (178 185) ;latin letter c with caron + (180 184) ;latin letter z with caron + (190 255) ;latin letter y with diaeresis + (192 224) ;latin letter a with grave + (193 225) ;latin letter a with acute + (194 226) ;latin letter a with circumflex + (195 227) ;latin letter a with breve + (196 228) ;latin letter a with diaeresis + (197 229) ;latin letter c with acute + (198 230) ;latin letter ae + (199 231) ;latin letter c with cedilla + (200 232) ;latin letter e with grave + (201 233) ;latin letter e with acute + (202 234) ;latin letter e with circumflex + (203 235) ;latin letter e with diaeresis + (204 236) ;latin letter i with grave + (205 237) ;latin letter i with acute + (206 238) ;latin letter i with circumflex + (207 239) ;latin letter i with diaeresis + (208 240) ;latin letter d with stroke + (209 241) ;latin letter n with acute + (210 242) ;latin letter o with grave + (211 243) ;latin letter o with acute + (212 244) ;latin letter o with circumflex + (213 245) ;latin letter o with double acute + (214 246) ;latin letter o with diaeresis + (215 247) ;latin letter s with acute + (216 248) ;latin letter u with double acute + (217 249) ;latin letter u with grave + (218 250) ;latin letter u with acute + (219 251) ;latin letter u with circumflex + (220 252) ;latin letter u with diaeresis + (221 253) ;latin letter e with ogonek + (222 254) ;latin letter t with comma below + )) + ;; This is our utility function; we don't want it in the dumped XEmacs. diff --text -u 'xemacs-21.5.20/lisp/mule/mule-ccl.el' 'xemacs-21.5.21/lisp/mule/mule-ccl.el' Index: ./lisp/mule/mule-ccl.el --- ./lisp/mule/mule-ccl.el Fri Nov 5 08:06:01 2004 +++ ./lisp/mule/mule-ccl.el Fri May 6 02:10:38 2005 @@ -1238,7 +1238,7 @@ ;;;###autoload (defmacro define-ccl-program (name ccl-program &optional doc) - "Set NAME the compiled code of CCL-PROGRAM. + "Set NAME to be the compiled CCL code of CCL-PROGRAM. CCL-PROGRAM has this form: (BUFFER_MAGNIFICATION @@ -1250,14 +1250,13 @@ text. If the value is zero, the CCL program can't execute `read' and `write' commands. -CCL_MAIN_CODE and CCL_EOF_CODE are CCL program codes. CCL_MAIN_CODE -executed at first. If there's no more input data when `read' command -is executed in CCL_MAIN_CODE, CCL_EOF_CODE is executed. If -CCL_MAIN_CODE is terminated, CCL_EOF_CODE is not executed. - -Here's the syntax of CCL program code in BNF notation. The lines -starting by two semicolons (and optional leading spaces) describe the -semantics. +CCL_MAIN_CODE and CCL_EOF_CODE are CCL program codes. CCL_MAIN_CODE is +executed first. If there are no more input data when a `read' command is +executed in CCL_MAIN_CODE, CCL_EOF_CODE is executed. If CCL_MAIN_CODE is +terminated, CCL_EOF_CODE is not executed. + +Here's the syntax of CCL program code in BNF notation. The lines starting +with two semicolons (and optional leading spaces) describe the semantics. CCL_MAIN_CODE := CCL_BLOCK @@ -1276,7 +1275,7 @@ EXPRESSION := ARG | (EXPRESSION OPERATOR ARG) -;; Evaluate EXPRESSION. If the result is nonzeor, execute +;; Evaluate EXPRESSION. If the result is nonzero, execute ;; CCL_BLOCK_0. Otherwise, execute CCL_BLOCK_1. IF := (if EXPRESSION CCL_BLOCK_0 [CCL_BLOCK_1]) @@ -1287,11 +1286,11 @@ ;; Execute STATEMENTs until (break) or (end) is executed. LOOP := (loop STATEMENT [STATEMENT ...]) -;; Terminate the most inner loop. +;; Terminate the innermost loop. BREAK := (break) REPEAT := - ;; Jump to the head of the most inner loop. + ;; Jump to the head of the innermost loop. (repeat) ;; Same as: ((write [REG | INT-OR-CHAR | string]) ;; (repeat)) @@ -1306,7 +1305,11 @@ | (write-read-repeat REG INT-OR-CHAR) READ := ;; Set REG_0 to a byte read from the input text, set REG_1 - ;; to the next byte read, and so on. + ;; to the next byte read, and so on. Note that \"byte\" here means + ;; \"some octet from XEmacs' internal representation\", which may + ;; not be that useful to you when non-ASCII characters are involved. + ;; + ;; Yes, this is exactly the opposite of what (write ...) does. (read REG_0 [REG_1 ...]) ;; Same as: ((read REG) ;; (if (REG OPERATOR ARG) CCL_BLOCK_0 CCL_BLOCK_1)) @@ -1314,12 +1317,12 @@ ;; Same as: ((read REG) ;; (branch REG CCL_BLOCK_0 [CCL_BLOCK_1 ...])) | (read-branch REG CCL_BLOCK_0 [CCL_BLOCK_1 ...]) - ;; Read a character from the input text while parsing - ;; multibyte representation, set REG_0 to the charset ID of - ;; the character, set REG_1 to the code point of the - ;; character. If the dimension of charset is two, set REG_1 - ;; to ((CODE0 << 8) | CODE1), where CODE0 is the first code - ;; point and CODE1 is the second code point. + ;; Read a character from the input text, splitting it into its + ;; multibyte representation. Set REG_0 to the charset ID of the + ;; character, and set REG_1 to the code point of the character. If + ;; the dimension of charset is two, set REG_1 to ((CODE0 << 8) | + ;; CODE1), where CODE0 is the first code point and CODE1 is the + ;; second code point. | (read-multibyte-character REG_0 REG_1) WRITE := @@ -1356,7 +1359,7 @@ ;; Call CCL program whose name is ccl-program-name. CALL := (call ccl-program-name) -TRANSLATE := +TRANSLATE := ;; Not implemented under XEmacs. (translate-character REG(table) REG(charset) REG(codepoint)) | (translate-character SYMBOL REG(charset) REG(codepoint)) MAP := @@ -1370,17 +1373,17 @@ ;; Terminate the CCL program. END := (end) -;; CCL registers that can contain any integer value. As r7 is also -;; used by CCL interpreter, its value is changed unexpectedly. +;; CCL registers. These can contain any integer value. As r7 is used by CCL +;; interpreter itself, its value change unexpectedly. REG := r0 | r1 | r2 | r3 | r4 | r5 | r6 | r7 ARG := REG | INT-OR-CHAR OPERATOR := - ;; Normal arithmethic operators (same meaning as C code). + ;; Normal arithmetical operators (same meaning as C code). + | - | * | / | % - ;; Bitwize operators (same meaning as C code) + ;; Bitwise operators (same meaning as C code) | & | `|' | ^ ;; Shifting operators (same meaning as C code) diff --text -u 'xemacs-21.5.20/lisp/register.el' 'xemacs-21.5.21/lisp/register.el' Index: ./lisp/register.el --- ./lisp/register.el Wed Jan 26 18:56:06 2005 +++ ./lisp/register.el Mon Mar 28 21:14:02 2005 @@ -265,7 +265,7 @@ ((consp val) (insert-rectangle val)) ((stringp val) - (insert-for-yank val)) + (insert val)) ((numberp val) (princ val (current-buffer))) ((and (markerp val) (marker-position val)) diff --text -u 'xemacs-21.5.20/lisp/select.el' 'xemacs-21.5.21/lisp/select.el' Index: ./lisp/select.el --- ./lisp/select.el Tue Mar 1 09:21:18 2005 +++ ./lisp/select.el Sun Mar 13 05:57:42 2005 @@ -146,10 +146,11 @@ (condition-case err (progn (setq res (get-selection-internal type (car data-type))) - (throw 'converted res)) + (if res (throw 'converted res) + (signal 'selection-conversion-error nil))) (selection-conversion-error (if (cdr data-type) - (setq data-type (pop data-type)) + (setq data-type (cdr data-type)) (signal (car err) (cdr err)))))))) (get-selection-internal type data-type))) diff --text -u 'xemacs-21.5.20/lisp/simple.el' 'xemacs-21.5.21/lisp/simple.el' Index: ./lisp/simple.el --- ./lisp/simple.el Thu Feb 24 07:25:16 2005 +++ ./lisp/simple.el Wed May 11 02:35:58 2005 @@ -3306,16 +3306,20 @@ ;; BEGIN SYNCHED WITH FSF 21.2. -(defcustom mail-user-agent 'sendmail-user-agent +(defcustom mail-user-agent 'xemacs-default-mail-user-agent "*Your preference for a mail composition package. Various Emacs Lisp packages (e.g. Reporter) require you to compose an outgoing email message. This variable lets you specify which mail-sending package you prefer. -Valid values include: - - `sendmail-user-agent' -- use the default Emacs Mail package. - See Info node `(emacs)Sending Mail'. +Valid values may include: + + `vm-user-agent' -- use Kyle Jones' VM, as documented in the `(vm)' + Info node. Compatible with `sendmail-user-agent' + and can handle attachments and non-ASCII content, + which the former can't. + `sendmail-user-agent' -- use the default, bare-bones, Emacs Mail + package. See Info node `(xemacs)Sending Mail'. `mh-e-user-agent' -- use the Emacs interface to the MH mail system. See Info node `(mh-e)'. `message-user-agent' -- use the Gnus Message package. @@ -3324,12 +3328,22 @@ paraphernalia, particularly the Gcc: header for archiving. +If you examine the value of this variable before setting it or composing a +mail, it will have another value, `xemacs-default-mail-user-agent'--this is to +allow XEmacs to suggest that you use another email client instead of +`sendmail-user-agent'. The latter, while part of the base XEmacs Lisp code, +and very lightweight, doesn't support MIME, a considerable disadvantage +today. + Additional valid symbols may be available; check with the author of your package for details. The function should return non-nil if it succeeds. See also `read-mail-command' concerning reading mail." - :type '(radio (function-item :tag "Default Emacs mail" + :type '(radio (function-item :tag "VM mail package" + :format "%t\n" + vm-user-agent) + (function-item :tag "Bare-bones Emacs mail" :format "%t\n" sendmail-user-agent) (function-item :tag "Emacs interface to MH" @@ -3379,9 +3393,58 @@ (put symbol 'abortfunc (or abortfunc 'kill-buffer)) (put symbol 'hookvar (or hookvar 'mail-send-hook))) +(define-mail-user-agent 'vm-user-agent + 'vm-compose-mail + 'vm-mail-send-and-exit) + (define-mail-user-agent 'sendmail-user-agent 'sendmail-user-agent-compose 'mail-send-and-exit) +;; Recent GNU sendmail.el does have MIME support, but it's buggy (as of +;; 2005-05-01.) For example, if you FCC to a file more than once with +;; different coding systems, your non-ASCII data will get +;; trashed. quoted-printable encoding isn't done by default, attachments +;; just add a line: +;; +;; ===File /path/to/file/here================= +;; +;; the file's contents, +;; +;; =========================================== +;; +;; and hope for the best. Not code we want to use, IMO. + +(defun xemacs-default-composefunc (&rest args) + "Warn that the default mail-reading package is heinously underfeatured; +compose a mail using it, all the same. " + (warn " + +Defaulting to the GNU Emacs-derived `sendmail.el' mail client. This facility, +while part of base XEmacs, is heinously underfeatured, and not going to get +better in the medium term. We include it so that bug reports work without +packages; we suggest that you choose and/or install one of the other mail +clients from packages if you're doing something other than M-x +report-xemacs-bug , or even if you are reporting bugs regularly. + +To choose a package from those installed, click on \"Options\" -> +\"Internet\" -> \"Compose Mail With ...\" and decide on one from the +list. Gnus and VM are full-featured and have active user communities. + +To disable this warning and stick with the old behavior, you can explicitly +initialize `mail-user-agent' to 'sendmail-user-agent . ") + (setq mail-user-agent 'sendmail-user-agent) + (apply (get 'sendmail-user-agent 'composefunc) args)) + + +(defun xemacs-default-sendfunc (&rest args) + "Set `mail-user-agent' to `sendmail-user-agent'; call the send function +associated with that package, passing it the supplied arguments. " + (setq mail-user-agent 'sendmail-user-agent) + (apply (get 'sendmail-user-agent 'sendfunc) args)) + +(define-mail-user-agent 'xemacs-default-mail-user-agent + 'xemacs-default-composefunc 'xemacs-default-sendfunc) + (define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook) diff --text -u 'xemacs-21.5.20/lisp/startup.el' 'xemacs-21.5.21/lisp/startup.el' Index: ./lisp/startup.el --- ./lisp/startup.el Wed Jan 26 13:56:18 2005 +++ ./lisp/startup.el Fri May 6 01:55:41 2005 @@ -703,6 +703,11 @@ (when (featurep 'toolbar) (init-toolbar-location)) + ;; Setup coding systems and Unicode support--needs to be before X11 + ;; initialisation in case of keysyms of the form UABCD. + (when (featurep 'mule) + (declare-fboundp (init-mule-at-startup))) + (if (featurep 'toolbar) (if (featurep 'infodock) (require 'id-x-toolbar) @@ -736,10 +741,6 @@ ;; In this case, I completely agree. --ben (if (featurep 'menubar) (init-menubar-at-startup)) - ;; perhaps this should go earlier in the process? - (if (featurep 'mule) - (declare-fboundp (init-mule-at-startup))) - ;; ;; We have normality, I repeat, we have normality. Anything you still ;; can't cope with is therefore your own problem. (And we don't need @@ -754,7 +755,22 @@ ;; (insert initial-scratch-message) (set-buffer-modified-p nil) (when (eq major-mode 'fundamental-mode) - (funcall initial-major-mode))) + (funcall initial-major-mode)) + ;; The docstring for font-lock-set-defaults says that major modes that + ;; have any font-lock defaults specified should call the function + ;; after initialising the `major-mode' variable. None of them do, + ;; however, and any font locking that is ever put in place is done as + ;; a result of `font-lock-set-defaults' being in find-file-hook and + ;; various other places. We could make *scratch* honour the user's + ;; choice of whether font-locking is in place by adding a call to + ;; font-lock-set-defaults in `lisp-interaction-mode'; but that'll + ;; break if `intial-major-mode' is anything else. + ;; + ;; So, despite what `font-lock-set-defaults'' docstring says, this + ;; *is* where we should call it to have the user's choice of font-lock + ;; level take effect in *scratch*. If the modes are rewritten to do + ;; the right then, we're okay too, the function is idempotent. + (font-lock-set-defaults)) ;; Load library for our terminal type. ;; User init file can set term-file-prefix to nil to prevent this. diff --text -u 'xemacs-21.5.20/lisp/x-faces.el' 'xemacs-21.5.21/lisp/x-faces.el' Index: ./lisp/x-faces.el --- ./lisp/x-faces.el Fri Jan 28 11:58:41 2005 +++ ./lisp/x-faces.el Thu Mar 31 20:28:44 2005 @@ -39,20 +39,20 @@ ;; The resource-manager syntax for faces is -;; Emacs.bold.attributeFont: font-name -;; Emacs.bold.attributeForeground: fg -;; Emacs.bold.attributeBackground: bg -;; Emacs.bold.attributeBackgroundPixmap: file -;; Emacs.bold.attributeUnderline: true/false -;; Emacs.bold.attributeStrikethru: true/false +;; XEmacs.bold.attributeFont: font-name +;; XEmacs.bold.attributeForeground: fg +;; XEmacs.bold.attributeBackground: bg +;; XEmacs.bold.attributeBackgroundPixmap: file +;; XEmacs.bold.attributeUnderline: true/false +;; XEmacs.bold.attributeStrikethru: true/false ;; You can specify the properties of a face on a per-frame basis. For ;; example, to have the "isearch" face use a red foreground on frames -;; named "emacs" (the default) but use a blue foreground on frames that +;; named "XEmacs" (the default) but use a blue foreground on frames that ;; you create named "debugger", you could do -;; Emacs*emacs.isearch.attributeForeground: red -;; Emacs*debugger.isearch.attributeForeground: blue +;; XEmacs*XEmacs.isearch.attributeForeground: red +;; XEmacs*debugger.isearch.attributeForeground: blue ;; Generally things that make faces won't set any of the face attributes if ;; you have already given them values via the resource database. You can diff --text -u 'xemacs-21.5.20/lisp/x-init.el' 'xemacs-21.5.21/lisp/x-init.el' Index: ./lisp/x-init.el --- ./lisp/x-init.el Fri Jun 21 06:18:05 2002 +++ ./lisp/x-init.el Wed May 11 02:14:42 2005 @@ -230,7 +230,41 @@ (x-win-init-sun)) ((string-match "XFree86" vendor) ;; Those XFree86 people do some weird keysym stuff, too. - (x-win-init-xfree86))))) + (x-win-init-xfree86)))) + ;; Perhaps tell people that some keys won't work. + ;; + ;; If they remap while XEmacs is running and this problem arises, they + ;; won't see the messages. Which should be okay, assuming the length of + ;; time before we get a Unicode-compatible internal encoding is relatively + ;; short. + (let (unknown-code-points sym-string) + (dolist (x-keysym (hash-table-key-list (x-keysym-hash-table))) + (setq sym-string (if (stringp x-keysym) x-keysym (symbol-name x-keysym))) + (when (and (not (get (intern sym-string) 'ascii-character)) + (string-match "^U[0-9A-F]+$" sym-string)) + (pushnew (concat sym-string " ") unknown-code-points :test 'equal))) + (when unknown-code-points + (lwarn 'key-mapping 'info + "Undefined Unicode key mappings. +Your keyboard has, among many others, the following keysyms defined: + +%s +The standards say that applications should interpret these keysyms as +representing the corresponding Unicode code points (e.g. U2720 should +represent MALTESE CROSS), but unfortunately the current version of XEmacs +has no support for many of those characters in its internal encoding, and +when it encounters the keysyms corresponding to those characters, they +remain unbound. + +See the documentation for `unicode-to-char' for one technique if you have an +urgent need for support for one of those characters--you probably don't, +most of the widely-used characters have mappings in the internal XEmacs +encoding--otherwise, wait until we ship a version with an internal encoding +based on Unicode. " + (with-string-as-buffer-contents (apply 'concat " " + unknown-code-points) + (setq fill-prefix " ") + (fill-paragraph nil)))))) ;; Moved from x-toolbar.el, since InfoDock doesn't dump a x-toolbar.el. diff --text -u 'xemacs-21.5.20/lwlib/ChangeLog' 'xemacs-21.5.21/lwlib/ChangeLog' Index: ./lwlib/ChangeLog --- ./lwlib/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./lwlib/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,7 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/man/ChangeLog' 'xemacs-21.5.21/man/ChangeLog' Index: ./man/ChangeLog --- ./man/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./man/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,88 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + +2005-05-10 Aidan Kehoe + + * xemacs-faq.texi (Q3.2.5): (setq text-mode-hook + 'turn-on-auto-fill) is not a good idea. + +2005-05-10 Aidan Kehoe + + * xemacs/sending.texi (Sending Mail):Document that sendmail.el is + underfeatured and not getting better anytime soon; suggest using + another mailer. + +2005-05-05 Aidan Kehoe + + * xemacs/building.texi (Lisp Modes): + * xemacs/building.texi (Lisp Interaction): + * xemacs/entering.texi (Entering Emacs): + * xemacs/menus.texi (File Menu): + * xemacs/text.texi (Auto Fill): + None of the keymaps I have access to have linefeed keys; they all + use Return. As such, for new users, C-j is really the only option + for evaluation in Lisp interaction mode, and should be documented + as such. + +2005-04-18 Turnbull Stephen + + * internals/internals.texi + (Better Rendering Support -- Modern Font Support): + (Modern Font Support -- Font Concepts): + (Modern Font Support -- fontconfig): + (Modern Font Support -- Xft): + New nodes describing the Lisp API. + (Future Work -- Better Rendering Support): + Add Better Rendering Support -- Modern Font Support to menu. + +2005-04-05 Stephen J. Turnbull + + * xemacs/custom.texi (X Resources): Improve wording. + +2005-03-13 Stephen J. Turnbull + + * xemacs/custom.texi (Minor Modes): Improve general description. + Add description of Pending Delete and Filladapt modes. + (File Variables): Improve caution against invoking minor modes. + (Syntax Entry): Strengthen caution against "\s ". + + * xemacs/major.texi (Major Modes): Improve accuracy of wording. + (Mode Hooks): Describe use of hooks to invoke minor modes. + +2005-04-06 Ben Wing + + * internals/internals.texi (Authorship of XEmacs): Copy authorship + section from FAQ and comment out old info, which is quite out of + date and full of typos. + +2005-03-26 Aidan Kehoe + + * lispref/mule.texi (CCL Example): + char-int -> char-to-int, and hex 41 is decimal 65, both problems + with my previous patch pointed out by Stephen. + * lispref/mule.texi (The actual coding system): + Give information on the make-coding-system call, and where the + actual package can be found. + +2005-03-24 Aidan Kehoe + + * xemacs/custom.texi (X Resources): + "Emacs" as the application class -> "XEmacs" as the application + class, mention the old resource class determination behaviour, and + how one can temporarily re-instate it. + +2005-03-15 Stephen J. Turnbull + + * internals/internals.texi (The XEmacs Split): + * standards.texi (Option Table): + Shut up makeinfo and hack-local-variables. + +2005-03-14 Stephen J. Turnbull + + * internals/internals.texi (How Lisp Objects Are Represented in C): + Document compiler warnings when assert expands to empty statement. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/man/internals/internals.texi' 'xemacs-21.5.21/man/internals/internals.texi' Index: ./man/internals/internals.texi --- ./man/internals/internals.texi Thu Mar 10 20:44:22 2005 +++ ./man/internals/internals.texi Mon Apr 18 12:59:54 2005 @@ -814,21 +814,188 @@ @chapter Authorship of XEmacs @cindex authorship, XEmacs -General authorship in chronological order: +XEmacs is the result of the time and effort of many people, and the +active developers have changed over time. There are two major +components of the XEmacs effort -- writing the code itself and providing +all the support work (testing the code, releasing beta and final +versions, handling patches, reading bug reports, maintaining the web +site, managing the mailing lists, etc. etc.). Neither component would +work without the other. + +@subheading CODING + +The primary code contributor over the years has been Ben Wing (active +since late 1992). Between 1991 and 1995, large amounts of coding was +contributed by Jamie Zawinski and Chuck Thompson. Many other people +have authored major subsystems or otherwise contributed large amounts of +code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris, +Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard +Mlynarik, Stig, William Perry and plenty of others. + +Primary XEmacs-specific subsystems and their authors: + +@table @asis +@item Objects +@itemize @minus +@item +Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcrecords: Richard Mlynarik, 1994 +@item +Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Buchholz +@item +Portable dumper, object descriptions: Olivier Galibert +@item +KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber and students +@item +Random object work (object equal and hash methods, weak lists, lcrecord lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing +@item +Profiling: Ben Wing +@item +Some byte-compilation and hash-table improvements: Martin Buchholz +@item +Bignum: Jerry James +@end itemize + +@item Internationalization/Mule +@itemize @minus +@item +mostly Ben Wing; many ideas for future work, Stephen Turnbull +@end itemize + +@item I/O +@itemize @minus +@item +Basic event/event-stream implementation: Jamie Zawinski +@item +Most event work since 1994: Ben Wing +@item +Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing +@item +Process method abstraction, Windows process work: Kirill Katsnelson +@item +Misc-user events, async timeouts, most quit-checking and signal code, most other work since 1994: Ben Wing +@item +Lstreams: Ben Wing +@end itemize + +@item Display +@itemize @minus +@item +Redisplay mechanism: implementation, Chuck Thompson; additional work, lots of people +@item +Glyphs: mostly Ben Wing +@item +Specifiers: Ben Wing +@item +Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wing +@item +Widgets: Andy Piper +@item +JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, others (see comment in @file{glyphs-eimage.c}) +@item +Menus: Jamie Zawinski, someone at Lucid (Lucid menus) +@item +Scrollbars: Chuck Thompson, ??? (Lucid scrollbar) +@item +Multi-device/device-independence work (console/device/etc methods): Ben Wing, prototype by chuck thompson +@item +Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben Wing +@item +Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wing +@item +Toolbars: implementation, chuck, much interface work, Ben Wing +@item +Gutters, tabs: andy piper +@end itemize + +@item Device subsystems +@itemize @minus +@item +X Windows: Jamie Zawinksi, Ben Wing, others +@item +GTK: William Perry, Malcolm Purvis +@item +MS Windows: initial implementation, Jonathan Harris; some more work, Andy Piper, Ben Wing +@item +TTY: Chuck Thompson, Ben Wing +@item +Cygwin: Andy Piper +@end itemize + +@item Misc +@itemize @minus +@item +Configure: initial porting from fsf, Chuck Thompson; conversion to autoconf 2, much rewriting, Martin Buchholz +@item +Most initialization-related code: Ben Wing +@item +Internals manual, much of Lisp manual: Ben Wing +@item +FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, Ben Wing +@end itemize +@end table + +@subheading SUPPORT + +Currently, support duties are handled by many different people. + +Release managers have been + +@itemize @minus +@item +Stephen Turnbull (April 2001 - January 2003, March 2004 - present, 21.2.47 - 21.4.12, 21.5.2 - 21.5.7, 21.5.17 - present) +@item +Vin Shelton (May 2003 - present, 21.4.13 - present) +@item +Steve Youngs (July 2002 - September 2003, 21.5.8 - 21.5.16) +@item +Martin Buchholz (December 1998, November 1999 - May 2001, 21.2.7 - 21.2.8, 21.2.21 - 21.2.46, 21.5.0 - 21.5.1) +@item +Steve Baur (early 1997 - December 1998, February 1999 - November 1999, 19.15 - 21.2.5, 21.2.9 - 21.2.20) +@item +Andy Piper (December 1998, 21.2.6) +@item +Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14) +@item +Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10) +@end itemize + +The recent overlapping dates are intentional, since two or three trees +are maintained simultaneously at any point. + +Other major support work: + +@itemize @minus +@item +Adrian Aichner wrote and maintains the web site. +@item +Stephen Turnbull has produced many of the beta and semi-stable releases +and has attempted to be the "face" of XEmacs on the newsgroups and +mailing lists. +@item +Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns +maintaining the packages. +@item +Vin Shelton maintains the stable releases. +@item +Testing - #### Norbert, Adrian, ??? +@end itemize + +@ignore +@c fix this! @table @asis @item Jamie Zawinski, Eric Benson, Matthieu Devin, Harlan Sexton These were the early creators of Lucid Emacs, the predecessor of Xemacs. -Jamie Zawinski was the primary maintainer and coder for Lucid Emacs— +Jamie Zawinski was the primary maintainer and coder for Lucid Emacs, active between early 1991 and June 1994. He presided over versions 19.0 through 19.10, and then abruptly left for Netscape. He wrote the -advanced stream code, the Xt interface code, the byte compiler, the +event stream code, the Xt interface code, the byte compiler, the original version of the X selection code, the first, second and third versions of the face code which appeared in 19.0, 19.6 and 19.9 respectively. Part of the keymap code separated the Lisp directories into many subdirectories and many smaller changes. Matthieu Devin wrote -the original version of the Extents code. Someone else at Lucid wrote +the original version of the extents code. Someone else at Lucid wrote the Lucid widget library (LWLIB), with the exception of the scrollbar code, which was added later. @@ -854,8 +1021,8 @@ package code. @item Chuck Thompson -Active January 1993 to June of 1996, author of the current and previous -ve3rsions of the redisplay code and maintainer of Xemacs from mid-1994 +Active January 1993 to June 1996, author of the current and previous +versions of the redisplay code and maintainer of Xemacs from mid-1994 to mid-1996. Creator of XEMacs.org. Also wrote the scrollbar code, the original configure support, and prototype versions of the toolbar and device code. @@ -894,6 +1061,7 @@ Author of much of the Microsoft Windows support. @end table +@c fix this! Authorship of some of the modules: @table @file @@ -949,6 +1117,7 @@ Inherited almost unchanged from FSF kept in sync up through 19.30 basically no changes for Xemacs. @end table +@end ignore @node A History of Emacs, The XEmacs Split, Authorship of XEmacs, Top @chapter A History of Emacs @@ -1871,7 +2040,7 @@ @subheading Ben Wing's attempts -@strong{NOTE NOTE NOTE}: The following is a @strong{highly} opinionated +@strong{Nota bene:} The following is a @strong{highly} opinionated piece written by one of the main authors of XEmacs. This reflects his opinions, and his only! It is included here because it may help to clarify some of the issues that are keeping the two versions of Emacs @@ -7318,6 +7487,10 @@ nothing unless the corresponding configure error checking flag was specified. +Note that in some cases @samp{assert}s will expand to nothing in a +context where that produces an empty statement. Some compilers will +warn about this. + @node Allocation of Objects in XEmacs Lisp, The Lisp Reader and Compiler, How Lisp Objects Are Represented in C, Top @chapter Allocation of Objects in XEmacs Lisp @cindex allocation of objects in XEmacs Lisp @@ -23811,6 +23984,7 @@ * Better Rendering Support -- Implementation:: * Better Rendering Support -- Current Status:: * Better Rendering Support -- Configuration with the Interim Patches:: +* Better Rendering Support -- Modern Font Support:: @end menu @@ -24076,7 +24250,7 @@ @end table -@node Better Rendering Support -- Configuration with the Interim Patches, , Better Rendering Support -- Current Status, Future Work -- Better Rendering Support +@node Better Rendering Support -- Configuration with the Interim Patches, Better Rendering Support -- Modern Font Support, Better Rendering Support -- Current Status, Future Work -- Better Rendering Support @subsection Better Rendering Support -- Configuration with the Interim Patches @cindex better rendering support, configuration with the interim patches @cindex configuration with the interim patches, better rendering support @@ -24157,6 +24331,478 @@ +@node Better Rendering Support -- Modern Font Support, , Better Rendering Support -- Configuration with the Interim Patches, Future Work -- Better Rendering Support +@subsection Better Rendering Support -- Modern Font Support + +@c Maybe eventually all these @cindexes should be spread about? +@cindex fonts +@cindex fonts, scalable +@cindex fonts, antialiased +@cindex fonts, TrueType +@cindex fonts, OpenType +@cindex fonts, Type1 +@cindex TrueType fonts +@cindex OpenType fonts +@cindex Type1 fonts +@cindex antialiasing +@cindex Xft +@cindex fontconfig + +@strong{NB: This subtree eventually needs to be moved to the Lispref.} + +This chapter describes integration of the @file{Xft} font support +library into XEmacs. This library is a layer over the separate +@file{FreeType} rendering engine and @file{fontconfig} font query and +selection libraries. @file{FreeType} provides rendering facilities for +modern, good-looking TrueType fonts with hinting and antialiasing, while +@file{fontconfig} provides a coherent interface to font query and +selection which is independent of the rendering engine, although +currently it is only used in @file{Xft} to interface to @file{FreeType}. + +From the user's point of view, @file{fontconfig} provides a naming +convention which is @emph{precise}, @emph{accurate}, and +@emph{convenient}. Precision means that all properties available in the +programming API can be individually specified. Accuracy means that the +truename of the font is exactly the list of all properties specified by +the font. Thus, the anomolies that occur with XLFDs on many servers +(including modern Linux distributions with XFree86 or X.org servers) +cannot occur. Convenience is subjective, of course. However, +@file{fontconfig} provides a configuration system which (1) explicitly +specifies the defaults and substitutions that will be made in processing +user queries, and (2) allows the user to specify search configuration, +abbreviations, substitutions, and defaults that override the system's, +in the same format as used by system files. Further, a @dfn{standard +minimal configuration} is defined that ensures that at least +@emph{serif}, @emph{sans-serif}, and @emph{monospace} fonts are +available on all @file{fontconfig} systems. + +@menu +* Modern Font Support -- Font Concepts:: GUI devices, fonts, glyphs, rendering. +* Modern Font Support -- fontconfig:: Querying and selecting fonts. +* Modern Font Support -- Xft:: Rendering fonts on X11. +@end menu + +@node Modern Font Support -- Font Concepts, Modern Font Support -- fontconfig, , Better Rendering Support -- Modern Font Support +@subsubsection Modern Font Support -- Font Concepts + +In modern systems, displays are invariably @dfn{raster graphic devices}, +which present an abstract interface of @dfn{pixel array} where each +@dfn{pixel value} is a color, and each pixel is individually mutable, +and (usually) readable. In XEmacs, such devices are collectively called +@dfn{GUI devices}, as opposed to @dfn{TTY devices} which are character +stream devices but may support control sequences for setting the color +of individual characters, and the insertion position in a rectangular +array. Here we are concerned only with control of GUI devices but use +TTY devices as a standard for comparison. + +A @dfn{font} is an indexed collection of @dfn{glyphs}, which are +specifications of character shapes. On a TTY device, these shapes are +entirely abstract, and the index is the identity function. Typically +fonts are embedded in TTY devices, the user has no control over the font +from within the application, and where choice is available, there is +limited selection, and no extensibility. Simple, functional, and +... ugly. + +On GUI devices, the situation is different in every respect. Glyphs may +be provided by the device, the application, or the user. Additional +glyphs may be added at will at any of those levels. Arbitrary index +functions allow the same glyph to be used to display characters in +different languages or using application-specific codes. Glyphs have +concrete APIs, allowing fine control of rendering parameters, even +user-specified shapes. To provide convenient, consistent handling of +collections of glyphs, we need a well-defined font API. + +We can separate the necessary properties into two types: properties +which are common to all glyphs in the collection or a property of the +collection itself, and those which are glyph-specific. Henceforth, the +former are called @dfn{font properties} and the latter @dfn{glyph +properties}. + +Font properties include identification like the font @dfn{family}, +font-wide design parameters like @dfn{slant} and @dfn{weight}, font +@dfn{metrics} like @dfn{size} (nominal height) and @dfn{average width} +used for approximate layout (such as sizing a popup dialog), and +properties like the @dfn{default glyph} that are associated with the +font for convenient use by APIs, but aren't really an intrinsic property +of the font as a collection of glyphs. There may also be a @dfn{kerning +table} (used to improve spacing of adjacent glyphs). + +Glyph properties include the @dfn{index}, glyph metrics such as +@dfn{ascent}, @dfn{descent}, @dfn{width}, @dfn{offset} (the offset to +the normal position of the next glyph), @dfn{italic correction} (used to +improve spacing when slanted and unslanted glyphs are juxtaposed). Most +important, of course, is the glyph's shape, which is provided in a +format specific to a rendering engine. Common formats include bitmaps +(X11 BDF), Postcript programs (Type 1), and collections of spline curves +(TrueType). When the shape is not itself a bitmap, it must be +@dfn{rendered} to a pixmap, either a region on the display or a separate +object which is copied to the display. In that case, the shape may +include ``multiple masters'' or ``hints'' to allow context-specific +rendering which improves the appearance of the glyph on the display. + +Note that this use of ``glyph'' is mostly independent of the XEmacs LISP +glyph API. @ref{Glyphs}. It is possible to extract a single glyph from +a font and encapsulate it in Lisp_Glyph object, but the LISP glyph API +allows access to only a very few glyph properties, none of them related +to the rendering process. + +XEmacs LISP does provide an API for selecting and querying fonts, in the +form of a fairly complete set of wrappers for @file{fontconfig} +(@pxref{Modern Font Support -- fontconfig}). It also provides some +control of rendering of text via wrappers for @file{Xft} APIs +(@pxref{Modern Font Support -- Xft}), but this API is quite incomplete. +Also, since the font selection and query facilities of @file{Xft} are +provided by @file{fontconfig}, there is some confusion in the API. For +example, use of antialiasing to improve the appearance of rendered +glyphs can be enabled or disabled. The API for this is to set the +@file{fontconfig} font property @code{antialias} on the font. However, +from the point of view of @file{fontconfig} this is merely a hint that +the rendering engine may or may not respect. This property cannot be +used to select only fonts suitable for being antialiased, for example. +And @code{rgba} (subpixel geometry) and @code{dpi} (pixel density) are +conceptually properties of the display, not of either the font. They +function as hints to the rendering process. + +As a final confusing touch, @file{Xft} also provides some access to the +@file{XRender} extension provided by some modern X servers. This is +mostly limited to colors, but rectangle APIs are also provided. These +are (of course) completely independent of fonts, but @file{Xft} is +designed for client-side font rendering, and thus uses the +@file{XRender} extension heavily. + + +@node Modern Font Support -- fontconfig, Modern Font Support -- Xft, Modern Font Support -- Font Concepts, Better Rendering Support -- Modern Font Support +@subsubsection Modern Font Support -- fontconfig + +@cindex fontconfig API +@cindex API, fontconfig +@cindex fonts, configuring +@cindex configuring fonts +@cindex fonts, selecting +@cindex selecting fonts +@cindex fonts, querying +@cindex querying fonts + +@emph{Implementation notes}: The functions which initialize the library +and handle memory management (@emph{e.g.}, @code{FcInit} and +@code{FcPatternDestroy}) are intentionally not wrapped (in the latter +case, @code{fc-pattern-destroy} was provided, but this was +ill-considered and will be removed; LISP code should @strong{never} call +this function). Thinking about some of the auxiliary constructs used by +@file{fontconfig} is in transition. The @code{FcObjectSet} API has been +internalized; it is exposed to LISP as a list of strings. The +@code{FcFontSet} API is still in use, but it also will be internalized, +probably as a list (alternatively, vector) of @code{Lisp_fc_pattern} +objects. Changing the representation of @file{fontconfig} objects +(property names) from LISP strings to keywords is under consideration. + +If @file{Xft} (including @file{fontconfig}) support is integrated into +the XEmacs build, XEmacs provides the symbol @code{xft} at +initialization. + +XEmacs provides the following functions wrapping the @file{fontconfig} +library API. + +@defun fc-fontset-p object + +Returns t if @var{object} is of type fc-fontset, nil otherwise. +@emph{This API is likely to be removed in the near future.} +@end defun + +@defun fc-fontset-count fcfontset + +Counts the number of fc pattern objects stored in the fc fontset object +@var{fcfontset}. @emph{This API is likely to be removed in the near +future.} +@end defun + +@defun fc-fontset-ref fcfontset i + +Return the fc pattern object at index @var{i} in fc fontset object +@var{fcfontset}. Return nil if the index exceeds the bounds of +@var{fcfontset}. @emph{This API is likely to be removed in the near +future.} +@end defun + +@defun fc-fontset-destroy fcfontset + +Explicitly deallocate @var{fcfontset}. @emph{Do not call this function +from LISP code. You will crash. This API will be removed in the near +future.} +@end defun + +@defun fc-pattern-p object + +Returns t if @var{object} is of type fc-pattern, nil otherwise. +@end defun + +@defun fc-pattern-create + +Return a fresh and empty fc-pattern object. +@end defun + +@defun fc-name-parse name + +Parse string @var{name} as a fontconfig font name and return its +representation as a fc pattern object. +@end defun + +@defun fc-name-unparse pattern + +Unparse pattern object @var{pattern} to a string. +@end defun + +@file{Xft}'s similar function is actually a different API. We provide +both for now. (They probably invoke the same code from +@file{fontconfig} internally, but the @file{fontconfig} implementation +is more conveniently called from C.) + +@defun xft-name-unparse pattern + +Unparse pattern object @var{pattern} to a string (using the @file{Xft} +API). +@end defun + +@defun fc-pattern-duplicate pattern + +Make a copy of pattern object @var{pattern} and return it. +@end defun + +@defun fc-pattern-add pattern property value + +Add attributes to the pattern object @var{pattern}. @var{property} is a +string naming the attribute to add, @var{value} the value for this attribute. + +@var{value} may be a string, integer, float, or symbol, in which case +the value will be added as an FcChar8[], int, double, or FcBool +respectively. +@end defun + +@defun fc-pattern-del pattern, property + +Remove attribute @var{property} from pattern object @var{pattern}. +@end defun + +This is the generic interface to @code{FcPatternGet}. +We don't support the losing symbol-for-property interface. However, it +might be a very good idea to use keywords for property names in LISP. + +@defun fc-pattern-get pattern property &optional id type + +From @var{pattern}, extract @var{property} for the @var{id}'th member, of +type @var{type}. + +@var{pattern} is an @file{Xft} (@file{fontconfig}) pattern object. +@var{property} is a string naming a @file{fontconfig} font property. +Optional @var{id} is a nonnegative integer indexing the list of values +for @var{property} stored in @var{pattern}, defaulting to 0 (the first +value). +Optional @var{type} is a symbol, one of 'string, 'boolean, 'integer, 'float, +'double, 'matrix, 'charset, or 'void, corresponding to the FcValue types. +('float is an alias for 'double). + +Symbols with names of the form @samp{fc-result-@var{DESCRIPTION}} are +returned when the desired value is not available. These are + +@example +fc-result-type-mismatch the value found has an unexpected type +fc-result-no-match there is no such attribute +fc-result-no-id there is no value for the requested ID +@end example +@end defun + +The Lisp types returned will conform to @var{type}: + +@example +string string +boolean `t' or `nil' +integer integer +double (float) float +matrix not implemented +charset not implemented +void not implemented +@end example + +The types of the following standard properties are predefined by +fontconfig. The symbol 'fc-result-type-mismatch will be returned if the +object exists but @var{type} does not match the predefined type. It is +best not to specify a type for predefined properties, as a mistake here +ensures error returns on the correct type. + +Each standard property has a convenience accessor defined in +@file{fontconfig.el}, named in the form +@samp{fc-pattern-get-@var{property}}. The convenience functions are +preferred to @code{fc-pattern-get} since a typo in the string naming a +property will result in a silent null return, while a typo in a function +name will usually result in a compiler or runtime \"not fboundp\" error. +You may use @code{defsubst} to define convenience functions for non-standard +properties. + +@example +family String Font family name +style String Font style. Overrides weight and slant +slant Int Italic, oblique or roman +weight Int Light, medium, demibold, bold or black +size Double Point size +aspect Double Stretches glyphs horizontally before hinting +pixelsize Double Pixel size +spacing Int Proportional, monospace or charcell +foundry String Font foundry name +antialias Bool Whether glyphs can be antialiased +hinting Bool Whether the rasterizer should use hinting +verticallayout Bool Use vertical layout +autohint Bool Use autohinter instead of normal hinter +globaladvance Bool Use font global advance data +file String The filename holding the font +index Int The index of the font within the file +ftface FT_Face Use the specified FreeType face object +rasterizer String Which rasterizer is in use +outline Bool Whether the glyphs are outlines +scalable Bool Whether glyphs can be scaled +scale Double Scale factor for point->pixel conversions +dpi Double Target dots per inch +rgba Int unknown, rgb, bgr, vrgb, vbgr, none - subpixel geometry +minspace Bool Eliminate leading from line spacing +charset CharSet Unicode chars encoded by the font +lang String List of RFC-3066-style languages this font supports +@end example + +The FT_Face, Matrix, CharSet types are unimplemented, so the corresponding +properties are not accessible from Lisp at this time. If the value of a +property returned has type FT_Face, FcCharSet, or FcMatrix, +@code{fc-result-type-mismatch} is returned. + +The following properties which were standard in @file{Xft} v.1 are +obsolete in @file{Xft} v.2: @code{encoding}, @code{charwidth}, +@code{charheight}, @code{core}, and @code{render}. + +@defun fc-pattern-destroy pattern + +Explicitly deallocate pattern object @var{pattern}. @emph{Do not call +this function from LISP code. You will crash. This API will be removed +in the near future.} +@end defun + +@defun fc-font-match device pattern + +Return the font on @var{device} that most closely matches @var{pattern}. + +@var{pattern} is a @file{fontconfig} pattern object. @var{device} is an +X11 device. Returns a @file{fontconfig} pattern object representing the +closest match to the given pattern, or an error code. Possible error +codes are @code{fc-result-no-match} and @code{fc-result-no-id}. +@end defun + +@defun fc-list-fonts-pattern-objects device pattern properties + +List the fonts on @var{device} that match @var{pattern} for +@var{properties}. @var{device} is an X11 device. @var{pattern} is a +@file{fontconfig} pattern to be matched. @var{properties} is the list of +property names (strings) that should be included in each returned +pattern. The result is a @file{fontconfig} fontset object containing +the set of unique matching patterns. +@end defun + +The @var{properties} argument does not affect the matching. So, for +example, + +@example +(mapcar #'fc-name-unparse + (let ((xfl (fc-list-fonts-pattern-objects nil + (fc-name-parse "FreeMono") '("style"))) + (i 0) + (fl nil)) + (while (< i (fc-fontset-count xfl)) + (push (fc-fontset-ref xfl i) fl) + (setq i (1+ i))) + fl)) +@end example + +will return something like +@samp{(":style=Bold" ":style=Medium" ":style=Oblique" ":style=BoldOblique")} +if you have the FreeFont package installed. Note that the sets of +objects in the target pattern and the returned patterns don't even +intersect. + +In using @code{fc-list-fonts-pattern-objects}, be careful that only +intrinsic properties of fonts be included in the pattern. Those +properties included in the pattern must be matched, or the candidate +font will be eliminated from the list. When a font leaves a property +unspecified, it is considered to be a mismatch for any pattern with that +property specified. Thus, inclusion of extraneous properties will +result in the list being empty. Note that for scalable fonts (at +least), @code{size} is not an intrinsic property! Thus a specification +such as @code{"Bitstream Vera Sans-12"} will return an empty list +regardless of whether the font is available or not---probably not what +you (as programmer or user) want. + +The list is unsorted. In particular, the pattern +@code{":style=italic,oblique"} will not return italic fonts first, then +oblique ones. The fonts will be returned in some arbitrary order. + +@emph{Implementation notes}: Fontset objects are slated for removal +from the API. In the future @code{fc-list-fonts-pattern-objects} will +return a list. The @var{device} argument is unused, ignored, and may be +removed if it's not needed to match other font-listing APIs. This name +will be changed to correspond to Ben's new nomenclature, probably simply +@code{fc-font-list}. + +@defun fc-font-sort device pattern trim + +Return a fontset object listing all fonts sorted by proximity to +@var{pattern}. @var{device} is an X11 device. @var{pattern} is a +fontconfig pattern to be matched. Optional argument @var{trim}, if +non-nil, means to trim trailing fonts that do not contribute new +characters to the union repertoire. +@end defun + +@emph{Implementation notes}: Fontset objects are slated for removal +from the API. In the future @code{fc-font-sort} will return a list (or +perhaps a vector) of FcPatterns. The @var{device} argument is unused, +ignored, and may be removed if it's not needed to match other +font-listing APIs. + +@defun fc-font-real-pattern fontname xdevice + +Temporarily open font @var{fontname} (a string) on device @var{xdevice} +and return the actual fc pattern matched by the Fc library. @emph{This +function doesn't make much sense and will be removed from the API.} +@end defun + +@defun xlfd-font-name-p fontname + +Check whether string @var{fontname} is a XLFD font name. +@end defun + +@defvar xft-debug-level + +Level of debugging messages to issue to stderr for @var{Xft}. +A nonnegative integer. Set to 0 to suppress all warnings. +Default is 1 to ensure a minimum of debugging output at initialization. +Higher levels give more information. +@end defvar + +@defvar xft-version + +The major version number of the Xft library compiled with. +@end defvar + +@defvar xft-xlfd-font-regexp + +Regular expression matching XLFD font names. +@end defvar + + + +@node Modern Font Support -- Xft, , Modern Font Support -- fontconfig, Better Rendering Support -- Modern Font Support +@subsubsection Modern Font Support -- fontconfig + +IIRC, we don't really provide any @file{Xft} APIs at the LISP level yet. + + + + + @node Future Work Discussion, Old Future Work, Future Work, Top @chapter Future Work Discussion @cindex future work, discussion diff --text -u 'xemacs-21.5.20/man/lispref/mule.texi' 'xemacs-21.5.21/man/lispref/mule.texi' Index: ./man/lispref/mule.texi --- ./man/lispref/mule.texi Wed Mar 9 14:36:50 2005 +++ ./man/lispref/mule.texi Sun Mar 27 01:20:05 2005 @@ -2097,7 +2097,7 @@ * Characters to be preserved:: No transformation needed for these characters. * The program to decode to internal format:: . * The program to encode from internal format:: . - +* The actual coding system:: . @end menu @node Four bits to ASCII, URI Encoding constants, , CCL Example @@ -2117,7 +2117,7 @@ (let ((val (make-vector 256 0)) (i 0)) (while (< i (length val)) - (aset val i (char-int (aref (format "%02X" i) 0))) + (aset val i (char-to-int (aref (format "%02X" i) 0))) (setq i (1+ i))) val) "Table to find an ASCII version of an octet's most significant 4 bits.") @@ -2125,7 +2125,7 @@ The next table, @code{url-coding-low-order-nybble-as-ascii} is almost the same thing, but this time it has a map for the hex encoding of the -low-order four bits. So the sixty-fifth entry (offset @samp{#x51}) is +low-order four bits. So the sixty-fifth entry (offset @samp{#x41}) is the ASCII encoding of `1', the hundred-and-twenty-second (offset @samp{#x7a}) is the ASCII encoding of `A'. @@ -2134,7 +2134,7 @@ (let ((val (make-vector 256 0)) (i 0)) (while (< i (length val)) - (aset val i (char-int (aref (format "%02X" i) 1))) + (aset val i (char-to-int (aref (format "%02X" i) 1))) (setq i (1+ i))) val) "Table to find an ASCII version of an octet's least significant 4 bits.") @@ -2154,14 +2154,14 @@ @code{url-coding-escaped-space-code} variable. @example -(defvar url-coding-escape-character-code (char-int ?%) +(defvar url-coding-escape-character-code (char-to-int ?%) "The code point for the percentage sign, in ASCII.") -(defvar url-coding-escaped-space-code (char-int ?+) +(defvar url-coding-escaped-space-code (char-to-int ?+) "The URL-encoded value of the space character, that is, +.") @end example -@node Numeric to ASCII-hexadecimal conversion +@node Numeric to ASCII-hexadecimal conversion, Characters to be preserved, URI Encoding constants, CCL Example @subsubsection Numeric to ASCII-hexadecimal conversion Now, we have a couple of utility tables that wouldn't be necessary in @@ -2177,7 +2177,7 @@ (let ((i 0) (val (make-vector 16 0))) (while (< i 16) - (aset val i (char-int (aref (format "%X" i) 0))) + (aset val i (char-to-int (aref (format "%X" i) 0))) (setq i (1+ i))) val) "A map from a hexadecimal digit's numeric value to its encoding in ASCII.") @@ -2193,7 +2193,7 @@ "A map from Latin 1 code points to their values as hexadecimal digits.") @end example -@node Characters to be preserved +@node Characters to be preserved, The program to decode to internal format, Numeric to ASCII-hexadecimal conversion, CCL Example @subsubsection Characters to be preserved And finally, the last of these tables. URL encoding says that @@ -2227,7 +2227,7 @@ octet as its ASCII encoding.") @end example -@node The program to decode to internal format +@node The program to decode to internal format, The program to encode from internal format, Characters to be preserved, CCL Example @subsubsection The program to decode to internal format After the almost interminable tables, we get to the CCL. The first @@ -2288,7 +2288,7 @@ internal encoding. ") @end example -@node The program to encode from internal format +@node The program to encode from internal format, The actual coding system, The program to decode to internal format, CCL Example @subsubsection The program to encode from internal format Next, we see the CCL program to encode ASCII text as URL coded text. @@ -2324,6 +2324,36 @@ "CCL program to encode octets (almost) according to RFC 1738") @end example +@node The actual coding system, , The program to encode from internal format, CCL Example +@subsubsection The actual coding system + +To actually create the coding system, we call +@samp{make-coding-system}. The first argument is the symbol that is to +be the name of the coding system, in our case @samp{url-coding}. The +second specifies that the coding system is to be of type +@samp{ccl}---there are several other coding system types available, +including, see the documentation for @samp{make-coding-system} for the +full list. Then there's a documentation string describing the wherefore +and caveats of the coding system, and the final argument is a property +list giving information about the CCL programs and the coding system's +mnemonic. + +@example +(make-coding-system + 'url-coding 'ccl + "The coding used by application/x-www-form-urlencoded HTTP applications. +This coding form doesn't specify anything about non-ASCII characters, so +make sure you've transformed to a seven-bit coding system first." + '(decode ccl-decode-urlcoding + encode ccl-encode-urlcoding + mnemonic "URLenc")) +@end example + +If you're lucky, the @samp{url-coding} coding system describe here +should be available in the XEmacs package system. Otherwise, downloading +it from @samp{http://www.parhasard.net/url-coding.el} should work for +the foreseeable future. + @node Category Tables, Unicode Support, CCL, MULE @section Category Tables diff --text -u 'xemacs-21.5.20/man/standards.texi' 'xemacs-21.5.21/man/standards.texi' Index: ./man/standards.texi --- ./man/standards.texi Fri Apr 13 03:22:00 2001 +++ ./man/standards.texi Tue Mar 15 15:15:35 2005 @@ -2,7 +2,8 @@ @c %**start of header @setfilename ../info/standards.info @settitle GNU Coding Standards -@c This date is automagically updated when you save this file: +@c In GNU Emacs, this date is automagically updated when this file is +@c saved, but in XEmacs you must set it when synching: @set lastupdate February 21, 2001 @c %**end of header @@ -1676,8 +1677,8 @@ @samp{-q} in Make. @item quiet -Used in many programs to inhibit the usual output. @strong{Note:} every -program accepting @samp{--quiet} should accept @samp{--silent} as a +Used in many programs to inhibit the usual output. @strong{Every +program accepting @samp{--quiet}} should accept @samp{--silent} as a synonym. @item quiet-unshar @@ -1791,8 +1792,8 @@ @item silent Used in many programs to inhibit the usual output. -@strong{Note:} every program accepting -@samp{--silent} should accept @samp{--quiet} as a synonym. +@strong{Every program accepting +@samp{--silent}} should accept @samp{--quiet} as a synonym. @item size @samp{-s} in @code{ls}. @@ -3645,10 +3646,3 @@ @contents @bye -Local variables: -update-date-leading-regexp: "@c This date is automagically updated when you save this file:\n@set lastupdate " -update-date-trailing-regexp: "" -eval: (load "/gd/gnuorg/update-date.el") -eval: (add-hook 'write-file-hooks 'update-date) -compile-command: "make just-standards" -End: diff --text -u 'xemacs-21.5.20/man/xemacs-faq.texi' 'xemacs-21.5.21/man/xemacs-faq.texi' Index: ./man/xemacs-faq.texi --- ./man/xemacs-faq.texi Fri Feb 4 11:51:21 2005 +++ ./man/xemacs-faq.texi Wed May 11 02:56:15 2005 @@ -7,7 +7,7 @@ @finalout @titlepage @title XEmacs FAQ -@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2005/02/04 02:51:21 $ +@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2005/05/10 17:56:15 $ @sp 1 @author Ben Wing @author Tony Rossini @@ -5064,7 +5064,7 @@ @lisp (setq default-major-mode 'text-mode) -(setq text-mode-hook 'turn-on-auto-fill) +(add-hook 'text-mode-hook 'turn-on-auto-fill) @end lisp @strong{WARNING}: note that changing the value of diff --text -u 'xemacs-21.5.20/man/xemacs/building.texi' 'xemacs-21.5.21/man/xemacs/building.texi' Index: ./man/xemacs/building.texi --- ./man/xemacs/building.texi Mon Nov 20 12:25:27 2000 +++ ./man/xemacs/building.texi Fri May 6 02:10:44 2005 @@ -139,7 +139,7 @@ @xref{Lisp Libraries}. @item Lisp Interaction mode The mode for an interactive session with Emacs Lisp. It defines -@key{LFD} to evaluate the sexp before point and insert its value in the +@kbd{C-j} to evaluate the sexp before point and insert its value in the buffer. @xref{Lisp Interaction}. @item Lisp mode The mode for editing source files of programs that run in other dialects @@ -551,14 +551,14 @@ the expressions you evaluate and their output goes in the buffer. The @samp{*scratch*} buffer's major mode is Lisp Interaction mode, which -is the same as Emacs-Lisp mode except for one command, @key{LFD}. In -Emacs-Lisp mode, @key{LFD} is an indentation command. In Lisp -Interaction mode, @key{LFD} is bound to @code{eval-print-last-sexp}. This +is the same as Emacs-Lisp mode except for one command, @kbd{C-j}. In +Emacs-Lisp mode, @kbd{C-j} is an indentation command. In Lisp +Interaction mode, @kbd{C-j} is bound to @code{eval-print-last-sexp}. This function reads the Lisp expression before point, evaluates it, and inserts the value in printed representation before point. The way to use the @samp{*scratch*} buffer is to insert Lisp -expressions at the end, ending each one with @key{LFD} so that it will +expressions at the end, ending each one with @kbd{C-j} so that it will be evaluated. The result is a complete typescript of the expressions you have evaluated and their values. diff --text -u 'xemacs-21.5.20/man/xemacs/custom.texi' 'xemacs-21.5.21/man/xemacs/custom.texi' Index: ./man/xemacs/custom.texi --- ./man/xemacs/custom.texi Fri Oct 10 21:39:45 2003 +++ ./man/xemacs/custom.texi Mon Apr 18 13:00:10 2005 @@ -43,9 +43,14 @@ @cindex minor modes @cindex mode line - Minor modes are options which you can use or not. For example, Auto -Fill mode is a minor mode in which @key{SPC} breaks lines between words -as you type. All the minor modes are independent of each other and of + Minor modes are common options which may be useful in many major +modes, but which may need to be enabled or disabled independently of the +major mode. (This may be because user preferences for the feature vary, +or because the feature is sometimes more of a hindrance than an aid +depending on the specific content of the buffer.) For example, Auto +Fill mode is a minor mode in which @key{SPC} automatically breaks lines +between words at the right margin +as you type. Minor modes are independent of each other and of the selected major mode. Most minor modes inform you in the mode line when they are on; for example, @samp{Fill} in the mode line means that Auto Fill mode is on. @@ -55,16 +60,30 @@ enable or disable Auto Fill mode is called @kbd{M-x auto-fill-mode}. These commands are usually invoked with @kbd{M-x}, but you can bind keys to them if you wish. With no argument, the function turns the mode on if it was -off and off if it was on. This is known as @dfn{toggling}. A positive +off and off if it was on. This is called @dfn{toggling}. A positive argument always turns the mode on, and an explicit zero argument or a negative argument always turns it off. +@c #### maybe this list should be extended and moved to its own node? + @cindex Auto Fill mode @findex auto-fill-mode Auto Fill mode allows you to enter filled text without breaking lines explicitly. Emacs inserts newlines as necessary to prevent lines from becoming too long. @xref{Filling}. +@cindex Filladapt mode +@findex filladapt-mode + Filladapt mode is an extension of Auto Fill mode which recognizes +@dfn{line prefixes} and automatically prepends them when automatically +breaking lines. Filladapt mode is smart enough to recognize common +idioms for bullets (e.g., leading isolated hyphens) and enumerated +paragraphs, and insert appropriate leading whitespace (and omit the +bullet!) It also does a good job of recognizing common quotation styles +in email. Filladapt mode must be enabled in addition to Auto Fill +mode. If Auto Fill mode is disabled, Filladapt mode will be +inactivated, but the indicator will remain in the modeline. + @cindex Overwrite mode @findex overwrite-mode Overwrite mode causes ordinary printing characters to replace existing @@ -72,6 +91,13 @@ front of the @samp{B} in @samp{FOOBAR}, and you type a @kbd{G} in Overwrite mode, it changes to @samp{FOOGAR}, instead of @samp{FOOGBAR}.@refill +@cindex Pending Delete mode +@findex pending-delete-mode +Pending Delete mode cause buffer insertions and deletions to replace the +active region (with nothing, for deletions). This is the common +behavior in most modern programs, but conflicts with the ``lightweight +selections'' used in the X Window System. + @cindex Abbrev mode @findex abbrev-mode Abbrev mode allows you to define abbreviations that automatically expand @@ -83,35 +109,48 @@ @section Behaviors @cindex behavior -Some functionality requires a fair amount of effort to enable globally -in a session. For example, someone who discovers filladapt and really +@dfn{Behaviors} are an alternative interface to minor modes. The toggle +interface emphasizes the case-specific nature of a minor mode: use it +with @emph{this} major mode but not in @emph{those} buffers. However, +this is inconvenient for behavior that depends on user preference. +For example, someone who discovers filladapt and really likes it must toggle it separately in each buffer. On the other hand, after trying it for a while she might like to disable it everywhere, -having decided it doesn't work very well for her. Such a functionality -is called a @dfn{behavior}. - -The package developer will register behaviors with XEmacs. Then the -user invokes the @code{enable-behavior} and @code{disable-behavior} -functions to enable or disable a given behavior. The behavior registry -was introduced in XEmacs 21.5.6. - -@defun enable-behavior behavior [force] -Called interactively, prompt the user, read a behavior symbol name with -completion for @var{behavior}, and take @var{force} from the prefix -argument. Then enable the behavior registered under the symbol -@var{behavior}. - -The optional argument @var{force} is unimplemented in 21.5.6. -@end defun - -@defun disable-behavior behavior [force] -Called interactively, prompt the user, read a behavior symbol name with -completion for @var{behavior}, and take @var{force} from the prefix -argument. Then disable the behavior registered under the symbol -@var{behavior}. +having decided it doesn't work very well for her. -The optional argument @var{force} is unimplemented in 21.5.6. -@end defun +Use of mode hooks will invoke the minor mode automatically in the +future, but this is inconvenient (you must switch tasks to editing the +init file) and doesn't help with existing buffers in the session. The +behavior interface addresses this problem. The command +@code{enable-behavior} prompts (with completion) for a registered +behavior (denoted by a symbol), and enables it. Conversely, +@code{disable-behavior} prompts for a behavior, and disables it. + +@c #### This belongs in the Lispref in the description of creating +@c packages or in customize or both. + +@c The package developer will register behaviors with XEmacs. Then the +@c user invokes the @code{enable-behavior} and @code{disable-behavior} +@c functions to enable or disable a given behavior. The behavior registry +@c was introduced in XEmacs 21.5.6. +@c +@c @defun enable-behavior behavior &optionl force +@c Called interactively, prompt the user, read a behavior symbol name with +@c completion for @var{behavior}, and take @var{force} from the prefix +@c argument. Then enable the behavior registered under the symbol +@c @var{behavior}. +@c +@c The optional argument @var{force} is unimplemented in 21.5.6. +@c @end defun +@c +@c @defun disable-behavior behavior &optional force +@c Called interactively, prompt the user, read a behavior symbol name with +@c completion for @var{behavior}, and take @var{force} from the prefix +@c argument. Then disable the behavior registered under the symbol +@c @var{behavior}. +@c +@c The optional argument @var{force} is unimplemented in 21.5.6. +@c @end defun @node Variables @@ -788,12 +827,15 @@ the last page does not confuse Emacs, and Emacs never needs to search a long file that contains no page markers and has no local variables list. - You may be tempted to turn on Auto Fill mode with a local variable -list. That is inappropriate. Whether you use Auto Fill mode or not is + You may be tempted to turn on minor modes like Auto Fill mode with a +local variable list. That is inappropriate. Those behaviors that seem +appropriate for almost any personal taste, such as setting up the syntax +table "symbol constituent" character class, are collected into a major +mode. But whether you use Auto Fill mode or not is a matter of personal taste, not a matter of the contents of particular files. If you want to use Auto Fill, set up major mode hooks with your init file to turn it on (when appropriate) for you alone -(@pxref{Init File}). Don't try to use a local variable list that would +(@pxref{Init File}). Don't use a local variable list that would impose your taste on everyone working with the file. XEmacs allows you to specify local variables in the first line @@ -1459,8 +1501,8 @@ @table @samp @item @w{-} -The class of whitespace characters. Please don't use the formerly -advertised @w{ }, which is not supported by GNU Emacs. +The class of whitespace characters. Avoid use of the formerly +advertised @w{ }, because it is not supported by GNU Emacs. @item w The class of word-constituent characters. @item _ @@ -2145,42 +2187,56 @@ @cindex X resources @findex x-create-frame -Historically, XEmacs has used the X resource application class @samp{Emacs} -for its resources. Unfortunately, GNU Emacs uses the same application -class, and resources are not compatible between the two Emacsen. This -sharing of the application class often leads to trouble if you want to -run both variants. - -Starting with XEmacs 21, XEmacs uses the class @samp{XEmacs} if it finds -any XEmacs resources in the resource database when the X connection is -initialized. Otherwise, it will use the class @samp{Emacs} for -backwards compatibility. The variable @code{x-emacs-application-class} -may be consulted to determine the application class being used. - -The examples in this section assume the application class is @samp{Emacs}. - -The Emacs resources are generally set per-frame. Each Emacs frame can have -its own name or the same name as another, depending on the name passed to the -@code{make-frame} function. +Historically, XEmacs used the X resource application class @samp{Emacs} +for its resources. Unfortunately, GNU Emacs's usage of resources has +evolved differently from XEmacs's, and especially in the case of fonts +semantics are not compatible between the two Emacsen. Thus, sharing of +the application class can easily lead to trouble. + +XEmacs now uses the X resource application class @samp{XEmacs}. +Versions since 21.5.21 do this unconditionally. To attempt to maintain +some backward compatibility, previous versions checked the X resource +database for resources starting in @samp{XEmacs}, and if none were +found, @samp{Emacs} was used. This behavior is likely to be obsoleted, +so you should move your X resources to using the @samp{XEmacs} class. +In the short term, to stay with the old behavior, start XEmacs with the +environment variable @b{USE_EMACS_AS_DEFAULT_APPLICATION_CLASS} set to +some non-empty value; this will restore the pre-21.5.21 behavior. +@c #### is this documented in the Lispref? +Lisp programs can examine the variable @code{x-emacs-application-class} +to determine which is being used in the running application. + +The examples in this section assume the application class is +@samp{XEmacs}. + +Most of XEmacs's resources are set per-frame. Each XEmacs frame can +have its own name or the same name as another, depending on the name +passed to the @code{make-frame} function. Up until 21.5.21, the default +frame name was @samp{emacs}; since then, it has been @samp{XEmacs}, but +in the short term the old default can be restored by the +@b{USE_EMACS_AS_DEFAULT_APPLICATION_CLASS} environment variable +mentioned above. +@c #### Cheesy. Variable should be documented here. +See the docstring for the Lisp variable `default-frame-name'. You can specify resources for all frames with the syntax: @example -Emacs*parameter: value +XEmacs*parameter: value @end example @noindent or @example -Emacs*EmacsFrame.parameter:value +XEmacs*EmacsFrame.parameter:value @end example @noindent You can specify resources for a particular frame with the syntax: @example -Emacs*FRAME-NAME.parameter: value +XEmacs*FRAME-NAME.parameter: value @end example @noindent @@ -2196,58 +2252,58 @@ @node Geometry Resources @subsection Geometry Resources -To make the default size of all Emacs frames be 80 columns by 55 lines, +To make the default size of all XEmacs frames be 80 columns by 55 lines, do this: @example -Emacs*EmacsFrame.geometry: 80x55 +XEmacs*EmacsFrame.geometry: 80x55 @end example @noindent To set the geometry of a particular frame named @samp{fred}, do this: @example -Emacs*fred.geometry: 80x55 +XEmacs*fred.geometry: 80x55 @end example @noindent Important! Do not use the following syntax: @example -Emacs*geometry: 80x55 +XEmacs*geometry: 80x55 @end example @noindent You should never use @code{*geometry} with any X application. It does -not say "make the geometry of Emacs be 80 columns by 55 lines." It -really says, "make Emacs and all subwindows thereof be 80x55 in whatever +not say "make the geometry of XEmacs be 80 columns by 55 lines." It +really says, "make XEmacs and all subwindows thereof be 80x55 in whatever units they care to measure in." In particular, that is both telling the -Emacs text pane to be 80x55 in characters, and telling the menubar pane +XEmacs text pane to be 80x55 in characters, and telling the menubar pane to be 80x55 pixels, which is surely not what you want. As a special case, this geometry specification also works (and sets the -default size of all Emacs frames to 80 columns by 55 lines): +default size of all XEmacs frames to 80 columns by 55 lines): @example -Emacs.geometry: 80x55 +XEmacs.geometry: 80x55 @end example @noindent since that is the syntax used with most other applications (since most -other applications have only one top-level window, unlike Emacs). In +other applications have only one top-level window, unlike XEmacs). In general, however, the top-level shell (the unmapped ApplicationShell -widget named @samp{Emacs} that is the parent of the shell widgets that +widget named @samp{XEmacs} that is the parent of the shell widgets that actually manage the individual frames) does not have any interesting resources on it, and you should set the resources on the frames instead. The @code{-geometry} command-line argument sets only the geometry of the -initial frame created by Emacs. +initial frame created by XEmacs. A more complete explanation of geometry-handling is @itemize @bullet @item -The @code{-geometry} command-line option sets the @code{Emacs.geometry} +The @code{-geometry} command-line option sets the @code{XEmacs.geometry} resource, that is, the geometry of the ApplicationShell. @item @@ -2261,7 +2317,7 @@ @item For the first frame created, the position of the frame is taken from the -ApplicationShell (@code{Emacs.geometry}) if it is specified, otherwise +ApplicationShell (@code{XEmacs.geometry}) if it is specified, otherwise from the geometry of the frame. @item @@ -2277,15 +2333,15 @@ @subsection Iconic Resources Analogous to @code{-geometry}, the @code{-iconic} command-line option -sets the iconic flag of the ApplicationShell (@code{Emacs.iconic}) and +sets the iconic flag of the ApplicationShell (@code{XEmacs.iconic}) and always applies to the first frame created regardless of its name. However, it is possible to set the iconic flag on particular frames (by -name) by using the @code{Emacs*FRAME-NAME.iconic} resource. +name) by using the @code{XEmacs*FRAME-NAME.iconic} resource. @node Resource List @subsection Resource List -Emacs frames accept the following resources: +XEmacs frames accept the following resources: @table @asis @item @code{geometry} (class @code{Geometry}): string @@ -2382,7 +2438,7 @@ such as a modem connection. @end table -Emacs devices accept the following resources: +XEmacs devices accept the following resources: @table @asis @item @code{textPointer} (class @code{Cursor}): cursor-name @@ -2425,14 +2481,14 @@ The attributes of faces are also per-frame. They can be specified as: @example -Emacs.FACE_NAME.parameter: value +XEmacs.FACE_NAME.parameter: value @end example @noindent or @example -Emacs*FRAME_NAME.FACE_NAME.parameter: value +XEmacs*FRAME_NAME.FACE_NAME.parameter: value @end example @noindent @@ -2447,7 +2503,7 @@ The foreground and background colors of this face. @item @code{attributeBackgroundPixmap} (class @code{AttributeBackgroundPixmap}): file-name -The name of an @sc{xbm} file (or @sc{xpm} file, if your version of Emacs +The name of an @sc{xbm} file (or @sc{xpm} file, if your version of XEmacs supports @sc{xpm}), to use as a background stipple. @item @code{attributeUnderline} (class @code{AttributeUnderline}): boolean @@ -2456,8 +2512,8 @@ All text is displayed in some face, defaulting to the face named @code{default}. To set the font of normal text, use -@code{Emacs*default.attributeFont}. To set it in the frame named -@code{fred}, use @code{Emacs*fred.default.attributeFont}. +@code{XEmacs*default.attributeFont}. To set it in the frame named +@code{fred}, use @code{XEmacs*fred.default.attributeFont}. These are the names of the predefined faces: @@ -2466,15 +2522,15 @@ Everything inherits from this. @item bold -If this is not specified in the resource database, Emacs tries to find a +If this is not specified in the resource database, XEmacs tries to find a bold version of the font of the default face. @item italic -If this is not specified in the resource database, Emacs tries to find +If this is not specified in the resource database, XEmacs tries to find an italic version of the font of the default face. @item bold-italic -If this is not specified in the resource database, Emacs tries to find a +If this is not specified in the resource database, XEmacs tries to find a bold-italic version of the font of the default face. @item modeline @@ -2559,7 +2615,7 @@ where INVOCATION-NAME is the terminal component of the name of the XEmacs executable (usually @samp{xemacs}), and -@samp{x-emacs-application-class} is generally @samp{Emacs}. +@samp{x-emacs-application-class} is generally @samp{XEmacs}. @node Menubar Resources @subsection Menubar Resources @@ -2569,11 +2625,11 @@ colors: It uses whatever resources are appropriate to the type of widget which is used to implement it. -If Emacs was compiled to use only the Lucid Motif-lookalike menu widgets, +If XEmacs was compiled to use only the Lucid Motif-lookalike menu widgets, then one way to specify the font of the menubar would be @example -Emacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* +XEmacs*menubar*font: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* @end example If both the Lucid Motif-lookalike menu widgets and X Font Sets are @@ -2593,7 +2649,7 @@ If the Motif library is being used, then one would have to use @example -Emacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* +XEmacs*menubar*fontList: *-courier-medium-r-*-*-*-120-*-*-*-*-*-* @end example because the Motif library uses the @code{fontList} resource name instead diff --text -u 'xemacs-21.5.20/man/xemacs/entering.texi' 'xemacs-21.5.21/man/xemacs/entering.texi' Index: ./man/xemacs/entering.texi --- ./man/xemacs/entering.texi Fri Apr 13 03:22:27 2001 +++ ./man/xemacs/entering.texi Fri May 6 02:10:44 2005 @@ -28,9 +28,12 @@ a current buffer for editing, it presents a buffer, by default, a buffer named @samp{*scratch*}. The buffer is in Lisp Interaction mode; you can use it to type Lisp expressions and evaluate them, or you can ignore -that capability and simply doodle. (You can specify a different major -mode for this buffer by setting the variable @code{initial-major-mode} -in your init file. @xref{Init File}.) +that capability and simply doodle. (Which is where the name comes from; +a ``scratch pad'' is a set of paper for doodling on, something not +necessarily clear to all the English-speakers who read this.) + +You can specify a different major mode for this buffer by setting the +variable @code{initial-major-mode} in your init file. @xref{Init File}. It is possible to specify files to be visited, Lisp files to be loaded, and functions to be called, by giving Emacs arguments in the diff --text -u 'xemacs-21.5.20/man/xemacs/major.texi' 'xemacs-21.5.21/man/xemacs/major.texi' Index: ./man/xemacs/major.texi --- ./man/xemacs/major.texi Fri Jan 28 09:12:39 2005 +++ ./man/xemacs/major.texi Mon Apr 18 13:00:10 2005 @@ -14,7 +14,7 @@ The least specialized major mode is called @dfn{Fundamental mode}. This mode has no mode-specific redefinitions or variable settings. Each -Emacs command behaves in its most general manner, and each option is in its +Emacs command behaves in its most generic manner, and each option is in its default state. For editing any specific type of text, such as Lisp code or English text, you should switch to the appropriate major mode, such as Lisp mode or Text mode. @@ -27,7 +27,9 @@ appearing in the buffer. @xref{Syntax}. The major modes fall into three major groups. Programming modes -(@pxref{Programs}) are for specific programming languages. Text modes +(@pxref{Programs}) are for specific programming languages. They tend to +be line-oriented, often enforcing indentation. They emphasize +facilities for creating and displaying structure. Text modes (like Nroff mode, @TeX{} mode, Outline mode, XML mode, etc.@:) are for editing human readable text. The remaining major modes are not intended for direct use in editing user files; they are used in buffers created @@ -39,7 +41,8 @@ Most programming language major modes specify that only blank lines separate paragraphs. This is so that the paragraph commands remain useful. -@xref{Paragraphs}. They also cause Auto Fill mode to use the definition of +@xref{Paragraphs}. They also cause Auto Fill minor mode to use the +definition of @key{TAB} to indent the new lines it creates. This is because most lines in a program are usually indented. @xref{Indentation}. @@ -127,28 +130,35 @@ @vindex scheme-mode-hook The last step taken by a major mode, by convention, is to invoke a -list of user supplied functions that are stored in a ``hook'' variable. -This allows a user to further customize the major mode, and is -particularly convenient for setting up buffer local variables -(@pxref{Locals}). - - The name of the hook variable is created by appending the string -@code{-hook} to the name of the major mode. For example, the hook -variable used by @code{text-mode} would be named @code{text-mode-hook}. -By convention the mode hook function receives no arguments. If a hook -variable does not exist, or it has the value @code{nil}, the major mode -simply ignores it. - - The recommended way to add functions to a hook variable is with the -@code{add-hook} function. For example, to automatically turn on the -Auto Fill mode when Text mode is invoked the following code can be used in -the initialization file (@pxref{Init File}) +list of user supplied functions that are stored in a @dfn{hook} +variable. This allows a user to further customize the major mode, and +is particularly convenient for associating minor modes with major modes. +@xref{Minor Modes}. For example, to automatically turn on the Auto Fill +minor mode when Text mode is invoked, add the following code to the +initialization file (@pxref{Init File}) @example (add-hook 'text-mode-hook 'turn-on-auto-fill) @end example -The @code{add-hook} function will check that the function is not already + Derived modes often @dfn{inherit} the parent mode's hooks. For +example, Texinfo Mode is derived from Text Mode, so customizing +@code{text-mode-hook} as above will also enable Auto Fill minor mode in +buffers containing Texinfo files. + +Hooks are also commonly used to set up buffer local variables +(@pxref{Locals}). + + The name of the hook variable is created by appending the string +@code{-hook} to the name of the function used to invoke the major mode. +For example, as seen above, the hook variable used by Text Mode would be +named @code{text-mode-hook}. By convention the mode hook function +receives no arguments. If a hook variable does not exist, or it has the +value @code{nil}, the major mode simply ignores it. + + The recommended way to add functions to a hook variable is with the +@code{add-hook} function. +@code{add-hook} will check that the function is not already listed in the hook variable before adding it. It will also create a hook variable with the value @code{nil} if one does not exist before adding the function. @code{add-hook} adds functions to the front of the hook diff --text -u 'xemacs-21.5.20/man/xemacs/menus.texi' 'xemacs-21.5.21/man/xemacs/menus.texi' Index: ./man/xemacs/menus.texi --- ./man/xemacs/menus.texi Sat Jul 6 05:35:55 2002 +++ ./man/xemacs/menus.texi Fri May 6 02:10:45 2005 @@ -175,8 +175,8 @@ @item New Frame Creates a new Emacs frame displaying the @code{*scratch*} buffer. This -is like the @b{Open File, New Frame...} menu item, except that it does -not prompt for or load a file.@refill +is like the @b{Open in New Frame...} menu item, except that it does +not prompt for nor load a file.@refill @item Delete Frame Allows you to close all but one of the frames created by @b{New Frame}. diff --text -u 'xemacs-21.5.20/man/xemacs/sending.texi' 'xemacs-21.5.21/man/xemacs/sending.texi' Index: ./man/xemacs/sending.texi --- ./man/xemacs/sending.texi Fri Apr 13 03:22:30 2001 +++ ./man/xemacs/sending.texi Wed May 11 02:36:05 2005 @@ -40,6 +40,14 @@ @kbd{C-u C-x m} is another way to switch back to a message in progress: it will search for an existing, unsent mail message buffer and select it. +Beware that this email client was inherited from GNU Emacs and is very +underfeatured; its support for MIME attachments and writing non-ASCII +content to files without trashing data is weak to nonexistent. There +exist excellent, full-featured email clients in @xref{Packages}, notably +VM @pxref{(vm)} and Gnus @pxref{(gnus)}---the XEmacs developers +recommend that you choose one of them, and at most use this mail client +for reporting simple bugs, the reason we include it. + @menu * Format: Mail Format. Format of the mail being composed. * Headers: Mail Headers. Details of allowed mail header fields. diff --text -u 'xemacs-21.5.20/man/xemacs/text.texi' 'xemacs-21.5.21/man/xemacs/text.texi' Index: ./man/xemacs/text.texi --- ./man/xemacs/text.texi Sun Aug 10 13:40:39 1997 +++ ./man/xemacs/text.texi Fri May 6 02:10:45 2005 @@ -924,12 +924,13 @@ is a minor mode; you can turn it on or off for each buffer individually. @xref{Minor Modes}. - In Auto Fill mode, lines are broken automatically at spaces when they get -longer than desired. Line breaking and rearrangement takes place -only when you type @key{SPC} or @key{RET}. To insert a space -or newline without permitting line-breaking, type @kbd{C-q @key{SPC}} or -@kbd{C-q @key{LFD}} (recall that a newline is really a linefeed). -@kbd{C-o} inserts a newline without line breaking. + In Auto Fill mode, lines are broken automatically at spaces when they +get longer than desired. Line breaking and rearrangement takes place +only when you type @key{SPC} or @key{RET}. To insert a space or newline +without permitting line-breaking, type @kbd{C-q @key{SPC}} or @kbd{C-q +C-j}. This last inserts the LINE FEED character, which is how a newline +is represented in XEmacs' internal encoding. @kbd{C-o} inserts a +newline without line breaking. Auto Fill mode works well with Lisp mode: when it makes a new line in Lisp mode, it indents that line with @key{TAB}. If a line ending in a diff --text -u 'xemacs-21.5.20/modules/ChangeLog' 'xemacs-21.5.21/modules/ChangeLog' Index: ./modules/ChangeLog --- ./modules/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./modules/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,24 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + +2005-04-01 Marcus Crestani + + The new allocator. + + Remove Lcrecords: + + * postgresql/postgresql.c (allocate_pgconn): Allocate with new + allocator. + * postgresql/postgresql.c (allocate_pgresult): Allocate PGresult + with new allocator. + * postgresql/postgresql.h (struct Lisp_PGconn): Add + lrecord_header. + * postgresql/postgresql.h (struct Lisp_PGresult): Add + lrecord_header. + * ldap/eldap.c (allocate_ldap): Allocate with new allocator. + * ldap/eldap.h (struct Lisp_LDAP): Add lrecord_header. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/modules/ldap/eldap.c' 'xemacs-21.5.21/modules/ldap/eldap.c' Index: ./modules/ldap/eldap.c --- ./modules/ldap/eldap.c Sun Nov 14 10:43:12 2004 +++ ./modules/ldap/eldap.c Sat Apr 9 08:10:55 2005 @@ -141,7 +141,11 @@ static Lisp_LDAP * allocate_ldap (void) { +#ifdef MC_ALLOC + Lisp_LDAP *ldap = alloc_lrecord_type (Lisp_LDAP, &lrecord_ldap); +#else /* not MC_ALLOC */ Lisp_LDAP *ldap = alloc_lcrecord_type (Lisp_LDAP, &lrecord_ldap); +#endif /* not MC_ALLOC */ ldap->ld = NULL; ldap->host = Qnil; diff --text -u 'xemacs-21.5.20/modules/ldap/eldap.h' 'xemacs-21.5.21/modules/ldap/eldap.h' Index: ./modules/ldap/eldap.h --- ./modules/ldap/eldap.h Wed Sep 11 00:27:14 2002 +++ ./modules/ldap/eldap.h Sat Apr 9 08:10:55 2005 @@ -31,8 +31,13 @@ struct Lisp_LDAP { +#ifdef MC_ALLOC + /* lrecord header */ + struct lrecord_header header; +#else /* not MC_ALLOC */ /* lcrecord header */ struct lcrecord_header header; +#endif /* not MC_ALLOC */ /* The LDAP connection handle used by the LDAP API */ LDAP *ld; /* Name of the host we connected to */ diff --text -u 'xemacs-21.5.20/modules/postgresql/postgresql.c' 'xemacs-21.5.21/modules/postgresql/postgresql.c' Index: ./modules/postgresql/postgresql.c --- ./modules/postgresql/postgresql.c Tue Sep 21 04:19:29 2004 +++ ./modules/postgresql/postgresql.c Sat Apr 9 08:11:00 2005 @@ -238,11 +238,21 @@ allocate_pgconn (void) { #ifdef RUNNING_XEMACS_21_1 +#ifdef MC_ALLOC + Lisp_PGconn *pgconn = alloc_lrecord_type (Lisp_PGconn, + lrecord_pgconn); +#else /* not MC_ALLOC */ Lisp_PGconn *pgconn = alloc_lcrecord_type (Lisp_PGconn, lrecord_pgconn); +#endif /* not MC_ALLOC */ #else +#ifdef MC_ALLOC + Lisp_PGconn *pgconn = alloc_lrecord_type (Lisp_PGconn, + &lrecord_pgconn); +#else /* not MC_ALLOC */ Lisp_PGconn *pgconn = alloc_lcrecord_type (Lisp_PGconn, &lrecord_pgconn); +#endif /* not MC_ALLOC */ #endif pgconn->pgconn = (PGconn *)NULL; return pgconn; @@ -363,11 +373,21 @@ allocate_pgresult (void) { #ifdef RUNNING_XEMACS_21_1 +#ifdef MC_ALLOC + Lisp_PGresult *pgresult = alloc_lrecord_type (Lisp_PGresult, + lrecord_pgresult); +#else /* not MC_ALLOC */ Lisp_PGresult *pgresult = alloc_lcrecord_type (Lisp_PGresult, lrecord_pgresult); +#endif /* not MC_ALLOC */ #else +#ifdef MC_ALLOC + Lisp_PGresult *pgresult = alloc_lrecord_type (Lisp_PGresult, + &lrecord_pgresult); +#else /* not MC_ALLOC */ Lisp_PGresult *pgresult = alloc_lcrecord_type (Lisp_PGresult, &lrecord_pgresult); +#endif /* not MC_ALLOC */ #endif pgresult->pgresult = (PGresult *)NULL; return pgresult; diff --text -u 'xemacs-21.5.20/modules/postgresql/postgresql.h' 'xemacs-21.5.21/modules/postgresql/postgresql.h' Index: ./modules/postgresql/postgresql.h --- ./modules/postgresql/postgresql.h Wed Sep 11 00:27:18 2002 +++ ./modules/postgresql/postgresql.h Sat Apr 9 08:11:00 2005 @@ -28,7 +28,11 @@ */ struct Lisp_PGconn { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* not MC_ALLOC */ struct lcrecord_header header; +#endif /* not MC_ALLOC */ PGconn *pgconn; }; typedef struct Lisp_PGconn Lisp_PGconn; @@ -48,7 +52,11 @@ */ struct Lisp_PGresult { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* not MC_ALLOC */ struct lcrecord_header header; +#endif /* not MC_ALLOC */ PGresult *pgresult; }; typedef struct Lisp_PGresult Lisp_PGresult; diff --text -u 'xemacs-21.5.20/netinstall/ChangeLog' 'xemacs-21.5.21/netinstall/ChangeLog' Index: ./netinstall/ChangeLog Prereq: 1.33 --- ./netinstall/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./netinstall/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,7 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. @@ -512,6 +516,6 @@ * all: port from cygwin setup. -%%% $Id: ChangeLog,v 1.33 2005/02/18 06:30:00 stephent Exp $ -$Revision: 1.33 $ +%%% $Id: ChangeLog,v 1.34 2005/03/11 19:22:45 stephent Exp $ +$Revision: 1.34 $ diff --text -u 'xemacs-21.5.20/nt/ChangeLog' 'xemacs-21.5.21/nt/ChangeLog' Index: ./nt/ChangeLog --- ./nt/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./nt/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,26 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + +2005-05-19 Marcus Crestani + + * config.inc.samp (USE_KKCC): Enable by default. + * config.inc.samp (MC_ALLOC): Enable by default. + +2005-04-01 Marcus Crestani + + The new allocator. + + New configure flag: `MC_ALLOC': + + * config.inc.samp: Add new flag `MC_ALLOC'. + * xemacs.mak: Add flag and configuration output for `MC_ALLOC'. + + New files: + + * xemacs.dsp: Add source files mc-alloc.c and mc-alloc.h. + * xemacs.mak: Add new object file mc-alloc.obj to dependencies. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/nt/config.inc.samp' 'xemacs-21.5.21/nt/config.inc.samp' Index: ./nt/config.inc.samp --- ./nt/config.inc.samp Fri Feb 4 11:58:32 2005 +++ ./nt/config.inc.samp Sat May 28 13:51:41 2005 @@ -178,7 +178,10 @@ # Set this to use the new experimental garbage-collection routines instead # of the traditional XEmacs garbage-collection routines. -USE_KKCC=0 +USE_KKCC=1 + +# Set this to use the new experimental allocator routines +MC_ALLOC=1 # Set this to turn on the use of the union type, which gets you improved # type checking of Lisp_Objects -- they're declared as unions instead of diff --text -u 'xemacs-21.5.20/nt/installer/Wise/ChangeLog' 'xemacs-21.5.21/nt/installer/Wise/ChangeLog' Index: ./nt/installer/Wise/ChangeLog --- ./nt/installer/Wise/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./nt/installer/Wise/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,7 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/nt/xemacs.dsp' 'xemacs-21.5.21/nt/xemacs.dsp' Index: ./nt/xemacs.dsp --- ./nt/xemacs.dsp Tue Sep 14 23:40:02 2004 +++ ./nt/xemacs.dsp Sat Apr 9 08:11:07 2005 @@ -787,6 +787,14 @@ # End Source File # Begin Source File +SOURCE=..\src\mc-alloc.c +# End Source File +# Begin Source File + +SOURCE=..\src\mc-alloc.h +# End Source File +# Begin Source File + SOURCE=..\src\md5.c # End Source File # Begin Source File diff --text -u 'xemacs-21.5.20/nt/xemacs.mak' 'xemacs-21.5.21/nt/xemacs.mak' Index: ./nt/xemacs.mak --- ./nt/xemacs.mak Wed Feb 23 07:34:23 2005 +++ ./nt/xemacs.mak Sat Apr 9 08:11:07 2005 @@ -184,6 +184,9 @@ !if !defined(USE_KKCC) USE_KKCC=0 !endif +!if !defined(MC_ALLOC) +MC_ALLOC=0 +!endif !if !defined(USE_UNION_TYPE) USE_UNION_TYPE=0 !endif @@ -503,6 +506,11 @@ KKCC_DEFINES=-DUSE_KKCC !endif +!if $(MC_ALLOC) +MC_ALLOC_DEFINES=-DMC_ALLOC +TEMACS_MC_ALLOC_OBJS=$(OUTDIR)\mc-alloc.obj +!endif + !if $(USE_SYSTEM_MALLOC) MALLOC_DEFINES=-DSYSTEM_MALLOC !else @@ -605,9 +613,9 @@ INCLUDES=-I$(NT)\inc -I$(SRC) $(MSW_INCLUDES) DEFINES=$(MSW_DEFINES) $(MULE_DEFINES) $(UNION_DEFINES) \ - $(DUMPER_DEFINES) $(KKCC_DEFINES) $(MALLOC_DEFINES) \ - $(QUICK_DEFINES) $(ERROR_CHECK_DEFINES) $(DEBUG_DEFINES) \ - -DWIN32_LEAN_AND_MEAN -DWIN32_NATIVE -Demacs \ + $(DUMPER_DEFINES) $(KKCC_DEFINES) $(MC_ALLOC_DEFINES) \ + $(MALLOC_DEFINES) $(QUICK_DEFINES) $(ERROR_CHECK_DEFINES) \ + $(DEBUG_DEFINES) -DWIN32_LEAN_AND_MEAN -DWIN32_NATIVE -Demacs \ -DHAVE_CONFIG_H $(PROGRAM_DEFINES) $(PATH_DEFINES) CFLAGS_NO_OPT=-nologo -W3 -DSTRICT $(DEBUG_FLAGS_COMPILE) @@ -651,6 +659,7 @@ $(TEMACS_DEBUG_OBJS)\ $(TEMACS_ALLOC_OBJS)\ $(TEMACS_DUMP_OBJS)\ + $(TEMACS_MC_ALLOC_OBJS)\ $(OUTDIR)\abbrev.obj \ $(OUTDIR)\alloc.obj \ $(OUTDIR)\alloca.obj \ @@ -1241,6 +1250,9 @@ !if $(USE_KKCC) Using new experimental GC algorithms. !endif +!if $(MC_ALLOC) + Using new experimental allocator. +!endif < + + * XEmacs 21.5.21 "corn" is released. + +2005-05-15 Marcus Crestani + + * alloc.c: Add string data statistics. + * alloc.c (dec_lrecord_stats): Use size of lrecord for statistics + and cons counter bookkeeping. + * alloc.c (finalize_string): Add string data statistics. + * alloc.c (make_uninit_string): Add string data statistics. + * alloc.c (make_string_nocopy): Add string data statistics. + * alloc.c (kkcc_marking): Move break out of #ifdef. + * alloc.c (Flrecord_stats): New. Collect lrecord statistics. + * alloc.c (Fgarbage_collect): Use Flrecord_stats. + * alloc.c (syms_of_alloc): Add Flrecord_stats. + * dumper.c: Fix hash table. + * dumper.c (pdump_make_hash): Fix hash table. + * dumper.c (pdump_get_mc_addr): Fix hash table. + * dumper.c (pdump_put_mc_addr): Fix hash table. + * dumper.c (pdump_reloc_one_mc): Fix indentation. + * dumper.c (pdump_load_finish): Add lrecord statistics + bookkeeping. + * lrecord.h: Add string data statistics. + * mc-alloc.c (remove_cell): Lrecord statistics, fix indentation. + * mule-charset.c: Marking through *_unicode_description not + needed. + * symbols.c (init_symbols_once_early): Bump lrecord statistics. + * window.c: Marking through line_start_cache not needed. + * xemacs.def.in.in: Fix typo. + +2005-05-10 Aidan Kehoe + + * extents.c: Clarify that the atomic extent property is a kludge + and will go away if and when we implement something better. + +2005-05-06 Dr. Volker Zell + + * sysdep.c: Use autoconf 2.59's HAVE_DECL_SYS_SIGLIST instead of + SYS_SIGLIST_DECLARED. + +2005-05-05 Aidan Kehoe + + * extents.c: Add some info on atomic-extents.el to the + set-extent-property docstring. + +2005-05-05 Aidan Kehoe + + * select.c: + * sound.c: + Spelling fixes to docstrings. + +2005-04-27 Stephen J. Turnbull + + Allow suppression of WM decorations. + + * frame-x.c (Qoverride_redirect): New Lisp symbol. + (syms_of_frame_x): DEFSYMBOL it. + (x_create_widgets): Maybe set override_redirect property on frame. + (x_init_frame_1): Parse override-redirect from arguments. + (default-x-frame-plist): Document usage. + + * frame.c (vars_of_frame): Improve docstring. + +2005-04-12 Stephen J. Turnbull + + * print.c (stderr_out): Document need to convert arguments. + +2005-04-06 Stephen J. Turnbull + + (Fmap_char_table): Add note about proper usage. + +2005-04-10 Stephen J. Turnbull + + * eval.c (issue_call_trapping_problems_warning): Fix argument + count in first call to emacs_sprintf_string_lisp. + +2005-04-10 Marcus Crestani + + * dumper.c (pdump_get_mc_addr): Use clearer code. + * dumper.c (pdump_put_mc_addr): Use clearer code. + * emacs.c (main_1): Initialize the new allocator only once. + * mc-alloc.c (get_page_header): Split up the assertions to better + spot the problem. + * mc-alloc.c (mc_alloc_1): Move definitions of local variables to + the beginning of the function. + +2005-04-01 Melvin Hadasht + + * text.c (new_dfc_convert_size): Move active code out of assert. + +2005-04-01 Marcus Crestani + + The new allocator. + + New configure flag: `MC_ALLOC': + + * config.h.in: Add new flag `MC_ALLOC'. + + New files: + + * Makefile.in.in: Add new object file mc-alloc.o. + * depend: Add new files to dependencies. + * mc-alloc.c: New. + * mc-alloc.h: New. + + Running the new allocator from XEmacs: + + * alloc.c (deadbeef_memory): Moved to mc-alloc.c. + * emacs.c (main_1): Initialize the new allocator and add + syms_of_mc_alloc. + * symsinit.h: Add syms_of_mc_alloc. + + New lrecord allocation and free functions: + + * alloc.c (alloc_lrecord): New. Allocates an lrecord, includes + type checking and initializing of the lrecord_header. + * alloc.c (noseeum_alloc_lrecord): Same as above, but increments + the NOSEEUM cons counter. + * alloc.c (free_lrecord): New. Calls the finalizer and frees the + lrecord. + * lrecord.h: Add lrecord allocation prototypes and comments. + + Remove old lrecord FROB block allocation: + + * alloc.c (allocate_lisp_storage): Former function to expand + heap. Not needed anymore, remove. + * alloc.c: Completely remove `Fixed-size type macros' + * alloc.c (release_breathing_space): Remove. + * alloc.c (memory_full): Remove release_breathing_space. + * alloc.c (refill_memory_reserve): Remove. + * alloc.c (TYPE_ALLOC_SIZE): Remove. + * alloc.c (DECLARE_FIXED_TYPE_ALLOC): Remove. + * alloc.c (ALLOCATE_FIXED_TYPE_FROM_BLOCK): Remove. + * alloc.c (ALLOCATE_FIXED_TYPE_1): Remove. + * alloc.c (ALLOCATE_FIXED_TYPE): Remove. + * alloc.c (NOSEEUM_ALLOCATE_FIXED_TYPE): Remove. + * alloc.c (struct Lisp_Free): Remove. + * alloc.c (LRECORD_FREE_P): Remove. + * alloc.c (MARK_LRECORD_AS_FREE): Remove. + * alloc.c (MARK_LRECORD_AS_NOT_FREE): Remove. + * alloc.c (PUT_FIXED_TYPE_ON_FREE_LIST): Remove. + * alloc.c (FREE_FIXED_TYPE): Remove. + * alloc.c (FREE_FIXED_TYPE_WHEN_NOT_IN_GC): Remove. + + Allocate old lrecords with new allocator: + + * alloc.c: DECLARE_FIXED_TYPE_ALLOC removed for all lrecords + defined in alloc.c. + * alloc.c (Fcons): Allocate with new allocator. + * alloc.c (noseeum_cons): Allocate with new allocator. + * alloc.c (make_float): Allocate with new allocator. + * alloc.c (make_bignum): Allocate with new allocator. + * alloc.c (make_bignum_bg): Allocate with new allocator. + * alloc.c (make_ratio): Allocate with new allocator. + * alloc.c (make_ratio_bg): Allocate with new allocator. + * alloc.c (make_ratio_rt): Allocate with new allocator. + * alloc.c (make_bigfloat): Allocate with new allocator. + * alloc.c (make_bigfloat_bf): Allocate with new allocator. + * alloc.c (make_compiled_function): Allocate with new allocator. + * alloc.c (Fmake_symbol): Allocate with new allocator. + * alloc.c (allocate_extent): Allocate with new allocator. + * alloc.c (allocate_event): Allocate with new allocator. + * alloc.c (make_key_data): Allocate with new allocator. + * alloc.c (make_button_data): Allocate with new allocator. + * alloc.c (make_motion_data): Allocate with new allocator. + * alloc.c (make_process_data): Allocate with new allocator. + * alloc.c (make_timeout_data): Allocate with new allocator. + * alloc.c (make_magic_data): Allocate with new allocator. + * alloc.c (make_magic_eval_data): Allocate with new allocator. + * alloc.c (make_eval_data): Allocate with new allocator. + * alloc.c (make_misc_user_data): Allocate with new allocator. + * alloc.c (Fmake_marker): Allocate with new allocator. + * alloc.c (noseeum_make_marker): Allocate with new allocator. + * alloc.c (make_uninit_string): Allocate with new allocator. + * alloc.c (resize_string): Allocate with new allocator. + * alloc.c (make_string_nocopy): Allocate with new allocator. + + Garbage Collection: + + * alloc.c (GC_CHECK_NOT_FREE): Remove obsolete assertions. + * alloc.c (SWEEP_FIXED_TYPE_BLOCK): Remove. + * alloc.c (SWEEP_FIXED_TYPE_BLOCK_1): Remove. + * alloc.c (sweep_conses): Remove. + * alloc.c (free_cons): Use new allocator to free. + * alloc.c (sweep_compiled_functions): Remove. + * alloc.c (sweep_floats): Remove. + * alloc.c (sweep_bignums): Remove. + * alloc.c (sweep_ratios): Remove. + * alloc.c (sweep_bigfloats): Remove. + * alloc.c (sweep_symbols): Remove. + * alloc.c (sweep_extents): Remove. + * alloc.c (sweep_events): Remove. + * alloc.c (sweep_key_data): Remove. + * alloc.c (free_key_data): Use new allocator to free. + * alloc.c (sweep_button_data): Remove. + * alloc.c (free_button_data): Use new allocator to free. + * alloc.c (sweep_motion_data): Remove. + * alloc.c (free_motion_data): Use new allocator to free. + * alloc.c (sweep_process_data): Remove. + * alloc.c (free_process_data): Use new allocator to free. + * alloc.c (sweep_timeout_data): Remove. + * alloc.c (free_timeout_data): Use new allocator to free. + * alloc.c (sweep_magic_data): Remove. + * alloc.c (free_magic_data): Use new allocator to free. + * alloc.c (sweep_magic_eval_data): Remove. + * alloc.c (free_magic_eval_data): Use new allocator to free. + * alloc.c (sweep_eval_data): Remove. + * alloc.c (free_eval_data): Use new allocator to free. + * alloc.c (sweep_misc_user_data): Remove. + * alloc.c (free_misc_user_data): Use new allocator to free. + * alloc.c (sweep_markers): Remove. + * alloc.c (free_marker): Use new allocator to free. + * alloc.c (garbage_collect_1): Remove release_breathing_space. + * alloc.c (gc_sweep): Remove all the old lcrecord and lrecord + related stuff. Sweeping now works like this: compact string + chars, finalize, sweep. + * alloc.c (common_init_alloc_early): Remove old lrecord + initializations, remove breathing_space. + * emacs.c (Fdump_emacs): Remove release_breathing_space. + * lisp.h: Remove prototype for release_breathing_space. + * lisp.h: Adjust the special cons mark makros. + + Lrecord Finalizer: + + * alloc.c: Add finalizer to lrecord definition. + * alloc.c (finalize_string): Add finalizer for string. + * bytecode.c: Add finalizer to lrecord definition. + * bytecode.c (finalize_compiled_function): Add finalizer for + compiled function. + * marker.c: Add finalizer to lrecord definition. + * marker.c (finalize_marker): Add finalizer for marker. + + These changes build the interface to mc-alloc: + + * lrecord.h (MC_ALLOC_CALL_FINALIZER): Tell mc-alloc how to + finalize lrecords. + * lrecord.h (MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE): Tell + mc-alloc how to finalize for disksave. + + Unify lrecords and lcrecords: + + * lisp.h (struct Lisp_String): Adjust string union hack to + new lrecord header. + * lrecord.h: Adjust comments. + * lrecord.h (struct lrecord_header): The new lrecord header + includes type, lisp-readonly, free, and uid. + * lrecord.h (set_lheader_implementation): Adjust to new + lrecord_header. + * lrecord.h (struct lrecord_implementation): The field basic_p + for indication of an old lrecord is not needed anymore, remove. + * lrecord.h (MAKE_LRECORD_IMPLEMENTATION): Remove basic_p. + * lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION): Remove + basic_p. + * lrecord.h (copy_sized_lrecord): Remove distinction between + old lrecords and lcrecords. + * lrecord.h (copy_lrecord): Remove distinction between old + lrecords and lcrecords. + * lrecord.h (zero_sized_lrecord): Remove distinction between + old lrecords and lcrecords. + * lrecord.h (zero_lrecord): Remove distinction between old + lrecords and lcrecords. + + Remove lcrecords and lcrecord lists: + + * alloc.c (basic_alloc_lcrecord): Not needed anymore, remove. + * alloc.c (very_old_free_lcrecord): Not needed anymore, remove. + * alloc.c (copy_lisp_object): No more distinction between + lrecords and lcrecords. + * alloc.c (all_lcrecords): Not needed anymore, remove. + * alloc.c (make_vector_internal): Allocate as lrecord. + * alloc.c (make_bit_vector_internal): Allocate as lrecord. + * alloc.c: Completely remove `lcrecord lists'. + * alloc.c (free_description): Remove. + * alloc.c (lcrecord_list_description): Remove. + * alloc.c (mark_lcrecord_list): Remove. + * alloc.c (make_lcrecord_list): Remove. + * alloc.c (alloc_managed_lcrecord): Remove. + * alloc.c (free_managed_lcrecord): Remove. + * alloc.c (alloc_automanaged_lcrecord): Remove. + * alloc.c (free_lcrecord): Remove. + * alloc.c (lcrecord_stats): Remove. + * alloc.c (tick_lcrecord_stats): Remove. + * alloc.c (disksave_object_finalization_1): Add call to + mc_finalize_for_disksave. Remove the lcrecord way to visit all + objects. + * alloc.c (kkcc_marking): Remove XD_FLAG_FREE_LISP_OBJECT + * alloc.c (sweep_lcrecords_1): Remove. + * alloc.c (common_init_alloc_early): Remove everything related + to lcrecords, remove old lrecord initializations, + * alloc.c (init_lcrecord_lists): Not needed anymore, remove. + * alloc.c (reinit_alloc_early): Remove everything related to + lcrecords. + * alloc.c (init_alloc_once_early): Remove everything related to + lcrecords. + * buffer.c (allocate_buffer): Allocate as lrecord. + * buffer.c (nuke_all_buffer_slots): Use lrecord functions. + * buffer.c (common_init_complex_vars_of_buffer): Allocate as + lrecord. + * buffer.h (struct buffer): Add lrecord_header. + * casetab.c (allocate_case_table): Allocate as lrecord. + * casetab.h (struct Lisp_Case_Table): Add lrecord_header. + * charset.h (struct Lisp_Charset): Add lrecord_header. + * chartab.c (fill_char_table): Use lrecord functions. + * chartab.c (Fmake_char_table): Allocate as lrecord. + * chartab.c (make_char_table_entry): Allocate as lrecord. + * chartab.c (copy_char_table_entry): Allocate as lrecord. + * chartab.c (Fcopy_char_table): Allocate as lrecord. + * chartab.c (put_char_table): Use lrecord functions. + * chartab.h (struct Lisp_Char_Table_Entry): Add lrecord_header. + * chartab.h (struct Lisp_Char_Table): Add lrecord_header. + * console-impl.h (struct console): Add lrecord_header. + * console-msw-impl.h (struct Lisp_Devmode): Add lrecord_header. + * console-msw-impl.h (struct mswindows_dialog_id): Add + lrecord_header. + * console.c (allocate_console): Allocate as lrecord. + * console.c (nuke_all_console_slots): Use lrecord functions. + * console.c (common_init_complex_vars_of_console): Allocate as + lrecord. + * data.c (make_weak_list): Allocate as lrecord. + * data.c (make_weak_box): Allocate as lrecord. + * data.c (make_ephemeron): Allocate as lrecord. + * database.c (struct Lisp_Database): Add lrecord_header. + * database.c (allocate_database): Allocate as lrecord. + * device-impl.h (struct device): Add lrecord_header. + * device-msw.c (allocate_devmode): Allocate as lrecord. + * device.c (nuke_all_device_slots): Use lrecord functions. + * device.c (allocate_device): Allocate as lrecord. + * dialog-msw.c (handle_question_dialog_box): Allocate as lrecord. + * elhash.c (struct Lisp_Hash_Table): Add lrecord_header. + * elhash.c (make_general_lisp_hash_table): Allocate as lrecord. + * elhash.c (Fcopy_hash_table): Allocate as lrecord. + * event-stream.c: Lcrecord lists Vcommand_builder_free_list and + Vtimeout_free_list are no longer needed. Remove. + * event-stream.c (allocate_command_builder): Allocate as lrecord. + * event-stream.c (free_command_builder): Use lrecord functions. + * event-stream.c (event_stream_generate_wakeup): Allocate as + lrecord. + * event-stream.c (event_stream_resignal_wakeup): Use lrecord + functions. + * event-stream.c (event_stream_disable_wakeup): Use lrecord + functions. + * event-stream.c (reinit_vars_of_event_stream): Lcrecord lists + remove. + * events.h (struct Lisp_Timeout): Add lrecord_header. + * events.h (struct command_builder): Add lrecord_header. + * extents-impl.h (struct extent_auxiliary): Add lrecord_header. + * extents-impl.h (struct extent_info): Add lrecord_header. + * extents.c (allocate_extent_auxiliary): Allocate as lrecord. + * extents.c (allocate_extent_info): Allocate as lrecord. + * extents.c (copy_extent): Allocate as lrecord. + * faces.c (allocate_face): Allocate as lrecord. + * faces.h (struct Lisp_Face): Add lrecord_header. + * file-coding.c (allocate_coding_system): Allocate as lrecord. + * file-coding.c (Fcopy_coding_system): Allocate as lrecord. + * file-coding.h (struct Lisp_Coding_System): Add lrecord_header. + * fns.c (Ffillarray): Allocate as lrecord. + * frame-impl.h (struct frame): Add lrecord_header. + * frame.c (nuke_all_frame_slots): Use lrecord functions. + * frame.c (allocate_frame_core): Allocate as lrecord. + * glyphs.c (allocate_image_instance): Allocate as lrecord. + * glyphs.c (Fcolorize_image_instance): Allocate as lrecord. + * glyphs.c (allocate_glyph): Allocate as lrecord. + * glyphs.h (struct Lisp_Image_Instance): Add lrecord_header. + * glyphs.h (struct Lisp_Glyph): Add lrecord_header. + * gui.c (allocate_gui_item): Allocate as lrecord. + * gui.h (struct Lisp_Gui_Item): Add lrecord_header. + * keymap.c (struct Lisp_Keymap): Add lrecord_header. + * keymap.c (make_keymap): Allocate as lrecord. + * lisp.h (struct Lisp_Vector): Add lrecord_header. + * lisp.h (struct Lisp_Bit_Vector): Add lrecord_header. + * lisp.h (struct weak_box): Add lrecord_header. + * lisp.h (struct ephemeron): Add lrecord_header. + * lisp.h (struct weak_list): Add lrecord_header. + * lrecord.h (struct lcrecord_header): Not used, remove. + * lrecord.h (struct free_lcrecord_header): Not used, remove. + * lrecord.h (struct lcrecord_list): Not needed anymore, remove. + * lrecord.h (lcrecord_list): Not needed anymore, remove. + * lrecord.h: (enum data_description_entry_flags): Remove + XD_FLAG_FREE_LISP_OBJECT. + * lstream.c: Lrecord list Vlstream_free_list remove. + * lstream.c (Lstream_new): Allocate as lrecord. + * lstream.c (Lstream_delete): Use lrecod functions. + * lstream.c (reinit_vars_of_lstream): Vlstream_free_list + initialization remove. + * lstream.h (struct lstream): Add lrecord_header. + * emacs.c (main_1): Remove lstream initialization. + * mule-charset.c (make_charset): Allocate as lrecord. + * objects-impl.h (struct Lisp_Color_Instance): Add + lrecord_header. + * objects-impl.h (struct Lisp_Font_Instance): Add lrecord_header. + * objects.c (Fmake_color_instance): Allocate as lrecord. + * objects.c (Fmake_font_instance): Allocate as lrecord. + * objects.c (reinit_vars_of_objects): Allocate as lrecord. + * opaque.c: Lcreord list Vopaque_ptr_list remove. + * opaque.c (make_opaque): Allocate as lrecord. + * opaque.c (make_opaque_ptr): Allocate as lrecord. + * opaque.c (free_opaque_ptr): Use lrecord functions. + * opaque.c (reinit_opaque_early): + * opaque.c (init_opaque_once_early): Vopaque_ptr_list + initialization remove. + * opaque.h (Lisp_Opaque): Add lrecord_header. + * opaque.h (Lisp_Opaque_Ptr): Add lrecord_header. + * emacs.c (main_1): Remove opaque variable initialization. + * print.c (default_object_printer): Use new lrecord_header. + * print.c (print_internal): Use new lrecord_header. + * print.c (debug_p4): Use new lrecord_header. + * process.c (make_process_internal): Allocate as lrecord. + * procimpl.h (struct Lisp_Process): Add lrecord_header. + * rangetab.c (Fmake_range_table): Allocate as lrecord. + * rangetab.c (Fcopy_range_table): Allocate as lrecord. + * rangetab.h (struct Lisp_Range_Table): Add lrecord_header. + * scrollbar.c (create_scrollbar_instance): Allocate as lrecord. + * scrollbar.h (struct scrollbar_instance): Add lrecord_header. + * specifier.c (make_specifier_internal): Allocate as lrecord. + * specifier.h (struct Lisp_Specifier): Add lrecord_header. + * symbols.c: + * symbols.c (Fmake_variable_buffer_local): Allocate as lrecord. + * symbols.c (Fdontusethis_set_symbol_value_handler): Allocate + as lrecord. + * symbols.c (Fdefvaralias): Allocate as lrecord. + * symeval.h (struct symbol_value_magic): Add lrecord_header. + * toolbar.c (update_toolbar_button): Allocate as lrecord. + * toolbar.h (struct toolbar_button): Add lrecord_header. + * tooltalk.c (struct Lisp_Tooltalk_Message): Add lrecord_header. + * tooltalk.c (make_tooltalk_message): Allocate as lrecord. + * tooltalk.c (struct Lisp_Tooltalk_Pattern): Add lrecord_header. + * tooltalk.c (make_tooltalk_pattern): Allocate as lrecord. + * ui-gtk.c (allocate_ffi_data): Allocate as lrecord. + * ui-gtk.c (allocate_emacs_gtk_object_data): Allocate as lrecord. + * ui-gtk.c (allocate_emacs_gtk_boxed_data): Allocate as lrecord. + * ui-gtk.h (structs): Add lrecord_header. + * window-impl.h (struct window): Add lrecord_header. + * window-impl.h (struct window_mirror): Add lrecord_header. + * window.c (allocate_window): Allocate as lrecord. + * window.c (new_window_mirror): Allocate as lrecord. + * window.c (make_dummy_parent): Allocate as lrecord. + + MEMORY_USAGE_STATS + + * alloc.c (fixed_type_block_overhead): Not used anymore, remove. + * buffer.c (compute_buffer_usage): Get storage size from new + allocator. + * marker.c (compute_buffer_marker_usage): Get storage size from + new allocator. + * mule-charset.c (compute_charset_usage): Get storage size from + new allocator. + * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): Get + storage size from new allocator. + * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): + Get storage size from new allocator. + * scrollbar-x.c (x_compute_scrollbar_instance_usage): Get + storage size from new allocator. + * scrollbar.c (compute_scrollbar_instance_usage): Get storage + size from new allocator. + * unicode.c (compute_from_unicode_table_size_1): Get storage + size from new allocator. + * unicode.c (compute_to_unicode_table_size_1): Get storage size + from new allocator. + * window.c (compute_window_mirror_usage): Get storage size from + new allocator. + * window.c (compute_window_usage): Get storage size from new + allocator. + + MC_ALLOC_TYPE_STATS: + + * alloc.c (alloc_lrecord): Bump lrecord count. + * alloc.c (noseeum_alloc_lrecord): Bump lrecord count. + * alloc.c (struct lrecord_stats): Storage for counts. + * alloc.c (init_lrecord_stats): Zero statistics. + * alloc.c (inc_lrecord_stats): Increase the statistic. + * alloc.c (dec_lrecord_stats): Decrease the statistic. + * alloc.c (gc_plist_hack): Used to print the information. + * alloc.c (Fgarbage_collect): Return the collected information. + * mc-alloc.c (remove_cell): Decrease lrecord count. + * mc-alloc.h: Set flag MC_ALLOC_TYPE_STATS. + * emacs.c (main_1): Init lrecord statistics. + * lrecord.h: Add prototypes for *_lrecord_stats. + + Strings: + + * alloc.c (Fmake_string): Initialize ascii_begin to zero. + * alloc.c (gc_count_num_short_string_in_use): Remove. + * alloc.c (gc_count_string_total_size): Remove. + * alloc.c (gc_count_short_string_total_size): Remove. + * alloc.c (debug_string_purity): Remove. + * alloc.c (debug_string_purity_print): Remove. + * alloc.c (sweep_strings): Remove. + + Remove static C-readonly Lisp objects: + + * alloc.c (c_readonly): Not needed anymore, remove. + * alloc.c (GC_CHECK_LHEADER_INVARIANTS): Remove some obsolete + lheader invariants assertions. + * buffer.c (DEFVAR_BUFFER_LOCAL_1): Allocate dynamically. + * console.c (DEFVAR_CONSOLE_LOCAL_1): Allocate dynamically. + * gpmevent.c: Indirection via MC_ALLOC_Freceive_gpm_event. + * gpmevent.c (Fgpm_enable): Allocate dynamically. + * gpmevent.c (syms_of_gpmevent): Allocate dynamically. + * lisp.h (C_READONLY): Not needed anymore, remove. + * lisp.h (DEFUN): Allocate dynamically. + * lrecord.h (C_READONLY_RECORD_HEADER_P): Not needed anymore, + remove. + * lrecord.h (SET_C_READONLY_RECORD_HEADER): Not needed anymore, + remove. + * symbols.c (guts_of_unbound_marker): + * symeval.h (defsubr): Allocate dynamically. + * symeval.h (DEFSUBR_MACRO): Allocate dynamically. + * symeval.h (DEFVAR_ SYMVAL_FWD): Allocate dynamically. + * tests.c (TESTS_DEFSUBR): Allocate dynamically. + + Definition of mcpro: + + * lisp.h: Add mcpro prototypes. + * alloc.c (common_init_alloc_early): Add initialization for + mcpros. + * alloc.c (mcpro_description_1): New. + * alloc.c (mcpro_description): New. + * alloc.c (mcpros_description_1): New. + * alloc.c (mcpros_description): New. + * alloc.c (mcpro_one_name_description_1): New. + * alloc.c (mcpro_one_name_description): New. + * alloc.c (mcpro_names_description_1): New. + * alloc.c (mcpro_names_description): New. + * alloc.c (mcpros): New. + * alloc.c (mcpro_names): New. + * alloc.c (mcpro_1): New. + * alloc.c (mc_pro): New. + * alloc.c (garbage_collect_1): Add mcpros to root set. + + Usage of mcpro: + + * alloc.c (make_string_nocopy): Add string to root set. + * symbols.c (init_symbols_once_early): Add Qunbound to root set. + + Changes to the Portable Dumper: + + * alloc.c (FREE_OR_REALLOC_BEGIN): Since dumped objects can be + freed with the new allocator, remove assertion for !DUMPEDP. + * dumper.c: Adjust comments, increase PDUMP_HASHSIZE. + * dumper.c (pdump_make_hash): Shift address only 2 bytes, to + avoid collisions. + * dumper.c (pdump_objects_unmark): No more mark bits within + the object, remove. + * dumper.c (mc_addr_elt): New. Element data structure for mc + hash table. + * dumper.c (pdump_mc_hash): New hash table: `lookup table'. + * dumper.c (pdump_get_mc_addr): New. Lookup for hash table. + * dumper.c (pdump_get_indirect_mc_addr): New. Lookup for + convertibles. + * dumper.c (pdump_put_mc_addr): New. Putter for hash table. + * dumper.c (pdump_dump_mc_data): New. Writes the table for + relocation at load time to the dump file. + * dumper.c (pdump_scan_lisp_objects_by_alignment): New. + Visits all dumped Lisp objects. + * dumper.c (pdump_scan_non_lisp_objects_by_alignment): New. + Visits all other dumped objects. + * dumper.c (pdump_reloc_one_mc): New. Updates all pointers + of an object by using the hash table pdump_mc_hash. + * dumper.c (pdump_reloc_one): Replaced by pdump_reloc_one_mc. + * dumper.c (pdump): Change the structure of the dump file, add + the mc post dump relocation table to dump file. + * dumper.c (pdump_load_finish): Hand all dumped objects to the + new allocator and use the mc post dump relocation table for + relocating the dumped objects at dump file load time, free not + longer used data structures. + * dumper.c (pdump_load): Free the dump file. + * dumper.h: Remove pdump_objects_unmark. + * lrecord.h (DUMPEDP): Dumped objects can be freed, remove. + + DUMP_IN_EXEC: + + * Makefile.in.in: Linking for and with dump in executable only if + DUMP_IN_EXEC is defined. + * config.h.in: Add new flag `DUMP_IN_EXEC' + * emacs.c: Condition dump-data.h on DUMP_IN_EXEC. + * emacs.c (main_1): Flag `-si' only works if dump image is + written into executable. + + Miscellanious + + * lrecord.h (enum lrecord_type): Added numbers to all types, + very handy for debugging. + * xemacs.def.in.in: Add mc-alloc functions to make them visible + to the modules. + +2005-04-06 Stephen J. Turnbull + + * chartab.c (Fchar_table_p): + (Fget_range_char_table): + (Fput_char_table): + (Fmap_char_table): + Describe range representation and fix typo. + +2005-04-05 Aidan Kehoe + + * mule-ccl.c (ccl_driver): Calculate the charset and position code + for control-1 characters properly, both when reading multibyte + characters and writing them. + +2005-03-31 Aidan Kehoe + + * unicode.c (set_unicode_conversion): Don't try to write to the + non-existent conversion tables for ASCII and control-1, in the + interest of not segfaulting. + * unicode.c (unicode_convert): The "position code" for a control-1 + character has #xA0 added to it when encoded in Mule, unlike #x80 + for all the other non-ASCII character sets ; take this into + account. + +2005-03-29 Aidan Kehoe + + * event-Xt.c: Declare Funicode_to_char. + * event-Xt.c (x_keysym_to_character): Use it, if we're handed a + keysym for which it's appropriate. + +2005-03-26 Jerry James + + * dumper.c (BACKTRACE_MAX): New constant defining length of static + backtrace array. + * dumper.c (pdump_bump_depth): Use it, and avoid buffer overflow + by fixing comparison. + +2005-02-24 Andrey Slusar + + * unexelf.c: define `Elfw(type)' for FreeBSD alpha and amd64. + +2005-03-25 Marcus Crestani + + * device-x.c: Include process.h for egetenv. + +2005-03-24 Aidan Kehoe + + * device-x.c (x_init_device): Only do the old application class + determination behaviour if the + USE_EMACS_AS_DEFAULT_APPLICATION_CLASS environment variable is + set; otherwise, we use XEmacs. + * device-x.c (vars_of_device_x): Update the docstring for + x-emacs-application-class. + * frame.c: default-frame-name is now "XEmacs", unless the old X11 + resources behaviour has been requested. + +2005-03-15 Marcus Crestani + + * alloc.c: Dynamically allocate KKCC backtrace stack and some + minor typo-fixes for KKCC functions. + * alloc.c (lispdesc_indirect_count_1): Condition kkcc_backtrace on + DEBUG_XEMACS. + * alloc.c (kkcc_bt_init): New. + * alloc.c (kkcc_bt_stack_realloc): New. + * alloc.c (kkcc_bt_free): New. + * alloc.c (kkcc_bt_push): If stack size is exhausted, realloc the + stack. + * alloc.c (kkcc_marking): Init and free backtrace stack. + +2005-03-13 Marcus Crestani + + * alloc.c (KKCC_BT_STACK_SIZE): Temporary fix for KKCC + backtrace. Thanks to Adrian. + +2005-03-13 Marcus Crestani + + Fix native Windows build if DEBUG_XEMACS is not defined. + * alloc.c (MALLOC_BEGIN): Remove unused parameter. + * intl-win32.c (unicode_multibyte_convert_size): Move function + call out of assert. + +2005-03-11 David Robinow + + * syssignal.h: Configure always sets HAVE_DECL_SYS_SIGLIST. Test + for non-zero. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. diff --text -u 'xemacs-21.5.20/src/Makefile.in.in' 'xemacs-21.5.21/src/Makefile.in.in' Index: ./src/Makefile.in.in --- ./src/Makefile.in.in Thu Mar 10 18:05:52 2005 +++ ./src/Makefile.in.in Sat Apr 9 08:11:18 2005 @@ -251,6 +251,10 @@ xemacs_res.o #endif +#ifdef MC_ALLOC +mc_alloc_objs=mc-alloc.o +#endif + ## lastfile must follow all files whose initialized data areas should ## be dumped as pure by dump-emacs. @@ -274,6 +278,7 @@ gutter.o\ hash.o imgproc.o indent.o insdel.o intl.o\ keymap.o $(RTC_patch_objs) line-number.o $(ldap_objs) lread.o lstream.o\ + $(mc_alloc_objs) \ macros.o marker.o md5.o minibuf.o $(mswindows_objs) $(mswindows_gui_objs)\ $(mule_objs) $(mule_canna_objs) $(mule_wnn_objs) $(number_objs) objects.o\ opaque.o $(postgresql_objs) print.o process.o $(process_objs) $(profile_objs)\ @@ -418,7 +423,7 @@ DUMP_TARGET = $(PROGNAME).dmp RAW_EXE = $(PROGNAME) DUMP_ID = dump-id.o -#ifndef WIN32_NATIVE +#if !defined(WIN32_NATIVE) && defined(DUMP_IN_EXEC) DUMP_TARGET = $(PROGNAME) #ifndef CYGWIN RAW_EXE = temacs @@ -545,7 +550,7 @@ ## (2) Link the XEmacs executable -#if !defined(PDUMP) || defined(WIN32_NATIVE) +#if !defined(PDUMP) || !defined(DUMP_IN_EXEC) || defined(WIN32_NATIVE) $(RAW_EXE): $(link_deps) $(DUMP_ID) $(LD) $(start_flags) $(ldflags) -o $@ $(start_files) $(objs) $(otherobjs) $(DUMP_ID) $(LIBES) #else @@ -599,7 +604,7 @@ @$(RM) $@ $(dump_temacs) #endif -#if defined(PDUMP) && !defined(WIN32_NATIVE) +#if defined(PDUMP) && defined(DUMP_IN_EXEC) && !defined(WIN32_NATIVE) if test -f dump-size; then \ $(LIB_SRC)/insert-data-in-exec $(RAW_EXE) $(DUMP_TARGET).dmp $(DUMP_TARGET) `$(DO_TEMACS) -si`; \ ret=$$? ; \ diff --text -u 'xemacs-21.5.20/src/alloc.c' 'xemacs-21.5.21/src/alloc.c' Index: ./src/alloc.c --- ./src/alloc.c Fri Mar 11 17:42:36 2005 +++ ./src/alloc.c Mon May 16 01:38:11 2005 @@ -220,11 +220,13 @@ void *minimum_address_seen; void *maximum_address_seen; +#ifndef MC_ALLOC int c_readonly (Lisp_Object obj) { return POINTER_TYPE_P (XTYPE (obj)) && C_READONLY (obj); } +#endif /* MC_ALLOC */ int lisp_readonly (Lisp_Object obj) @@ -243,6 +245,7 @@ int ignore_malloc_warnings; +#ifndef MC_ALLOC static void *breathing_space; void @@ -255,6 +258,7 @@ xfree (tmp, void *); } } +#endif /* not MC_ALLOC */ /* malloc calls this if it finds we are near exhausting storage */ void @@ -282,7 +286,9 @@ */ consing_since_gc = gc_cons_threshold + 1; recompute_need_to_garbage_collect (); +#ifndef MC_ALLOC release_breathing_space (); +#endif /* not MC_ALLOC */ /* Flush some histories which might conceivably contain garbalogical inhibitors. */ @@ -324,6 +330,18 @@ } \ while (0) +#ifdef MC_ALLOC +#define FREE_OR_REALLOC_BEGIN(block) \ +do \ +{ \ + /* Unbelievably, calling free() on 0xDEADBEEF doesn't cause an \ + error until much later on for many system mallocs, such as \ + the one that comes with Solaris 2.3. FMH!! */ \ + assert (block != (void *) 0xDEADBEEF); \ + MALLOC_BEGIN (); \ +} \ +while (0) +#else /* not MC_ALLOC */ #define FREE_OR_REALLOC_BEGIN(block) \ do \ { \ @@ -339,6 +357,7 @@ MALLOC_BEGIN (); \ } \ while (0) +#endif /* not MC_ALLOC */ #define MALLOC_END() \ do \ @@ -349,7 +368,7 @@ #else /* ERROR_CHECK_MALLOC */ -#define MALLOC_BEGIN(block) +#define MALLOC_BEGIN() #define FREE_OR_REALLOC_BEGIN(block) #define MALLOC_END() @@ -424,6 +443,7 @@ #ifdef ERROR_CHECK_GC +#ifndef MC_ALLOC static void deadbeef_memory (void *ptr, Bytecount size) { @@ -434,6 +454,7 @@ while (beefs--) (*ptr4++) = 0xDEADBEEF; /* -559038737 base 10 */ } +#endif /* not MC_ALLOC */ #else /* !ERROR_CHECK_GC */ @@ -462,6 +483,7 @@ #endif /* NEED_STRDUP */ +#ifndef MC_ALLOC static void * allocate_lisp_storage (Bytecount size) { @@ -486,12 +508,143 @@ return val; } +#endif /* not MC_ALLOC */ +#ifdef MC_ALLOC_TYPE_STATS +static struct +{ + int instances_in_use; + int bytes_in_use; + int bytes_in_use_including_overhead; +} lrecord_stats [countof (lrecord_implementations_table) + + MODULE_DEFINABLE_TYPE_COUNT]; +int lrecord_string_data_instances_in_use; +int lrecord_string_data_bytes_in_use; +int lrecord_string_data_bytes_in_use_including_overhead; + +void +init_lrecord_stats () +{ + xzero (lrecord_stats); + lrecord_string_data_instances_in_use = 0; + lrecord_string_data_bytes_in_use = 0; + lrecord_string_data_bytes_in_use_including_overhead = 0; +} + +void +inc_lrecord_string_data_stats (Bytecount size) +{ + lrecord_string_data_instances_in_use++; + lrecord_string_data_bytes_in_use += size; + lrecord_string_data_bytes_in_use_including_overhead += size; +} + +void +dec_lrecord_string_data_stats (Bytecount size) +{ + lrecord_string_data_instances_in_use--; + lrecord_string_data_bytes_in_use -= size; + lrecord_string_data_bytes_in_use_including_overhead -= size; +} + +void +inc_lrecord_stats (Bytecount size, const struct lrecord_header *h) +{ + int type_index = h->type; + if (!size) + size = detagged_lisp_object_size (h); + + lrecord_stats[type_index].instances_in_use++; + lrecord_stats[type_index].bytes_in_use += size; + lrecord_stats[type_index].bytes_in_use_including_overhead +#ifdef MEMORY_USAGE_STATS + += mc_alloced_storage_size (size, 0); +#else /* not MEMORY_USAGE_STATS */ + += size; +#endif /* not MEMORY_USAGE_STATS */ +} + +void +dec_lrecord_stats (Bytecount size_including_overhead, + const struct lrecord_header *h) +{ + int type_index = h->type; + int size = detagged_lisp_object_size (h); + + lrecord_stats[type_index].instances_in_use--; + lrecord_stats[type_index].bytes_in_use -= size; + lrecord_stats[type_index].bytes_in_use_including_overhead + -= size_including_overhead; + + DECREMENT_CONS_COUNTER (size); +} +#endif /* not MC_ALLOC_TYPE_STATS */ + +#ifndef MC_ALLOC /* lcrecords are chained together through their "next" field. After doing the mark phase, GC will walk this linked list and free any lcrecord which hasn't been marked. */ static struct lcrecord_header *all_lcrecords; +#endif /* not MC_ALLOC */ + +#ifdef MC_ALLOC +/* The basic lrecord allocation functions. See lrecord.h for details. */ +void * +alloc_lrecord (Bytecount size, + const struct lrecord_implementation *implementation) +{ + struct lrecord_header *lheader; + + type_checking_assert + ((implementation->static_size == 0 ? + implementation->size_in_bytes_method != NULL : + implementation->static_size == size)); + + lheader = (struct lrecord_header *) mc_alloc (size); + gc_checking_assert (LRECORD_FREE_P (lheader)); + set_lheader_implementation (lheader, implementation); + lheader->uid = lrecord_uid_counter++; +#ifdef MC_ALLOC_TYPE_STATS + inc_lrecord_stats (size, lheader); +#endif /* not MC_ALLOC_TYPE_STATS */ + INCREMENT_CONS_COUNTER (size, implementation->name); + return lheader; +} + +void * +noseeum_alloc_lrecord (Bytecount size, + const struct lrecord_implementation *implementation) +{ + struct lrecord_header *lheader; + + type_checking_assert + ((implementation->static_size == 0 ? + implementation->size_in_bytes_method != NULL : + implementation->static_size == size)); + + lheader = (struct lrecord_header *) mc_alloc (size); + gc_checking_assert (LRECORD_FREE_P (lheader)); + set_lheader_implementation (lheader, implementation); + lheader->uid = lrecord_uid_counter++; +#ifdef MC_ALLOC_TYPE_STATS + inc_lrecord_stats (size, lheader); +#endif /* not MC_ALLOC_TYPE_STATS */ + NOSEEUM_INCREMENT_CONS_COUNTER (size, implementation->name); + return lheader; +} + +void +free_lrecord (Lisp_Object lrecord) +{ + gc_checking_assert (!gc_in_progress); + gc_checking_assert (!LRECORD_FREE_P (XRECORD_LHEADER (lrecord))); + gc_checking_assert (!XRECORD_LHEADER (lrecord)->free); + + MC_ALLOC_CALL_FINALIZER (XPNTR (lrecord)); + mc_free (XPNTR (lrecord)); +} +#else /* not MC_ALLOC */ /* The most basic of the lcrecord allocation functions. Not usually called directly. Allocates an lrecord not managed by any lcrecord-list, of a @@ -563,11 +716,15 @@ return; } #endif /* Unused */ +#endif /* not MC_ALLOC */ static void disksave_object_finalization_1 (void) { +#ifdef MC_ALLOC + mc_finalize_for_disksave (); +#else /* not MC_ALLOC */ struct lcrecord_header *header; for (header = all_lcrecords; header; header = header->next) @@ -576,6 +733,7 @@ !header->free) LHEADER_IMPLEMENTATION (&header->lheader)->finalizer (header, 1); } +#endif /* not MC_ALLOC */ } /* Bitwise copy all parts of a Lisp object other than the header */ @@ -590,6 +748,11 @@ assert (imp == XRECORD_LHEADER_IMPLEMENTATION (dst)); assert (size == lisp_object_size (dst)); +#ifdef MC_ALLOC + memcpy ((char *) XRECORD_LHEADER (dst) + sizeof (struct lrecord_header), + (char *) XRECORD_LHEADER (src) + sizeof (struct lrecord_header), + size - sizeof (struct lrecord_header)); +#else /* not MC_ALLOC */ if (imp->basic_p) memcpy ((char *) XRECORD_LHEADER (dst) + sizeof (struct lrecord_header), (char *) XRECORD_LHEADER (src) + sizeof (struct lrecord_header), @@ -598,6 +761,7 @@ memcpy ((char *) XRECORD_LHEADER (dst) + sizeof (struct lcrecord_header), (char *) XRECORD_LHEADER (src) + sizeof (struct lcrecord_header), size - sizeof (struct lcrecord_header)); +#endif /* not MC_ALLOC */ } @@ -645,6 +809,7 @@ } +#ifndef MC_ALLOC /************************************************************************/ /* Fixed-size type macros */ /************************************************************************/ @@ -1003,6 +1168,7 @@ #else #define FREE_FIXED_TYPE_WHEN_NOT_IN_GC(type, structtype, ptr) #endif +#endif /* not MC_ALLOC */ @@ -1010,10 +1176,12 @@ /* Cons allocation */ /************************************************************************/ +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (cons, Lisp_Cons); /* conses are used and freed so often that we set this really high */ /* #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_cons 20000 */ #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_cons 2000 +#endif /* not MC_ALLOC */ static Lisp_Object mark_cons (Lisp_Object obj) @@ -1067,8 +1235,12 @@ Lisp_Object val; Lisp_Cons *c; +#ifdef MC_ALLOC + c = alloc_lrecord_type (Lisp_Cons, &lrecord_cons); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (cons, Lisp_Cons, c); set_lheader_implementation (&c->lheader, &lrecord_cons); +#endif /* not MC_ALLOC */ val = wrap_cons (c); XSETCAR (val, car); XSETCDR (val, cdr); @@ -1084,8 +1256,12 @@ Lisp_Object val; Lisp_Cons *c; +#ifdef MC_ALLOC + c = noseeum_alloc_lrecord_type (Lisp_Cons, &lrecord_cons); +#else /* not MC_ALLOC */ NOSEEUM_ALLOCATE_FIXED_TYPE (cons, Lisp_Cons, c); set_lheader_implementation (&c->lheader, &lrecord_cons); +#endif /* not MC_ALLOC */ val = wrap_cons (c); XCAR (val) = car; XCDR (val) = cdr; @@ -1187,19 +1363,25 @@ /*** With enhanced number support, these are short floats */ +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (float, Lisp_Float); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_float 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_float (double float_value) { Lisp_Float *f; +#ifdef MC_ALLOC + f = alloc_lrecord_type (Lisp_Float, &lrecord_float); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (float, Lisp_Float, f); /* Avoid dump-time `uninitialized memory read' purify warnings. */ if (sizeof (struct lrecord_header) + sizeof (double) != sizeof (*f)) xzero (*f); +#endif /* not MC_ALLOC */ set_lheader_implementation (&f->lheader, &lrecord_float); float_data (f) = float_value; @@ -1213,8 +1395,10 @@ /*** Bignum ***/ #ifdef HAVE_BIGNUM +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (bignum, Lisp_Bignum); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_bignum 250 +#endif /* not MC_ALLOC */ /* WARNING: This function returns a bignum even if its argument fits into a fixnum. See Fcanonicalize_number(). */ @@ -1223,8 +1407,12 @@ { Lisp_Bignum *b; +#ifdef MC_ALLOC + b = alloc_lrecord_type (Lisp_Bignum, &lrecord_bignum); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (bignum, Lisp_Bignum, b); set_lheader_implementation (&b->lheader, &lrecord_bignum); +#endif /* not MC_ALLOC */ bignum_init (bignum_data (b)); bignum_set_long (bignum_data (b), bignum_value); return wrap_bignum (b); @@ -1237,8 +1425,12 @@ { Lisp_Bignum *b; +#ifdef MC_ALLOC + b = alloc_lrecord_type (Lisp_Bignum, &lrecord_bignum); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (bignum, Lisp_Bignum, b); set_lheader_implementation (&b->lheader, &lrecord_bignum); +#endif /* not MC_ALLOC */ bignum_init (bignum_data (b)); bignum_set (bignum_data (b), bg); return wrap_bignum (b); @@ -1247,16 +1439,22 @@ /*** Ratio ***/ #ifdef HAVE_RATIO +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (ratio, Lisp_Ratio); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_ratio 250 +#endif /* not MC_ALLOC */ Lisp_Object make_ratio (long numerator, unsigned long denominator) { Lisp_Ratio *r; +#ifdef MC_ALLOC + r = alloc_lrecord_type (Lisp_Ratio, &lrecord_ratio); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (ratio, Lisp_Ratio, r); set_lheader_implementation (&r->lheader, &lrecord_ratio); +#endif /* not MC_ALLOC */ ratio_init (ratio_data (r)); ratio_set_long_ulong (ratio_data (r), numerator, denominator); ratio_canonicalize (ratio_data (r)); @@ -1268,8 +1466,12 @@ { Lisp_Ratio *r; +#ifdef MC_ALLOC + r = alloc_lrecord_type (Lisp_Ratio, &lrecord_ratio); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (ratio, Lisp_Ratio, r); set_lheader_implementation (&r->lheader, &lrecord_ratio); +#endif /* not MC_ALLOC */ ratio_init (ratio_data (r)); ratio_set_bignum_bignum (ratio_data (r), numerator, denominator); ratio_canonicalize (ratio_data (r)); @@ -1281,8 +1483,12 @@ { Lisp_Ratio *r; +#ifdef MC_ALLOC + r = alloc_lrecord_type (Lisp_Ratio, &lrecord_ratio); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (ratio, Lisp_Ratio, r); set_lheader_implementation (&r->lheader, &lrecord_ratio); +#endif /* not MC_ALLOC */ ratio_init (ratio_data (r)); ratio_set (ratio_data (r), rat); return wrap_ratio (r); @@ -1291,8 +1497,10 @@ /*** Bigfloat ***/ #ifdef HAVE_BIGFLOAT +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (bigfloat, Lisp_Bigfloat); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_bigfloat 250 +#endif /* not MC_ALLOC */ /* This function creates a bigfloat with the default precision if the PRECISION argument is zero. */ @@ -1301,8 +1509,12 @@ { Lisp_Bigfloat *f; +#ifdef MC_ALLOC + f = alloc_lrecord_type (Lisp_Bigfloat, &lrecord_bigfloat); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (bigfloat, Lisp_Bigfloat, f); set_lheader_implementation (&f->lheader, &lrecord_bigfloat); +#endif /* not MC_ALLOC */ if (precision == 0UL) bigfloat_init (bigfloat_data (f)); else @@ -1317,8 +1529,12 @@ { Lisp_Bigfloat *f; +#ifdef MC_ALLOC + f = alloc_lrecord_type (Lisp_Bigfloat, &lrecord_bigfloat); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (bigfloat, Lisp_Bigfloat, f); set_lheader_implementation (&f->lheader, &lrecord_bigfloat); +#endif /* not MC_ALLOC */ bigfloat_init_prec (bigfloat_data (f), bigfloat_get_prec (float_value)); bigfloat_set (bigfloat_data (f), float_value); return wrap_bigfloat (f); @@ -1395,7 +1611,11 @@ Bytecount sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Object, contents, sizei); Lisp_Vector *p = +#ifdef MC_ALLOC + (Lisp_Vector *) alloc_lrecord (sizem, &lrecord_vector); +#else /* not MC_ALLOC */ (Lisp_Vector *) basic_alloc_lcrecord (sizem, &lrecord_vector); +#endif /* not MC_ALLOC */ p->size = sizei; return p; @@ -1552,7 +1772,11 @@ unsigned long, bits, num_longs); Lisp_Bit_Vector *p = (Lisp_Bit_Vector *) +#ifdef MC_ALLOC + alloc_lrecord (sizem, &lrecord_bit_vector); +#else /* not MC_ALLOC */ basic_alloc_lcrecord (sizem, &lrecord_bit_vector); +#endif /* not MC_ALLOC */ bit_vector_length (p) = sizei; return p; @@ -1628,16 +1852,22 @@ /* Compiled-function allocation */ /************************************************************************/ +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (compiled_function, Lisp_Compiled_Function); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_compiled_function 1000 +#endif /* not MC_ALLOC */ static Lisp_Object make_compiled_function (void) { Lisp_Compiled_Function *f; +#ifdef MC_ALLOC + f = alloc_lrecord_type (Lisp_Compiled_Function, &lrecord_compiled_function); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (compiled_function, Lisp_Compiled_Function, f); set_lheader_implementation (&f->lheader, &lrecord_compiled_function); +#endif /* not MC_ALLOC */ f->stack_depth = 0; f->specpdl_depth = 0; @@ -1769,8 +1999,10 @@ /* Symbol allocation */ /************************************************************************/ +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (symbol, Lisp_Symbol); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_symbol 1000 +#endif /* not MC_ALLOC */ DEFUN ("make-symbol", Fmake_symbol, 1, 1, 0, /* Return a newly allocated uninterned symbol whose name is NAME. @@ -1782,8 +2014,12 @@ CHECK_STRING (name); +#ifdef MC_ALLOC + p = alloc_lrecord_type (Lisp_Symbol, &lrecord_symbol); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (symbol, Lisp_Symbol, p); set_lheader_implementation (&p->lheader, &lrecord_symbol); +#endif /* not MC_ALLOC */ p->name = name; p->plist = Qnil; p->value = Qunbound; @@ -1797,16 +2033,22 @@ /* Extent allocation */ /************************************************************************/ +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (extent, struct extent); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_extent 1000 +#endif /* not MC_ALLOC */ struct extent * allocate_extent (void) { struct extent *e; +#ifdef MC_ALLOC + e = alloc_lrecord_type (struct extent, &lrecord_extent); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (extent, struct extent, e); set_lheader_implementation (&e->lheader, &lrecord_extent); +#endif /* not MC_ALLOC */ extent_object (e) = Qnil; set_extent_start (e, -1); set_extent_end (e, -1); @@ -1826,161 +2068,221 @@ /* Event allocation */ /************************************************************************/ +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (event, Lisp_Event); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_event 1000 +#endif /* not MC_ALLOC */ Lisp_Object allocate_event (void) { Lisp_Event *e; +#ifdef MC_ALLOC + e = alloc_lrecord_type (Lisp_Event, &lrecord_event); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (event, Lisp_Event, e); set_lheader_implementation (&e->lheader, &lrecord_event); +#endif /* not MC_ALLOC */ return wrap_event (e); } #ifdef EVENT_DATA_AS_OBJECTS +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (key_data, Lisp_Key_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_key_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_key_data (void) { Lisp_Key_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Key_Data, &lrecord_key_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (key_data, Lisp_Key_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_key_data); +#endif /* not MC_ALLOC */ d->keysym = Qnil; return wrap_key_data (d); } +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (button_data, Lisp_Button_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_button_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_button_data (void) { Lisp_Button_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Button_Data, &lrecord_button_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (button_data, Lisp_Button_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_button_data); +#endif /* not MC_ALLOC */ return wrap_button_data (d); } +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (motion_data, Lisp_Motion_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_motion_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_motion_data (void) { Lisp_Motion_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Motion_Data, &lrecord_motion_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (motion_data, Lisp_Motion_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_motion_data); +#endif /* not MC_ALLOC */ return wrap_motion_data (d); } +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (process_data, Lisp_Process_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_process_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_process_data (void) { Lisp_Process_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Process_Data, &lrecord_process_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (process_data, Lisp_Process_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_process_data); d->process = Qnil; +#endif /* not MC_ALLOC */ return wrap_process_data (d); } +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (timeout_data, Lisp_Timeout_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_timeout_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_timeout_data (void) { Lisp_Timeout_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Timeout_Data, &lrecord_timeout_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (timeout_data, Lisp_Timeout_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_timeout_data); d->function = Qnil; d->object = Qnil; +#endif /* not MC_ALLOC */ return wrap_timeout_data (d); } +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (magic_data, Lisp_Magic_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_magic_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_magic_data (void) { Lisp_Magic_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Magic_Data, &lrecord_magic_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (magic_data, Lisp_Magic_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_magic_data); +#endif /* not MC_ALLOC */ return wrap_magic_data (d); } +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (magic_eval_data, Lisp_Magic_Eval_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_magic_eval_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_magic_eval_data (void) { Lisp_Magic_Eval_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Magic_Eval_Data, &lrecord_magic_eval_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (magic_eval_data, Lisp_Magic_Eval_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_magic_eval_data); d->object = Qnil; +#endif /* not MC_ALLOC */ return wrap_magic_eval_data (d); } +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (eval_data, Lisp_Eval_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_eval_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_eval_data (void) { Lisp_Eval_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Eval_Data, &lrecord_eval_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (eval_data, Lisp_Eval_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_eval_data); d->function = Qnil; d->object = Qnil; +#endif /* not MC_ALLOC */ return wrap_eval_data (d); } +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (misc_user_data, Lisp_Misc_User_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_misc_user_data 1000 +#endif /* not MC_ALLOC */ Lisp_Object make_misc_user_data (void) { Lisp_Misc_User_Data *d; +#ifdef MC_ALLOC + d = alloc_lrecord_type (Lisp_Misc_User_Data, &lrecord_misc_user_data); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (misc_user_data, Lisp_Misc_User_Data, d); xzero (*d); set_lheader_implementation (&d->lheader, &lrecord_misc_user_data); d->function = Qnil; d->object = Qnil; +#endif /* not MC_ALLOC */ return wrap_misc_user_data (d); } @@ -1991,8 +2293,10 @@ /* Marker allocation */ /************************************************************************/ +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (marker, Lisp_Marker); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_marker 1000 +#endif /* not MC_ALLOC */ DEFUN ("make-marker", Fmake_marker, 0, 0, 0, /* Return a new marker which does not point at any place. @@ -2001,8 +2305,12 @@ { Lisp_Marker *p; +#ifdef MC_ALLOC + p = alloc_lrecord_type (Lisp_Marker, &lrecord_marker); +#else /* not MC_ALLOC */ ALLOCATE_FIXED_TYPE (marker, Lisp_Marker, p); set_lheader_implementation (&p->lheader, &lrecord_marker); +#endif /* not MC_ALLOC */ p->buffer = 0; p->membpos = 0; marker_next (p) = 0; @@ -2016,8 +2324,12 @@ { Lisp_Marker *p; +#ifdef MC_ALLOC + p = noseeum_alloc_lrecord_type (Lisp_Marker, &lrecord_marker); +#else /* not MC_ALLOC */ NOSEEUM_ALLOCATE_FIXED_TYPE (marker, Lisp_Marker, p); set_lheader_implementation (&p->lheader, &lrecord_marker); +#endif /* not MC_ALLOC */ p->buffer = 0; p->membpos = 0; marker_next (p) = 0; @@ -2044,10 +2356,12 @@ This new method makes things somewhat bigger, but it is MUCH safer. */ +#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (string, Lisp_String); /* strings are used and freed quite often */ /* #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_string 10000 */ #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_string 1000 +#endif /* not MC_ALLOC */ static Lisp_Object mark_string (Lisp_Object obj) @@ -2119,11 +2433,13 @@ return *string_plist_ptr (string); } +#ifndef MC_ALLOC /* No `finalize', or `hash' methods. internal_hash() already knows how to hash strings and finalization is done with the ADDITIONAL_FREE_string macro, which is the standard way to do finalization when using SWEEP_FIXED_TYPE_BLOCK(). */ + DEFINE_BASIC_LRECORD_IMPLEMENTATION_WITH_PROPS ("string", string, 1, /*dumpable-flag*/ mark_string, print_string, @@ -2134,6 +2450,8 @@ string_remprop, string_plist, Lisp_String); +#endif /* not MC_ALLOC */ + /* String blocks contain this many useful bytes. */ #define STRING_CHARS_BLOCK_SIZE \ ((Bytecount) (8192 - MALLOC_OVERHEAD - \ @@ -2166,6 +2484,36 @@ #define STRING_CHARS_FREE_P(ptr) ((ptr)->string == NULL) #define MARK_STRING_CHARS_AS_FREE(ptr) ((void) ((ptr)->string = NULL)) +#ifdef MC_ALLOC +static void +finalize_string (void *header, int for_disksave) +{ + if (!for_disksave) + { + Lisp_String *s = (Lisp_String *) header; + Bytecount size = s->size_; +#ifdef MC_ALLOC_TYPE_STATS + dec_lrecord_string_data_stats (size); +#endif /* MC_ALLOC_TYPE_STATS */ + if (BIG_STRING_SIZE_P (size)) + xfree (s->data_, Ibyte *); + } +} + +DEFINE_LRECORD_IMPLEMENTATION_WITH_PROPS ("string", string, + 1, /*dumpable-flag*/ + mark_string, print_string, + finalize_string, + string_equal, 0, + string_description, + string_getprop, + string_putprop, + string_remprop, + string_plist, + Lisp_String); + +#endif /* MC_ALLOC */ + struct string_chars { Lisp_String *string; @@ -2264,15 +2612,22 @@ assert (length >= 0 && fullsize > 0); +#ifdef MC_ALLOC + s = alloc_lrecord_type (Lisp_String, &lrecord_string); +#ifdef MC_ALLOC_TYPE_STATS + inc_lrecord_string_data_stats (length); +#endif /* MC_ALLOC_TYPE_STATS */ +#else /* not MC_ALLOC */ /* Allocate the string header */ ALLOCATE_FIXED_TYPE (string, Lisp_String, s); xzero (*s); set_lheader_implementation (&s->u.lheader, &lrecord_string); - +#endif /* not MC_ALLOC */ + set_lispstringp_data (s, BIG_STRING_FULLSIZE_P (fullsize) - ? allocate_big_string_chars (length + 1) - : allocate_string_chars_struct (wrap_string (s), - fullsize)->chars); + ? allocate_big_string_chars (length + 1) + : allocate_string_chars_struct (wrap_string (s), + fullsize)->chars); set_lispstringp_length (s, length); s->plist = Qnil; @@ -2298,7 +2653,6 @@ #ifdef VERIFY_STRING_CHARS_INTEGRITY verify_string_chars_integrity (); #endif - #ifdef ERROR_CHECK_TEXT if (pos >= 0) { @@ -2498,6 +2852,16 @@ EMACS_INT i; Ibyte *ptr = XSTRING_DATA (val); +#ifdef MC_ALLOC + /* Need this for the new allocator: strings are using the uid + field for ascii_begin. The uid field is set for debugging, + but the string code assumes here that ascii_begin is always + zero, when not touched. This assumption is not true with + the new allocator, so ascii_begin has to be set to zero + here. */ + XSET_STRING_ASCII_BEGIN (val, 0); +#endif /* not MC_ALLOC */ + for (i = XINT (length); i; i--) { Ibyte *init_ptr = init_str; @@ -2634,10 +2998,20 @@ bytecount_to_charcount (contents, length); /* Just for the assertions */ #endif +#ifdef MC_ALLOC + s = alloc_lrecord_type (Lisp_String, &lrecord_string); +#ifdef MC_ALLOC_TYPE_STATS + inc_lrecord_string_data_stats (length); +#endif /* MC_ALLOC_TYPE_STATS */ + mcpro (wrap_pointer_1 (s)); /* otherwise nocopy_strings get + collected and static data is tried to + be freed. */ +#else /* not MC_ALLOC */ /* Allocate the string header */ ALLOCATE_FIXED_TYPE (string, Lisp_String, s); set_lheader_implementation (&s->u.lheader, &lrecord_string); SET_C_READONLY_RECORD_HEADER (&s->u.lheader); +#endif /* not MC_ALLOC */ s->plist = Qnil; set_lispstringp_data (s, (Ibyte *) contents); set_lispstringp_length (s, length); @@ -2649,6 +3023,7 @@ } +#ifndef MC_ALLOC /************************************************************************/ /* lcrecord lists */ /************************************************************************/ @@ -2856,6 +3231,7 @@ free_managed_lcrecord (all_lcrecord_lists[type], rec); } +#endif /* not MC_ALLOC */ DEFUN ("purecopy", Fpurecopy, 1, 1, 0, /* @@ -3030,7 +3406,91 @@ #endif /* not DEBUG_XEMACS */ + + + + +#ifdef MC_ALLOC +static const struct memory_description mcpro_description_1[] = { + { XD_END } +}; + +static const struct sized_memory_description mcpro_description = { + sizeof (Lisp_Object *), + mcpro_description_1 +}; + +static const struct memory_description mcpros_description_1[] = { + XD_DYNARR_DESC (Lisp_Object_dynarr, &mcpro_description), + { XD_END } +}; + +static const struct sized_memory_description mcpros_description = { + sizeof (Lisp_Object_dynarr), + mcpros_description_1 +}; + +#ifdef DEBUG_XEMACS + +static const struct memory_description mcpro_one_name_description_1[] = { + { XD_ASCII_STRING, 0 }, + { XD_END } +}; + +static const struct sized_memory_description mcpro_one_name_description = { + sizeof (char *), + mcpro_one_name_description_1 +}; + +static const struct memory_description mcpro_names_description_1[] = { + XD_DYNARR_DESC (char_ptr_dynarr, &mcpro_one_name_description), + { XD_END } +}; + +extern const struct sized_memory_description mcpro_names_description; + +const struct sized_memory_description mcpro_names_description = { + sizeof (char_ptr_dynarr), + mcpro_names_description_1 +}; + +/* Help debug crashes gc-marking a mcpro'ed object. */ + +Lisp_Object_dynarr *mcpros; +char_ptr_dynarr *mcpro_names; + +/* Mark the Lisp_Object at non-heap VARADDRESS as a root object for + garbage collection, and for dumping. */ +void +mcpro_1 (Lisp_Object varaddress, char *varname) +{ + Dynarr_add (mcpros, varaddress); + Dynarr_add (mcpro_names, varname); +} + +#else /* not DEBUG_XEMACS */ + +Lisp_Object_dynarr *mcpros; + +/* Mark the Lisp_Object at non-heap VARADDRESS as a root object for + garbage collection, and for dumping. */ +void +mcpro (Lisp_Object varaddress) +{ + Dynarr_add (mcpros, varaddress); +} + +#endif /* not DEBUG_XEMACS */ +#endif /* MC_ALLOC */ + #ifdef ERROR_CHECK_GC +#ifdef MC_ALLOC +#define GC_CHECK_LHEADER_INVARIANTS(lheader) do { \ + struct lrecord_header * GCLI_lh = (lheader); \ + assert (GCLI_lh != 0); \ + assert (GCLI_lh->type < (unsigned int) lrecord_type_count); \ +} while (0) +#else /* not MC_ALLOC */ #define GC_CHECK_LHEADER_INVARIANTS(lheader) do { \ struct lrecord_header * GCLI_lh = (lheader); \ assert (GCLI_lh != 0); \ @@ -3039,6 +3499,7 @@ (MARKED_RECORD_HEADER_P (GCLI_lh) && \ LISP_READONLY_RECORD_HEADER_P (GCLI_lh))); \ } while (0) +#endif /* not MC_ALLOC */ #else #define GC_CHECK_LHEADER_INVARIANTS(lheader) #endif @@ -3091,7 +3552,7 @@ default: stderr_out ("Unsupported count type : %d (line = %d, code = %ld)\n", idesc[line].type, line, (long) code); -#ifdef USE_KKCC +#if defined(USE_KKCC) && defined(DEBUG_XEMACS) if (gc_in_progress) kkcc_backtrace (); #endif @@ -3291,50 +3752,50 @@ #endif /* defined (USE_KKCC) || defined (PDUMP) */ +#ifdef MC_ALLOC +#define GC_CHECK_NOT_FREE(lheader) \ + gc_checking_assert (! LRECORD_FREE_P (lheader)); +#else /* MC_ALLOC */ #define GC_CHECK_NOT_FREE(lheader) \ + gc_checking_assert (! LRECORD_FREE_P (lheader)); \ gc_checking_assert (LHEADER_IMPLEMENTATION (lheader)->basic_p || \ ! ((struct lcrecord_header *) lheader)->free) +#endif /* MC_ALLOC */ #ifdef USE_KKCC /* The following functions implement the new mark algorithm. They mark objects according to their descriptions. They are modeled on the corresponding pdumper procedures. */ -/* Object memory descriptions are in the lrecord_implementation structure. - But copying them to a parallel array is much more cache-friendly. */ -const struct memory_description *lrecord_memory_descriptions[countof (lrecord_implementations_table)]; - -/* the initial stack size in kkcc_gc_stack_entries */ -#define KKCC_INIT_GC_STACK_SIZE 16384 - -typedef struct -{ - void *data; - const struct memory_description *desc; #ifdef DEBUG_XEMACS - int level; - int pos; -#endif -} kkcc_gc_stack_entry; - -static kkcc_gc_stack_entry *kkcc_gc_stack_ptr; -static kkcc_gc_stack_entry *kkcc_gc_stack_top; -static kkcc_gc_stack_entry *kkcc_gc_stack_last_entry; -static int kkcc_gc_stack_size; +/* The backtrace for the KKCC mark functions. */ +#define KKCC_INIT_BT_STACK_SIZE 4096 -#ifdef DEBUG_XEMACS -#define KKCC_BT_STACK_SIZE 4096 - -static struct +typedef struct { void *obj; const struct memory_description *desc; int pos; -} kkcc_bt[KKCC_BT_STACK_SIZE]; +} kkcc_bt_stack_entry; +static kkcc_bt_stack_entry *kkcc_bt; +static int kkcc_bt_stack_size; static int kkcc_bt_depth = 0; -#define KKCC_BT_INIT() kkcc_bt_depth = 0; +static void +kkcc_bt_init (void) +{ + kkcc_bt_depth = 0; + kkcc_bt_stack_size = KKCC_INIT_BT_STACK_SIZE; + kkcc_bt = (kkcc_bt_stack_entry *) + malloc (kkcc_bt_stack_size * sizeof (kkcc_bt_stack_entry)); + if (!kkcc_bt) + { + stderr_out ("KKCC backtrace stack init failed for size %d\n", + kkcc_bt_stack_size); + ABORT (); + } +} void kkcc_backtrace (void) @@ -3345,7 +3806,11 @@ { Lisp_Object obj = wrap_pointer_1 (kkcc_bt[i].obj); stderr_out (" [%d]", i); +#ifdef MC_ALLOC + if ((XRECORD_LHEADER (obj)->type >= lrecord_type_last_built_in_type) +#else /* not MC_ALLOC */ if ((XRECORD_LHEADER (obj)->type >= lrecord_type_free) +#endif /* not MC_ALLOC */ || (!LRECORDP (obj)) || (!XRECORD_LHEADER_IMPLEMENTATION (obj))) { @@ -3367,6 +3832,28 @@ } static void +kkcc_bt_stack_realloc (void) +{ + kkcc_bt_stack_size *= 2; + kkcc_bt = (kkcc_bt_stack_entry *) + realloc (kkcc_bt, kkcc_bt_stack_size * sizeof (kkcc_bt_stack_entry)); + if (!kkcc_bt) + { + stderr_out ("KKCC backtrace stack realloc failed for size %d\n", + kkcc_bt_stack_size); + ABORT (); + } +} + +static void +kkcc_bt_free (void) +{ + free (kkcc_bt); + kkcc_bt = 0; + kkcc_bt_stack_size = 0; +} + +static void kkcc_bt_push (void *obj, const struct memory_description *desc, int level, int pos) { @@ -3375,19 +3862,37 @@ kkcc_bt[kkcc_bt_depth].desc = desc; kkcc_bt[kkcc_bt_depth].pos = pos; kkcc_bt_depth++; - if (kkcc_bt_depth > KKCC_BT_STACK_SIZE) - { - stderr_out ("KKCC backtrace overflow, adjust KKCC_BT_STACK_SIZE.\n"); - stderr_out ("Maybe it is a loop?\n"); - ABORT (); - } + if (kkcc_bt_depth >= kkcc_bt_stack_size) + kkcc_bt_stack_realloc (); } #else /* not DEBUG_XEMACS */ -#define KKCC_BT_INIT() +#define kkcc_bt_init() #define kkcc_bt_push(obj, desc, level, pos) #endif /* not DEBUG_XEMACS */ +/* Object memory descriptions are in the lrecord_implementation structure. + But copying them to a parallel array is much more cache-friendly. */ +const struct memory_description *lrecord_memory_descriptions[countof (lrecord_implementations_table)]; + +/* the initial stack size in kkcc_gc_stack_entries */ +#define KKCC_INIT_GC_STACK_SIZE 16384 + +typedef struct +{ + void *data; + const struct memory_description *desc; +#ifdef DEBUG_XEMACS + int level; + int pos; +#endif +} kkcc_gc_stack_entry; + +static kkcc_gc_stack_entry *kkcc_gc_stack_ptr; +static kkcc_gc_stack_entry *kkcc_gc_stack_top; +static kkcc_gc_stack_entry *kkcc_gc_stack_last_entry; +static int kkcc_gc_stack_size; + static void kkcc_gc_stack_init (void) { @@ -3397,7 +3902,7 @@ if (!kkcc_gc_stack_ptr) { stderr_out ("stack init failed for size %d\n", kkcc_gc_stack_size); - exit(23); + ABORT (); } kkcc_gc_stack_top = kkcc_gc_stack_ptr - 1; kkcc_gc_stack_last_entry = kkcc_gc_stack_ptr + kkcc_gc_stack_size - 1; @@ -3423,7 +3928,7 @@ if (!kkcc_gc_stack_ptr) { stderr_out ("stack realloc failed for size %d\n", kkcc_gc_stack_size); - exit(23); + ABORT (); } kkcc_gc_stack_top = kkcc_gc_stack_ptr + current_offset; kkcc_gc_stack_last_entry = kkcc_gc_stack_ptr + kkcc_gc_stack_size - 1; @@ -3484,7 +3989,7 @@ if (! MARKED_RECORD_HEADER_P (lheader)) { MARK_RECORD_HEADER (lheader); - kkcc_gc_stack_push((void*) lheader, desc, level, pos); + kkcc_gc_stack_push ((void*) lheader, desc, level, pos); } } } @@ -3583,7 +4088,7 @@ int pos; #ifdef DEBUG_XEMACS int level = 0; - KKCC_BT_INIT (); + kkcc_bt_init (); #endif while ((stack_entry = kkcc_gc_stack_pop ()) != 0) @@ -3596,6 +4101,9 @@ kkcc_bt_push (data, desc, stack_entry->level, stack_entry->pos); + gc_checking_assert (data); + gc_checking_assert (desc); + for (pos = 0; desc[pos].type != XD_END; pos++) { const struct memory_description *desc1 = &desc[pos]; @@ -3632,9 +4140,13 @@ though. */ if (EQ (*stored_obj, Qnull_pointer)) break; +#ifdef MC_ALLOC + mark_object_maybe_checking_free (*stored_obj, 0, level, pos); +#else /* not MC_ALLOC */ mark_object_maybe_checking_free (*stored_obj, (desc1->flags) & XD_FLAG_FREE_LISP_OBJECT, level, pos); +#endif /* not MC_ALLOC */ break; } case XD_LISP_OBJECT_ARRAY: @@ -3650,9 +4162,13 @@ if (EQ (*stored_obj, Qnull_pointer)) break; +#ifdef MC_ALLOC + mark_object_maybe_checking_free (*stored_obj, 0, level, pos); +#else /* not MC_ALLOC */ mark_object_maybe_checking_free (*stored_obj, (desc1->flags) & XD_FLAG_FREE_LISP_OBJECT, level, pos); +#endif /* not MC_ALLOC */ } break; } @@ -3691,6 +4207,9 @@ } } } +#ifdef DEBUG_XEMACS + kkcc_bt_free (); +#endif } #endif /* USE_KKCC */ @@ -3746,6 +4265,7 @@ } +#ifndef MC_ALLOC static int gc_count_num_short_string_in_use; static Bytecount gc_count_string_total_size; static Bytecount gc_count_short_string_total_size; @@ -3791,8 +4311,10 @@ } } } +#endif /* not MC_ALLOC */ +#ifndef MC_ALLOC /* Free all unmarked records */ static void sweep_lcrecords_1 (struct lcrecord_header **prev, int *used) @@ -3988,9 +4510,10 @@ #define SWEEP_FIXED_TYPE_BLOCK(typename, obj_type) \ SWEEP_FIXED_TYPE_BLOCK_1 (typename, obj_type, lheader) - - +#endif /* not MC_ALLOC */ + +#ifndef MC_ALLOC static void sweep_conses (void) { @@ -3999,14 +4522,20 @@ SWEEP_FIXED_TYPE_BLOCK (cons, Lisp_Cons); } +#endif /* not MC_ALLOC */ /* Explicitly free a cons cell. */ void free_cons (Lisp_Object cons) { +#ifndef MC_ALLOC /* to avoid compiler warning */ Lisp_Cons *ptr = XCONS (cons); +#endif /* MC_ALLOC */ #ifdef ERROR_CHECK_GC +#ifdef MC_ALLOC + Lisp_Cons *ptr = XCONS (cons); +#endif /* MC_ALLOC */ /* If the CAR is not an int, then it will be a pointer, which will always be four-byte aligned. If this cons cell has already been placed on the free list, however, its car will probably contain @@ -4021,7 +4550,11 @@ ASSERT_VALID_POINTER (XPNTR (cons_car (ptr))); #endif /* ERROR_CHECK_GC */ +#ifdef MC_ALLOC + free_lrecord (cons); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (cons, Lisp_Cons, ptr); +#endif /* not MC_ALLOC */ } /* explicitly free a list. You **must make sure** that you have @@ -4059,6 +4592,7 @@ } } +#ifndef MC_ALLOC static void sweep_compiled_functions (void) { @@ -4137,9 +4671,11 @@ SWEEP_FIXED_TYPE_BLOCK (event, Lisp_Event); } +#endif /* not MC_ALLOC */ #ifdef EVENT_DATA_AS_OBJECTS +#ifndef MC_ALLOC static void sweep_key_data (void) { @@ -4148,13 +4684,19 @@ SWEEP_FIXED_TYPE_BLOCK (key_data, Lisp_Key_Data); } +#endif /* not MC_ALLOC */ void free_key_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (key_data, Lisp_Key_Data, XKEY_DATA (ptr)); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC static void sweep_button_data (void) { @@ -4163,13 +4705,19 @@ SWEEP_FIXED_TYPE_BLOCK (button_data, Lisp_Button_Data); } +#endif /* not MC_ALLOC */ void free_button_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (button_data, Lisp_Button_Data, XBUTTON_DATA (ptr)); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC static void sweep_motion_data (void) { @@ -4178,13 +4726,19 @@ SWEEP_FIXED_TYPE_BLOCK (motion_data, Lisp_Motion_Data); } +#endif /* not MC_ALLOC */ void free_motion_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (motion_data, Lisp_Motion_Data, XMOTION_DATA (ptr)); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC static void sweep_process_data (void) { @@ -4193,13 +4747,19 @@ SWEEP_FIXED_TYPE_BLOCK (process_data, Lisp_Process_Data); } +#endif /* not MC_ALLOC */ void free_process_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (process_data, Lisp_Process_Data, XPROCESS_DATA (ptr)); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC static void sweep_timeout_data (void) { @@ -4208,13 +4768,19 @@ SWEEP_FIXED_TYPE_BLOCK (timeout_data, Lisp_Timeout_Data); } +#endif /* not MC_ALLOC */ void free_timeout_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (timeout_data, Lisp_Timeout_Data, XTIMEOUT_DATA (ptr)); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC static void sweep_magic_data (void) { @@ -4223,13 +4789,19 @@ SWEEP_FIXED_TYPE_BLOCK (magic_data, Lisp_Magic_Data); } +#endif /* not MC_ALLOC */ void free_magic_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (magic_data, Lisp_Magic_Data, XMAGIC_DATA (ptr)); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC static void sweep_magic_eval_data (void) { @@ -4238,13 +4810,19 @@ SWEEP_FIXED_TYPE_BLOCK (magic_eval_data, Lisp_Magic_Eval_Data); } +#endif /* not MC_ALLOC */ void free_magic_eval_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (magic_eval_data, Lisp_Magic_Eval_Data, XMAGIC_EVAL_DATA (ptr)); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC static void sweep_eval_data (void) { @@ -4253,13 +4831,19 @@ SWEEP_FIXED_TYPE_BLOCK (eval_data, Lisp_Eval_Data); } +#endif /* not MC_ALLOC */ void free_eval_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (eval_data, Lisp_Eval_Data, XEVAL_DATA (ptr)); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC static void sweep_misc_user_data (void) { @@ -4268,15 +4852,21 @@ SWEEP_FIXED_TYPE_BLOCK (misc_user_data, Lisp_Misc_User_Data); } +#endif /* not MC_ALLOC */ void free_misc_user_data (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (misc_user_data, Lisp_Misc_User_Data, XMISC_USER_DATA (ptr)); +#endif /* not MC_ALLOC */ } #endif /* EVENT_DATA_AS_OBJECTS */ +#ifndef MC_ALLOC static void sweep_markers (void) { @@ -4289,12 +4879,17 @@ SWEEP_FIXED_TYPE_BLOCK (marker, Lisp_Marker); } +#endif /* not MC_ALLOC */ /* Explicitly free a marker. */ void free_marker (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ FREE_FIXED_TYPE_WHEN_NOT_IN_GC (marker, Lisp_Marker, XMARKER (ptr)); +#endif /* not MC_ALLOC */ } @@ -4337,7 +4932,7 @@ fullsize = STRING_FULLSIZE (size); assert (!BIG_STRING_FULLSIZE_P (fullsize)); - assert (string->data_ == s_chars->chars); + assert (XSTRING_DATA (string) == s_chars->chars); pos += fullsize; } assert (pos == sb->pos); @@ -4445,6 +5040,7 @@ } } +#ifndef MC_ALLOC #if 1 /* Hack to debug missing purecopy's */ static int debug_string_purity; @@ -4467,8 +5063,9 @@ stderr_out ("\"\n"); } #endif /* 1 */ +#endif /* not MC_ALLOC */ - +#ifndef MC_ALLOC static void sweep_strings (void) { @@ -4501,7 +5098,7 @@ gc_count_string_total_size = num_bytes; gc_count_short_string_total_size = num_small_bytes; } - +#endif /* not MC_ALLOC */ /* I hate duplicating all this crap! */ int @@ -4526,6 +5123,11 @@ static void gc_sweep (void) { +#ifdef MC_ALLOC + compact_string_chars (); + mc_finalize (); + mc_sweep (); +#else /* not MC_ALLOC */ /* Free all unmarked records. Do this at the very beginning, before anything else, so that the finalize methods can safely examine items in the objects. sweep_lcrecords_1() makes @@ -4600,10 +5202,13 @@ sweep_eval_data (); sweep_misc_user_data (); #endif /* EVENT_DATA_AS_OBJECTS */ +#endif /* not MC_ALLOC */ +#ifndef MC_ALLOC #ifdef PDUMP pdump_objects_unmark (); #endif +#endif /* not MC_ALLOC */ } /* Clearing for disksave. */ @@ -4893,6 +5498,15 @@ mark_object (**p++); } +#ifdef MC_ALLOC + { /* mcpro () */ + Lisp_Object *p = Dynarr_begin (mcpros); + Elemcount count; + for (count = Dynarr_length (mcpros); count; count--) + mark_object (*p++); + } +#endif /* MC_ALLOC */ + { /* GCPRO() */ struct gcpro *tail; int i; @@ -5036,10 +5650,12 @@ /* now stop inhibiting GC */ unbind_to (speccount); +#ifndef MC_ALLOC if (!breathing_space) { breathing_space = malloc (4096 - MALLOC_OVERHEAD); } +#endif /* not MC_ALLOC */ UNGCPRO; @@ -5051,6 +5667,105 @@ return; } +#ifdef MC_ALLOC +#ifdef MC_ALLOC_TYPE_STATS +static Lisp_Object +gc_plist_hack (const Ascbyte *name, int value, Lisp_Object tail) +{ + /* C doesn't have local functions (or closures, or GC, or readable syntax, + or portable numeric datatypes, or bit-vectors, or characters, or + arrays, or exceptions, or ...) */ + return cons3 (intern (name), make_int (value), tail); +} + +DEFUN("lrecord-stats", Flrecord_stats, 0, 0 ,"", /* +Return statistics about lrecords in a property list. +*/ + ()) +{ + Lisp_Object pl = Qnil; + int i; + + for (i = 0; i < (countof (lrecord_implementations_table) + + MODULE_DEFINABLE_TYPE_COUNT); i++) + { + if (lrecord_stats[i].instances_in_use != 0) + { + char buf [255]; + const char *name = lrecord_implementations_table[i]->name; + int len = strlen (name); + + if (lrecord_stats[i].bytes_in_use_including_overhead != + lrecord_stats[i].bytes_in_use) + { + sprintf (buf, "%s-storage-including-overhead", name); + pl = gc_plist_hack (buf, + lrecord_stats[i] + .bytes_in_use_including_overhead, + pl); + } + + sprintf (buf, "%s-storage", name); + pl = gc_plist_hack (buf, + lrecord_stats[i].bytes_in_use, + pl); + + if (name[len-1] == 's') + sprintf (buf, "%ses-used", name); + else + sprintf (buf, "%ss-used", name); + pl = gc_plist_hack (buf, lrecord_stats[i].instances_in_use, pl); + } + } + pl = gc_plist_hack ("string-data-storage-including-overhead", + lrecord_string_data_bytes_in_use_including_overhead, pl); + pl = gc_plist_hack ("string-data-storage-additional", + lrecord_string_data_bytes_in_use, pl); + pl = gc_plist_hack ("string-data-used", + lrecord_string_data_instances_in_use, pl); + + return pl; +} +#endif /* not MC_ALLOC_TYPE_STATS */ + +DEFUN ("garbage-collect", Fgarbage_collect, 0, 0, "", /* +Reclaim storage for Lisp objects no longer needed. +Return info on amount of space in use: + ((USED-CONSES . STORAGE-CONSES) (USED-SYMS . STORAGE-SYMS) + (USED-MARKERS . STORAGE-MARKERS) USED-STRING-CHARS USED-VECTOR-SLOTS + PLIST) + where `PLIST' is a list of alternating keyword/value pairs providing + more detailed information. +Garbage collection happens automatically if you cons more than +`gc-cons-threshold' bytes of Lisp data since previous garbage collection. +*/ + ()) +{ + garbage_collect_1 (); + +#ifdef MC_ALLOC_TYPE_STATS + /* The things we do for backwards-compatibility */ + return + list6 + (Fcons (make_int (lrecord_stats[lrecord_type_cons].instances_in_use), + make_int (lrecord_stats[lrecord_type_cons] + .bytes_in_use_including_overhead)), + Fcons (make_int (lrecord_stats[lrecord_type_symbol].instances_in_use), + make_int (lrecord_stats[lrecord_type_symbol] + .bytes_in_use_including_overhead)), + Fcons (make_int (lrecord_stats[lrecord_type_marker].instances_in_use), + make_int (lrecord_stats[lrecord_type_marker] + .bytes_in_use_including_overhead)), + make_int (lrecord_stats[lrecord_type_string] + .bytes_in_use_including_overhead), + make_int (lrecord_stats[lrecord_type_vector] + .bytes_in_use_including_overhead), + Flrecord_stats ()); +#else /* not MC_ALLOC_TYPE_STATS */ + return Qnil; +#endif /* not MC_ALLOC_TYPE_STATS */ +} +#else /* not MC_ALLOC */ /* Debugging aids. */ static Lisp_Object @@ -5193,6 +5908,7 @@ pl); } #undef HACK_O_MATIC +#endif /* not MC_ALLOC */ DEFUN ("consing-since-gc", Fconsing_since_gc, 0, 0, "", /* Return the number of bytes consed since the last garbage collection. @@ -5386,6 +6102,7 @@ return claimed_size; } +#ifndef MC_ALLOC Bytecount fixed_type_block_overhead (Bytecount size) { @@ -5401,7 +6118,7 @@ overhead += sizeof (void *) + per_block - storage_size; return overhead; } - +#endif /* not MC_ALLOC */ #endif /* MEMORY_USAGE_STATS */ @@ -5420,9 +6137,13 @@ #endif gc_generation_number[0] = 0; +#ifndef MC_ALLOC breathing_space = 0; +#endif /* not MC_ALLOC */ Vgc_message = Qzero; +#ifndef MC_ALLOC all_lcrecords = 0; +#endif /* not MC_ALLOC */ ignore_malloc_warnings = 1; #ifdef DOUG_LEA_MALLOC mallopt (M_TRIM_THRESHOLD, 128*1024); /* trim threshold */ @@ -5431,6 +6152,8 @@ mallopt (M_MMAP_MAX, 64); /* max. number of mmap'ed areas */ #endif #endif + init_string_chars_alloc (); +#ifndef MC_ALLOC init_string_alloc (); init_string_chars_alloc (); init_cons_alloc (); @@ -5460,6 +6183,7 @@ init_eval_data_alloc (); init_misc_user_data_alloc (); #endif /* EVENT_DATA_AS_OBJECTS */ +#endif /* not MC_ALLOC */ ignore_malloc_warnings = 0; @@ -5474,6 +6198,17 @@ Dynarr_resize (staticpro_nodump_names, 100); /* ditto */ #endif +#ifdef MC_ALLOC + mcpros = Dynarr_new2 (Lisp_Object_dynarr, Lisp_Object); + Dynarr_resize (mcpros, 1410); /* merely a small optimization */ + dump_add_root_block_ptr (&mcpros, &mcpros_description); +#ifdef DEBUG_XEMACS + mcpro_names = Dynarr_new2 (char_ptr_dynarr, char *); + Dynarr_resize (mcpro_names, 1410); /* merely a small optimization */ + dump_add_root_block_ptr (&mcpro_names, &mcpro_names_description); +#endif +#endif /* MC_ALLOC */ + consing_since_gc = 0; need_to_garbage_collect = always_gc; need_to_check_c_alloca = 0; @@ -5489,7 +6224,9 @@ memory usage on Windows; not verified on other systems */ lrecord_uid_counter = 259; +#ifndef MC_ALLOC debug_string_purity = 0; +#endif /* not MC_ALLOC */ gc_currently_forbidden = 0; gc_hooks_inhibited = 0; @@ -5508,6 +6245,7 @@ #endif /* ERROR_CHECK_TYPES */ } +#ifndef MC_ALLOC static void init_lcrecord_lists (void) { @@ -5519,6 +6257,7 @@ staticpro_nodump (&all_lcrecord_lists[i]); } } +#endif /* not MC_ALLOC */ void init_alloc_early (void) @@ -5539,7 +6278,9 @@ reinit_alloc_early (void) { common_init_alloc_early (); +#ifndef MC_ALLOC init_lcrecord_lists (); +#endif /* not MC_ALLOC */ } void @@ -5556,8 +6297,10 @@ INIT_LRECORD_IMPLEMENTATION (cons); INIT_LRECORD_IMPLEMENTATION (vector); INIT_LRECORD_IMPLEMENTATION (string); +#ifndef MC_ALLOC INIT_LRECORD_IMPLEMENTATION (lcrecord_list); INIT_LRECORD_IMPLEMENTATION (free); +#endif /* not MC_ALLOC */ staticpros = Dynarr_new2 (Lisp_Object_ptr_dynarr, Lisp_Object *); Dynarr_resize (staticpros, 1410); /* merely a small optimization */ @@ -5568,7 +6311,20 @@ dump_add_root_block_ptr (&staticpro_names, &staticpro_names_description); #endif +#ifdef MC_ALLOC + mcpros = Dynarr_new2 (Lisp_Object_dynarr, Lisp_Object); + Dynarr_resize (mcpros, 1410); /* merely a small optimization */ + dump_add_root_block_ptr (&mcpros, &mcpros_description); +#ifdef DEBUG_XEMACS + mcpro_names = Dynarr_new2 (char_ptr_dynarr, char *); + Dynarr_resize (mcpro_names, 1410); /* merely a small optimization */ + dump_add_root_block_ptr (&mcpro_names, &mcpro_names_description); +#endif +#endif /* MC_ALLOC */ + +#ifndef MC_ALLOC init_lcrecord_lists (); +#endif /* not MC_ALLOC */ } void @@ -5591,6 +6347,9 @@ DEFSUBR (Fmake_symbol); DEFSUBR (Fmake_marker); DEFSUBR (Fpurecopy); +#ifdef MC_ALLOC_TYPE_STATS + DEFSUBR (Flrecord_stats); +#endif /* MC_ALLOC_TYPE_STATS */ DEFSUBR (Fgarbage_collect); #if 0 DEFSUBR (Fmemory_limit); diff --text -u 'xemacs-21.5.20/src/buffer.c' 'xemacs-21.5.21/src/buffer.c' Index: ./src/buffer.c --- ./src/buffer.c Fri Feb 4 01:14:04 2005 +++ ./src/buffer.c Sat Apr 9 08:11:18 2005 @@ -587,9 +587,15 @@ static struct buffer * allocate_buffer (void) { +#ifdef MC_ALLOC + struct buffer *b = alloc_lrecord_type (struct buffer, &lrecord_buffer); + + copy_lrecord (b, XBUFFER (Vbuffer_defaults)); +#else /* not MC_ALLOC */ struct buffer *b = alloc_lcrecord_type (struct buffer, &lrecord_buffer); copy_lcrecord (b, XBUFFER (Vbuffer_defaults)); +#endif /* not MC_ALLOC */ return b; } @@ -1757,7 +1763,11 @@ struct overhead_stats *ovstats) { xzero (*stats); +#ifdef MC_ALLOC + stats->other += mc_alloced_storage_size (sizeof (*b), ovstats); +#else /* not MC_ALLOC */ stats->other += malloced_storage_size (b, sizeof (*b), ovstats); +#endif /* not MC_ALLOC */ stats->text += compute_buffer_text_usage (b, ovstats); stats->markers += compute_buffer_marker_usage (b, ovstats); stats->extents += compute_buffer_extent_usage (b, ovstats); @@ -2113,38 +2123,67 @@ /* The docstrings for DEFVAR_* are recorded externally by make-docfile. */ +#ifdef MC_ALLOC +#define DEFVAR_BUFFER_LOCAL_1(lname, field_name, forward_type, magic_fun) \ +do \ +{ \ + struct symbol_value_forward *I_hate_C = \ + alloc_lrecord_type (struct symbol_value_forward, \ + &lrecord_symbol_value_forward); \ + /*mcpro ((Lisp_Object) I_hate_C);*/ \ + \ + I_hate_C->magic.value = &(buffer_local_flags.field_name); \ + I_hate_C->magic.type = forward_type; \ + I_hate_C->magicfun = magic_fun; \ + \ + MARK_LRECORD_AS_LISP_READONLY (I_hate_C); \ + \ + { \ + int offset = ((char *)symbol_value_forward_forward (I_hate_C) - \ + (char *)&buffer_local_flags); \ + defvar_magic (lname, I_hate_C); \ + \ + *((Lisp_Object *)(offset + (char *)XBUFFER (Vbuffer_local_symbols))) \ + = intern (lname); \ + } \ +} while (0) + +#else /* not MC_ALLOC */ /* Renamed from DEFVAR_PER_BUFFER because FSFmacs D_P_B takes a bogus extra arg, which confuses an otherwise identical make-docfile.c */ -#define DEFVAR_BUFFER_LOCAL_1(lname, field_name, forward_type, magicfun) do { \ - static const struct symbol_value_forward I_hate_C = \ - { /* struct symbol_value_forward */ \ - { /* struct symbol_value_magic */ \ - { /* struct lcrecord_header */ \ - { /* struct lrecord_header */ \ - lrecord_type_symbol_value_forward, /* lrecord_type_index */ \ - 1, /* mark bit */ \ - 1, /* c_readonly bit */ \ - 1 /* lisp_readonly bit */ \ - }, \ - 0, /* next */ \ - 0, /* uid */ \ - 0 /* free */ \ - }, \ - &(buffer_local_flags.field_name), \ - forward_type \ - }, \ - magicfun \ - }; \ - \ - { \ - int offset = ((char *)symbol_value_forward_forward (&I_hate_C) - \ - (char *)&buffer_local_flags); \ - defvar_magic (lname, &I_hate_C); \ - \ - *((Lisp_Object *)(offset + (char *)XBUFFER (Vbuffer_local_symbols))) \ - = intern (lname); \ - } \ +#define DEFVAR_BUFFER_LOCAL_1(lname, field_name, forward_type, magicfun) \ +do { \ + static const struct symbol_value_forward I_hate_C = \ + { /* struct symbol_value_forward */ \ + { /* struct symbol_value_magic */ \ + { /* struct lcrecord_header */ \ + { /* struct lrecord_header */ \ + lrecord_type_symbol_value_forward, /* lrecord_type_index */ \ + 1, /* mark bit */ \ + 1, /* c_readonly bit */ \ + 1 /* lisp_readonly bit */ \ + }, \ + 0, /* next */ \ + 0, /* uid */ \ + 0 /* free */ \ + }, \ + &(buffer_local_flags.field_name), \ + forward_type \ + }, \ + magicfun \ + }; \ + \ + { \ + int offset = ((char *)symbol_value_forward_forward (&I_hate_C) - \ + (char *)&buffer_local_flags); \ + defvar_magic (lname, &I_hate_C); \ + \ + *((Lisp_Object *)(offset + (char *)XBUFFER (Vbuffer_local_symbols))) \ + = intern (lname); \ + } \ } while (0) +#endif /* not MC_ALLOC */ + #define DEFVAR_BUFFER_LOCAL_MAGIC(lname, field_name, magicfun) \ DEFVAR_BUFFER_LOCAL_1 (lname, field_name, \ SYMVAL_CURRENT_BUFFER_FORWARD, magicfun) @@ -2165,7 +2204,11 @@ static void nuke_all_buffer_slots (struct buffer *b, Lisp_Object zap) { +#ifdef MC_ALLOC + zero_lrecord (b); +#else /* not MC_ALLOC */ zero_lcrecord (b); +#endif /* not MC_ALLOC */ b->extent_info = Qnil; b->indirect_children = Qnil; @@ -2180,8 +2223,13 @@ { /* Make sure all markable slots in buffer_defaults are initialized reasonably, so mark_buffer won't choke. */ +#ifdef MC_ALLOC + struct buffer *defs = alloc_lrecord_type (struct buffer, &lrecord_buffer); + struct buffer *syms = alloc_lrecord_type (struct buffer, &lrecord_buffer); +#else /* not MC_ALLOC */ struct buffer *defs = alloc_lcrecord_type (struct buffer, &lrecord_buffer); struct buffer *syms = alloc_lcrecord_type (struct buffer, &lrecord_buffer); +#endif /* not MC_ALLOC */ staticpro_nodump (&Vbuffer_defaults); staticpro_nodump (&Vbuffer_local_symbols); diff --text -u 'xemacs-21.5.20/src/buffer.h' 'xemacs-21.5.21/src/buffer.h' Index: ./src/buffer.h --- ./src/buffer.h Fri Nov 5 08:06:16 2004 +++ ./src/buffer.h Sat Apr 9 08:11:19 2005 @@ -140,7 +140,11 @@ struct buffer { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* This structure holds the coordinates of the buffer contents in ordinary buffers. In indirect buffers, this is not used. */ diff --text -u 'xemacs-21.5.20/src/bytecode.c' 'xemacs-21.5.21/src/bytecode.c' Index: ./src/bytecode.c --- ./src/bytecode.c Fri Feb 4 01:14:04 2005 +++ ./src/bytecode.c Sat Apr 9 08:11:19 2005 @@ -2191,6 +2191,29 @@ { XD_END } }; +#ifdef MC_ALLOC +static void +finalize_compiled_function (void *header, int for_disksave) +{ + if (!for_disksave) + { + struct Lisp_Compiled_Function *cf = + (struct Lisp_Compiled_Function *) header; + if (cf->args_in_array) + xfree (cf->args, Lisp_Object *); + } +} + +DEFINE_BASIC_LRECORD_IMPLEMENTATION ("compiled-function", compiled_function, + 1, /*dumpable_flag*/ + mark_compiled_function, + print_compiled_function, + finalize_compiled_function, + compiled_function_equal, + compiled_function_hash, + compiled_function_description, + Lisp_Compiled_Function); +#else /* not MC_ALLOC */ DEFINE_BASIC_LRECORD_IMPLEMENTATION ("compiled-function", compiled_function, 1, /*dumpable_flag*/ mark_compiled_function, @@ -2199,6 +2222,7 @@ compiled_function_hash, compiled_function_description, Lisp_Compiled_Function); +#endif /* not MC_ALLOC */ DEFUN ("compiled-function-p", Fcompiled_function_p, 1, 1, 0, /* Return t if OBJECT is a byte-compiled function object. diff --text -u 'xemacs-21.5.20/src/casetab.c' 'xemacs-21.5.21/src/casetab.c' Index: ./src/casetab.c --- ./src/casetab.c Tue Sep 21 04:19:35 2004 +++ ./src/casetab.c Sat Apr 9 08:11:19 2005 @@ -116,7 +116,11 @@ allocate_case_table (int init_tables) { Lisp_Case_Table *ct = +#ifdef MC_ALLOC + alloc_lrecord_type (Lisp_Case_Table, &lrecord_case_table); +#else /* not MC_ALLOC */ alloc_lcrecord_type (Lisp_Case_Table, &lrecord_case_table); +#endif /* not MC_ALLOC */ if (init_tables) { diff --text -u 'xemacs-21.5.20/src/casetab.h' 'xemacs-21.5.21/src/casetab.h' Index: ./src/casetab.h --- ./src/casetab.h Sun May 5 20:30:50 2002 +++ ./src/casetab.h Sat Apr 9 08:11:19 2005 @@ -25,7 +25,11 @@ struct Lisp_Case_Table { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object downcase_table; Lisp_Object upcase_table; Lisp_Object case_canon_table; diff --text -u 'xemacs-21.5.20/src/charset.h' 'xemacs-21.5.21/src/charset.h' Index: ./src/charset.h --- ./src/charset.h Tue Jan 25 08:33:47 2005 +++ ./src/charset.h Sat Apr 9 08:11:20 2005 @@ -181,7 +181,11 @@ struct Lisp_Charset { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ int id; Lisp_Object name; diff --text -u 'xemacs-21.5.20/src/chartab.c' 'xemacs-21.5.21/src/chartab.c' Index: ./src/chartab.c --- ./src/chartab.c Tue Jan 25 08:33:47 2005 +++ ./src/chartab.c Mon Apr 11 14:15:06 2005 @@ -476,7 +476,11 @@ if (!EQ (ct->level1[i], Qnull_pointer) && CHAR_TABLE_ENTRYP (ct->level1[i]) && !OBJECT_DUMPED_P (ct->level1[1])) +#ifdef MC_ALLOC + free_lrecord (ct->level1[i]); +#else /* not MC_ALLOC */ free_lcrecord (ct->level1[i]); +#endif /* not MC_ALLOC */ ct->level1[i] = value; } #endif /* MULE */ @@ -542,15 +546,17 @@ When Mule support exists, the types of ranges that can be assigned values are --- all characters +-- all characters (represented by t) -- an entire charset --- a single row in a two-octet charset +-- a single row in a two-octet charset (represented by a vector of two + elements: a two-octet charset and a row number; the row must be an + integer, not a character) -- a single character When Mule support is not present, the types of ranges that can be assigned values are --- all characters +-- all characters (represented by t) -- a single character To create a char table, use `make-char-table'. @@ -590,7 +596,11 @@ Lisp_Object obj; enum char_table_type ty = symbol_to_char_table_type (type); +#ifdef MC_ALLOC + ct = alloc_lrecord_type (Lisp_Char_Table, &lrecord_char_table); +#else /* not MC_ALLOC */ ct = alloc_lcrecord_type (Lisp_Char_Table, &lrecord_char_table); +#endif /* not MC_ALLOC */ ct->type = ty; obj = wrap_char_table (ct); if (ty == CHAR_TABLE_TYPE_SYNTAX) @@ -623,7 +633,11 @@ { int i; Lisp_Char_Table_Entry *cte = +#ifdef MC_ALLOC + alloc_lrecord_type (Lisp_Char_Table_Entry, &lrecord_char_table_entry); +#else /* not MC_ALLOC */ alloc_lcrecord_type (Lisp_Char_Table_Entry, &lrecord_char_table_entry); +#endif /* not MC_ALLOC */ for (i = 0; i < 96; i++) cte->level2[i] = initval; @@ -637,7 +651,11 @@ Lisp_Char_Table_Entry *cte = XCHAR_TABLE_ENTRY (entry); int i; Lisp_Char_Table_Entry *ctenew = +#ifdef MC_ALLOC + alloc_lrecord_type (Lisp_Char_Table_Entry, &lrecord_char_table_entry); +#else /* not MC_ALLOC */ alloc_lcrecord_type (Lisp_Char_Table_Entry, &lrecord_char_table_entry); +#endif /* not MC_ALLOC */ for (i = 0; i < 96; i++) { @@ -666,7 +684,11 @@ CHECK_CHAR_TABLE (char_table); ct = XCHAR_TABLE (char_table); +#ifdef MC_ALLOC + ctnew = alloc_lrecord_type (Lisp_Char_Table, &lrecord_char_table); +#else /* not MC_ALLOC */ ctnew = alloc_lcrecord_type (Lisp_Char_Table, &lrecord_char_table); +#endif /* not MC_ALLOC */ ctnew->type = ct->type; ctnew->parent = ct->parent; ctnew->default_ = ct->default_; @@ -912,8 +934,11 @@ #endif /* ERROR_CHECK_TYPES */ DEFUN ("get-range-char-table", Fget_range_char_table, 2, 3, 0, /* -Find value for a range in CHAR-TABLE. +Find value for RANGE in CHAR-TABLE. If there is more than one value, return MULTI (defaults to nil). + +Valid values for RANGE are single characters, charsets, a row in a +two-octet charset, and all characters. See `put-char-table'. */ (range, char_table, multi)) { @@ -1055,7 +1080,11 @@ int lb = XCHARSET_LEADING_BYTE (range->charset) - MIN_LEADING_BYTE; if (CHAR_TABLE_ENTRYP (ct->level1[lb]) && !OBJECT_DUMPED_P (ct->level1[lb])) +#ifdef MC_ALLOC + free_lrecord (ct->level1[lb]); +#else /* not MC_ALLOC */ free_lcrecord (ct->level1[lb]); +#endif /* not MC_ALLOC */ ct->level1[lb] = val; } break; @@ -1128,8 +1157,9 @@ -- t (all characters are affected) -- A charset (only allowed when Mule support is present) --- A vector of two elements: a two-octet charset and a row number - (only allowed when Mule support is present) +-- A vector of two elements: a two-octet charset and a row number; the row + must be an integer, not a character (only allowed when Mule support is + present) -- A single character VALUE must be a value appropriate for the type of CHAR-TABLE. @@ -1161,7 +1191,8 @@ (only allowed when Mule support is present) -- A single character -With the values removed, the default value will be returned. +With all values removed, the default value will be returned by +`get-char-table' and `get-range-char-table'. */ (range, char_table)) { @@ -1452,12 +1483,18 @@ } DEFUN ("map-char-table", Fmap_char_table, 2, 3, 0, /* -Map FUNCTION over entries in CHAR-TABLE, calling it with two args, -each key and value in the table. +Map FUNCTION over CHAR-TABLE until it returns non-nil; return that value. +FUNCTION is called with two arguments, each key and entry in the table. -RANGE specifies a subrange to map over and is in the same format as -the RANGE argument to `put-range-table'. If omitted or t, it defaults to +RANGE specifies a subrange to map over. If omitted or t, it defaults to the entire table. + +Both RANGE and the keys passed to FUNCTION are in the same format as the +RANGE argument to `put-char-table'. N.B. This function does NOT map over +all characters in RANGE, but over the subranges that have been assigned to. +Thus this function is most suitable for searching a char-table, or for +populating one char-table based on the contents of another. The current +implementation does not coalesce ranges all of whose values are the same. */ (function, char_table, range)) { diff --text -u 'xemacs-21.5.20/src/chartab.h' 'xemacs-21.5.21/src/chartab.h' Index: ./src/chartab.h --- ./src/chartab.h Fri Feb 14 18:50:17 2003 +++ ./src/chartab.h Sat Apr 9 08:11:20 2005 @@ -42,7 +42,11 @@ struct Lisp_Char_Table_Entry { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* In the interests of simplicity, we just use a fixed 96-entry table. If we felt like being smarter, we could make this @@ -80,7 +84,11 @@ struct Lisp_Char_Table { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object ascii[NUM_ASCII_CHARS]; Lisp_Object default_; diff --text -u 'xemacs-21.5.20/src/config.h.in' 'xemacs-21.5.21/src/config.h.in' Index: ./src/config.h.in --- ./src/config.h.in Fri Mar 11 20:20:17 2005 +++ ./src/config.h.in Sat Apr 9 08:11:20 2005 @@ -678,6 +678,9 @@ /* If defined, use experimental pdump-based GC algorithms. */ #undef USE_KKCC +/* If defined, use experimental allocator. */ +#undef MC_ALLOC + /* Enable special GNU Make features in the Makefiles. */ #undef USE_GNU_MAKE @@ -748,6 +751,10 @@ #undef PDUMP +/* Define DUMP_IN_EXEC to include the dump file in the executable + file. */ +#undef DUMP_IN_EXEC + /* Define DYNODUMP if it is necessary to properly dump on this system. Currently this is only Solaris 2.x, for x < 6. */ #undef DYNODUMP diff --text -u 'xemacs-21.5.20/src/console-impl.h' 'xemacs-21.5.21/src/console-impl.h' Index: ./src/console-impl.h --- ./src/console-impl.h Fri Jan 28 11:58:51 2005 +++ ./src/console-impl.h Sat Apr 9 08:11:20 2005 @@ -408,7 +408,11 @@ struct console { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* Description of this console's methods. */ struct console_methods *conmeths; diff --text -u 'xemacs-21.5.20/src/console-msw-impl.h' 'xemacs-21.5.21/src/console-msw-impl.h' Index: ./src/console-msw-impl.h --- ./src/console-msw-impl.h Sun Jan 12 20:08:09 2003 +++ ./src/console-msw-impl.h Sat Apr 9 08:11:21 2005 @@ -57,7 +57,11 @@ struct Lisp_Devmode { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* Pointer to the DEVMODE structure */ DEVMODEW *devmode; @@ -275,7 +279,11 @@ struct mswindows_dialog_id { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object frame; Lisp_Object callbacks; diff --text -u 'xemacs-21.5.20/src/console.c' 'xemacs-21.5.21/src/console.c' Index: ./src/console.c --- ./src/console.c Fri Feb 4 01:14:04 2005 +++ ./src/console.c Sat Apr 9 08:11:21 2005 @@ -194,10 +194,18 @@ allocate_console (Lisp_Object type) { Lisp_Object console; +#ifdef MC_ALLOC + struct console *con = alloc_lrecord_type (struct console, &lrecord_console); +#else /* not MC_ALLOC */ struct console *con = alloc_lcrecord_type (struct console, &lrecord_console); +#endif /* not MC_ALLOC */ struct gcpro gcpro1; +#ifdef MC_ALLOC + copy_lrecord (con, XCONSOLE (Vconsole_defaults)); +#else /* not MC_ALLOC */ copy_lcrecord (con, XCONSOLE (Vconsole_defaults)); +#endif /* not MC_ALLOC */ console = wrap_console (con); GCPRO1 (console); @@ -662,7 +670,11 @@ static void nuke_all_console_slots (struct console *con, Lisp_Object zap) { +#ifdef MC_ALLOC + zero_lrecord (con); +#else /* not MC_ALLOC */ zero_lcrecord (con); +#endif /* not MC_ALLOC */ #define MARKED_SLOT(x) con->x = zap; #include "conslots.h" @@ -1311,6 +1323,31 @@ } /* The docstrings for DEFVAR_* are recorded externally by make-docfile. */ +#ifdef MC_ALLOC +#define DEFVAR_CONSOLE_LOCAL_1(lname, field_name, forward_type, magic_fun) \ +do { \ + struct symbol_value_forward *I_hate_C = \ + alloc_lrecord_type (struct symbol_value_forward, \ + &lrecord_symbol_value_forward); \ + /*mcpro ((Lisp_Object) I_hate_C);*/ \ + \ + I_hate_C->magic.value = &(console_local_flags.field_name); \ + I_hate_C->magic.type = forward_type; \ + I_hate_C->magicfun = magic_fun; \ + \ + MARK_LRECORD_AS_LISP_READONLY (I_hate_C); \ + \ + { \ + int offset = ((char *)symbol_value_forward_forward (I_hate_C) \ + - (char *)&console_local_flags); \ + \ + defvar_magic (lname, I_hate_C); \ + \ + *((Lisp_Object *)(offset + (char *)XCONSOLE (Vconsole_local_symbols))) \ + = intern (lname); \ + } \ +} while (0) +#else /* not MC_ALLOC */ #define DEFVAR_CONSOLE_LOCAL_1(lname, field_name, forward_type, magicfun) \ do { \ static const struct symbol_value_forward I_hate_C = \ @@ -1343,6 +1380,7 @@ = intern (lname); \ } \ } while (0) +#endif /* not MC_ALLOC */ #define DEFVAR_CONSOLE_LOCAL_MAGIC(lname, field_name, magicfun) \ DEFVAR_CONSOLE_LOCAL_1 (lname, field_name, \ @@ -1367,8 +1405,13 @@ /* Make sure all markable slots in console_defaults are initialized reasonably, so mark_console won't choke. */ +#ifdef MC_ALLOC + struct console *defs = alloc_lrecord_type (struct console, &lrecord_console); + struct console *syms = alloc_lrecord_type (struct console, &lrecord_console); +#else /* not MC_ALLOC */ struct console *defs = alloc_lcrecord_type (struct console, &lrecord_console); struct console *syms = alloc_lcrecord_type (struct console, &lrecord_console); +#endif /* not MC_ALLOC */ staticpro_nodump (&Vconsole_defaults); staticpro_nodump (&Vconsole_local_symbols); diff --text -u 'xemacs-21.5.20/src/data.c' 'xemacs-21.5.21/src/data.c' Index: ./src/data.c --- ./src/data.c Thu Mar 10 18:12:38 2005 +++ ./src/data.c Sat Apr 9 08:11:21 2005 @@ -2577,7 +2577,11 @@ { Lisp_Object result; struct weak_list *wl = +#ifdef MC_ALLOC + alloc_lrecord_type (struct weak_list, &lrecord_weak_list); +#else /* not MC_ALLOC */ alloc_lcrecord_type (struct weak_list, &lrecord_weak_list); +#endif /* not MC_ALLOC */ wl->list = Qnil; wl->type = type; @@ -3052,7 +3056,11 @@ Lisp_Object result; struct weak_box *wb = +#ifdef MC_ALLOC + alloc_lrecord_type (struct weak_box, &lrecord_weak_box); +#else /* not MC_ALLOC */ alloc_lcrecord_type (struct weak_box, &lrecord_weak_box); +#endif /* not MC_ALLOC */ wb->value = value; result = wrap_weak_box (wb); @@ -3275,7 +3283,11 @@ struct gcpro gcpro1, gcpro2; struct ephemeron *eph = +#ifdef MC_ALLOC + alloc_lrecord_type (struct ephemeron, &lrecord_ephemeron); +#else /* not MC_ALLOC */ alloc_lcrecord_type (struct ephemeron, &lrecord_ephemeron); +#endif /* not MC_ALLOC */ eph->key = Qnil; eph->cons_chain = Qnil; diff --text -u 'xemacs-21.5.20/src/database.c' 'xemacs-21.5.21/src/database.c' Index: ./src/database.c --- ./src/database.c Thu Mar 10 18:19:16 2005 +++ ./src/database.c Sat Apr 9 08:11:21 2005 @@ -98,7 +98,11 @@ struct Lisp_Database { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object fname; int mode; int access_; @@ -131,7 +135,11 @@ static Lisp_Database * allocate_database (void) { +#ifdef MC_ALLOC + Lisp_Database *db = alloc_lrecord_type (Lisp_Database, &lrecord_database); +#else /* not MC_ALLOC */ Lisp_Database *db = alloc_lcrecord_type (Lisp_Database, &lrecord_database); +#endif /* not MC_ALLOC */ db->fname = Qnil; db->live_p = 0; diff --text -u 'xemacs-21.5.20/src/depend' 'xemacs-21.5.21/src/depend' Index: ./src/depend --- ./src/depend Sat Jan 29 07:52:28 2005 +++ ./src/depend Sat Apr 9 08:11:21 2005 @@ -11,7 +11,7 @@ LISP_H= #else CONFIG_H=config.h -LISP_H=lisp.h compiler.h config.h dumper.h general-slots.h lrecord.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h $(LISP_UNION_H) +LISP_H=lisp.h compiler.h config.h dumper.h general-slots.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h $(LISP_UNION_H) #endif #if defined(HAVE_MS_WINDOWS) @@ -41,7 +41,7 @@ balloon-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h balloon_help.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h xintrinsic.h balloon_help.o: $(CONFIG_H) balloon_help.h compiler.h xintrinsic.h console-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h process.h redisplay.h xintrinsic.h -device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h +device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h elhash.h events.h faces.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h sysdep.h sysdll.h sysfile.h systime.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-x-impl.h console-x.h console.h events.h frame-impl.h frame.h frameslots.h gui.h opaque.h redisplay.h scrollbar.h systime.h window.h xintrinsic.h frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gutter.h objects-impl.h objects-x-impl.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h systime.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h xmu.h glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h faces.h file-coding.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h imgproc.h insdel.h lstream.h objects-impl.h objects-x-impl.h objects-x.h objects.h opaque.h process.h redisplay.h scrollbar.h specifier.h sysfile.h sysproc.h syssignal.h systime.h window-impl.h window.h winslots.h xintrinsic.h xmotif.h xmu.h @@ -151,7 +151,7 @@ floatfns.o: $(LISP_H) sysfloat.h syssignal.h fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h console.h device.h events.h extents.h frame.h insdel.h lstream.h opaque.h process.h redisplay.h sysfile.h sysproc.h syssignal.h systime.h font-lock.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h insdel.h syntax.h -frame.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window-impl.h window.h winslots.h +frame.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gui.h gutter.h menubar.h process.h redisplay.h scrollbar.h specifier.h systime.h toolbar.h window-impl.h window.h winslots.h free-hook.o: $(LISP_H) hash.h general.o: $(LISP_H) general-slots.h getloadavg.o: $(LISP_H) sysfile.h syssignal.h @@ -188,6 +188,7 @@ macros.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console.h device.h events.h frame.h keymap.h macros.h redisplay.h scrollbar.h systime.h window.h malloc.o: $(CONFIG_H) getpagesize.h syssignal.h marker.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h +mc-alloc.o: $(LISP_H) md5.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h file-coding.h lstream.h menubar.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h frame-impl.h frame.h frameslots.h gui.h keymap.h menubar.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h minibuf.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h console-stream.h console.h events.h frame-impl.h frame.h frameslots.h insdel.h redisplay.h scrollbar.h systime.h window-impl.h window.h winslots.h diff --text -u 'xemacs-21.5.20/src/device-impl.h' 'xemacs-21.5.21/src/device-impl.h' Index: ./src/device-impl.h --- ./src/device-impl.h Sun Jan 12 20:08:11 2003 +++ ./src/device-impl.h Sat Apr 9 08:11:21 2005 @@ -71,7 +71,11 @@ struct device { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* Methods for this device's console. This can also be retrieved through device->console, but it's faster this way. */ diff --text -u 'xemacs-21.5.20/src/device-msw.c' 'xemacs-21.5.21/src/device-msw.c' Index: ./src/device-msw.c --- ./src/device-msw.c Tue Jan 25 08:33:49 2005 +++ ./src/device-msw.c Sat Apr 9 08:11:22 2005 @@ -1188,7 +1188,11 @@ { Lisp_Devmode *dm; +#ifdef MC_ALLOC + dm = alloc_lrecord_type (Lisp_Devmode, &lrecord_devmode); +#else /* not MC_ALLOC */ dm = alloc_lcrecord_type (Lisp_Devmode, &lrecord_devmode); +#endif /* not MC_ALLOC */ if (d) dm->device = wrap_device (d); diff --text -u 'xemacs-21.5.20/src/device-x.c' 'xemacs-21.5.21/src/device-x.c' Index: ./src/device-x.c --- ./src/device-x.c Fri Feb 4 01:30:35 2005 +++ ./src/device-x.c Fri Mar 25 10:00:34 2005 @@ -36,6 +36,7 @@ #include "events.h" #include "faces.h" #include "frame-impl.h" +#include "process.h" /* for egetenv */ #include "redisplay.h" #include "sysdep.h" #include "window.h" @@ -614,14 +615,22 @@ LISP_STRING_TO_EXTERNAL (Vx_emacs_application_class, app_class, Qctext); else { - app_class = (NILP (Vx_emacs_application_class) && - have_xemacs_resources_in_xrdb (dpy)) + if (egetenv ("USE_EMACS_AS_DEFAULT_APPLICATION_CLASS")) + { + app_class = (NILP (Vx_emacs_application_class) && + have_xemacs_resources_in_xrdb (dpy)) #ifdef INFODOCK - ? "InfoDock" + ? "InfoDock" #else - ? "XEmacs" + ? "XEmacs" #endif - : "Emacs"; + : "Emacs"; + } + else + { + app_class = "XEmacs"; + } + /* need to update Vx_emacs_application_class: */ Vx_emacs_application_class = build_string (app_class); } @@ -2096,14 +2105,14 @@ this variable may only be changed before emacs is dumped, or by setting it in the file lisp/term/x-win.el. -If this variable is nil before the connection to the X server is first -initialized (which it is by default), the X resource database will be -consulted and the value will be set according to whether any resources -are found for the application class `XEmacs'. If the user has set any -resources for the XEmacs application class, the XEmacs process will use -the application class `XEmacs'. Otherwise, the XEmacs process will use -the application class `Emacs' which is backwards compatible to previous -XEmacs versions but may conflict with resources intended for GNU Emacs. +If this variable is nil on startup, the application uses `XEmacs'. Versions +previous to 21.5.21 examined the resource database and used `XEmacs' if any +resources beginning with that string existed, and `Emacs' otherwise, for +greated backward compatibility. However, this has always tended to conflict +with GNU Emacs, so this behavior is deprecated--in the short term, you can +restore it in a post-21.5.21 XEmacs by setting the +USE_EMACS_AS_DEFAULT_APPLICATION_CLASS environment variable to some value, +but in the medium and long term, you should migrate your X resources. */ ); Vx_emacs_application_class = Qnil; diff --text -u 'xemacs-21.5.20/src/device.c' 'xemacs-21.5.21/src/device.c' Index: ./src/device.c --- ./src/device.c Fri Feb 4 01:14:04 2005 +++ ./src/device.c Sat Apr 9 08:11:22 2005 @@ -187,7 +187,11 @@ static void nuke_all_device_slots (struct device *d, Lisp_Object zap) { +#ifdef MC_ALLOC + zero_lrecord (d); +#else /* not MC_ALLOC */ zero_lcrecord (d); +#endif /* not MC_ALLOC */ #define MARKED_SLOT(x) d->x = zap; #include "devslots.h" @@ -197,7 +201,11 @@ allocate_device (Lisp_Object console) { Lisp_Object device; +#ifdef MC_ALLOC + struct device *d = alloc_lrecord_type (struct device, &lrecord_device); +#else /* not MC_ALLOC */ struct device *d = alloc_lcrecord_type (struct device, &lrecord_device); +#endif /* not MC_ALLOC */ struct gcpro gcpro1; device = wrap_device (d); diff --text -u 'xemacs-21.5.20/src/dialog-msw.c' 'xemacs-21.5.21/src/dialog-msw.c' Index: ./src/dialog-msw.c --- ./src/dialog-msw.c Mon Dec 6 12:52:03 2004 +++ ./src/dialog-msw.c Sat Apr 9 08:11:22 2005 @@ -751,8 +751,13 @@ Lisp_Object dialog_data; int i; struct mswindows_dialog_id *did = +#ifdef MC_ALLOC + alloc_lrecord_type (struct mswindows_dialog_id, + &lrecord_mswindows_dialog_id); +#else /* not MC_ALLOC */ alloc_lcrecord_type (struct mswindows_dialog_id, &lrecord_mswindows_dialog_id); +#endif /* not MC_ALLOC */ dialog_data = wrap_mswindows_dialog_id (did); diff --text -u 'xemacs-21.5.20/src/dumper.c' 'xemacs-21.5.21/src/dumper.c' Index: ./src/dumper.c --- ./src/dumper.c Fri Feb 4 12:01:20 2005 +++ ./src/dumper.c Mon May 16 01:38:12 2005 @@ -50,8 +50,10 @@ #ifdef HAVE_MMAP #include #endif +#ifdef DUMP_IN_EXEC #include "dump-data.h" #endif +#endif typedef struct { @@ -235,6 +237,7 @@ static Rawbyte *pdump_rt_list = 0; +#ifndef MC_ALLOC void pdump_objects_unmark (void) { @@ -258,8 +261,27 @@ break; } } +#endif /* not MC_ALLOC */ +#ifdef MC_ALLOC +/* The structure of the dump file looks like this: + 0 - header + - dumped objects + stab_offset - mc allocation table (count, size, address) for individual + allocation and relocation at load time. + - nb_cv_data*struct(dest, adr) for in-object externally + represented data + - nb_cv_ptr*(adr) for pointed-to externally represented data + - relocation table + - nb_root_struct_ptrs*struct(void *, adr) + for global pointers to structures + - nb_root_blocks*struct(void *, size, info) for global + objects to restore + - root lisp object address/value couples with the count + preceding the list + */ +#else /* not MC_ALLOC */ /* The structure of the dump file looks like this: 0 - header - dumped objects @@ -274,6 +296,7 @@ - root lisp object address/value couples with the count preceding the list */ +#endif /* not MC_ALLOC */ #define PDUMP_SIGNATURE "XEmacsDP" @@ -411,15 +434,32 @@ static void *pdump_buf; static FILE *pdump_out; +#ifdef MC_ALLOC +/* PDUMP_HASHSIZE is a large prime. */ +#define PDUMP_HASHSIZE 1000003 +/* Nothing special about PDUMP_HASH_MULTIPLIER: arbitrary odd integer + smaller than PDUMP_HASHSIZE. */ +#define PDUMP_HASH_MULTIPLIER 12347 +/* Nothing special about PDUMP_HASH_STEP: arbitrary integer for linear + probing. */ +#define PDUMP_HASH_STEP 574853 +#else /* not MC_ALLOC */ #define PDUMP_HASHSIZE 200001 +#endif /* not MC_ALLOC */ static pdump_block_list_elt **pdump_hash; +#ifndef MC_ALLOC /* Since most pointers are eight bytes aligned, the >>3 allows for a better hash */ +#endif /* not MC_ALLOC */ static int pdump_make_hash (const void *obj) { +#ifdef MC_ALLOC + return ((unsigned long)(obj) * PDUMP_HASH_MULTIPLIER) % PDUMP_HASHSIZE; +#else /* not MC_ALLOC */ return ((unsigned long)(obj)>>3) % PDUMP_HASHSIZE; +#endif /* not MC_ALLOC */ } /* Return the entry for an already-registered memory block at OBJ, @@ -484,6 +524,71 @@ } } +#ifdef MC_ALLOC +typedef struct mc_addr_elt +{ + const void *obj; + EMACS_INT addr; +} mc_addr_elt; + +static mc_addr_elt *pdump_mc_hash; + +/* Return the entry for an already-registered memory block at OBJ, + or NULL if none. */ +static EMACS_INT +pdump_get_mc_addr (const void *obj) +{ + int pos = pdump_make_hash (obj); + mc_addr_elt *mc_addr; + + assert (obj != 0); + + while (((mc_addr = &pdump_mc_hash[pos]) != 0) && (mc_addr->obj != 0)) + { + if (mc_addr->obj == obj) + return mc_addr->addr; + + pos += PDUMP_HASH_STEP; + if (pos >= PDUMP_HASHSIZE) + pos -= PDUMP_HASHSIZE; + } + + /* If this code is reached, an heap address occurred which has not + been written to the lookup table before. + This is a bug! */ + ABORT(); + return 0; +} + +/* For indirect address lookups, needed for convertibles: Ptr points + to an address within an object. Indirect gives the offset by how + many bytes the address of the object has to be adjusted to do a + lookup in the mc_addr translation table and get the new location of + the data. */ +#define pdump_get_indirect_mc_addr(ptr, indirect) \ + pdump_get_mc_addr ((void *)((ptr) - indirect)) + indirect + +static void +pdump_put_mc_addr (const void *obj, EMACS_INT addr) +{ + mc_addr_elt *mc_addr; + int pos = pdump_make_hash (obj); + + while (((mc_addr = &pdump_mc_hash[pos]) != 0) && (mc_addr->obj != 0)) + { + if (mc_addr->obj == obj) + return; + + pos += PDUMP_HASH_STEP; + if (pos >= PDUMP_HASHSIZE) + pos -= PDUMP_HASHSIZE; + } + + pdump_mc_hash[pos].obj = obj; + pdump_mc_hash[pos].addr = addr; +} +#endif /* MC_ALLOC */ + static pdump_block_list * pdump_get_block_list (const struct memory_description *desc) { @@ -520,12 +625,14 @@ return 0; } +#define BACKTRACE_MAX 65536 + static struct { struct lrecord_header *obj; int position; int offset; -} backtrace[65536]; +} backtrace[BACKTRACE_MAX]; static int pdump_depth; @@ -568,7 +675,7 @@ pdump_bump_depth (void) { int me = pdump_depth++; - if (me > 65536) + if (me >= BACKTRACE_MAX) { stderr_out ("Backtrace overflow, loop ?\n"); ABORT (); @@ -1029,6 +1136,207 @@ retry_fwrite (desc ? pdump_buf : elt->obj, size, count, pdump_out); } +#ifdef MC_ALLOC +/* To be able to relocate during load time, more information about the + dumped objects are needed: The count (for array-like data + structures), the size of the object, and the location in the dumped + data. + */ +static void +pdump_dump_mc_data (pdump_block_list_elt *elt, + const struct memory_description *UNUSED(desc)) +{ + EMACS_INT rdata = pdump_get_block (elt->obj)->save_offset; + int j; + PDUMP_WRITE_ALIGNED (int, elt->count); + PDUMP_WRITE_ALIGNED (Bytecount, elt->size); + for (j = 0; j < elt->count; j++) + { + PDUMP_WRITE_ALIGNED (EMACS_INT, rdata); + rdata += elt->size; + } +} + +static void +pdump_scan_lisp_objects_by_alignment (void (*f) + (pdump_block_list_elt *, + const struct memory_description *)) +{ + int align; + + for (align = ALIGNOF (max_align_t); align; align>>=1) + { + int i; + pdump_block_list_elt *elt; + + for (i=0; inext) + { + assert (elt->count == 1); + f (elt, lrecord_implementations_table[i]->description); + } + } +} + +static void +pdump_scan_non_lisp_objects_by_alignment (void (*f) + (pdump_block_list_elt *, + const struct memory_description *)) +{ + int align; + + for (align = ALIGNOF (max_align_t); align; align>>=1) + { + int i; + pdump_block_list_elt *elt; + + for (i=0; inext) + f (elt, list.desc); + } + + for (elt = pdump_opaque_data_list.first; elt; elt = elt->next) + if (pdump_size_to_align (elt->size) == align) + f (elt, 0); + } +} + + + +static void +pdump_reloc_one_mc (void *data, const struct memory_description *desc) +{ + int pos; + + for (pos = 0; desc[pos].type != XD_END; pos++) + { + const struct memory_description *desc1 = &desc[pos]; + void *rdata = + (Rawbyte *) data + lispdesc_indirect_count (desc1->offset, + desc, data); + + union_switcheroo: + + /* If the flag says don't dump, then don't dump. */ + if ((desc1->flags) & XD_FLAG_NO_PDUMP) + continue; + + switch (desc1->type) + { + case XD_BYTECOUNT: + case XD_ELEMCOUNT: + case XD_HASHCODE: + case XD_INT: + case XD_LONG: + case XD_INT_RESET: + break; + case XD_OPAQUE_DATA_PTR: + case XD_ASCII_STRING: + case XD_BLOCK_PTR: + case XD_LO_LINK: + { + EMACS_INT ptr = *(EMACS_INT *) rdata; + if (ptr) + *(EMACS_INT *) rdata = pdump_get_mc_addr ((void *) ptr); + break; + } + case XD_LISP_OBJECT: + { + Lisp_Object *pobj = (Lisp_Object *) rdata; + + assert (desc1->data1 == 0); + + if (POINTER_TYPE_P (XTYPE (*pobj)) + && ! EQ (*pobj, Qnull_pointer)) + *pobj = wrap_pointer_1 ((char *) pdump_get_mc_addr + (XPNTR (*pobj))); + break; + } + case XD_LISP_OBJECT_ARRAY: + { + EMACS_INT num = lispdesc_indirect_count (desc1->data1, desc, + data); + int j; + + for (j=0; j 0) + *(EMACS_INT *) rdata = pdump_get_mc_addr ((void *) str); + break; + } + case XD_BLOCK_ARRAY: + { + EMACS_INT num = lispdesc_indirect_count (desc1->data1, desc, + data); + int j; + const struct sized_memory_description *sdesc = + lispdesc_indirect_description (data, desc1->data2.descr); + Bytecount size = lispdesc_block_size (rdata, sdesc); + + /* Note: We are recursing over data in the block itself */ + for (j = 0; j < num; j++) + pdump_reloc_one_mc ((Rawbyte *) rdata + j * size, + sdesc->description); + + break; + } + case XD_UNION: + case XD_UNION_DYNAMIC_SIZE: + desc1 = lispdesc_process_xd_union (desc1, desc, data); + if (desc1) + goto union_switcheroo; + break; + + case XD_OPAQUE_PTR_CONVERTIBLE: + { + pdump_cv_ptr_load_info *p = pdump_loaded_cv_ptr + *(EMACS_INT *)rdata; + if (!p->adr) + p->adr = desc1->data2.funcs->deconvert(0, + pdump_start + p->save_offset, + p->size); + *(void **)rdata = p->adr; + break; + } + + case XD_OPAQUE_DATA_CONVERTIBLE: + { + EMACS_INT dest_offset = (EMACS_INT) rdata; + EMACS_INT indirect = + lispdesc_indirect_count (desc1->offset, desc, data); + pdump_cv_data_dump_info *p; + + for(p = pdump_loaded_cv_data; + pdump_get_indirect_mc_addr (p->dest_offset, indirect) + != dest_offset; + p++); + + desc1->data2.funcs->deconvert(rdata, pdump_start + p->save_offset, + p->size); + break; + } + + default: + pdump_unsupported_dump_type (desc1->type, 0); + } + } +} +#else /* not MC_ALLOC */ /* Relocate a single memory block at DATA, described by DESC, from its assumed load location to its actual one by adding DELTA to all pointers in the block. Does not recursively relocate any other memory blocks @@ -1162,6 +1470,7 @@ } } } +#endif /* not MC_ALLOC */ static void pdump_allocate_offset (pdump_block_list_elt *elt, @@ -1773,11 +2082,25 @@ fseek (pdump_out, header.stab_offset, SEEK_SET); +#ifdef MC_ALLOC + { + EMACS_INT zero = 0; + pdump_scan_lisp_objects_by_alignment (pdump_dump_mc_data); + PDUMP_WRITE_ALIGNED (EMACS_INT, zero); + pdump_scan_non_lisp_objects_by_alignment (pdump_dump_mc_data); + PDUMP_WRITE_ALIGNED (EMACS_INT, zero); + } +#endif /* MC_ALLOC */ pdump_dump_cv_data_info (); pdump_dump_cv_ptr_info (); +#ifdef MC_ALLOC + pdump_dump_rtables (); +#endif /* MC_ALLOC */ pdump_dump_root_block_ptrs (); pdump_dump_root_blocks (); +#ifndef MC_ALLOC pdump_dump_rtables (); +#endif /* not MC_ALLOC */ pdump_dump_root_lisp_objects (); retry_fclose (pdump_out); @@ -1818,6 +2141,55 @@ delta = ((EMACS_INT) pdump_start) - header->reloc_address; p = pdump_start + header->stab_offset; +#ifdef MC_ALLOC + pdump_mc_hash = xnew_array_and_zero (mc_addr_elt, PDUMP_HASHSIZE); + + /* Allocate space for each object individually. First the + Lisp_Objects, then the blocks. */ + count = 2; + for (;;) + { + int elt_count = PDUMP_READ_ALIGNED (p, int); + if (elt_count) + { + Rawbyte *mc_addr = 0; + Bytecount size = PDUMP_READ_ALIGNED (p, Bytecount); + for (i = 0; i < elt_count; i++) + { + EMACS_INT rdata = PDUMP_READ_ALIGNED (p, EMACS_INT); + + if (i == 0) + { + Bytecount real_size = size * elt_count; + if (count == 2) + { + mc_addr = (Rawbyte *) mc_alloc (real_size); +#ifdef MC_ALLOC_TYPE_STATS + inc_lrecord_stats (real_size, + (const struct lrecord_header *) + ((char *) rdata + delta)); + if (((const struct lrecord_header *) + ((char *) rdata + delta))->type + == lrecord_type_string) + inc_lrecord_string_data_stats + (((Lisp_String *) ((char *) rdata + delta))->size_); +#endif /* not MC_ALLOC_TYPE_STATS */ + } + else + mc_addr = (Rawbyte *) xmalloc_and_zero (real_size); + } + else + mc_addr += size; + + pdump_put_mc_addr ((void *) rdata, (EMACS_INT) mc_addr); + memcpy (mc_addr, (char *) rdata + delta, size); + } + } + else if (!(--count)) + break; + } +#endif /* MC_ALLOC */ + /* Get the cv_data array */ p = (Rawbyte *) ALIGN_PTR (p, pdump_cv_data_dump_info); pdump_loaded_cv_data = (pdump_cv_data_dump_info *)p; @@ -1835,12 +2207,39 @@ pdump_loaded_cv_ptr[i].adr = 0; } +#ifdef MC_ALLOC + /* Relocate the heap objects */ + pdump_rt_list = p; + count = 2; + for (;;) + { + pdump_reloc_table rt = PDUMP_READ_ALIGNED (p, pdump_reloc_table); + p = (Rawbyte *) ALIGN_PTR (p, Rawbyte *); + if (rt.desc) + { + char **reloc = (char **) p; + for (i = 0; i < rt.count; i++) + { + reloc[i] = (char *) pdump_get_mc_addr (reloc[i]); + pdump_reloc_one_mc (reloc[i], rt.desc); + } + p += rt.count * sizeof (char *); + } + else if (!(--count)) + break; + } +#endif /* MC_ALLOC */ + /* Put back the pdump_root_block_ptrs */ p = (Rawbyte *) ALIGN_PTR (p, pdump_static_pointer); for (i = 0; i < header->nb_root_block_ptrs; i++) { pdump_static_pointer ptr = PDUMP_READ (p, pdump_static_pointer); +#ifdef MC_ALLOC + (* ptr.address) = (Rawbyte *) pdump_get_mc_addr (ptr.value); +#else /* not MC_ALLOC */ (* ptr.address) = ptr.value + delta; +#endif /* not MC_ALLOC */ } /* Put back the pdump_root_blocks and relocate */ @@ -1849,10 +2248,15 @@ pdump_root_block info = PDUMP_READ_ALIGNED (p, pdump_root_block); memcpy ((void *) info.blockaddr, p, info.size); if (info.desc) +#ifdef MC_ALLOC + pdump_reloc_one_mc ((void *) info.blockaddr, info.desc); +#else /* not MC_ALLOC */ pdump_reloc_one ((void *) info.blockaddr, delta, info.desc); +#endif /* not MC_ALLOC */ p += info.size; } +#ifndef MC_ALLOC /* Relocate the heap objects */ pdump_rt_list = p; count = 2; @@ -1873,6 +2277,7 @@ else if (!(--count)) break; } +#endif /* not MC_ALLOC */ /* Put the pdump_root_lisp_objects variables in place */ i = PDUMP_READ_ALIGNED (p, Elemcount); @@ -1882,7 +2287,12 @@ pdump_static_Lisp_Object obj = PDUMP_READ (p, pdump_static_Lisp_Object); if (POINTER_TYPE_P (XTYPE (obj.value))) - obj.value = wrap_pointer_1 ((Rawbyte *) XPNTR (obj.value) + delta); +#ifdef MC_ALLOC + obj.value = wrap_pointer_1 ((Rawbyte *) pdump_get_mc_addr + (XPNTR (obj.value))); +#else /* not MC_ALLOC */ + obj.value = wrap_pointer_1 ((Rawbyte *) XPNTR (obj.value) + delta); +#endif /* not MC_ALLOC */ (* obj.address) = obj.value; } @@ -1906,6 +2316,10 @@ p += sizeof (Lisp_Object) * rt.count; } +#ifdef MC_ALLOC + xfree (pdump_mc_hash, mc_addr_elt *); +#endif /* MC_ALLOC */ + return 1; } @@ -2067,6 +2481,7 @@ return 1; } +#ifdef DUMP_IN_EXEC static int pdump_ram_try (void) { @@ -2075,6 +2490,7 @@ return pdump_load_check (); } +#endif #endif /* !WIN32_NATIVE */ @@ -2158,12 +2574,14 @@ Wexttext *w; const Wexttext *dir, *p; +#ifdef DUMP_IN_EXEC if (pdump_ram_try ()) { pdump_load_finish (); in_pdump = 0; return 1; } +#endif in_pdump = 1; dir = argv0; @@ -2240,6 +2658,9 @@ { pdump_load_finish (); in_pdump = 0; +#ifdef MC_ALLOC + pdump_free (); +#endif /* MC_ALLOC */ return 1; } @@ -2250,6 +2671,9 @@ { pdump_load_finish (); in_pdump = 0; +#ifdef MC_ALLOC + pdump_free (); +#endif /* MC_ALLOC */ return 1; } pdump_free (); diff --text -u 'xemacs-21.5.20/src/dumper.h' 'xemacs-21.5.21/src/dumper.h' Index: ./src/dumper.h --- ./src/dumper.h Tue Feb 15 12:17:07 2005 +++ ./src/dumper.h Sat Apr 9 08:11:23 2005 @@ -27,7 +27,9 @@ BEGIN_C_DECLS +#ifndef MC_ALLOC void pdump_objects_unmark (void); +#endif /* not MC_ALLOC */ void pdump (void); int pdump_load (const Wexttext *argv0); void pdump_backtrace (void); diff --text -u 'xemacs-21.5.20/src/elhash.c' 'xemacs-21.5.21/src/elhash.c' Index: ./src/elhash.c --- ./src/elhash.c Thu Mar 10 18:12:38 2005 +++ ./src/elhash.c Sat Apr 9 08:11:23 2005 @@ -102,7 +102,11 @@ struct Lisp_Hash_Table { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Elemcount size; Elemcount count; Elemcount rehash_count; @@ -550,7 +554,11 @@ enum hash_table_weakness weakness) { Lisp_Object hash_table; +#ifdef MC_ALLOC + Lisp_Hash_Table *ht = alloc_lrecord_type (Lisp_Hash_Table, &lrecord_hash_table); +#else /* not MC_ALLOC */ Lisp_Hash_Table *ht = alloc_lcrecord_type (Lisp_Hash_Table, &lrecord_hash_table); +#endif /* not MC_ALLOC */ ht->test_function = test_function; ht->hash_function = hash_function; @@ -967,9 +975,14 @@ (hash_table)) { const Lisp_Hash_Table *ht_old = xhash_table (hash_table); - Lisp_Hash_Table *ht = alloc_lcrecord_type (Lisp_Hash_Table, &lrecord_hash_table); +#ifdef MC_ALLOC + Lisp_Hash_Table *ht = alloc_lrecord_type (Lisp_Hash_Table, &lrecord_hash_table); + copy_lrecord (ht, ht_old); +#else /* not MC_ALLOC */ + Lisp_Hash_Table *ht = alloc_lcrecord_type (Lisp_Hash_Table, &lrecord_hash_table); copy_lcrecord (ht, ht_old); +#endif /* not MC_ALLOC */ ht->hentries = xnew_array (htentry, ht_old->size + 1); memcpy (ht->hentries, ht_old->hentries, (ht_old->size + 1) * sizeof (htentry)); diff --text -u 'xemacs-21.5.20/src/emacs.c' 'xemacs-21.5.21/src/emacs.c' Index: ./src/emacs.c --- ./src/emacs.c Tue Feb 22 16:16:16 2005 +++ ./src/emacs.c Sun Apr 10 09:47:57 2005 @@ -456,9 +456,11 @@ #include "console-msw.h" #endif +#ifdef DUMP_IN_EXEC #ifndef WIN32_NATIVE #include "dump-data.h" #endif +#endif /* For PATH_EXEC */ #include @@ -909,6 +911,21 @@ display_use = 0; inhibit_non_essential_conversion_operations = 1; +#ifdef MC_ALLOC +#ifndef PDUMP + if (!initialized) +#endif + { + if (!restart) + { + init_mc_allocator (); +#ifdef MC_ALLOC_TYPE_STATS + init_lrecord_stats (); +#endif /* not MC_ALLOC_TYPE_STATS */ + } + } +#endif /* MC_ALLOC */ + #ifdef NeXT /* 19-Jun-1995 -baw * NeXT secret magic, ripped from Emacs-for-NS by Carl Edman @@ -1003,10 +1020,10 @@ alignment and max size of the inline data and quit */ if (argmatch (argv, argc, "-si", "--show-inline-info", 0, NULL, &skip_args)) { -#if defined (PDUMP) && !defined (WIN32_NATIVE) +#if defined (PDUMP) && defined (DUMP_IN_EXEC) && !defined (WIN32_NATIVE) printf ("%u %u\n", dumped_data_max_size (), dumped_data_align_offset ()); #else - printf ("Portable dumper not configured or windows native; -si just forces exit.\n"); + printf ("Portable dumper not configured for dumping into executable or windows native; -si just forces exit.\n"); #endif exit (0); } @@ -1424,6 +1441,9 @@ syms_of_abbrev (); syms_of_alloc (); +#ifdef MC_ALLOC + syms_of_mc_alloc (); +#endif /* MC_ALLOC */ syms_of_buffer (); syms_of_bytecode (); syms_of_callint (); @@ -1831,7 +1851,9 @@ { reinit_alloc_early (); reinit_symbols_early (); +#ifndef MC_ALLOC reinit_opaque_early (); +#endif /* not MC_ALLOC */ reinit_eistring_early (); reinit_console_type_create_stream (); @@ -2244,7 +2266,9 @@ reinit_vars_of_glyphs_widget (); reinit_vars_of_insdel (); reinit_vars_of_lread (); +#ifndef MC_ALLOC reinit_vars_of_lstream (); +#endif /* not MC_ALLOC */ reinit_vars_of_minibuf (); #ifdef HAVE_SHLIB reinit_vars_of_module (); @@ -3169,7 +3193,9 @@ fflush (stdout); disksave_object_finalization (); +#ifndef MC_ALLOC release_breathing_space (); +#endif /* not MC_ALLOC */ /* Tell malloc where start of impure now is */ /* Also arrange for warnings when nearly out of space. */ diff --text -u 'xemacs-21.5.20/src/eval.c' 'xemacs-21.5.21/src/eval.c' Index: ./src/eval.c --- ./src/eval.c Fri Feb 4 01:30:36 2005 +++ ./src/eval.c Mon Apr 11 14:11:24 2005 @@ -4911,7 +4911,7 @@ emacs_sprintf_string_lisp ("%s: Attempt to throw outside of function:" "To catch `%s' with value `%s'\n\nBacktrace follows:\n\n%s", - Qnil, 3, + Qnil, 4, build_msg_string (warning_string ? warning_string : "error"), p->thrown_tag, p->thrown_value, p->backtrace); warn_when_safe_lispobj (Qerror, current_warning_level (), errstr); diff --text -u 'xemacs-21.5.20/src/event-Xt.c' 'xemacs-21.5.21/src/event-Xt.c' Index: ./src/event-Xt.c --- ./src/event-Xt.c Tue Jan 25 08:33:52 2005 +++ ./src/event-Xt.c Tue Mar 29 11:59:21 2005 @@ -71,6 +71,8 @@ extern int mswindows_is_blocking; #endif +EXFUN (Funicode_to_char, 2); /* In unicode.c. */ + /* used in glyphs-x.c */ void enqueue_focus_event (Widget wants_it, Lisp_Object frame, int in_p); static void handle_focus_event_1 (struct frame *f, int in_p); @@ -201,6 +203,15 @@ if ((keysym & 0xff) < 0xa0) return Qnil; + /* The spec says keysyms in the range #x01000100 to #x0110FFFF and + only those should correspond directly to Unicode code points, in + the range #x100-#x10FFFF; actual implementations can have the Latin + 1 code points do the same thing with keysyms + #x010000A0-#x01000100. Oops. */ + + if (keysym >= 0x010000A0 && keysym <= 0x0110FFFF) + return Funicode_to_char (make_int(keysym & 0xffffff), Qnil); + switch (keysym >> 8) { case 0: /* ASCII + Latin1 */ diff --text -u 'xemacs-21.5.20/src/event-stream.c' 'xemacs-21.5.21/src/event-stream.c' Index: ./src/event-stream.c --- ./src/event-stream.c Tue Jan 25 08:33:53 2005 +++ ./src/event-stream.c Sat Apr 9 08:11:23 2005 @@ -331,7 +331,9 @@ #define CHECK_COMMAND_BUILDER(x) CHECK_RECORD (x, command_builder) #define CONCHECK_COMMAND_BUILDER(x) CONCHECK_RECORD (x, command_builder) +#ifndef MC_ALLOC static Lisp_Object Vcommand_builder_free_list; +#endif /* not MC_ALLOC */ static const struct memory_description command_builder_description [] = { { XD_LISP_OBJECT, offsetof (struct command_builder, current_events) }, @@ -389,7 +391,12 @@ allocate_command_builder (Lisp_Object console, int with_echo_buf) { Lisp_Object builder_obj = +#ifdef MC_ALLOC + wrap_pointer_1 (alloc_lrecord_type (struct command_builder, + &lrecord_command_builder)); +#else /* not MC_ALLOC */ alloc_managed_lcrecord (Vcommand_builder_free_list); +#endif /* not MC_ALLOC */ struct command_builder *builder = XCOMMAND_BUILDER (builder_obj); builder->console = console; @@ -458,8 +465,12 @@ xfree (builder->echo_buf, Ibyte *); builder->echo_buf = NULL; } +#ifdef MC_ALLOC + free_lrecord (wrap_command_builder (builder)); +#else /* not MC_ALLOC */ free_managed_lcrecord (Vcommand_builder_free_list, wrap_command_builder (builder)); +#endif /* not MC_ALLOC */ } static void @@ -1022,7 +1033,9 @@ static Lisp_Object pending_timeout_list, pending_async_timeout_list; +#ifndef MC_ALLOC static Lisp_Object Vtimeout_free_list; +#endif /* not MC_ALLOC */ static Lisp_Object mark_timeout (Lisp_Object obj) @@ -1051,7 +1064,12 @@ Lisp_Object function, Lisp_Object object, int async_p) { +#ifdef MC_ALLOC + Lisp_Object op = + wrap_pointer_1 (alloc_lrecord_type (Lisp_Timeout, &lrecord_timeout)); +#else /* not MC_ALLOC */ Lisp_Object op = alloc_managed_lcrecord (Vtimeout_free_list); +#endif /* not MC_ALLOC */ Lisp_Timeout *timeout = XTIMEOUT (op); EMACS_TIME current_time; EMACS_TIME interval; @@ -1169,7 +1187,11 @@ *timeout_list = noseeum_cons (op, *timeout_list); } else +#ifdef MC_ALLOC + free_lrecord (op); +#else /* not MC_ALLOC */ free_managed_lcrecord (Vtimeout_free_list, op); +#endif /* not MC_ALLOC */ UNGCPRO; return id; @@ -1206,7 +1228,11 @@ signal_remove_async_interval_timeout (timeout->interval_id); else event_stream_remove_timeout (timeout->interval_id); +#ifdef MC_ALLOC + free_lrecord (op); +#else /* not MC_ALLOC */ free_managed_lcrecord (Vtimeout_free_list, op); +#endif /* not MC_ALLOC */ } } @@ -4743,6 +4769,7 @@ recent_keys_ring_index = 0; recent_keys_ring_size = 100; num_input_chars = 0; +#ifndef MC_ALLOC Vtimeout_free_list = make_lcrecord_list (sizeof (Lisp_Timeout), &lrecord_timeout); staticpro_nodump (&Vtimeout_free_list); @@ -4750,6 +4777,7 @@ make_lcrecord_list (sizeof (struct command_builder), &lrecord_command_builder); staticpro_nodump (&Vcommand_builder_free_list); +#endif /* not MC_ALLOC */ the_low_level_timeout_blocktype = Blocktype_new (struct low_level_timeout_blocktype); something_happened = 0; diff --text -u 'xemacs-21.5.20/src/events.h' 'xemacs-21.5.21/src/events.h' Index: ./src/events.h --- ./src/events.h Fri Nov 5 08:06:27 2004 +++ ./src/events.h Sat Apr 9 08:11:24 2005 @@ -639,7 +639,11 @@ struct Lisp_Timeout { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ int id; /* Id we use to identify the timeout over its lifetime */ int interval_id; /* Id for this particular interval; this may be different each time the timeout is @@ -1088,7 +1092,11 @@ */ struct command_builder { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object console; /* back pointer to the console this command builder is for */ #if 0 diff --text -u 'xemacs-21.5.20/src/extents-impl.h' 'xemacs-21.5.21/src/extents-impl.h' Index: ./src/extents-impl.h --- ./src/extents-impl.h Fri Jun 21 06:18:30 2002 +++ ./src/extents-impl.h Sat Apr 9 08:11:24 2005 @@ -103,7 +103,11 @@ typedef struct extent_auxiliary extent_auxiliary; struct extent_auxiliary { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object begin_glyph; Lisp_Object end_glyph; @@ -129,7 +133,11 @@ struct extent_info { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ struct extent_list *extents; struct stack_of_extents *soe; diff --text -u 'xemacs-21.5.20/src/extents.c' 'xemacs-21.5.21/src/extents.c' Index: ./src/extents.c --- ./src/extents.c Fri Feb 4 01:14:06 2005 +++ ./src/extents.c Wed May 11 02:21:54 2005 @@ -986,10 +986,17 @@ allocate_extent_auxiliary (EXTENT ext) { Lisp_Object extent_aux; +#ifdef MC_ALLOC + struct extent_auxiliary *data = + alloc_lrecord_type (struct extent_auxiliary, &lrecord_extent_auxiliary); + + copy_lrecord (data, &extent_auxiliary_defaults); +#else /* not MC_ALLOC */ struct extent_auxiliary *data = alloc_lcrecord_type (struct extent_auxiliary, &lrecord_extent_auxiliary); copy_lcrecord (data, &extent_auxiliary_defaults); +#endif /* not MC_ALLOC */ extent_aux = wrap_extent_auxiliary (data); ext->plist = Fcons (extent_aux, ext->plist); ext->flags.has_aux = 1; @@ -1167,7 +1174,11 @@ { Lisp_Object extent_info; struct extent_info *data = +#ifdef MC_ALLOC + alloc_lrecord_type (struct extent_info, &lrecord_extent_info); +#else /* not MC_ALLOC */ alloc_lcrecord_type (struct extent_info, &lrecord_extent_info); +#endif /* not MC_ALLOC */ extent_info = wrap_extent_info (data); data->extents = allocate_extent_list (); @@ -3898,11 +3909,19 @@ /* also need to copy the aux struct. It won't work for this extent to share the same aux struct as the original one. */ +#ifdef MC_ALLOC + struct extent_auxiliary *data = + alloc_lrecord_type (struct extent_auxiliary, + &lrecord_extent_auxiliary); + + copy_lrecord (data, XEXTENT_AUXILIARY (XCAR (original->plist))); +#else /* not MC_ALLOC */ struct extent_auxiliary *data = alloc_lcrecord_type (struct extent_auxiliary, &lrecord_extent_auxiliary); copy_lcrecord (data, XEXTENT_AUXILIARY (XCAR (original->plist))); +#endif /* not MC_ALLOC */ XCAR (e->plist) = wrap_extent_auxiliary (data); } @@ -5437,6 +5456,7 @@ Change a property of an extent. PROPERTY may be any symbol; the value stored may be accessed with the `extent-property' function. + The following symbols have predefined meanings: detached Removes the extent from its buffer; setting this is @@ -5576,11 +5596,23 @@ end-glyph-layout The layout policy of the extent's end glyph. syntax-table A cons or a syntax table object. If a cons, the car must - be an integer (interpreted as a syntax code, applicable to - all characters in the extent). Otherwise, syntax of - characters in the extent is looked up in the syntax table. - You should use the text property API to manipulate this - property. (This may be required in the future.) + be an integer (interpreted as a syntax code, applicable + to all characters in the extent). Otherwise, syntax of + characters in the extent is looked up in the syntax + table. You should use the text property API to + manipulate this property. (This may be required in the + future.) + +The following property is available if `atomic-extents.el'--part of the +`edit-utils' package--has been loaded: + + atomic When set, point will never fall inside the extent. + Not as useful as you might think, as + `delete-backward-char' still removes characters one by + one. This property as currently implemented is a + kludge, and be prepared for it to go away if and when we + implement something better. + */ (extent, property, value)) { diff --text -u 'xemacs-21.5.20/src/faces.c' 'xemacs-21.5.21/src/faces.c' Index: ./src/faces.c --- ./src/faces.c Tue Jan 25 08:33:54 2005 +++ ./src/faces.c Sat Apr 9 08:11:24 2005 @@ -371,7 +371,11 @@ static Lisp_Face * allocate_face (void) { +#ifdef MC_ALLOC + Lisp_Face *result = alloc_lrecord_type (Lisp_Face, &lrecord_face); +#else /* not MC_ALLOC */ Lisp_Face *result = alloc_lcrecord_type (Lisp_Face, &lrecord_face); +#endif /* not MC_ALLOC */ reset_face (result); return result; diff --text -u 'xemacs-21.5.20/src/faces.h' 'xemacs-21.5.21/src/faces.h' Index: ./src/faces.h --- ./src/faces.h Fri Mar 29 13:47:31 2002 +++ ./src/faces.h Sat Apr 9 08:11:25 2005 @@ -33,7 +33,11 @@ struct Lisp_Face { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object name; Lisp_Object doc_string; diff --text -u 'xemacs-21.5.20/src/file-coding.c' 'xemacs-21.5.21/src/file-coding.c' Index: ./src/file-coding.c --- ./src/file-coding.c Fri Feb 4 01:14:06 2005 +++ ./src/file-coding.c Sat Apr 9 08:11:25 2005 @@ -698,8 +698,13 @@ { Bytecount total_size = offsetof (Lisp_Coding_System, data) + data_size; Lisp_Coding_System *codesys = +#ifdef MC_ALLOC + (Lisp_Coding_System *) alloc_lrecord (total_size, + &lrecord_coding_system); +#else /* not MC_ALLOC */ (Lisp_Coding_System *) basic_alloc_lcrecord (total_size, &lrecord_coding_system); +#endif /* not MC_ALLOC */ codesys->methods = codesys_meths; #define MARKED_SLOT(x) codesys->x = Qnil; @@ -1404,7 +1409,11 @@ { Lisp_Coding_System *to = XCODING_SYSTEM (new_coding_system); Lisp_Coding_System *from = XCODING_SYSTEM (old_coding_system); +#ifdef MC_ALLOC + copy_sized_lrecord (to, from, sizeof_coding_system (from)); +#else /* not MC_ALLOC */ copy_sized_lcrecord (to, from, sizeof_coding_system (from)); +#endif /* not MC_ALLOC */ to->name = new_name; } return new_coding_system; diff --text -u 'xemacs-21.5.20/src/file-coding.h' 'xemacs-21.5.21/src/file-coding.h' Index: ./src/file-coding.h --- ./src/file-coding.h Fri Nov 5 08:06:28 2004 +++ ./src/file-coding.h Sat Apr 9 08:11:25 2005 @@ -188,7 +188,11 @@ struct Lisp_Coding_System { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ struct coding_system_methods *methods; #define CODING_SYSTEM_SLOT_DECLARATION diff --text -u 'xemacs-21.5.20/src/fns.c' 'xemacs-21.5.21/src/fns.c' Index: ./src/fns.c --- ./src/fns.c Tue Jan 25 08:33:55 2005 +++ ./src/fns.c Sat Apr 9 08:11:26 2005 @@ -2959,8 +2959,8 @@ Ibyte *end; CHECK_CHAR_COERCE_INT (item); - CHECK_LISP_WRITEABLE (array); + CHECK_LISP_WRITEABLE (array); sledgehammer_check_ascii_begin (array); item_bytecount = set_itext_ichar (item_buf, XCHAR (item)); new_bytecount = item_bytecount * (Bytecount) string_char_length (array); diff --text -u 'xemacs-21.5.20/src/frame-impl.h' 'xemacs-21.5.21/src/frame-impl.h' Index: ./src/frame-impl.h --- ./src/frame-impl.h Sun Jan 12 20:08:16 2003 +++ ./src/frame-impl.h Sat Apr 9 08:11:26 2005 @@ -41,7 +41,11 @@ struct frame { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* Methods for this frame's console. This can also be retrieved through frame->device->console, but it's faster this way. */ diff --text -u 'xemacs-21.5.20/src/frame-x.c' 'xemacs-21.5.21/src/frame-x.c' Index: ./src/frame-x.c --- ./src/frame-x.c Tue Jan 25 08:33:56 2005 +++ ./src/frame-x.c Wed Apr 27 18:01:48 2005 @@ -67,6 +67,7 @@ /* Default properties to use when creating frames. */ Lisp_Object Vdefault_x_frame_plist; +Lisp_Object Qoverride_redirect; Lisp_Object Qx_resource_name; static const struct memory_description x_frame_data_description_1 [] = { @@ -1464,8 +1465,8 @@ Widget app_shell = XtParent (wmshell); Widget ew = FRAME_X_TEXT_WIDGET (f); -/* set the position of the frame's root window now. When the - frame was created, the position was initialized to (0,0). */ + /* set the position of the frame's root window now. When the + frame was created, the position was initialized to (0,0). */ { struct window *win = XWINDOW (f->root_window); @@ -1770,13 +1771,15 @@ /* Creates the widgets for a frame. lisp_window_id is a Lisp description of an X window or Xt widget to parse. + parent is a frame to use as the parent. + overridep if non-nil says to set the override-redirect setting. This function does not create or map the windows. (That is done by x_popup_frame().) */ static void x_create_widgets (struct frame *f, Lisp_Object lisp_window_id, - Lisp_Object parent) + Lisp_Object parent, Lisp_Object overridep) { struct device *d = XDEVICE (f->device); Visual *visual = DEVICE_X_VISUAL (d); @@ -1874,6 +1877,12 @@ XtSetArg (al[ac], XtNcolormap, cmap); ac++; } + if (!NILP (overridep)) + { + XtSetArg (al[ac], XtNoverrideRedirect, True); ac++; + } + + /* #### maybe we should check for FRAMEP instead? */ if (!NILP (parent)) { parentwid = FRAME_X_SHELL_WIDGET (XFRAME (parent)); @@ -2085,6 +2094,7 @@ Lisp_Object device = FRAME_DEVICE (f); Lisp_Object lisp_window_id = Fplist_get (props, Qwindow_id, Qnil); Lisp_Object popup = Fplist_get (props, Qpopup, Qnil); + Lisp_Object overridep = Fplist_get (props, Qoverride_redirect, Qnil); if (!NILP (popup)) { @@ -2109,7 +2119,7 @@ f->visible = 1; allocate_x_frame_struct (f); - x_create_widgets (f, lisp_window_id, popup); + x_create_widgets (f, lisp_window_id, popup, overridep); } static void @@ -2710,6 +2720,7 @@ void syms_of_frame_x (void) { + DEFSYMBOL (Qoverride_redirect); DEFSYMBOL (Qx_resource_name); DEFSUBR (Fx_window_id); @@ -2800,6 +2811,10 @@ doing different things (e.g. not asking for positioning, and not iconifying separate from its parent). + override-redirect If non-nil, the frame will not be subject to + window-manager control. In particular, it + will lack decorations, for more attractive + appearance of balloon help, aka tooltips. inter-line-space Not currently implemented. toolbar-shadow-thickness Thickness of toolbar shadows. background-toolbar-color Color of toolbar background. diff --text -u 'xemacs-21.5.20/src/frame.c' 'xemacs-21.5.21/src/frame.c' Index: ./src/frame.c --- ./src/frame.c Fri Feb 4 01:30:36 2005 +++ ./src/frame.c Wed Apr 27 18:01:48 2005 @@ -37,6 +37,7 @@ #include "glyphs.h" #include "gutter.h" #include "menubar.h" +#include "process.h" /* for egetenv */ #include "redisplay.h" #include "scrollbar.h" #include "toolbar.h" @@ -258,7 +259,11 @@ static void nuke_all_frame_slots (struct frame *f) { +#ifdef MC_ALLOC + zero_lrecord (f); +#else /* not MC_ALLOC */ zero_lcrecord (f); +#endif /* not MC_ALLOC */ #define MARKED_SLOT(x) f->x = Qnil; #include "frameslots.h" @@ -274,7 +279,11 @@ /* This function can GC */ Lisp_Object frame; Lisp_Object root_window; +#ifdef MC_ALLOC + struct frame *f = alloc_lrecord_type (struct frame, &lrecord_frame); +#else /* not MC_ALLOC */ struct frame *f = alloc_lcrecord_type (struct frame, &lrecord_frame); +#endif /* not MC_ALLOC */ nuke_all_frame_slots (f); frame = wrap_frame (f); @@ -492,10 +501,28 @@ CHECK_STRING (name); frame_name_is_defaulted = 0; } - else if (STRINGP (Vdefault_frame_name)) - name = Vdefault_frame_name; - else - name = build_string ("emacs"); + else if (!initialized) + { + /* We leave Vdefault_frame_name alone here so that it'll remain Qnil + in the dumped executable, and we can choose it at runtime. */ + name = build_string("XEmacs"); + } + else if (NILP (Vdefault_frame_name)) + { + if (egetenv ("USE_EMACS_AS_DEFAULT_APPLICATION_CLASS")) + { + Vdefault_frame_name = build_string ("emacs"); + } + else + { + Vdefault_frame_name = build_string ("XEmacs"); + } + } + + if (NILP(name) && STRINGP(Vdefault_frame_name)) + { + name = Vdefault_frame_name; + } if (!NILP (Fstring_match (make_string ((const Ibyte *) "\\.", 2), name, Qnil, Qnil))) @@ -3815,12 +3842,14 @@ This can be overridden by arguments to `make-frame'. This must be a string. This is used primarily for picking up X resources, and is *not* the title of the frame. (See `frame-title-format'.) + +Previous to 21.5.21, this defaulted to `emacs'; since that release, it has +defaulted to `XEmacs'. In the short term you can restore the old default by +setting the environment variable USE_EMACS_AS_DEFAULT_APPLICATION_CLASS +(which does affect the frame name, despite what it's called) to some value +before starting XEmacs, but this is deprecated. */ ); -#ifndef INFODOCK - Vdefault_frame_name = build_string ("emacs"); -#else - Vdefault_frame_name = build_string ("InfoDock"); -#endif + Vdefault_frame_name = Qnil; DEFVAR_LISP ("default-frame-plist", &Vdefault_frame_plist /* Plist of default values for frame creation, other than the first one. @@ -3828,23 +3857,23 @@ \(setq default-frame-plist '(width 80 height 55)) +Predefined properties are described in `set-frame-properties'. + The properties may be in alist format for backward compatibility but you should not rely on this behavior. These override values given in window system configuration data, - including X Windows' defaults database. +including X Windows' defaults database. -Since the first X frame is created before loading your .emacs file, -you must use the X resource database for that. +Values for the first Emacs frame are taken from `initial-frame-plist'. +Since the first X frame is created before loading your .emacs file, you +may wish use the X resource database to avoid flashing. -For values specific to the first Emacs frame, see `initial-frame-plist'. For values specific to the separate minibuffer frame, see - `minibuffer-frame-plist'. - -See also the variables `default-x-frame-plist' and -`default-tty-frame-plist', which are like `default-frame-plist' -except that they apply only to X or tty frames, respectively -\(whereas `default-frame-plist' applies to all types of frames). +`minibuffer-frame-plist'. See also the variables `default-x-frame-plist' +and `default-tty-frame-plist', which are like `default-frame-plist' +except that they apply only to X or tty frames, respectively \(whereas +`default-frame-plist' applies to all types of frames). */ ); Vdefault_frame_plist = Qnil; diff --text -u 'xemacs-21.5.20/src/glyphs.c' 'xemacs-21.5.21/src/glyphs.c' Index: ./src/glyphs.c --- ./src/glyphs.c Fri Feb 4 01:14:06 2005 +++ ./src/glyphs.c Sat Apr 9 08:11:26 2005 @@ -1310,7 +1310,11 @@ Lisp_Object instantiator) { Lisp_Image_Instance *lp = +#ifdef MC_ALLOC + alloc_lrecord_type (Lisp_Image_Instance, &lrecord_image_instance); +#else /* not MC_ALLOC */ alloc_lcrecord_type (Lisp_Image_Instance, &lrecord_image_instance); +#endif /* not MC_ALLOC */ Lisp_Object val; /* It's not possible to simply keep a record of the domain in which @@ -1976,7 +1980,11 @@ device-specific method to copy the window-system subobject. */ new = allocate_image_instance (XIMAGE_INSTANCE_DOMAIN (image_instance), Qnil, Qnil); +#ifdef MC_ALLOC + copy_lrecord (XIMAGE_INSTANCE (new), XIMAGE_INSTANCE (image_instance)); +#else /* not MC_ALLOC */ copy_lcrecord (XIMAGE_INSTANCE (new), XIMAGE_INSTANCE (image_instance)); +#endif /* not MC_ALLOC */ /* note that if this method returns non-zero, this method MUST copy any window-system resources, so that when one image instance is freed, the other one is not hosed. */ @@ -3789,7 +3797,11 @@ { /* This function can GC */ Lisp_Object obj = Qnil; +#ifdef MC_ALLOC + Lisp_Glyph *g = alloc_lrecord_type (Lisp_Glyph, &lrecord_glyph); +#else /* not MC_ALLOC */ Lisp_Glyph *g = alloc_lcrecord_type (Lisp_Glyph, &lrecord_glyph); +#endif /* not MC_ALLOC */ g->type = type; g->image = Fmake_specifier (Qimage); /* This function can GC */ diff --text -u 'xemacs-21.5.20/src/glyphs.h' 'xemacs-21.5.21/src/glyphs.h' Index: ./src/glyphs.h --- ./src/glyphs.h Fri Nov 5 08:06:34 2004 +++ ./src/glyphs.h Sat Apr 9 08:11:27 2005 @@ -594,7 +594,11 @@ struct Lisp_Image_Instance { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object domain; /* The domain in which we were cached. */ Lisp_Object device; /* The device of the domain. Recorded since the domain may get deleted @@ -946,7 +950,11 @@ struct Lisp_Glyph { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ enum glyph_type type; diff --text -u 'xemacs-21.5.20/src/gpmevent.c' 'xemacs-21.5.21/src/gpmevent.c' Index: ./src/gpmevent.c --- ./src/gpmevent.c Tue Sep 21 04:19:47 2004 +++ ./src/gpmevent.c Sat Apr 9 08:11:27 2005 @@ -59,6 +59,10 @@ static Lisp_Object gpm_event_queue; static Lisp_Object gpm_event_queue_tail; +#ifdef MC_ALLOC +static Lisp_Object MC_ALLOC_Freceive_gpm_event; +#endif /* MC_ALLOC */ + struct __gpm_state { int gpm_tried; @@ -593,7 +597,11 @@ { rval = 0; Fprocess_kill_without_query (gpm_process, Qnil); +#ifdef MC_ALLOC + gpm_filter = MC_ALLOC_Freceive_gpm_event; +#else /* not MC_ALLOC */ gpm_filter = wrap_subr (&SFreceive_gpm_event); +#endif /* not MC_ALLOC */ set_process_filter (gpm_process, gpm_filter, 1, 0); /* Keep track of the device for later */ @@ -621,7 +629,17 @@ void syms_of_gpmevent (void) { +#ifdef MC_ALLOC +#define DEFSUBR_receive_gpm_event(Fname) \ +do { \ + DEFSUBR_MC_ALLOC (Fname); \ + defsubr (S##Fname); \ + MC_ALLOC_Freceive_gpm_event = wrap_subr (S##Fname); \ +} while (0) + DEFSUBR_receive_gpm_event (Freceive_gpm_event); +#else /* not MC_ALLOC */ DEFSUBR (Freceive_gpm_event); +#endif /* not MC_ALLOC */ DEFSUBR (Fgpm_enable); DEFSUBR (Fgpm_enabled_p); } diff --text -u 'xemacs-21.5.20/src/gui.c' 'xemacs-21.5.21/src/gui.c' Index: ./src/gui.c --- ./src/gui.c Fri Nov 5 08:06:35 2004 +++ ./src/gui.c Sat Apr 9 08:11:27 2005 @@ -197,7 +197,11 @@ Lisp_Object allocate_gui_item (void) { +#ifdef MC_ALLOC + Lisp_Gui_Item *lp = alloc_lrecord_type (Lisp_Gui_Item, &lrecord_gui_item); +#else /* not MC_ALLOC */ Lisp_Gui_Item *lp = alloc_lcrecord_type (Lisp_Gui_Item, &lrecord_gui_item); +#endif /* not MC_ALLOC */ Lisp_Object val; val = wrap_gui_item (lp); diff --text -u 'xemacs-21.5.20/src/gui.h' 'xemacs-21.5.21/src/gui.h' Index: ./src/gui.h --- ./src/gui.h Wed Feb 18 00:20:57 2004 +++ ./src/gui.h Sat Apr 9 08:11:27 2005 @@ -44,7 +44,11 @@ menu item or submenu properties */ struct Lisp_Gui_Item { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object name; /* String */ Lisp_Object callback; /* Symbol or form */ Lisp_Object callback_ex; /* Form taking context arguments */ diff --text -u 'xemacs-21.5.20/src/intl-win32.c' 'xemacs-21.5.21/src/intl-win32.c' Index: ./src/intl-win32.c --- ./src/intl-win32.c Tue Jan 25 08:34:00 2005 +++ ./src/intl-win32.c Sun Mar 13 18:21:04 2005 @@ -1972,8 +1972,9 @@ Bytecount src_size, int to_unicode, int cp) { alloca_convert_vals vals; - - assert (find_pos_of_existing_active_alloca_convert (srctext) < 0); + + int pos = find_pos_of_existing_active_alloca_convert (srctext); + assert (pos < 0); vals.srctext = srctext; diff --text -u 'xemacs-21.5.20/src/keymap.c' 'xemacs-21.5.21/src/keymap.c' Index: ./src/keymap.c --- ./src/keymap.c Tue Jan 25 08:34:01 2005 +++ ./src/keymap.c Sat Apr 9 08:11:27 2005 @@ -148,7 +148,11 @@ struct Lisp_Keymap { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object parents; /* Keymaps to be searched after this one. An ordered list */ Lisp_Object prompt; /* Qnil or a string to print in the minibuffer @@ -756,7 +760,11 @@ make_keymap (Elemcount size) { Lisp_Object result; +#ifdef MC_ALLOC + Lisp_Keymap *keymap = alloc_lrecord_type (Lisp_Keymap, &lrecord_keymap); +#else /* not MC_ALLOC */ Lisp_Keymap *keymap = alloc_lcrecord_type (Lisp_Keymap, &lrecord_keymap); +#endif /* not MC_ALLOC */ result = wrap_keymap (keymap); diff --text -u 'xemacs-21.5.20/src/lisp.h' 'xemacs-21.5.21/src/lisp.h' Index: ./src/lisp.h --- ./src/lisp.h Thu Mar 10 18:12:38 2005 +++ ./src/lisp.h Sat Apr 9 08:11:28 2005 @@ -1750,8 +1750,13 @@ #define CHECK_CONS(x) CHECK_RECORD (x, cons) #define CONCHECK_CONS(x) CONCHECK_RECORD (x, cons) +#ifdef MC_ALLOC +#define CONS_MARKED_P(c) MARKED_P (&((c)->lheader)) +#define MARK_CONS(c) MARK (&((c)->lheader)) +#else /* not MC_ALLOC */ #define CONS_MARKED_P(c) MARKED_RECORD_HEADER_P(&((c)->lheader)) #define MARK_CONS(c) MARK_RECORD_HEADER (&((c)->lheader)) +#endif /* not MC_ALLOC */ extern MODULE_API Lisp_Object Qnil; @@ -2283,12 +2288,20 @@ /* WARNING: Everything before ascii_begin must agree exactly with struct lrecord_header */ unsigned int type :8; +#ifdef MC_ALLOC + unsigned int lisp_readonly :1; + unsigned int free :1; + /* Number of chars at beginning of string that are one byte in length + (byte_ascii_p) */ + unsigned int ascii_begin :22; +#else /* not MC_ALLOC */ unsigned int mark :1; unsigned int c_readonly :1; unsigned int lisp_readonly :1; /* Number of chars at beginning of string that are one byte in length (byte_ascii_p) */ unsigned int ascii_begin :21; +#endif /* not MC_ALLOC */ } v; } u; Bytecount size_; @@ -2355,7 +2368,11 @@ struct Lisp_Vector { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ long size; Lisp_Object contents[1]; }; @@ -2392,7 +2409,11 @@ struct Lisp_Bit_Vector { +#ifdef MC_ALLOC + struct lrecord_header lheader; +#else /* MC_ALLOC */ struct lcrecord_header lheader; +#endif /* MC_ALLOC */ Elemcount size; unsigned long bits[1]; }; @@ -2696,13 +2717,16 @@ /*--------------------------- readonly objects -------------------------*/ +#ifndef MC_ALLOC #define CHECK_C_WRITEABLE(obj) \ do { if (c_readonly (obj)) c_write_error (obj); } while (0) +#define C_READONLY(obj) (C_READONLY_RECORD_HEADER_P(XRECORD_LHEADER (obj))) +#endif /* not MC_ALLOC */ + #define CHECK_LISP_WRITEABLE(obj) \ do { if (lisp_readonly (obj)) lisp_write_error (obj); } while (0) -#define C_READONLY(obj) (C_READONLY_RECORD_HEADER_P(XRECORD_LHEADER (obj))) #define LISP_READONLY(obj) (LISP_READONLY_RECORD_HEADER_P(XRECORD_LHEADER (obj))) /*----------------------------- structures ----------------------------*/ @@ -2750,7 +2774,11 @@ struct weak_box { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object value; Lisp_Object next_weak_box; /* don't mark through this! */ @@ -2772,7 +2800,11 @@ struct ephemeron { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object key; @@ -2831,7 +2863,11 @@ struct weak_list { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object list; /* don't mark through this! */ enum weak_list_type type; Lisp_Object next_weak; /* don't mark through this! */ @@ -2940,6 +2976,45 @@ /* Can't be const, because then subr->doc is read-only and Snarf_documentation chokes */ +#ifdef MC_ALLOC +#define DEFUN(lname, Fname, min_args, max_args, prompt, arglist) \ + Lisp_Object Fname (EXFUN_##max_args); \ + static struct Lisp_Subr MC_ALLOC_S##Fname = \ + { \ + { /* struct lrecord_header */ \ + lrecord_type_subr, /* lrecord_type_index */ \ + 1, /* lisp_readonly bit */ \ + 0, /* free */ \ + 0 /* uid */ \ + }, \ + min_args, \ + max_args, \ + prompt, \ + 0, /* doc string */ \ + lname, \ + (lisp_fn_t) Fname \ + }; \ + Lisp_Object Fname (DEFUN_##max_args arglist) + +#define DEFUN_NORETURN(lname, Fname, min_args, max_args, prompt, arglist) \ + DECLARE_DOESNT_RETURN_TYPE (Lisp_Object, Fname (EXFUN_##max_args)); \ + static struct Lisp_Subr MC_ALLOC_S##Fname = \ + { \ + { /* struct lrecord_header */ \ + lrecord_type_subr, /* lrecord_type_index */ \ + 1, /* lisp_readonly bit */ \ + 0, /* free */ \ + 0 /* uid */ \ + }, \ + min_args, \ + max_args, \ + prompt, \ + 0, /* doc string */ \ + lname, \ + (lisp_fn_t) Fname \ + }; \ + DOESNT_RETURN_TYPE (Lisp_Object) Fname (DEFUN_##max_args arglist) +#else /* not MC_ALLOC */ #define DEFUN(lname, Fname, min_args, max_args, prompt, arglist) \ Lisp_Object Fname (EXFUN_##max_args); \ static struct Lisp_Subr S##Fname = \ @@ -2979,6 +3054,7 @@ (lisp_fn_t) Fname \ }; \ DOESNT_RETURN_TYPE (Lisp_Object) Fname (DEFUN_##max_args arglist) +#endif /* not MC_ALLOC */ /* Heavy ANSI C preprocessor hackery to get DEFUN to declare a prototype that matches max_args, and add the obligatory @@ -3483,6 +3559,18 @@ #endif +#ifdef MC_ALLOC +extern Lisp_Object_dynarr *mcpros; +#ifdef DEBUG_XEMACS +/* Help debug crashes gc-marking a mcpro'ed object. */ +MODULE_API void mcpro_1 (Lisp_Object, char *); +#define mcpro(ptr) mcpro_1 (ptr, #ptr) +#else /* not DEBUG_XEMACS */ +/* Call mcpro (&var) to protect mc variable `var'. */ +MODULE_API void mcpro (Lisp_Object); +#endif /* not DEBUG_XEMACS */ +#endif /* MC_ALLOC */ + void register_post_gc_action (void (*fun) (void *), void *arg); int begin_gc_forbidden (void); void end_gc_forbidden (int count); @@ -3539,7 +3627,9 @@ MODULE_API EXFUN (Fmake_vector, 2); MODULE_API EXFUN (Fvector, MANY); +#ifndef MC_ALLOC void release_breathing_space (void); +#endif /* not MC_ALLOC */ Lisp_Object noseeum_cons (Lisp_Object, Lisp_Object); MODULE_API Lisp_Object make_vector (Elemcount, Lisp_Object); MODULE_API Lisp_Object vector1 (Lisp_Object); diff --text -u 'xemacs-21.5.20/src/lrecord.h' 'xemacs-21.5.21/src/lrecord.h' Index: ./src/lrecord.h --- ./src/lrecord.h Fri Feb 4 01:14:07 2005 +++ ./src/lrecord.h Mon May 16 01:38:13 2005 @@ -26,6 +26,26 @@ #ifndef INCLUDED_lrecord_h_ #define INCLUDED_lrecord_h_ +#ifdef MC_ALLOC +/* The "lrecord" type of Lisp object is used for all object types + other than a few simple ones (like char and int). This allows many + types to be implemented but only a few bits required in a Lisp + object for type information. (The tradeoff is that each object has + its type marked in it, thereby increasing its size.) All lrecords + begin with a `struct lrecord_header', which identifies the lisp + object type, by providing an index into a table of `struct + lrecord_implementation', which describes the behavior of the lisp + object. It also contains some other data bits. + + Creating a new lrecord type is fairly easy; just follow the + lead of some existing type (e.g. hash tables). Note that you + do not need to supply all the methods (see below); reasonable + defaults are provided for many of them. Alternatively, if you're + just looking for a way of encapsulating data (which possibly + could contain Lisp_Objects in it), you may well be able to use + the opaque type. +*/ +#else /* not MC_ALLOC */ /* The "lrecord" type of Lisp object is used for all object types other than a few simple ones. This allows many types to be implemented but only a few bits required in a Lisp object for type @@ -59,6 +79,7 @@ could contain Lisp_Objects in it), you may well be able to use the opaque type. --ben */ +#endif /* not MC_ALLOC */ BEGIN_C_DECLS @@ -69,6 +90,21 @@ field. */ unsigned int type :8; +#ifdef MC_ALLOC + /* 1 if the object is readonly from lisp */ + unsigned int lisp_readonly :1; + + /* The `free' field is a flag that indicates whether this lrecord + is currently free or not. This is used for error checking and + debugging. */ + unsigned int free :1; + + /* The `uid' field is just for debugging/printing convenience. + Having this slot doesn't hurt us much spacewise, since the + bits are unused anyway. */ + unsigned int uid :22; + +#else /* not MC_ALLOC */ /* If `mark' is 0 after the GC mark phase, the object will be freed during the GC sweep phase. There are 2 ways that `mark' can be 1: - by being referenced from other objects during the GC mark phase @@ -85,11 +121,20 @@ unsigned int unused :21; +#endif /* not MC_ALLOC */ }; struct lrecord_implementation; int lrecord_type_index (const struct lrecord_implementation *implementation); +#ifdef MC_ALLOC +#define set_lheader_implementation(header,imp) do { \ + struct lrecord_header* SLI_header = (header); \ + SLI_header->type = (imp)->lrecord_type_index; \ + SLI_header->lisp_readonly = 0; \ + SLI_header->free = 0; \ +} while (0) +#else /* not MC_ALLOC */ #define set_lheader_implementation(header,imp) do { \ struct lrecord_header* SLI_header = (header); \ SLI_header->type = (imp)->lrecord_type_index; \ @@ -97,7 +142,9 @@ SLI_header->c_readonly = 0; \ SLI_header->lisp_readonly = 0; \ } while (0) +#endif /* not MC_ALLOC */ +#ifndef MC_ALLOC struct lcrecord_header { struct lrecord_header lheader; @@ -135,45 +182,47 @@ struct lcrecord_header lcheader; Lisp_Object chain; }; +#endif /* not MC_ALLOC */ enum lrecord_type { /* Symbol value magic types come first to make SYMBOL_VALUE_MAGIC_P fast. #### This should be replaced by a symbol_value_magic_p flag in the Lisp_Symbol lrecord_header. */ - lrecord_type_symbol_value_forward, /* 0 */ - lrecord_type_symbol_value_varalias, /* 1 */ - lrecord_type_symbol_value_lisp_magic, /* 2 */ - lrecord_type_symbol_value_buffer_local, /* 3 */ + lrecord_type_symbol_value_forward, /* 0 */ + lrecord_type_symbol_value_varalias, /* 1 */ + lrecord_type_symbol_value_lisp_magic, /* 2 */ + lrecord_type_symbol_value_buffer_local, /* 3 */ lrecord_type_max_symbol_value_magic = lrecord_type_symbol_value_buffer_local, - - lrecord_type_symbol, /* 4 */ - lrecord_type_subr, /* 5 */ - lrecord_type_cons, /* 6 */ - lrecord_type_vector, - lrecord_type_string, + lrecord_type_symbol, /* 4 */ + lrecord_type_subr, /* 5 */ + lrecord_type_cons, /* 6 */ + lrecord_type_vector, /* 7 */ + lrecord_type_string, /* 8 */ +#ifndef MC_ALLOC lrecord_type_lcrecord_list, - lrecord_type_compiled_function, - lrecord_type_weak_list, - lrecord_type_bit_vector, - lrecord_type_float, - lrecord_type_hash_table, - lrecord_type_lstream, - lrecord_type_process, - lrecord_type_charset, - lrecord_type_coding_system, - lrecord_type_char_table, - lrecord_type_char_table_entry, - lrecord_type_range_table, - lrecord_type_opaque, - lrecord_type_opaque_ptr, - lrecord_type_buffer, - lrecord_type_extent, - lrecord_type_extent_info, - lrecord_type_extent_auxiliary, - lrecord_type_marker, - lrecord_type_event, -#ifdef EVENT_DATA_AS_OBJECTS +#endif /* not MC_ALLOC */ + lrecord_type_compiled_function, /* 9 */ + lrecord_type_weak_list, /* 10 */ + lrecord_type_bit_vector, /* 11 */ + lrecord_type_float, /* 12 */ + lrecord_type_hash_table, /* 13 */ + lrecord_type_lstream, /* 14 */ + lrecord_type_process, /* 15 */ + lrecord_type_charset, /* 16 */ + lrecord_type_coding_system, /* 17 */ + lrecord_type_char_table, /* 18 */ + lrecord_type_char_table_entry, /* 19 */ + lrecord_type_range_table, /* 20 */ + lrecord_type_opaque, /* 21 */ + lrecord_type_opaque_ptr, /* 22 */ + lrecord_type_buffer, /* 23 */ + lrecord_type_extent, /* 24 */ + lrecord_type_extent_info, /* 25 */ + lrecord_type_extent_auxiliary, /* 26 */ + lrecord_type_marker, /* 27 */ + lrecord_type_event, /* 28 */ +#ifdef EVENT_DATA_AS_OBJECTS /* not defined */ lrecord_type_key_data, lrecord_type_button_data, lrecord_type_motion_data, @@ -184,45 +233,47 @@ lrecord_type_magic_eval_data, lrecord_type_magic_data, #endif /* EVENT_DATA_AS_OBJECTS */ - lrecord_type_keymap, - lrecord_type_command_builder, - lrecord_type_timeout, - lrecord_type_specifier, - lrecord_type_console, - lrecord_type_device, - lrecord_type_frame, - lrecord_type_window, - lrecord_type_window_mirror, - lrecord_type_window_configuration, - lrecord_type_gui_item, - lrecord_type_popup_data, - lrecord_type_toolbar_button, - lrecord_type_scrollbar_instance, - lrecord_type_color_instance, - lrecord_type_font_instance, - lrecord_type_image_instance, - lrecord_type_glyph, - lrecord_type_face, - lrecord_type_database, - lrecord_type_tooltalk_message, - lrecord_type_tooltalk_pattern, - lrecord_type_ldap, - lrecord_type_pgconn, - lrecord_type_pgresult, - lrecord_type_devmode, - lrecord_type_mswindows_dialog_id, - lrecord_type_case_table, - lrecord_type_emacs_ffi, - lrecord_type_emacs_gtk_object, - lrecord_type_emacs_gtk_boxed, - lrecord_type_weak_box, - lrecord_type_ephemeron, - lrecord_type_bignum, - lrecord_type_ratio, - lrecord_type_bigfloat, + lrecord_type_keymap, /* 29 */ + lrecord_type_command_builder, /* 30 */ + lrecord_type_timeout, /* 31 */ + lrecord_type_specifier, /* 32 */ + lrecord_type_console, /* 33 */ + lrecord_type_device, /* 34 */ + lrecord_type_frame, /* 35 */ + lrecord_type_window, /* 36 */ + lrecord_type_window_mirror, /* 37 */ + lrecord_type_window_configuration, /* 38 */ + lrecord_type_gui_item, /* 39 */ + lrecord_type_popup_data, /* 40 */ + lrecord_type_toolbar_button, /* 41 */ + lrecord_type_scrollbar_instance, /* 42 */ + lrecord_type_color_instance, /* 43 */ + lrecord_type_font_instance, /* 44 */ + lrecord_type_image_instance, /* 45 */ + lrecord_type_glyph, /* 46 */ + lrecord_type_face, /* 47 */ + lrecord_type_database, /* 48 */ + lrecord_type_tooltalk_message, /* 49 */ + lrecord_type_tooltalk_pattern, /* 50 */ + lrecord_type_ldap, /* 51 */ + lrecord_type_pgconn, /* 52 */ + lrecord_type_pgresult, /* 53 */ + lrecord_type_devmode, /* 54 */ + lrecord_type_mswindows_dialog_id, /* 55 */ + lrecord_type_case_table, /* 56 */ + lrecord_type_emacs_ffi, /* 57 */ + lrecord_type_emacs_gtk_object, /* 58 */ + lrecord_type_emacs_gtk_boxed, /* 59 */ + lrecord_type_weak_box, /* 60 */ + lrecord_type_ephemeron, /* 61 */ + lrecord_type_bignum, /* 62 */ + lrecord_type_ratio, /* 63 */ + lrecord_type_bigfloat, /* 64 */ +#ifndef MC_ALLOC lrecord_type_free, /* only used for "free" lrecords */ lrecord_type_undefined, /* only used for debugging */ - lrecord_type_last_built_in_type /* must be last */ +#endif /* not MC_ALLOC */ + lrecord_type_last_built_in_type /* 65 */ /* must be last */ }; extern MODULE_API int lrecord_type_count; @@ -289,18 +340,24 @@ int (*remprop) (Lisp_Object obj, Lisp_Object prop); Lisp_Object (*plist) (Lisp_Object obj); +#ifdef MC_ALLOC + /* Only one of `static_size' and `size_in_bytes_method' is non-0. */ +#else /* not MC_ALLOC */ /* Only one of `static_size' and `size_in_bytes_method' is non-0. If both are 0, this type is not instantiable by basic_alloc_lcrecord(). */ +#endif /* not MC_ALLOC */ Bytecount static_size; Bytecount (*size_in_bytes_method) (const void *header); /* The (constant) index into lrecord_implementations_table */ enum lrecord_type lrecord_type_index; +#ifndef MC_ALLOC /* A "basic" lrecord is any lrecord that's not an lcrecord, i.e. one that does not have an lcrecord_header at the front and which is (usually) allocated in frob blocks. */ unsigned int basic_p :1; +#endif /* not MC_ALLOC */ }; /* All the built-in lisp object types are enumerated in `enum lrecord_type'. @@ -317,6 +374,78 @@ extern int gc_in_progress; +#ifdef MC_ALLOC +#include "mc-alloc.h" +#endif /* MC_ALLOC */ + +#ifdef MC_ALLOC_TYPE_STATS +void init_lrecord_stats (void); +void inc_lrecord_string_data_stats (Bytecount size); +void dec_lrecord_string_data_stats (Bytecount size); +void inc_lrecord_stats (Bytecount size, const struct lrecord_header *h); +void dec_lrecord_stats (Bytecount size_including_overhead, + const struct lrecord_header *h); +#endif /* MC_ALLOC_TYPE_STATS */ + +#ifdef MC_ALLOC +/* Tell mc-alloc how to call a finalizer. */ +#define MC_ALLOC_CALL_FINALIZER(ptr) \ +{ \ + Lisp_Object MCACF_obj = wrap_pointer_1 (ptr); \ + struct lrecord_header *MCACF_lheader = XRECORD_LHEADER (MCACF_obj); \ + if (XRECORD_LHEADER (MCACF_obj) && LRECORDP (MCACF_obj) \ + && !LRECORD_FREE_P (MCACF_lheader) ) \ + { \ + const struct lrecord_implementation *MCACF_implementation \ + = LHEADER_IMPLEMENTATION (MCACF_lheader); \ + if (MCACF_implementation && MCACF_implementation->finalizer) \ + MCACF_implementation->finalizer (ptr, 0); \ + } \ +} while (0) + +/* Tell mc-alloc how to call a finalizer for disksave. */ +#define MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE(ptr) \ +{ \ + Lisp_Object MCACF_obj = wrap_pointer_1 (ptr); \ + struct lrecord_header *MCACF_lheader = XRECORD_LHEADER (MCACF_obj); \ + if (XRECORD_LHEADER (MCACF_obj) && LRECORDP (MCACF_obj) \ + && !LRECORD_FREE_P (MCACF_lheader) ) \ + { \ + const struct lrecord_implementation *MCACF_implementation \ + = LHEADER_IMPLEMENTATION (MCACF_lheader); \ + if (MCACF_implementation && MCACF_implementation->finalizer) \ + MCACF_implementation->finalizer (ptr, 1); \ + } \ +} while (0) + +#define LRECORD_FREE_P(ptr) \ +(((struct lrecord_header *) ptr)->free) + +#define MARK_LRECORD_AS_FREE(ptr) \ +((void) (((struct lrecord_header *) ptr)->free = 1)) + +#define MARK_LRECORD_AS_NOT_FREE(ptr) \ +((void) (((struct lrecord_header *) ptr)->free = 0)) + +#define MARKED_RECORD_P(obj) MARKED_P (obj) +#define MARKED_RECORD_HEADER_P(lheader) MARKED_P (lheader) +#define MARK_RECORD_HEADER(lheader) MARK (lheader) +#define UNMARK_RECORD_HEADER(lheader) UNMARK (lheader) + +#define LISP_READONLY_RECORD_HEADER_P(lheader) ((lheader)->lisp_readonly) +#define SET_LISP_READONLY_RECORD_HEADER(lheader) \ + ((void) ((lheader)->lisp_readonly = 1)) +#define MARK_LRECORD_AS_LISP_READONLY(ptr) \ +((void) (((struct lrecord_header *) ptr)->lisp_readonly = 1)) + +#else /* not MC_ALLOC */ + +#define LRECORD_FREE_P(ptr) \ +(((struct lrecord_header *) ptr)->type == lrecord_type_free) + +#define MARK_LRECORD_AS_FREE(ptr) \ +((void) (((struct lrecord_header *) ptr)->type = lrecord_type_free)) + #define MARKED_RECORD_P(obj) (XRECORD_LHEADER (obj)->mark) #define MARKED_RECORD_HEADER_P(lheader) ((lheader)->mark) #define MARK_RECORD_HEADER(lheader) ((void) ((lheader)->mark = 1)) @@ -332,6 +461,7 @@ } while (0) #define SET_LISP_READONLY_RECORD_HEADER(lheader) \ ((void) ((lheader)->lisp_readonly = 1)) +#endif /* not MC_ALLOC */ #ifdef USE_KKCC #define RECORD_DESCRIPTION(lheader) lrecord_memory_descriptions[(lheader)->type] @@ -531,7 +661,11 @@ struct Lisp_Hash_Table { +#ifdef MC_ALLOC + struct lrecord_header header; +#else struct lcrecord_header header; +#endif Elemcount size; Elemcount count; Elemcount rehash_count; @@ -596,7 +730,11 @@ struct Lisp_Specifier { +#ifdef MC_ALLOC + struct lrecord_header header; +#else struct lcrecord_header header; +#endif struct specifier_methods *methods; ... @@ -838,12 +976,14 @@ XD_FLAG_NO_PDUMP = 2, /* Indicates that this is a "default" entry in a union map. */ XD_FLAG_UNION_DEFAULT_ENTRY = 4, +#ifndef MC_ALLOC /* Indicates that this is a free Lisp object we're marking. Only relevant for ERROR_CHECK_GC. This occurs when we're marking lcrecord-lists, where the objects have had their type changed to lrecord_type_free and also have had their free bit set, but we mark them as normal. */ XD_FLAG_FREE_LISP_OBJECT = 8 +#endif /* not MC_ALLOC */ #if 0 , /* Suggestions for other possible flags: */ @@ -962,12 +1102,21 @@ #define DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION_WITH_PROPS(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,sizer,structtype) \ MAKE_LRECORD_IMPLEMENTATION(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,0,sizer,0,structtype) +#ifdef MC_ALLOC +#define MAKE_LRECORD_IMPLEMENTATION(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,size,sizer,basic_p,structtype) \ +DECLARE_ERROR_CHECK_TYPES(c_name, structtype) \ +const struct lrecord_implementation lrecord_##c_name = \ + { name, dumpable, marker, printer, nuker, equal, hash, desc, \ + getprop, putprop, remprop, plist, size, sizer, \ + lrecord_type_##c_name } +#else /* not MC_ALLOC */ #define MAKE_LRECORD_IMPLEMENTATION(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,size,sizer,basic_p,structtype) \ DECLARE_ERROR_CHECK_TYPES(c_name, structtype) \ const struct lrecord_implementation lrecord_##c_name = \ { name, dumpable, marker, printer, nuker, equal, hash, desc, \ getprop, putprop, remprop, plist, size, sizer, \ lrecord_type_##c_name, basic_p } +#endif /* not MC_ALLOC */ #define DEFINE_EXTERNAL_LRECORD_IMPLEMENTATION(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,structtype) \ DEFINE_EXTERNAL_LRECORD_IMPLEMENTATION_WITH_PROPS(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,0,0,0,0,structtype) @@ -981,6 +1130,15 @@ #define DEFINE_EXTERNAL_LRECORD_SEQUENCE_IMPLEMENTATION_WITH_PROPS(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,sizer,structtype) \ MAKE_EXTERNAL_LRECORD_IMPLEMENTATION(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,0,sizer,0,structtype) +#ifdef MC_ALLOC +#define MAKE_EXTERNAL_LRECORD_IMPLEMENTATION(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,size,sizer,basic_p,structtype) \ +DECLARE_ERROR_CHECK_TYPES(c_name, structtype) \ +int lrecord_type_##c_name; \ +struct lrecord_implementation lrecord_##c_name = \ + { name, dumpable, marker, printer, nuker, equal, hash, desc, \ + getprop, putprop, remprop, plist, size, sizer, \ + lrecord_type_last_built_in_type } +#else /* not MC_ALLOC */ #define MAKE_EXTERNAL_LRECORD_IMPLEMENTATION(name,c_name,dumpable,marker,printer,nuker,equal,hash,desc,getprop,putprop,remprop,plist,size,sizer,basic_p,structtype) \ DECLARE_ERROR_CHECK_TYPES(c_name, structtype) \ int lrecord_type_##c_name; \ @@ -988,6 +1146,7 @@ { name, dumpable, marker, printer, nuker, equal, hash, desc, \ getprop, putprop, remprop, plist, size, sizer, \ lrecord_type_last_built_in_type, basic_p } +#endif /* not MC_ALLOC */ #ifdef USE_KKCC extern MODULE_API const struct memory_description *lrecord_memory_descriptions[]; @@ -1049,7 +1208,11 @@ 1. Declare the struct for your object in a header file somewhere. Remember that it must begin with +#ifdef MC_ALLOC + struct lrecord_header header; +#else struct lcrecord_header header; +#endif 2. Put the "standard junk" (DECLARE_RECORD()/XFOO/etc.) below the struct definition -- see below. @@ -1083,7 +1246,11 @@ struct toolbar_button { +#ifdef MC_ALLOC + struct lrecord_header header; +#else struct lcrecord_header header; +#endif Lisp_Object next; Lisp_Object frame; @@ -1342,6 +1509,7 @@ dead_wrong_type_argument (predicate, x); \ } while (0) +#ifndef MC_ALLOC /*-------------------------- lcrecord-list -----------------------------*/ struct lcrecord_list @@ -1454,6 +1622,7 @@ const struct lrecord_implementation *); #define alloc_lcrecord_type(type, lrecord_implementation) \ ((type *) alloc_automanaged_lcrecord (sizeof (type), lrecord_implementation)) + void free_lcrecord (Lisp_Object rec); @@ -1473,6 +1642,55 @@ #define zero_lcrecord(lcr) zero_sized_lcrecord (lcr, sizeof (*(lcr))) +#else /* MC_ALLOC */ + +/* How to allocate a lrecord: + + - If the size of the lrecord is fix, say it equals its size of its + struct, then use alloc_lrecord_type. + + - If the size varies, i.e. it is not equal to the size of its + struct, use alloc_lrecord and specify the amount of storage you + need for the object. + + - Some lrecords, which are used totally internally, use the + noseeum-* functions for the reason of debugging. + + - To free a Lisp_Object manually, use free_lrecord. */ + +void *alloc_lrecord (Bytecount size, + const struct lrecord_implementation *); + +#define alloc_lrecord_type(type, lrecord_implementation) \ + ((type *) alloc_lrecord (sizeof (type), lrecord_implementation)) + +void *noseeum_alloc_lrecord (Bytecount size, + const struct lrecord_implementation *); + +#define noseeum_alloc_lrecord_type(type, lrecord_implementation) \ + ((type *) noseeum_alloc_lrecord (sizeof (type), lrecord_implementation)) + +void free_lrecord (Lisp_Object rec); + + +/* Copy the data from one lrecord structure into another, but don't + overwrite the header information. */ + +#define copy_sized_lrecord(dst, src, size) \ + memcpy ((char *) (dst) + sizeof (struct lrecord_header), \ + (char *) (src) + sizeof (struct lrecord_header), \ + (size) - sizeof (struct lrecord_header)) + +#define copy_lrecord(dst, src) copy_sized_lrecord (dst, src, sizeof (*(dst))) + +#define zero_sized_lrecord(lcr, size) \ + memset ((char *) (lcr) + sizeof (struct lrecord_header), 0, \ + (size) - sizeof (struct lrecord_header)) + +#define zero_lrecord(lcr) zero_sized_lrecord (lcr, sizeof (*(lcr))) + +#endif /* MC_ALLOC */ + DECLARE_INLINE_HEADER ( Bytecount detagged_lisp_object_size (const struct lrecord_header *h) @@ -1584,8 +1802,12 @@ #ifdef PDUMP #include "dumper.h" +#ifdef MC_ALLOC +#define DUMPEDP(adr) 0 +#else /* not MC_ALLOC */ #define DUMPEDP(adr) ((((Rawbyte *) (adr)) < pdump_end) && \ (((Rawbyte *) (adr)) >= pdump_start)) +#endif /* not MC_ALLOC */ #else #define DUMPEDP(adr) 0 #endif diff --text -u 'xemacs-21.5.20/src/lstream.c' 'xemacs-21.5.21/src/lstream.c' Index: ./src/lstream.c --- ./src/lstream.c Fri Feb 4 01:14:07 2005 +++ ./src/lstream.c Sat Apr 9 08:11:29 2005 @@ -180,9 +180,11 @@ } } +#ifndef MC_ALLOC static const Lstream_implementation *lstream_types[32]; static Lisp_Object Vlstream_free_list[32]; static int lstream_type_count; +#endif /* not MC_ALLOC */ /* Allocate and return a new Lstream. This function is not really meant to be called directly; rather, each stream type should @@ -194,6 +196,11 @@ Lstream_new (const Lstream_implementation *imp, const char *mode) { Lstream *p; +#ifdef MC_ALLOC + p = XLSTREAM (wrap_pointer_1 + (alloc_lrecord (aligned_sizeof_lstream (imp->size), + &lrecord_lstream))); +#else /* not MC_ALLOC */ int i; for (i = 0; i < lstream_type_count; i++) @@ -213,6 +220,7 @@ } p = XLSTREAM (alloc_managed_lcrecord (Vlstream_free_list[i])); +#endif /* not MC_ALLOC */ /* Zero it out, except the header. */ memset ((char *) p + sizeof (p->header), '\0', aligned_sizeof_lstream (imp->size) - sizeof (p->header)); @@ -288,9 +296,14 @@ void Lstream_delete (Lstream *lstr) { +#ifndef MC_ALLOC int i; +#endif /* not MC_ALLOC */ Lisp_Object val = wrap_lstream (lstr); +#ifdef MC_ALLOC + free_lrecord (val); +#else /* not MC_ALLOC */ for (i = 0; i < lstream_type_count; i++) { if (lstream_types[i] == lstr->imp) @@ -301,6 +314,7 @@ } ABORT (); +#endif /* not MC_ALLOC */ } #define Lstream_internal_error(reason, lstr) \ @@ -1851,6 +1865,7 @@ LSTREAM_HAS_METHOD (lisp_buffer, marker); } +#ifndef MC_ALLOC void reinit_vars_of_lstream (void) { @@ -1862,6 +1877,7 @@ staticpro_nodump (&Vlstream_free_list[i]); } } +#endif /* not MC_ALLOC */ void vars_of_lstream (void) diff --text -u 'xemacs-21.5.20/src/lstream.h' 'xemacs-21.5.21/src/lstream.h' Index: ./src/lstream.h --- ./src/lstream.h Sun Jan 12 20:08:18 2003 +++ ./src/lstream.h Sat Apr 9 08:11:29 2005 @@ -230,7 +230,11 @@ struct lstream { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ const Lstream_implementation *imp; /* methods for this stream */ Lstream_buffering buffering; /* type of buffering in use */ Bytecount buffering_size; /* number of bytes buffered */ diff --text -u 'xemacs-21.5.20/src/marker.c' 'xemacs-21.5.21/src/marker.c' Index: ./src/marker.c --- ./src/marker.c Fri Feb 4 01:14:07 2005 +++ ./src/marker.c Sat Apr 9 08:11:29 2005 @@ -104,11 +104,30 @@ { XD_END } }; +#ifdef MC_ALLOC +static void +finalize_marker (void *header, int for_disksave) +{ + if (!for_disksave) + { + Lisp_Object tem = wrap_marker (header); + unchain_marker (tem); + } +} + +DEFINE_BASIC_LRECORD_IMPLEMENTATION ("marker", marker, + 1, /*dumpable-flag*/ + mark_marker, print_marker, + finalize_marker, + marker_equal, marker_hash, + marker_description, Lisp_Marker); +#else /* not MC_ALLOC */ DEFINE_BASIC_LRECORD_IMPLEMENTATION ("marker", marker, 1, /*dumpable-flag*/ mark_marker, print_marker, 0, marker_equal, marker_hash, marker_description, Lisp_Marker); +#endif /* not MC_ALLOC */ /* Operations on markers. */ @@ -493,7 +512,11 @@ for (m = BUF_MARKERS (b); m; m = m->next) total += sizeof (Lisp_Marker); ovstats->was_requested += total; +#ifdef MC_ALLOC + overhead = mc_alloced_storage_size (total, 0); +#else /* not MC_ALLOC */ overhead = fixed_type_block_overhead (total); +#endif /* not MC_ALLOC */ /* #### claiming this is all malloc overhead is not really right, but it has to go somewhere. */ ovstats->malloc_overhead += overhead; diff --text -u /dev/null 'xemacs-21.5.21/src/mc-alloc.c' Index: ./src/mc-alloc.c --- ./src/mc-alloc.c Thu Jan 1 09:00:00 1970 +++ ./src/mc-alloc.c Mon May 16 01:38:13 2005 @@ -0,0 +1,1829 @@ +/* New size-based allocator for XEmacs. + Copyright (C) 2005 Marcus Crestani. + +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 2, 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; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in FSF. */ + +#include +#include "lisp.h" +#include "mc-alloc.h" + + +/*--- configurable values ----------------------------------------------*/ + +/* Valid page sizes are powers of 2. */ +#undef PAGE_SIZE /* for FreeBSD */ +#define PAGE_SIZE 2048 + + +/* Definition of size classes */ + +/* Heap used list constants: In the used heap, it is important to + quickly find a free spot for a new object. Therefore the size + classes of the used heap are defined by the size of the cells on + the pages. The size classes should match common object sizes, to + avoid wasting memory. */ + +/* Minimum object size in bytes. */ +#define USED_LIST_MIN_OBJECT_SIZE 8 + +/* The step size by which the size classes increase (up to upper + threshold). This many bytes are mapped to a single used list: */ +#define USED_LIST_LIN_STEP 4 + +/* The upper threshold should always be set to PAGE_SIZE/2, because if + a object is larger than PAGE_SIZE/2 there is no room for any other + object on this page. Objects this big are kept in the page list of + the multiple pages, since a quick search for free spots is not + needed for this kind of pages (because there are no free spots). + PAGE_SIZES_DIV_2 defines maximum size of a used space list. */ +#define USED_LIST_UPPER_THRESHOLD PAGE_SIZE_DIV_2 + + +/* Unmanaged memory used list constants: Like in the used heap, it is + important to quickly find a free spot for a new object. Therefore + the size classes of the unmanaged heap are defined by the size of + the cells on the pages. The size classes should match common object + sizes, to avoid wasting memory. */ +/* Minimum object size in bytes. */ +#define UNMANAGED_LIST_MIN_OBJECT_SIZE 8 +/* The step size by which the size classes increase (up to upper + threshold). This many bytes are mapped to a single unmanaged list: */ +#define UNMANAGED_LIST_LIN_STEP 4 +/* The upper threshold should always be set to PAGE_SIZE/2, because if + a object is larger than PAGE_SIZE/2 there is no room for any other + object on this page. Objects this big are kept in the page list of + the multiple pages, since a quick search for free spots is not + needed for this kind of pages (because there are no free spots). + PAGE_SIZES defines maximum size of a unmanaged space list. */ +#define UNMANAGED_LIST_UPPER_THRESHOLD PAGE_SIZE_DIV_2 + + +/* Heap free list constants: In the unused heap, the size of + consecutive memory tips the scales. A page is smallest entity which + is asked for. Therefore, the size classes of the unused heap are + defined by the number of consecutive pages. */ +/* Sizes up to this many pages each have their own free list. */ +#define FREE_LIST_LOWER_THRESHOLD 32 +/* The step size by which the size classes increase (up to upper + threshold). FREE_LIST_LIN_STEP number of sizes are mapped to a + single free list for sizes between FREE_LIST_LOWER_THRESHOLD and + FREE_LIST_UPPER_THRESHOLD. */ +#define FREE_LIST_LIN_STEP 8 +/* Sizes of at least this many pages are mapped to a single free + list. Blocks of memory larger than this number are all kept in a + single list, which makes searching this list slow. But objects that + big are really seldom. */ +#define FREE_LIST_UPPER_THRESHOLD 256 + + +/* Maximum number of separately added heap sections. */ +#if BITS_PER_EMACS_INT > 32 +# define MAX_HEAP_SECTS 2048 +#else +# define MAX_HEAP_SECTS 768 +#endif + + +/* Heap growth constants. Heap increases by any number between the + boundaries (unit is PAGE_SIZE). */ +#define MIN_HEAP_INCREASE 32 +#define MAX_HEAP_INCREASE 256 /* not used */ + +/* Every heap growth is calculated like this: + needed_pages + ( HEAP_SIZE / ( PAGE_SIZE * HEAP_GROWTH_DIVISOR )). + So the growth of the heap is influenced by the current size of the + heap, but kept between MIN_HEAP_INCREASE and MAX_HEAP_INCREASE + boundaries. + This reduces the number of heap sectors, the larger the heap grows + the larger are the newly allocated chunks. */ +#define HEAP_GROWTH_DIVISOR 3 + + +/* Zero memory before putting on free lists. */ +#define ZERO_MEM 1 + + + + +/*--- calculations done by macros --------------------------------------*/ + +#ifndef CHAR_BIT /* should be included by limits.h */ +# define CHAR_BIT BITS_PER_CHAR +#endif + +#if PAGE_SIZE == 512 +# define CPP_LOG_PAGE_SIZE 9 +#endif +#if PAGE_SIZE == 1024 +# define CPP_LOG_PAGE_SIZE 10 +#endif +#if PAGE_SIZE == 2048 +# define CPP_LOG_PAGE_SIZE 11 +#endif +#if PAGE_SIZE == 4096 +# define CPP_LOG_PAGE_SIZE 12 +#endif +#if PAGE_SIZE == 8192 +# define CPP_LOG_PAGE_SIZE 13 +#endif +#if PAGE_SIZE == 16384 +# define CPP_LOG_PAGE_SIZE 14 +#endif +#ifndef CPP_LOG_PAGE_SIZE +--> fix PAGE_SIZE +#endif +#undef PAGE_SIZE +#define CPP_PAGE_SIZE (1 << CPP_LOG_PAGE_SIZE) +#define LOG_PAGE_SIZE ((EMACS_INT) CPP_LOG_PAGE_SIZE) +#define PAGE_SIZE ((EMACS_INT) CPP_PAGE_SIZE) +#define PAGE_SIZE_DIV_2 (PAGE_SIZE >> 1) + + +/* NOT USED ANYMORE */ +#ifdef USE_EXPONENTIAL_USED_LIST_GROWTH +/* used heap list logarithms */ +#if USED_LIST_LOWER_THRESHOLD == 8 +# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 3 +#endif +#if USED_LIST_LOWER_THRESHOLD == 16 +# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 4 +#endif +#if USED_LIST_LOWER_THRESHOLD == 32 +# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 5 +#endif +#if USED_LIST_LOWER_THRESHOLD == 64 +# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 6 +#endif +#if USED_LIST_LOWER_THRESHOLD == 128 +# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 7 +#endif +#if USED_LIST_LOWER_THRESHOLD == 256 +# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 8 +#endif +#ifndef CPP_LOG_USED_LIST_LOWER_THRESHOLD +--> fix USED_LIST_LOWER_THRESHOLD +#endif +#define LOG_USED_LIST_LOWER_THRESHOLD CPP_LOG_USED_LIST_LOWER_THRESHOLD +#endif /* USE_EXPONENTIAL_USED_LIST_GROWTH */ + +/* used heap list count */ +#define N_USED_PAGE_LISTS (((USED_LIST_UPPER_THRESHOLD \ + - USED_LIST_MIN_OBJECT_SIZE) \ + / USED_LIST_LIN_STEP) + 1 ) + 1 + +/* unmanaged memory list count */ +#define N_UNMANAGED_PAGE_LISTS (((UNMANAGED_LIST_UPPER_THRESHOLD \ + - UNMANAGED_LIST_MIN_OBJECT_SIZE) \ + / UNMANAGED_LIST_LIN_STEP) + 1 ) + 1 + +/* NOT USED ANYMORE */ +#ifdef USE_EXPONENTIAL_USED_LIST_GROWTH +#define N_USED_PAGE_LISTS_LIN (((USED_LIST_LOWER_THRESHOLD \ + - USED_LIST_MIN_OBJECT_SIZE) \ + / USED_LIST_LIN_STEP) + 1 ) +#define N_USED_PAGE_LISTS_EXP \ + (LOG_PAGE_SIZE - LOG_USED_LIST_LOWER_THRESHOLD) + +#define N_USED_PAGE_LISTS \ + (N_USED_PAGE_LISTS_LIN + N_USED_PAGE_LISTS_EXP + 1) +#endif /* USE_EXPONENTIAL_USED_LIST_GROWTH */ + +/* free heap list count */ +#define N_FREE_PAGE_LISTS (((FREE_LIST_UPPER_THRESHOLD \ + - FREE_LIST_LOWER_THRESHOLD) \ + / FREE_LIST_LIN_STEP) \ + + FREE_LIST_LOWER_THRESHOLD) + + +/* Constants for heap address to page header mapping. */ +#define LOG_LEVEL2_SIZE 10 +#define LEVEL2_SIZE (1 << LOG_LEVEL2_SIZE) +#if BITS_PER_EMACS_INT > 32 +# define USE_HASH_TABLE 1 +# define LOG_LEVEL1_SIZE 11 +#else +# define LOG_LEVEL1_SIZE \ + (BITS_PER_EMACS_INT - LOG_LEVEL2_SIZE - LOG_PAGE_SIZE) +#endif +#define LEVEL1_SIZE (1 << LOG_LEVEL1_SIZE) + +#ifdef USE_HASH_TABLE +# define HASH(hi) ((hi) & (LEVEL1_SIZE - 1)) +# define L1_INDEX(p) HASH ((EMACS_INT) p >> (LOG_LEVEL2_SIZE + LOG_PAGE_SIZE)) +#else +# define L1_INDEX(p) ((EMACS_INT) p >> (LOG_LEVEL2_SIZE + LOG_PAGE_SIZE)) +#endif +#define L2_INDEX(p) (((EMACS_INT) p >> LOG_PAGE_SIZE) & (LEVEL2_SIZE - 1)) + + + + +/*--- structs and typedefs ---------------------------------------------*/ + +/* Links the free lists (mark_bit_free_list, page_header_free_list, + cell free list). */ +typedef struct free_link +{ + struct lrecord_header lheader; + struct free_link *next_free; +} free_link; + + +/* Header for pages. They are hold in a doubly linked list. */ +typedef struct page_header +{ + struct page_header *next; /* next page_header */ + struct page_header *prev; /* previous page_header */ + /* Field plh holds pointer to the according header of the page list.*/ + struct page_list_header *plh; /* page list header */ + free_link *free_list; /* links free cells on page */ + EMACS_INT n_pages; /* number of pages */ + EMACS_INT cell_size; /* size of cells on page */ + EMACS_INT cells_on_page; /* total number of cells on page */ + EMACS_INT cells_used; /* number of used cells on page */ + /* If the number of objects on page is bigger than BITS_PER_EMACS_INT, + the mark bits are put in an extra memory area. Then the field + mark_bits holds the pointer to this area. Is the number of + objects smaller than BITS_PER_EMACS_INT, the mark bits are held in the + mark_bit EMACS_INT directly, without an additional indirection. */ + char *mark_bits; /* pointer to mark bits */ + void *heap_space; /* pointer to heap, where objects + are stored */ +} page_header; + + +/* Different list types. */ +enum list_type_enum { + USED_LIST, + UNMANAGED_LIST, + FREE_LIST +}; + + +/* Header for page lists. Field list_type holds the type of the list. */ +typedef struct page_list_header +{ + enum list_type_enum list_type; /* the type of the list */ + /* Size holds the size of one cell (in bytes) in a used heap list, or the + size of the heap sector (in number of pages). */ + size_t size; /* size of one cell / heap sector */ + page_header *first; /* first of page_header list */ + page_header *last; /* last of page_header list */ + /* If the number of objects on page is bigger than + BITS_PER_EMACS_INT, the mark bits are put in an extra memory + area, which is linked in this free list, if not used. Is the + number of objects smaller than BITS_PER_EMACS_INT, the mark bits + are hold in the mark bit EMACS_INT directly, without an + additional indirection. */ + free_link *mark_bit_free_list; + +#ifdef MEMORY_USAGE_STATS + EMACS_INT page_count; /* number if pages in list */ + EMACS_INT used_cells; /* number of objects in list */ + EMACS_INT used_space; /* used space */ + EMACS_INT total_cells; /* number of available cells */ + EMACS_INT total_space; /* available space */ +#endif +} page_list_header; + + +/* The heap sectors are stored with their real start pointer and their + real size. Not aligned to PAGE_SIZE. Needed for freeing heap sectors. */ +typedef struct heap_sect { + void *real_start; /* real start pointer (NOT aligned) */ + size_t real_size; /* NOT multiple of PAGE_SIZE */ + void *start; /* aligned start pointer */ + EMACS_INT n_pages; /* multiple of PAGE_SIZE */ +} heap_sect; + + +/* 2nd tree level for mapping of heap addresses to page headers. */ +typedef struct level_2_lookup_tree { + page_header *index[LEVEL2_SIZE]; /* link to page header */ + EMACS_INT key; /* high order address bits */ +#ifdef USE_HASH_TABLE + struct level_2_lookup_tree *hash_link; /* hash chain link */ +#endif +} level_2_lookup_tree; + + + +/*--- global variable definitions --------------------------------------*/ + +/* All global allocator variables are kept in this struct. */ +typedef struct mc_allocator_globals_type { + + /* heap size */ + EMACS_INT heap_size; + + /* list of all separatly allocated chunks of heap */ + heap_sect heap_sections[MAX_HEAP_SECTS]; + EMACS_INT n_heap_sections; + + /* Holds all allocated pages, each object size class in its separate list, + to guarantee fast allocation on partially filled pages. */ + page_list_header used_heap_pages[N_USED_PAGE_LISTS]; + + /* Holds all unmanaged pages. */ + page_list_header unmanaged_heap_pages[N_UNMANAGED_PAGE_LISTS]; + + /* Holds all free pages in the heap. N multiples of PAGE_SIZE are + kept on the Nth free list. Contiguos pages are coalesced. */ + page_list_header free_heap_pages[N_FREE_PAGE_LISTS]; + + /* ptr lookup table */ + level_2_lookup_tree *ptr_lookup_table[LEVEL1_SIZE]; + + /* page header free list */ + free_link *page_header_free_list; + +#ifdef MEMORY_USAGE_STATS + EMACS_INT malloced_bytes; +#endif +} mc_allocator_globals_type; + +mc_allocator_globals_type mc_allocator_globals; + + + + +/*--- macro accessors --------------------------------------------------*/ + +#define USED_HEAP_PAGES(i) \ + ((page_list_header*) &mc_allocator_globals.used_heap_pages[i]) + +#define UNMANAGED_HEAP_PAGES(i) \ + ((page_list_header*) &mc_allocator_globals.unmanaged_heap_pages[i]) + +#define FREE_HEAP_PAGES(i) \ + ((page_list_header*) &mc_allocator_globals.free_heap_pages[i]) + +#define PLH(plh) plh +# define PLH_LIST_TYPE(plh) PLH (plh)->list_type +# define PLH_SIZE(plh) PLH (plh)->size +# define PLH_FIRST(plh) PLH (plh)->first +# define PLH_LAST(plh) PLH (plh)->last +# define PLH_MARK_BIT_FREE_LIST(plh) PLH (plh)->mark_bit_free_list +#ifdef MEMORY_USAGE_STATS +# define PLH_PAGE_COUNT(plh) PLH (plh)->page_count +# define PLH_USED_CELLS(plh) PLH (plh)->used_cells +# define PLH_USED_SPACE(plh) PLH (plh)->used_space +# define PLH_TOTAL_CELLS(plh) PLH (plh)->total_cells +# define PLH_TOTAL_SPACE(plh) PLH (plh)->total_space +#endif + +#define PH(ph) ph +# define PH_NEXT(ph) PH (ph)->next +# define PH_PREV(ph) PH (ph)->prev +# define PH_PLH(ph) PH (ph)->plh +# define PH_FREE_LIST(ph) PH (ph)->free_list +# define PH_N_PAGES(ph) PH (ph)->n_pages +# define PH_CELL_SIZE(ph) PH (ph)->cell_size +# define PH_CELLS_ON_PAGE(ph) PH (ph)->cells_on_page +# define PH_CELLS_USED(ph) PH (ph)->cells_used +# define PH_MARK_BITS(ph) PH (ph)->mark_bits +# define PH_HEAP_SPACE(ph) PH (ph)->heap_space +#define PH_LIST_TYPE(ph) PLH_LIST_TYPE (PH_PLH (ph)) +#define PH_MARK_BIT_FREE_LIST(ph) PLH_MARK_BIT_FREE_LIST (PH_PLH (ph)) + +#define HEAP_SIZE mc_allocator_globals.heap_size + +#ifdef MEMORY_USAGE_STATS +# define MC_MALLOCED_BYTES mc_allocator_globals.malloced_bytes +#endif + +#define HEAP_SECTION(index) mc_allocator_globals.heap_sections[index] +#define N_HEAP_SECTIONS mc_allocator_globals.n_heap_sections + +#define PAGE_HEADER_FREE_LIST mc_allocator_globals.page_header_free_list + +#define NEXT_FREE(free_list) ((free_link*) free_list)->next_free +#define FREE_LIST(free_list) (free_link*) (free_list) + +#define PTR_LOOKUP_TABLE(i) mc_allocator_globals.ptr_lookup_table[i] +#define LEVEL2(l2, i) l2->index[i] +# define LEVEL2_KEY(l2) l2->key +#ifdef USE_HASH_TABLE +# define LEVEL2_HASH_LINK(l2) l2->hash_link +#endif + +#if ZERO_MEM +# define ZERO_HEAP_SPACE(ph) \ + memset (PH_HEAP_SPACE (ph), '\0', PH_N_PAGES (ph) * PAGE_SIZE) +# define ZERO_PAGE_HEADER(ph) memset (ph, '\0', sizeof (page_header)) +#endif + +#define div_PAGE_SIZE(x) (x >> LOG_PAGE_SIZE) +#define mult_PAGE_SIZE(x) (x << LOG_PAGE_SIZE) + +#define BYTES_TO_PAGES(bytes) (div_PAGE_SIZE ((bytes + (PAGE_SIZE - 1)))) + +#define PAGE_SIZE_ALIGNMENT(address) \ + (void *) ((((EMACS_INT) (address)) + PAGE_SIZE) & ~(PAGE_SIZE - 1)) + +#define PH_ON_FREE_LIST_P(ph) \ + (ph && PH_PLH (ph) && (PLH_LIST_TYPE (PH_PLH (ph)) == FREE_LIST)) + +#define PH_ON_USED_LIST_P(ph) \ + (ph && PH_PLH (ph) && (PLH_LIST_TYPE (PH_PLH (ph)) == USED_LIST)) + +#define PH_ON_UNMANAGED_LIST_P(ph) \ + (ph && PH_PLH (ph) && (PLH_LIST_TYPE (PH_PLH (ph)) == UNMANAGED_LIST)) + + + + +/************************************************************************/ +/* MC Allocator */ +/************************************************************************/ + + +/* ###TODO### */ +#if 1 +# define ALLOC_MB_UNMANAGED 1 +#endif + + +/*--- misc functions ---------------------------------------------------*/ + +/* moved here from alloc.c */ +#ifdef ERROR_CHECK_GC +static void +deadbeef_memory (void *ptr, Bytecount size) +{ + UINT_32_BIT *ptr4 = (UINT_32_BIT *) ptr; + Bytecount beefs = size >> 2; + + /* In practice, size will always be a multiple of four. */ + while (beefs--) + (*ptr4++) = 0xDEADBEEF; /* -559038737 base 10 */ +} +#endif /* ERROR_CHECK_GC */ + +/* Visits all pages (page_headers) hooked into the used heap pages + list and executes f with the current page header as + argument. Needed for sweep. */ +static void +visit_all_used_page_headers (void (*f) (page_header *ph)) +{ + int i; + for (i = 0; i < N_USED_PAGE_LISTS; i++) + if (PLH_FIRST (USED_HEAP_PAGES (i))) + { + page_header *ph = PLH_FIRST (USED_HEAP_PAGES (i)); + while (PH_NEXT (ph)) + { + page_header *next = PH_NEXT (ph); /* in case f removes the page */ + f (ph); + ph = next; + } + f (ph); + } +} + + + + +/*--- mapping of heap addresses to page headers and mark bits ----------*/ + +/* Sets a heap pointer and page header pair into the lookup table. */ +static void +set_lookup_table (void *ptr, page_header *ph) +{ + int l1_index = L1_INDEX (ptr); + level_2_lookup_tree *l2 = PTR_LOOKUP_TABLE (l1_index); +#ifdef USE_HASH_TABLE + while ((l2) && (LEVEL2_KEY (l2) != l1_index)) + l2 = LEVEL2_HASH_LINK (l2); +#endif + if (!l2) + { + l2 = (level_2_lookup_tree*) + xmalloc_and_zero (sizeof (level_2_lookup_tree)); +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES += + malloced_storage_size (0, sizeof (level_2_lookup_tree), 0); +#endif + memset (l2, 0, sizeof (level_2_lookup_tree)); +#ifdef USE_HASH_TABLE + LEVEL2_HASH_LINK (l2) = PTR_LOOKUP_TABLE (l1_index); +#endif + PTR_LOOKUP_TABLE (l1_index) = l2; + LEVEL2_KEY (l2) = l1_index; + } + LEVEL2 (l2, L2_INDEX (ptr)) = ph; +} + + +#ifdef UNSET_LOOKUP_TABLE +/* Set the lookup table to 0 for given heap address. */ +static void +unset_lookup_table (void *ptr) +{ + int l1_index = L1_INDEX (ptr); + level_2_lookup_tree *l2 = PTR_LOOKUP_TABLE (l1_index); +#ifdef USE_HASH_TABLE + while ((l2) && (LEVEL2_KEY (l2) != l1_index)) + l2 = LEVEL2_HASH_LINK (l2); +#endif + if (l2) { + LEVEL2 (l2, L2_INDEX (ptr)) = 0; + } +} +#endif + +/* Returns the page header of a given heap address, or 0 if not in table. + For internal use, no error checking. */ +static page_header * +get_page_header_internal (void *ptr) +{ + int l1_index = L1_INDEX (ptr); + level_2_lookup_tree *l2 = PTR_LOOKUP_TABLE (l1_index); +#ifdef USE_HASH_TABLE + while ((l2) && (LEVEL2_KEY (l2) != l1_index)) + l2 = LEVEL2_HASH_LINK (l2); +#endif + if (!l2) + return 0; + return LEVEL2 (l2, L2_INDEX (ptr)); +} + +/* Returns the page header of a given heap address, or 0 if not in table. */ +static page_header * +get_page_header (void *ptr) +{ + int l1_index = L1_INDEX (ptr); + level_2_lookup_tree *l2 = PTR_LOOKUP_TABLE (l1_index); + assert (l2); +#ifdef USE_HASH_TABLE + while ((l2) && (LEVEL2_KEY (l2) != l1_index)) + l2 = LEVEL2_HASH_LINK (l2); +#endif + assert (LEVEL2 (l2, L2_INDEX (ptr))); + return LEVEL2 (l2, L2_INDEX (ptr)); +} + + +/* Returns the mark bit index of a given heap address. */ +static EMACS_INT +get_mark_bit_index (void *ptr, page_header *ph) +{ + EMACS_INT cell_size = PH_CELL_SIZE (ph); + if (cell_size) + return (((EMACS_INT) ptr - (EMACS_INT)(PH_HEAP_SPACE (ph))) / cell_size); + else /* only one object on page */ + return 0; +} + + +/* Adds addresses of pages to lookup table. */ +static void +add_pages_to_lookup_table (page_header *ph, EMACS_INT n_pages) +{ + char *p = (char*) PH_HEAP_SPACE (ph); + EMACS_INT end_of_section = (EMACS_INT) p + (PAGE_SIZE * n_pages); + for (p = (char*) PH_HEAP_SPACE (ph); + (EMACS_INT) p < end_of_section; p += PAGE_SIZE) + set_lookup_table (p, ph); +} + + +/* Initializes lookup table. */ +static void +init_lookup_table (void) +{ + int i; + for (i = 0; i < LEVEL1_SIZE; i++) + PTR_LOOKUP_TABLE (i) = 0; +} + + + + +/*--- mark bits --------------------------------------------------------*/ + +/* Number of mark bits: minimum 1, maximum 8. */ +#define N_MARK_BITS 1 + +/*--- bit operations --- */ + +/* Allocates a bit array of length bits. */ +static char * +alloc_bit_array(size_t bits) +{ +#ifdef ALLOC_MB_UNMANAGED + size_t size = ((bits + CHAR_BIT - 1) / CHAR_BIT) * sizeof(char); + if (size < sizeof (free_link)) size = sizeof (free_link); + return (char *) mc_alloc_unmanaged (size); +#else /* not ALLOC_MB_UNMANAGED */ + size_t size = ((bits + CHAR_BIT - 1) / CHAR_BIT) * sizeof(char); + char *bit_array; + if (size < sizeof (free_link)) size = sizeof (free_link); + bit_array = (char*) xmalloc_and_zero (size); +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES += malloced_storage_size (0, size, 0); +#endif + return bit_array; +#endif /* not ALLOC_MB_UNMANAGED */ +} + + +/* Returns the bit value at pos. */ +static EMACS_INT +get_bit (char *bit_array, EMACS_INT pos) +{ +#if N_MARK_BITS > 1 + EMACS_INT result = 0; + EMACS_INT i; +#endif + bit_array += pos / CHAR_BIT; +#if N_MARK_BITS > 1 + for (i = 0; i < N_MARK_BITS; i++) + result |= (*bit_array & (1 << ((pos + i) % CHAR_BIT))); + return result >> pos; +#else + return (*bit_array & (1 << (pos % CHAR_BIT))) != 0; +#endif +} + + +/* Bit_Arrays bit at pos to val. */ +static void +set_bit(char *bit_array, EMACS_INT pos, EMACS_INT val) +{ +#if N_MARK_BITS > 1 + EMACS_INT result = 0; + EMACS_INT i; +#endif + bit_array += pos / CHAR_BIT; +#if N_MARK_BITS > 1 + for (i = 0; i < N_MARK_BITS; i++) + if ((val >> i) & 1) + *bit_array |= 1 << ((pos + i) % CHAR_BIT); + else + *bit_array &= ~(1 << ((pos + i) % CHAR_BIT)); +#else + if (val) + *bit_array |= 1 << (pos % CHAR_BIT); + else + *bit_array &= ~(1 << (pos % CHAR_BIT)); +#endif +} + + +/*--- mark bit functions ---*/ +#define USE_PNTR_MARK_BITS(ph) (PH_CELLS_ON_PAGE (ph) > BITS_PER_EMACS_INT) +#define USE_WORD_MARK_BITS(ph) (PH_CELLS_ON_PAGE (ph) <= BITS_PER_EMACS_INT) + +#define GET_BIT_WORD(b, p) get_bit ((char*) &b, p) +#define GET_BIT_PNTR(b, p) get_bit (b, p) + +#define SET_BIT_WORD(b, p, v) set_bit ((char*) &b, p, v) +#define SET_BIT_PNTR(b, p, v) set_bit (b, p, v) + +#define ZERO_MARK_BITS_WORD(ph) PH_MARK_BITS (ph) = 0 +#define ZERO_MARK_BITS_PNTR(ph) \ +do { \ + memset (PH_MARK_BITS (ph), '\0', \ + (PH_CELLS_ON_PAGE (ph) + CHAR_BIT - 1) \ + / CHAR_BIT * sizeof(char)); \ +} while (0) + +#define GET_BIT(bit, ph, p) \ +do { \ + if (USE_PNTR_MARK_BITS (ph)) \ + bit = GET_BIT_PNTR (PH_MARK_BITS (ph), p); \ + else \ + bit = GET_BIT_WORD (PH_MARK_BITS (ph), p); \ +} while (0) + +#define SET_BIT(ph, p, v) \ +do { \ + if (USE_PNTR_MARK_BITS (ph)) \ + SET_BIT_PNTR (PH_MARK_BITS (ph), p, v); \ + else \ + SET_BIT_WORD (PH_MARK_BITS (ph), p, v); \ +} while (0) + +#define ZERO_MARK_BITS(ph) \ +do { \ + if (USE_PNTR_MARK_BITS (ph)) \ + ZERO_MARK_BITS_PNTR (ph); \ + else \ + ZERO_MARK_BITS_WORD (ph); \ +} while (0) + + +/* Allocates mark-bit space either from a free list or from the OS + for the given page header. */ +static char * +alloc_mark_bits (page_header *ph) +{ + char *result; + if (PH_MARK_BIT_FREE_LIST (ph) == 0) + result = (char*) alloc_bit_array (PH_CELLS_ON_PAGE (ph) * N_MARK_BITS); + else + { + result = (char*) PH_MARK_BIT_FREE_LIST (ph); + PH_MARK_BIT_FREE_LIST (ph) = NEXT_FREE (result); + } + return result; +} + + +/* Frees by maintaining a free list. */ +static void +free_mark_bits (page_header *ph) +{ +#ifdef ALLOC_MB_UNMANAGED + if (PH_MARK_BITS (ph)) + mc_free (PH_MARK_BITS (ph)); +#else /* not ALLOC_MB_UNMANAGED */ + if (PH_MARK_BITS (ph)) { + NEXT_FREE (PH_MARK_BITS (ph)) = PH_MARK_BIT_FREE_LIST (ph); + PH_MARK_BIT_FREE_LIST (ph) = FREE_LIST (PH_MARK_BITS (ph)); + } +#endif /* not ALLOC_MB_UNMANAGED */ +} + + +/* Installs mark bits and zeros bits. */ +static void +install_mark_bits (page_header *ph) +{ + if (USE_PNTR_MARK_BITS (ph)) + { + PH_MARK_BITS (ph) = alloc_mark_bits (ph); + ZERO_MARK_BITS_PNTR (ph); + } + else + ZERO_MARK_BITS_WORD (ph); +} + + +/* Cleans and frees the mark bits of the given page_header. */ +static void +remove_mark_bits (page_header *ph) +{ + if (USE_PNTR_MARK_BITS (ph)) + free_mark_bits (ph); +} + + +/* Zeros all mark bits in given header. */ +static void +zero_mark_bits (page_header *ph) +{ + ZERO_MARK_BITS (ph); +} + + +/* Returns mark bit for given heap pointer. */ +EMACS_INT +get_mark_bit (void *ptr) +{ + EMACS_INT bit = 0; + page_header *ph = get_page_header (ptr); + gc_checking_assert (ph && PH_ON_USED_LIST_P (ph)); + if (ph) + { + GET_BIT (bit, ph, get_mark_bit_index (ptr, ph)); + } + return bit; +} + + +/* Sets mark bit for given heap pointer. */ +void +set_mark_bit (void *ptr, EMACS_INT value) +{ + page_header *ph = get_page_header (ptr); + assert (ph && PH_ON_USED_LIST_P (ph)); + if (ph) + { + SET_BIT (ph, get_mark_bit_index (ptr, ph), value); + } +} + + + + +/*--- page header functions --------------------------------------------*/ + +/* Allocates a page header either from a free list or from the OS. */ +static page_header * +alloc_page_header (void) +{ + page_header *result; + if (PAGE_HEADER_FREE_LIST == 0) + { + result = + (page_header *) xmalloc_and_zero ((EMACS_INT) (sizeof (page_header))); +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES += malloced_storage_size (0, sizeof (page_header), 0); +#endif + + } + else + { + result = (page_header*) PAGE_HEADER_FREE_LIST; + PAGE_HEADER_FREE_LIST = NEXT_FREE (result); + } + return result; +} + + +/* Frees given page header by maintaining a free list. */ +static void +free_page_header (page_header *ph) +{ +#if ZERO_MEM + ZERO_PAGE_HEADER (ph); +#endif + NEXT_FREE (ph) = PAGE_HEADER_FREE_LIST; + PAGE_HEADER_FREE_LIST = FREE_LIST (ph); +} + + +/* Adds given page header to given page list header's list. */ +static void +add_page_header_to_plh (page_header *ph, page_list_header *plh) +{ + /* insert at the front of the list */ + PH_PREV (ph) = 0; + PH_NEXT (ph) = PLH_FIRST (plh); + PH_PLH (ph) = plh; + /* if list is not empty, set prev in the first element */ + if (PLH_FIRST (plh)) + PH_PREV (PLH_FIRST (plh)) = ph; + /* one element in list is first and last at the same time */ + PLH_FIRST (plh) = ph; + if (!PLH_LAST (plh)) + PLH_LAST (plh) = ph; + +#ifdef MEMORY_USAGE_STATS + /* bump page count */ + PLH_PAGE_COUNT (plh)++; +#endif + +} + + +/* Removes given page header from given page list header's list. */ +static void +remove_page_header_from_plh (page_header *ph, page_list_header *plh) +{ + if (PLH_FIRST (plh) == ph) + PLH_FIRST (plh) = PH_NEXT (ph); + if (PLH_LAST (plh) == ph) + PLH_LAST (plh) = PH_PREV (ph); + if (PH_NEXT (ph)) + PH_PREV (PH_NEXT (ph)) = PH_PREV (ph); + if (PH_PREV (ph)) + PH_NEXT (PH_PREV (ph)) = PH_NEXT (ph); + +#ifdef MEMORY_USAGE_STATS + /* decrease page count */ + PLH_PAGE_COUNT (plh)--; +#endif +} + + +/* Moves a page header to the front of its the page header list. + This is used during sweep: Pages with some alive objects are moved to + the front. This makes allocation faster, all pages with free slots + can be found at the front of the list. */ +static void +move_page_header_to_front (page_header *ph) +{ + page_list_header *plh = PH_PLH (ph); + /* is page already first? */ + if (ph == PLH_FIRST (plh)) return; + /* remove from list */ + if (PLH_LAST (plh) == ph) + PLH_LAST (plh) = PH_PREV (ph); + if (PH_NEXT (ph)) + PH_PREV (PH_NEXT (ph)) = PH_PREV (ph); + if (PH_PREV (ph)) + PH_NEXT (PH_PREV (ph)) = PH_NEXT (ph); + /* insert at the front */ + PH_NEXT (ph) = PLH_FIRST (plh); + PH_PREV (ph) = 0; + PH_PREV (PH_NEXT (ph)) = ph; + PLH_FIRST (plh) = ph; +} + + + + +/*--- page list functions ----------------------------------------------*/ + +/* Returns the index of the used heap list according to given size. */ +static int +get_used_list_index (size_t size) +{ + if (size <= USED_LIST_MIN_OBJECT_SIZE) + return 0; + if (size <= USED_LIST_UPPER_THRESHOLD) + return ((size - USED_LIST_MIN_OBJECT_SIZE - 1) + / USED_LIST_LIN_STEP) + 1; + return N_USED_PAGE_LISTS - 1; +} + + +/* Returns the size of the used heap list according to given index. */ +static size_t +get_used_list_size_value (int used_index) +{ + if (used_index < N_USED_PAGE_LISTS - 1) + return (used_index * USED_LIST_LIN_STEP) + USED_LIST_MIN_OBJECT_SIZE; + return 0; +} + + +/* Returns the index of the used heap list according to given size. */ +static int +get_unmanaged_list_index (size_t size) +{ + if (size <= UNMANAGED_LIST_MIN_OBJECT_SIZE) + return 0; + if (size <= UNMANAGED_LIST_UPPER_THRESHOLD) + return ((size - UNMANAGED_LIST_MIN_OBJECT_SIZE - 1) + / UNMANAGED_LIST_LIN_STEP) + 1; + return N_UNMANAGED_PAGE_LISTS - 1; +} + + +/* Returns the size of the unmanaged heap list according to given index. */ +static size_t +get_unmanaged_list_size_value (int unmanaged_index) +{ + if (unmanaged_index < N_UNMANAGED_PAGE_LISTS - 1) + return (unmanaged_index * UNMANAGED_LIST_LIN_STEP) + + UNMANAGED_LIST_MIN_OBJECT_SIZE; + return 0; +} + + +/* Returns the index of the free heap list according to given size. */ +static int +get_free_list_index (EMACS_INT n_pages) +{ + if (n_pages == 0) + return 0; + if (n_pages <= FREE_LIST_LOWER_THRESHOLD) + return n_pages - 1; + if (n_pages >= FREE_LIST_UPPER_THRESHOLD - 1) + return N_FREE_PAGE_LISTS - 1; + return ((n_pages - FREE_LIST_LOWER_THRESHOLD - 1) + / FREE_LIST_LIN_STEP) + FREE_LIST_LOWER_THRESHOLD; + +} + + +/* Returns the size in number of pages of the given free list at index. */ +static size_t +get_free_list_size_value (int free_index) +{ + if (free_index < FREE_LIST_LOWER_THRESHOLD) + return free_index + 1; + if (free_index >= N_FREE_PAGE_LISTS) + return FREE_LIST_UPPER_THRESHOLD; + return ((free_index + 1 - FREE_LIST_LOWER_THRESHOLD) + * FREE_LIST_LIN_STEP) + FREE_LIST_LOWER_THRESHOLD; +} + + +#ifdef MEMORY_USAGE_STATS +Bytecount +mc_alloced_storage_size (Bytecount claimed_size, struct overhead_stats *stats) +{ + size_t used_size = + get_used_list_size_value (get_used_list_index (claimed_size)); + if (used_size == 0) + used_size = mult_PAGE_SIZE (BYTES_TO_PAGES (claimed_size)); + + if (stats) + { + stats->was_requested += claimed_size; + stats->malloc_overhead += used_size - claimed_size; + } + + return used_size; +} +#endif /* not MEMORY_USAGE_STATS */ + + + +/*--- free heap functions ----------------------------------------------*/ + +/* Frees a heap section, if the heap_section is completly free */ +static EMACS_INT +free_heap_section (page_header *ph) +{ + int i; + int removed = 0; + for (i = 0; i < N_HEAP_SECTIONS; i++) + if (!removed) + { + if ((PH_HEAP_SPACE (ph) == HEAP_SECTION(i).start) + && (PH_N_PAGES (ph) == HEAP_SECTION(i).n_pages)) + { + xfree_1 (HEAP_SECTION(i).real_start); +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES + -= malloced_storage_size (0, HEAP_SECTION(i).real_size, 0); +#endif + + HEAP_SIZE -= PH_N_PAGES (ph) * PAGE_SIZE; + + removed = 1; + } + } + else + { + HEAP_SECTION(i-1).real_start = HEAP_SECTION(i).real_start; + HEAP_SECTION(i-1).real_size = HEAP_SECTION(i).real_size; + HEAP_SECTION(i-1).start = HEAP_SECTION(i).start; + HEAP_SECTION(i-1).n_pages = HEAP_SECTION(i).n_pages; + } + + N_HEAP_SECTIONS = N_HEAP_SECTIONS - removed; + + return removed; +} + +/* Removes page from free list. */ +static void +remove_page_from_free_list (page_header *ph) +{ + remove_page_header_from_plh (ph, PH_PLH (ph)); + PH_PLH (ph) = 0; +} + + +/* Adds page to according free list. */ +static void +add_page_to_free_list (page_header *ph) +{ + PH_PLH (ph) = FREE_HEAP_PAGES (get_free_list_index (PH_N_PAGES (ph))); + add_page_header_to_plh (ph, PH_PLH (ph)); +} + + +/* Merges two adjacent pages. */ +static page_header * +merge_pages (page_header *first_ph, page_header *second_ph) +{ + /* merge */ + PH_N_PAGES (first_ph) += PH_N_PAGES (second_ph); + /* clean up left over page header */ + free_page_header (second_ph); + /* update lookup table */ + add_pages_to_lookup_table (first_ph, PH_N_PAGES (first_ph)); + + return first_ph; +} + + +/* Checks if pages are adjacent, merges them, and adds merged page to + free list */ +static void +merge_into_free_list (page_header *ph) +{ + /* check if you can coalesce adjacent pages */ + page_header *prev_ph = + get_page_header_internal ((void*) (((EMACS_INT) PH_HEAP_SPACE (ph)) + - PAGE_SIZE)); + page_header *succ_ph = + get_page_header_internal ((void*) (((EMACS_INT) PH_HEAP_SPACE (ph)) + + (PH_N_PAGES (ph) * PAGE_SIZE))); + if (PH_ON_FREE_LIST_P (prev_ph)) + { + remove_page_from_free_list (prev_ph); + ph = merge_pages (prev_ph, ph); + } + if (PH_ON_FREE_LIST_P (succ_ph)) + { + remove_page_from_free_list (succ_ph); + ph = merge_pages (ph, succ_ph); + } + /* try to free heap_section, if the section is complete */ + if (!free_heap_section (ph)) + /* else add merged page to free list */ + add_page_to_free_list (ph); +} + + +/* Cuts given page header after n_pages, returns the first (cut) part, and + puts the rest on the free list. */ +static page_header * +split_page (page_header *ph, EMACS_INT n_pages) +{ + page_header *new_ph; + EMACS_INT rem_pages = PH_N_PAGES (ph) - n_pages; + + /* remove the page from the free list if already hooked in */ + if (PH_PLH (ph)) + remove_page_from_free_list (ph); + /* set new number of pages */ + PH_N_PAGES (ph) = n_pages; + /* add new page to lookup table */ + add_pages_to_lookup_table (ph, n_pages); + + if (rem_pages) + { + /* build new page with reminder */ + new_ph = alloc_page_header (); + PH_N_PAGES (new_ph) = rem_pages; + PH_HEAP_SPACE (new_ph) = + (void*) ((EMACS_INT) (PH_HEAP_SPACE (ph)) + (n_pages * PAGE_SIZE)); + /* add new page to lookup table */ + add_pages_to_lookup_table (new_ph, rem_pages); + /* hook the rest into free list */ + add_page_to_free_list (new_ph); + } + return ph; +} + + +/* Expands the heap by given number of pages. */ +static page_header * +expand_heap (EMACS_INT needed_pages) +{ + page_header *ph; + EMACS_INT n_pages; + size_t real_size; + void *real_start; + + /* determine number of pages the heap should grow */ + n_pages = needed_pages + (HEAP_SIZE / (PAGE_SIZE * HEAP_GROWTH_DIVISOR)); + if (n_pages < MIN_HEAP_INCREASE) + n_pages = MIN_HEAP_INCREASE; + + /* get the real values */ + real_size = (n_pages * PAGE_SIZE) + PAGE_SIZE; + real_start = xmalloc_and_zero (real_size); +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES += malloced_storage_size (0, real_size, 0); +#endif + + /* maintain heap section count */ + if (N_HEAP_SECTIONS >= MAX_HEAP_SECTS) + { + stderr_out ("Increase number of MAX_HEAP_SECTS"); + ABORT (); + } + HEAP_SECTION(N_HEAP_SECTIONS).real_start = real_start; + HEAP_SECTION(N_HEAP_SECTIONS).real_size = real_size; + HEAP_SECTION(N_HEAP_SECTIONS).start = PAGE_SIZE_ALIGNMENT (real_start); + HEAP_SECTION(N_HEAP_SECTIONS).n_pages = n_pages; + N_HEAP_SECTIONS ++; + + /* get page header */ + ph = alloc_page_header (); + + /* setup page header */ + PH_N_PAGES (ph) = n_pages; + PH_HEAP_SPACE (ph) = PAGE_SIZE_ALIGNMENT (real_start); + assert (((EMACS_INT) (PH_HEAP_SPACE (ph)) % PAGE_SIZE) == 0); + HEAP_SIZE += n_pages * PAGE_SIZE; + + /* this was also done by allocate_lisp_storage */ + if (need_to_check_c_alloca) + xemacs_c_alloca (0); + + /* return needed size, put rest on free list */ + return split_page (ph, needed_pages); +} + + + + +/*--- used heap functions ----------------------------------------------*/ +/* Installs initial free list. */ +static void +install_cell_free_list (page_header *ph) +{ + char *p; + int i; + EMACS_INT cell_size = PH_CELL_SIZE (ph); + /* write initial free list if cell_size is < PAGE_SIZE */ + p = (char *) PH_HEAP_SPACE (ph); + for (i = 0; i < PH_CELLS_ON_PAGE (ph) - 1; i++) + { +#ifdef ERROR_CHECK_GC + assert (!LRECORD_FREE_P (p)); + MARK_LRECORD_AS_FREE (p); +#endif + NEXT_FREE (p) = FREE_LIST (p + cell_size); + set_lookup_table (p, ph); + p += cell_size; + } +#ifdef ERROR_CHECK_GC + assert (!LRECORD_FREE_P (p)); + MARK_LRECORD_AS_FREE (p); +#endif + NEXT_FREE (p) = 0; + set_lookup_table (p, ph); + + /* hook free list into header */ + PH_FREE_LIST (ph) = FREE_LIST (PH_HEAP_SPACE (ph)); +} + + +/* Cleans the object space of the given page_header. */ +static void +remove_cell_free_list (page_header *ph) +{ +#if ZERO_MEM + ZERO_HEAP_SPACE (ph); +#endif + PH_FREE_LIST (ph) = 0; +} + + +/* Installs a new page and hooks it into given page_list_header. */ +static page_header * +install_page_in_used_list (page_header *ph, page_list_header *plh, + size_t size, int managed) +{ + /* add to list */ + add_page_header_to_plh (ph, plh); + + /* determine cell size */ + if (PLH_SIZE (plh)) + PH_CELL_SIZE (ph) = PLH_SIZE (plh); + else + PH_CELL_SIZE (ph) = size; + PH_CELLS_ON_PAGE (ph) = (PAGE_SIZE * PH_N_PAGES (ph)) / PH_CELL_SIZE (ph); + + /* init cell count */ + PH_CELLS_USED (ph) = 0; + + /* install mark bits and initialize cell free list */ + if (managed) + install_mark_bits (ph); + + install_cell_free_list (ph); + +#ifdef MEMORY_USAGE_STATS + PLH_TOTAL_CELLS (plh) += PH_CELLS_ON_PAGE (ph); + PLH_TOTAL_SPACE (plh) += PAGE_SIZE * PH_N_PAGES (ph); +#endif + + return ph; +} + + +/* Cleans and frees a page, identified by the given page_header. */ +static void +remove_page_from_used_list (page_header *ph) +{ + page_list_header *plh = PH_PLH (ph); + +#ifdef MEMORY_USAGE_STATS + PLH_TOTAL_CELLS (plh) -= PH_CELLS_ON_PAGE (ph); + PLH_TOTAL_SPACE (plh) -= PAGE_SIZE * PH_N_PAGES (ph); +#endif + + /* clean up mark bits and cell free list */ + remove_cell_free_list (ph); + if (PH_ON_USED_LIST_P (ph)) + remove_mark_bits (ph); + + /* clean up page header */ + PH_CELL_SIZE (ph) = 0; + PH_CELLS_ON_PAGE (ph) = 0; + PH_CELLS_USED (ph) = 0; + + /* remove from used list */ + remove_page_header_from_plh (ph, plh); + + /* move to free list */ + merge_into_free_list (ph); +} + + + + +/*--- allocation -------------------------------------------------------*/ + +/* Allocates from cell free list on already allocated pages. */ +static page_header * +allocate_cell (page_list_header *plh) +{ + page_header *ph = PLH_FIRST (plh); + if (ph) + { + if (PH_FREE_LIST (ph)) + /* elements free on first page */ + return ph; + else if ((PH_NEXT (ph)) + && (PH_FREE_LIST (PH_NEXT (ph)))) + /* elements free on second page */ + { + page_header *temp = PH_NEXT (ph); + /* move full page (first page) to end of list */ + PH_NEXT (PLH_LAST (plh)) = ph; + PH_PREV (ph) = PLH_LAST (plh); + PLH_LAST (plh) = ph; + PH_NEXT (ph) = 0; + /* install second page as first page */ + ph = temp; + PH_PREV (ph) = 0; + PLH_FIRST (plh) = ph; + return ph; + } + } + return 0; +} + + +/* Finds a page which has at least the needed number of pages. + Algorithm: FIRST FIT. */ +static page_header * +find_free_page_first_fit (EMACS_INT needed_pages, page_header *ph) +{ + while (ph) + { + if (PH_N_PAGES (ph) >= needed_pages) + return ph; + ph = PH_NEXT (ph); + } + return 0; +} + + +/* Allocates a page from the free list. */ +static page_header * +allocate_page_from_free_list (EMACS_INT needed_pages) +{ + page_header *ph = 0; + int i; + for (i = get_free_list_index (needed_pages); i < N_FREE_PAGE_LISTS; i++) + if ((ph = find_free_page_first_fit (needed_pages, + PLH_FIRST (FREE_HEAP_PAGES (i)))) != 0) + { + if (PH_N_PAGES (ph) > needed_pages) + return split_page (ph, needed_pages); + else + { + remove_page_from_free_list (ph); + return ph; + } + } + return 0; +} + + +/* Allocates a new page, either from free list or by expanding the heap. */ +static page_header * +allocate_new_page (page_list_header *plh, size_t size, int managed) +{ + EMACS_INT needed_pages = BYTES_TO_PAGES (size); + /* first check free list */ + page_header *result = allocate_page_from_free_list (needed_pages); + if (!result) + /* expand heap */ + result = expand_heap (needed_pages); + install_page_in_used_list (result, plh, size, managed); + return result; +} + + +/* Selects the correct size class, tries to allocate a cell of this size + from the free list, if this fails, a new page is allocated. */ +static void * +mc_alloc_1 (size_t size, int managed) +{ + page_list_header *plh = 0; + page_header *ph = 0; + void *result = 0; + + if (managed) + plh = USED_HEAP_PAGES (get_used_list_index (size)); + else + plh = UNMANAGED_HEAP_PAGES (get_unmanaged_list_index (size)); + + if (size == 0) + return 0; + if (size < PAGE_SIZE_DIV_2) + /* first check any free cells */ + ph = allocate_cell (plh); + if (!ph) + /* allocate a new page */ + ph = allocate_new_page (plh, size, managed); + + /* return first element of free list and remove it from the list */ + result = (void*) PH_FREE_LIST (ph); + PH_FREE_LIST (ph) = + NEXT_FREE (PH_FREE_LIST (ph)); + + memset (result, '\0', size); + if (managed) + MARK_LRECORD_AS_FREE (result); + + /* bump used cells counter */ + PH_CELLS_USED (ph)++; + +#ifdef MEMORY_USAGE_STATS + PLH_USED_CELLS (plh)++; + if (managed) + PLH_USED_SPACE (plh) += size; + else + PLH_USED_SPACE (plh) += PLH_SIZE (plh); +#endif + + return result; +} + +void * +mc_alloc (size_t size) +{ + return mc_alloc_1 (size, 1); +} + +void * +mc_alloc_unmanaged (size_t size) +{ + return mc_alloc_1 (size, 0); +} + + + + +/*--- sweep & free & finalize-------------------------------------------*/ + +/* Frees a heap pointer. */ +static void +remove_cell (void *ptr, page_header *ph) +{ +#ifdef MEMORY_USAGE_STATS + PLH_USED_CELLS (PH_PLH (ph))--; + if (PH_ON_USED_LIST_P (ph)) + PLH_USED_SPACE (PH_PLH (ph)) -= + detagged_lisp_object_size ((const struct lrecord_header *) ptr); + else + PLH_USED_SPACE (PH_PLH (ph)) -= PH_CELL_SIZE (ph); +#endif + if (PH_ON_USED_LIST_P (ph)) + { +#ifdef MC_ALLOC_TYPE_STATS + dec_lrecord_stats (PH_CELL_SIZE (ph), + (const struct lrecord_header *) ptr); +#endif /* MC_ALLOC_TYPE_STATS */ +#ifdef ERROR_CHECK_GC + assert (!LRECORD_FREE_P (ptr)); + deadbeef_memory (ptr, PH_CELL_SIZE (ph)); + MARK_LRECORD_AS_FREE (ptr); +#endif + } + + /* hooks cell into free list */ + NEXT_FREE (ptr) = PH_FREE_LIST (ph); + PH_FREE_LIST (ph) = FREE_LIST (ptr); + /* decrease cells used */ + PH_CELLS_USED (ph)--; +} + + +/* Mark free list marks all free list entries. */ +static void +mark_free_list (page_header *ph) +{ + free_link *fl = PH_FREE_LIST (ph); + while (fl) + { + SET_BIT (ph, get_mark_bit_index (fl, ph), 1); + fl = NEXT_FREE (fl); + } +} + +/* Finalize a page. You have to tell mc-alloc how to call your + object's finalizer. Therefore, you have to define the macro + MC_ALLOC_CALL_FINALIZER(ptr). This macro should do nothing else + then test if there is a finalizer and call it on the given + argument, which is the heap address of the object. */ +static void +finalize_page (page_header *ph) +{ + EMACS_INT heap_space = (EMACS_INT) PH_HEAP_SPACE (ph); + EMACS_INT heap_space_step = PH_CELL_SIZE (ph); + EMACS_INT mark_bit = 0; + EMACS_INT mark_bit_max_index = PH_CELLS_ON_PAGE (ph); + int bit = 0; + + mark_free_list (ph); + + for (mark_bit = 0; mark_bit < mark_bit_max_index; mark_bit++) + { + GET_BIT (bit, ph, mark_bit); + if (!bit) + { + EMACS_INT ptr = (heap_space + (heap_space_step * mark_bit)); + MC_ALLOC_CALL_FINALIZER ((void *) ptr); + } + } +} + + +/* Finalize a page for disksave. XEmacs calls this routine before it + dumps the heap image. You have to tell mc-alloc how to call your + object's finalizer for disksave. Therefore, you have to define the + macro MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE(ptr). This macro should + do nothing else then test if there is a finalizer and call it on + the given argument, which is the heap address of the object. */ +static void +finalize_page_for_disksave (page_header *ph) +{ + EMACS_INT heap_space = (EMACS_INT) PH_HEAP_SPACE (ph); + EMACS_INT heap_space_step = PH_CELL_SIZE (ph); + EMACS_INT mark_bit = 0; + EMACS_INT mark_bit_max_index = PH_CELLS_ON_PAGE (ph); + + mark_free_list (ph); + + for (mark_bit = 0; mark_bit < mark_bit_max_index; mark_bit++) + { + EMACS_INT ptr = (heap_space + (heap_space_step * mark_bit)); + MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE ((void *) ptr); + } +} + + +/* Finalizes the heap. */ +void +mc_finalize (void) +{ + visit_all_used_page_headers (finalize_page); +} + + +/* Finalizes the heap for disksave. */ +void +mc_finalize_for_disksave (void) +{ + visit_all_used_page_headers (finalize_page_for_disksave); +} + + +/* Sweeps a page: all the non-marked cells are freed. If the page is empty + in the end, it is removed. If some cells are free, it is moved to the + front of its page header list. Full pages stay where they are. */ +static void +sweep_page (page_header *ph) +{ + char *heap_space = (char *) PH_HEAP_SPACE (ph); + EMACS_INT heap_space_step = PH_CELL_SIZE (ph); + EMACS_INT mark_bit = 0; + EMACS_INT mark_bit_max_index = PH_CELLS_ON_PAGE (ph); + int bit = 0; + + mark_free_list (ph); + + for (mark_bit = 0; mark_bit < mark_bit_max_index; mark_bit++) + { + GET_BIT (bit, ph, mark_bit); + if (!bit) + { + remove_cell (heap_space + (heap_space_step * mark_bit), ph); + } + } + zero_mark_bits (ph); + if (PH_CELLS_USED (ph) == 0) + remove_page_from_used_list (ph); + else if (PH_CELLS_USED (ph) < PH_CELLS_ON_PAGE (ph)) + move_page_header_to_front (ph); +} + + +/* Sweeps the heap. */ +void +mc_sweep (void) +{ + visit_all_used_page_headers (sweep_page); +} + + +/* Frees the cell pointed to by ptr. */ +void +mc_free (void *ptr) +{ + page_header *ph = get_page_header (ptr); + assert (!PH_ON_FREE_LIST_P (ph)); + + remove_cell (ptr, ph); + + if (PH_CELLS_USED (ph) == 0) + remove_page_from_used_list (ph); + else if (PH_CELLS_USED (ph) < PH_CELLS_ON_PAGE (ph)) + move_page_header_to_front (ph); +} + + +/* Changes the size of the cell pointed to by ptr. + Returns the new address of the new cell with new size. */ +void * +mc_realloc_1 (void *ptr, size_t size, int managed) +{ + if (ptr) + { + if (size) + { + void *result = mc_alloc_1 (size, managed); + size_t from_size = PH_CELL_SIZE (get_page_header (ptr)); + size_t cpy_size = size; + if (size > from_size) + cpy_size = from_size; + memcpy (result, ptr, cpy_size); + mc_free (ptr); + return result; + } + else + { + mc_free (ptr); + return 0; + } + } + else + return mc_alloc_1 (size, managed); +} + +void * +mc_realloc (void *ptr, size_t size) +{ + return mc_realloc_1 (ptr, size, 1); +} + +void * +mc_realloc_unmanaged (void *ptr, size_t size) +{ + return mc_realloc_1 (ptr, size, 0); +} + + + + +/*--- initialization ---------------------------------------------------*/ + +/* Call once at the very beginning. */ +void +init_mc_allocator (void) +{ + int i; + + for (i = 0; i < N_USED_PAGE_LISTS; i++) + { + page_list_header *plh = USED_HEAP_PAGES (i); + PLH_LIST_TYPE (plh) = USED_LIST; + PLH_SIZE (plh) = get_used_list_size_value (i); + PLH_FIRST (plh) = 0; + PLH_LAST (plh) = 0; + PLH_MARK_BIT_FREE_LIST (plh) = 0; +#ifdef MEMORY_USAGE_STATS + PLH_PAGE_COUNT (plh) = 0; + PLH_USED_CELLS (plh) = 0; + PLH_USED_SPACE (plh) = 0; + PLH_TOTAL_CELLS (plh) = 0; + PLH_TOTAL_SPACE (plh) = 0; +#endif + } + + for (i = 0; i < N_UNMANAGED_PAGE_LISTS; i++) + { + page_list_header *plh = UNMANAGED_HEAP_PAGES (i); + PLH_LIST_TYPE (plh) = UNMANAGED_LIST; + PLH_SIZE (plh) = get_unmanaged_list_size_value (i); + PLH_FIRST (plh) = 0; + PLH_LAST (plh) = 0; + PLH_MARK_BIT_FREE_LIST (plh) = 0; +#ifdef MEMORY_USAGE_STATS + PLH_PAGE_COUNT (plh) = 0; + PLH_USED_CELLS (plh) = 0; + PLH_USED_SPACE (plh) = 0; + PLH_TOTAL_CELLS (plh) = 0; + PLH_TOTAL_SPACE (plh) = 0; +#endif + } + + for (i = 0; i < N_FREE_PAGE_LISTS; i++) + { + page_list_header *plh = FREE_HEAP_PAGES (i); + PLH_LIST_TYPE (plh) = FREE_LIST; + PLH_SIZE (plh) = get_free_list_size_value (i); + PLH_FIRST (plh) = 0; + PLH_LAST (plh) = 0; + PLH_MARK_BIT_FREE_LIST (plh) = 0; +#ifdef MEMORY_USAGE_STATS + PLH_PAGE_COUNT (plh) = 0; + PLH_USED_CELLS (plh) = 0; + PLH_USED_SPACE (plh) = 0; + PLH_TOTAL_CELLS (plh) = 0; + PLH_TOTAL_SPACE (plh) = 0; +#endif + } + + PAGE_HEADER_FREE_LIST = 0; + +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES = sizeof (mc_allocator_globals); +#endif + + init_lookup_table (); +} + + + + +/*--- lisp function for statistics -------------------------------------*/ + +#ifdef MEMORY_USAGE_STATS +DEFUN ("mc-alloc-memory-usage", Fmc_alloc_memory_usage, 0, 0, 0, /* +Returns stats about the mc-alloc memory usage. See diagnose.el. +*/ + ()) +{ + Lisp_Object free_plhs = Qnil; + Lisp_Object used_plhs = Qnil; + Lisp_Object unmanaged_plhs = Qnil; + Lisp_Object heap_sects = Qnil; + int used_size = 0; + int real_size = 0; + + int i; + + for (i = 0; i < N_FREE_PAGE_LISTS; i++) + if (PLH_PAGE_COUNT (FREE_HEAP_PAGES(i)) > 0) + free_plhs = + acons (make_int (PLH_SIZE (FREE_HEAP_PAGES(i))), + list1 (make_int (PLH_PAGE_COUNT (FREE_HEAP_PAGES(i)))), + free_plhs); + + for (i = 0; i < N_UNMANAGED_PAGE_LISTS; i++) + if (PLH_PAGE_COUNT (UNMANAGED_HEAP_PAGES(i)) > 0) + unmanaged_plhs = + acons (make_int (PLH_SIZE (UNMANAGED_HEAP_PAGES(i))), + list5 (make_int (PLH_PAGE_COUNT (UNMANAGED_HEAP_PAGES(i))), + make_int (PLH_USED_CELLS (UNMANAGED_HEAP_PAGES(i))), + make_int (PLH_USED_SPACE (UNMANAGED_HEAP_PAGES(i))), + make_int (PLH_TOTAL_CELLS (UNMANAGED_HEAP_PAGES(i))), + make_int (PLH_TOTAL_SPACE (UNMANAGED_HEAP_PAGES(i)))), + unmanaged_plhs); + + for (i = 0; i < N_USED_PAGE_LISTS; i++) + if (PLH_PAGE_COUNT (USED_HEAP_PAGES(i)) > 0) + used_plhs = + acons (make_int (PLH_SIZE (USED_HEAP_PAGES(i))), + list5 (make_int (PLH_PAGE_COUNT (USED_HEAP_PAGES(i))), + make_int (PLH_USED_CELLS (USED_HEAP_PAGES(i))), + make_int (PLH_USED_SPACE (USED_HEAP_PAGES(i))), + make_int (PLH_TOTAL_CELLS (USED_HEAP_PAGES(i))), + make_int (PLH_TOTAL_SPACE (USED_HEAP_PAGES(i)))), + used_plhs); + + for (i = 0; i < N_HEAP_SECTIONS; i++) { + used_size += HEAP_SECTION(i).n_pages * PAGE_SIZE; + real_size += + malloced_storage_size (0, HEAP_SECTION(i).real_size, 0); + } + + heap_sects = + list3 (make_int (N_HEAP_SECTIONS), + make_int (used_size), + make_int (real_size)); + + return Fcons (make_int (PAGE_SIZE), + list6 (heap_sects, + Fnreverse (used_plhs), + Fnreverse (unmanaged_plhs), + Fnreverse (free_plhs), + make_int (sizeof (mc_allocator_globals)), + make_int (MC_MALLOCED_BYTES))); +} +#endif /* MEMORY_USAGE_STATS */ + +void +syms_of_mc_alloc (void) +{ +#ifdef MEMORY_USAGE_STATS + DEFSUBR (Fmc_alloc_memory_usage); +#endif /* MEMORY_USAGE_STATS */ +} diff --text -u /dev/null 'xemacs-21.5.21/src/mc-alloc.h' Index: ./src/mc-alloc.h --- ./src/mc-alloc.h Thu Jan 1 09:00:00 1970 +++ ./src/mc-alloc.h Sat Apr 9 08:11:29 2005 @@ -0,0 +1,133 @@ +/* New allocator for XEmacs. + Copyright (C) 2005 Marcus Crestani. + +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 2, 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; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in FSF. */ + +#ifndef INCLUDED_mc_alloc_h_ +#define INCLUDED_mc_alloc_h_ + + +/* This is moved here from alloc.c. */ +#ifndef MALLOC_OVERHEAD +# ifdef GNU_MALLOC +# define MALLOC_OVERHEAD 0 +# elif defined (rcheck) +# define MALLOC_OVERHEAD 20 +# else +# define MALLOC_OVERHEAD 8 +# endif +#endif /* MALLOC_OVERHEAD */ + + +/* This enables type based information (updated during gc). The output + is used by show-memory-usage to print memory information for each + type. Since the new allocator does not distinguish between types + anymore, this functionality is additionally implemented and + consumes a lot of time. That is why it is kept conditioned on a + separate flag called MC_ALLOC_TYPE_STATS. */ +#if 1 +# define MC_ALLOC_TYPE_STATS 1 +#endif + + +/*--- prototypes -------------------------------------------------------*/ + +BEGIN_C_DECLS + + + +/* Allocation related functions and macros: */ + +/* Builds and initializes all needed datastructures of the new allocator. */ +void init_mc_allocator (void); + +/* Returns a pointer to a block of memory of given size on the used heap. */ +void *mc_alloc (size_t size); + +/* Frees the object pointed to by pointer. */ +void mc_free (void *ptr); + +/* Modifies the size of the memory block pointed to by ptr. The + Address of the new block of given size is returned. */ +void *mc_realloc (void *ptr, size_t size); + + + +/* Garbage collection related functions and macros: */ + +/* Set the mark bit of the object pointed to by ptr to value.*/ +void set_mark_bit (void *ptr, EMACS_INT value); + +/* Return the mark bit of the object pointed to by ptr. */ +EMACS_INT get_mark_bit (void *ptr); + +/* mark bit macros */ +/* Returns true if the mark bit of the object pointed to by ptr is set. */ +#define MARKED_P(ptr) (get_mark_bit (ptr) == 1) + +/* Marks the object pointed to by ptr (sets the mark bit to 1). */ +#define MARK(ptr) set_mark_bit (ptr, 1) + +/* Unmarks the object pointed to by ptr (sets the mark bit to 0). */ +#define UNMARK(ptr) set_mark_bit (ptr, 0) + +/* The finalizer of every not marked object is called. The macro + MC_ALLOC_CALL_FINALIZER has to be defined and call the finalizer of + the object. */ +void mc_finalize (void); + +/* All not marked objects of the used heap are freed. */ +void mc_sweep (void); + + + +/* Portable dumper related functions and macros: */ + +/* The finalizer for disksave of every object is called to shrink the + dump image. The macro MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE has to + be defined and call the finalizer for disksave of the object. */ +void mc_finalize_for_disksave (void); + + + +/* Allocation function for the unmanaged heap: */ + +/* Returns a pointer to a block of memory of given size on the + unmanaged heap. */ +void *mc_alloc_unmanaged (size_t size); + +/* Modifies the size of the memory block pointed to by ptr. The + Address of the new block of given size is returned. */ +void *mc_realloc_unmanaged (void *ptr, size_t size); + + + +/* Functions and macros related with allocation statistics: */ + +#ifdef MEMORY_USAGE_STATS +/* Returns the real size, including overhead, which is actually alloced + for an object with given claimed_size. */ +Bytecount mc_alloced_storage_size (Bytecount claimed_size, + struct overhead_stats *stats); +#endif /* MEMORY_USAGE_STATS */ + +END_C_DECLS + +#endif /* INCLUDED_mc_alloc_h_ */ diff --text -u 'xemacs-21.5.20/src/mule-ccl.c' 'xemacs-21.5.21/src/mule-ccl.c' Index: ./src/mule-ccl.c --- ./src/mule-ccl.c Tue Sep 21 04:19:52 2004 +++ ./src/mule-ccl.c Wed Apr 6 02:42:59 2005 @@ -1302,6 +1302,13 @@ reg[RRR] = i; reg[rrr] = (*src++ & 0x7F); } + else if (LEADING_BYTE_CONTROL_1 == i) + { + if (src >= src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] = i; + reg[rrr] = (*src++ - 0xA0); + } else if (i <= MAX_LEADING_BYTE_OFFICIAL_2) { if ((src + 1) >= src_end) @@ -1349,7 +1356,7 @@ case CCL_WriteMultibyteChar2: i = reg[RRR]; /* charset */ - if (i == LEADING_BYTE_ASCII) + if (i == LEADING_BYTE_ASCII || i == LEADING_BYTE_CONTROL_1) i = reg[rrr] & 0xFF; else if (XCHARSET_DIMENSION (charset_by_leading_byte (i)) == 1) i = (((i - FIELD2_TO_OFFICIAL_LEADING_BYTE) << 7) diff --text -u 'xemacs-21.5.20/src/mule-charset.c' 'xemacs-21.5.21/src/mule-charset.c' Index: ./src/mule-charset.c --- ./src/mule-charset.c Fri Feb 4 01:14:07 2005 +++ ./src/mule-charset.c Mon May 16 01:38:13 2005 @@ -173,9 +173,9 @@ { XD_LISP_OBJECT, offsetof (Lisp_Charset, reverse_direction_charset) }, { XD_LISP_OBJECT, offsetof (Lisp_Charset, ccl_program) }, { XD_UNION, offsetof (Lisp_Charset, to_unicode_table), - XD_INDIRECT (0, 0), { &to_unicode_description } }, + XD_INDIRECT (0, 0), { &to_unicode_description }, XD_FLAG_NO_KKCC }, { XD_UNION, offsetof (Lisp_Charset, from_unicode_table), - XD_INDIRECT (1, 0), { &from_unicode_description } }, + XD_INDIRECT (1, 0), { &from_unicode_description }, XD_FLAG_NO_KKCC }, { XD_END } }; @@ -197,7 +197,11 @@ if (!overwrite) { +#ifdef MC_ALLOC + cs = alloc_lrecord_type (Lisp_Charset, &lrecord_charset); +#else /* not MC_ALLOC */ cs = alloc_lcrecord_type (Lisp_Charset, &lrecord_charset); +#endif /* not MC_ALLOC */ obj = wrap_charset (cs); if (final) @@ -880,7 +884,11 @@ { struct Lisp_Charset *c = XCHARSET (charset); xzero (*stats); +#ifdef MC_ALLOC + stats->other += mc_alloced_storage_size (sizeof (*c), ovstats); +#else /* not MC_ALLOC */ stats->other += malloced_storage_size (c, sizeof (*c), ovstats); +#endif /* not MC_ALLOC */ stats->from_unicode += compute_from_unicode_table_size (charset, ovstats); stats->to_unicode += compute_to_unicode_table_size (charset, ovstats); } diff --text -u 'xemacs-21.5.20/src/objects-impl.h' 'xemacs-21.5.21/src/objects-impl.h' Index: ./src/objects-impl.h --- ./src/objects-impl.h Sun Jan 12 20:08:19 2003 +++ ./src/objects-impl.h Sat Apr 9 08:11:30 2005 @@ -99,7 +99,11 @@ struct Lisp_Color_Instance { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object name; Lisp_Object device; @@ -119,7 +123,11 @@ struct Lisp_Font_Instance { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object name; /* the instantiator used to create the font instance */ Lisp_Object truename; /* used by the device-specific methods; we need to call them to get the truename (#### in reality, diff --text -u 'xemacs-21.5.20/src/objects.c' 'xemacs-21.5.21/src/objects.c' Index: ./src/objects.c --- ./src/objects.c Fri Feb 4 01:14:07 2005 +++ ./src/objects.c Sat Apr 9 08:11:30 2005 @@ -178,7 +178,11 @@ CHECK_STRING (name); device = wrap_device (decode_device (device)); +#ifdef MC_ALLOC + c = alloc_lrecord_type (Lisp_Color_Instance, &lrecord_color_instance); +#else /* not MC_ALLOC */ c = alloc_lcrecord_type (Lisp_Color_Instance, &lrecord_color_instance); +#endif /* not MC_ALLOC */ c->name = name; c->device = device; c->data = 0; @@ -387,7 +391,11 @@ device = wrap_device (decode_device (device)); +#ifdef MC_ALLOC + f = alloc_lrecord_type (Lisp_Font_Instance, &lrecord_font_instance); +#else /* not MC_ALLOC */ f = alloc_lcrecord_type (Lisp_Font_Instance, &lrecord_font_instance); +#endif /* not MC_ALLOC */ f->name = name; f->truename = Qnil; f->device = device; @@ -1198,7 +1206,11 @@ staticpro_nodump (&Vthe_null_color_instance); { Lisp_Color_Instance *c = +#ifdef MC_ALLOC + alloc_lrecord_type (Lisp_Color_Instance, &lrecord_color_instance); +#else /* not MC_ALLOC */ alloc_lcrecord_type (Lisp_Color_Instance, &lrecord_color_instance); +#endif /* not MC_ALLOC */ c->name = Qnil; c->device = Qnil; c->data = 0; @@ -1209,7 +1221,11 @@ staticpro_nodump (&Vthe_null_font_instance); { Lisp_Font_Instance *f = +#ifdef MC_ALLOC + alloc_lrecord_type (Lisp_Font_Instance, &lrecord_font_instance); +#else /* not MC_ALLOC */ alloc_lcrecord_type (Lisp_Font_Instance, &lrecord_font_instance); +#endif /* not MC_ALLOC */ f->name = Qnil; f->truename = Qnil; f->device = Qnil; diff --text -u 'xemacs-21.5.20/src/opaque.c' 'xemacs-21.5.21/src/opaque.c' Index: ./src/opaque.c --- ./src/opaque.c Wed Jan 26 19:22:28 2005 +++ ./src/opaque.c Sat Apr 9 08:11:30 2005 @@ -38,7 +38,9 @@ #include "lisp.h" #include "opaque.h" +#ifndef MC_ALLOC Lisp_Object Vopaque_ptr_free_list; +#endif /* not MC_ALLOC */ /* Should never, ever be called. (except by an external debugger) */ static void @@ -73,7 +75,11 @@ make_opaque (const void *data, Bytecount size) { Lisp_Opaque *p = (Lisp_Opaque *) +#ifdef MC_ALLOC + alloc_lrecord (aligned_sizeof_opaque (size), &lrecord_opaque); +#else /* not MC_ALLOC */ basic_alloc_lcrecord (aligned_sizeof_opaque (size), &lrecord_opaque); +#endif /* not MC_ALLOC */ p->size = size; if (data == OPAQUE_CLEAR) @@ -160,7 +166,13 @@ Lisp_Object make_opaque_ptr (void *val) { +#ifdef MC_ALLOC + Lisp_Object res = + wrap_pointer_1 (alloc_lrecord_type (Lisp_Opaque_Ptr, + &lrecord_opaque_ptr)); +#else /* not MC_ALLOC */ Lisp_Object res = alloc_managed_lcrecord (Vopaque_ptr_free_list); +#endif /* not MC_ALLOC */ set_opaque_ptr (res, val); return res; } @@ -171,9 +183,14 @@ void free_opaque_ptr (Lisp_Object ptr) { +#ifdef MC_ALLOC + free_lrecord (ptr); +#else /* not MC_ALLOC */ free_managed_lcrecord (Vopaque_ptr_free_list, ptr); +#endif /* not MC_ALLOC */ } +#ifndef MC_ALLOC void reinit_opaque_early (void) { @@ -181,6 +198,7 @@ &lrecord_opaque_ptr); staticpro_nodump (&Vopaque_ptr_free_list); } +#endif /* not MC_ALLOC */ void init_opaque_once_early (void) @@ -188,5 +206,7 @@ INIT_LRECORD_IMPLEMENTATION (opaque); INIT_LRECORD_IMPLEMENTATION (opaque_ptr); +#ifndef MC_ALLOC reinit_opaque_early (); +#endif /* not MC_ALLOC */ } diff --text -u 'xemacs-21.5.20/src/opaque.h' 'xemacs-21.5.21/src/opaque.h' Index: ./src/opaque.h --- ./src/opaque.h Fri Aug 29 00:44:30 2003 +++ ./src/opaque.h Sat Apr 9 08:11:30 2005 @@ -28,7 +28,11 @@ typedef struct Lisp_Opaque { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Bytecount size; max_align_t data[1]; } Lisp_Opaque; @@ -54,7 +58,11 @@ typedef struct Lisp_Opaque_Ptr { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ void *ptr; } Lisp_Opaque_Ptr; diff --text -u 'xemacs-21.5.20/src/print.c' 'xemacs-21.5.21/src/print.c' Index: ./src/print.c --- ./src/print.c Tue Jan 25 08:34:05 2005 +++ ./src/print.c Thu Apr 14 18:44:27 2005 @@ -306,8 +306,17 @@ window under MS Windows); do external-format conversion and call GETTEXT on the format string. Automatically flush when done. - This is safe even when not initialized or when dying -- we don't do - conversion in such cases. */ + NOTE: CIbyte means "internal format" data. This includes the "..." + arguments. For numerical arguments, we have to assume that vsprintf + will be a good boy and format them as ASCII. For Mule internal coding + (and UTF-8 internal coding, if/when we get it), it is safe to pass + string values in internal format to be formatted, because zero octets + only occur in the NUL character itself. Similarly, it is safe to pass + pure ASCII literal strings for these functions. *Everything else must + be converted, including all external data.* + + This function is safe to use even when not initialized or when dying -- + we don't do conversion in such cases. */ void stderr_out (const CIbyte *fmt, ...) @@ -1444,17 +1453,30 @@ default_object_printer (Lisp_Object obj, Lisp_Object printcharfun, int UNUSED (escapeflag)) { +#ifdef MC_ALLOC + struct lrecord_header *header = + (struct lrecord_header *) XPNTR (obj); +#else /* not MC_ALLOC */ struct lcrecord_header *header = (struct lcrecord_header *) XPNTR (obj); +#endif /* not MC_ALLOC */ if (print_readably) printing_unreadable_object ("#<%s 0x%x>", +#ifdef MC_ALLOC + LHEADER_IMPLEMENTATION (header)->name, +#else /* not MC_ALLOC */ LHEADER_IMPLEMENTATION (&header->lheader)->name, +#endif /* not MC_ALLOC */ header->uid); write_fmt_string (printcharfun, "#<%s 0x%x>", +#ifdef MC_ALLOC + LHEADER_IMPLEMENTATION (header)->name, +#else /* not MC_ALLOC */ LHEADER_IMPLEMENTATION (&header->lheader)->name, +#endif /* not MC_ALLOC */ header->uid); } @@ -1676,6 +1698,7 @@ } } +#ifndef MC_ALLOC if (lheader->type == lrecord_type_free) { printing_major_badness (printcharfun, "freed lrecord", 0, @@ -1688,6 +1711,7 @@ lheader, BADNESS_NO_TYPE); break; } +#endif /* not MC_ALLOC */ else if ((int) (lheader->type) >= lrecord_type_count) { printing_major_badness (printcharfun, "illegal lrecord type", @@ -2192,11 +2216,17 @@ debug_out ("<< bad object type=%d 0x%lx>>", header->type, (EMACS_INT) header); else +#ifdef MC_ALLOC + debug_out ("#<%s 0x%lx>", + LHEADER_IMPLEMENTATION (header)->name, + (EMACS_INT) ((struct lrecord_header *) header)->uid); +#else /* not MC_ALLOC */ debug_out ("#<%s 0x%lx>", LHEADER_IMPLEMENTATION (header)->name, LHEADER_IMPLEMENTATION (header)->basic_p ? (EMACS_INT) header : ((struct lcrecord_header *) header)->uid); +#endif /* not MC_ALLOC */ } inhibit_non_essential_conversion_operations = 0; diff --text -u 'xemacs-21.5.20/src/process.c' 'xemacs-21.5.21/src/process.c' Index: ./src/process.c --- ./src/process.c Tue Jan 25 08:34:06 2005 +++ ./src/process.c Sat Apr 9 08:11:31 2005 @@ -483,7 +483,11 @@ { Lisp_Object val, name1; int i; +#ifdef MC_ALLOC + Lisp_Process *p = alloc_lrecord_type (Lisp_Process, &lrecord_process); +#else /* not MC_ALLOC */ Lisp_Process *p = alloc_lcrecord_type (Lisp_Process, &lrecord_process); +#endif /* not MC_ALLOC */ #define MARKED_SLOT(x) p->x = Qnil; #include "process-slots.h" diff --text -u 'xemacs-21.5.20/src/procimpl.h' 'xemacs-21.5.21/src/procimpl.h' Index: ./src/procimpl.h --- ./src/procimpl.h Wed Sep 22 11:06:50 2004 +++ ./src/procimpl.h Sat Apr 9 08:11:31 2005 @@ -94,7 +94,11 @@ struct Lisp_Process { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* Exit code if process has terminated, signal which stopped/interrupted process diff --text -u 'xemacs-21.5.20/src/rangetab.c' 'xemacs-21.5.21/src/rangetab.c' Index: ./src/rangetab.c --- ./src/rangetab.c Fri Feb 4 01:14:08 2005 +++ ./src/rangetab.c Sat Apr 9 08:11:31 2005 @@ -328,8 +328,13 @@ */ (type)) { +#ifdef MC_ALLOC + Lisp_Range_Table *rt = alloc_lrecord_type (Lisp_Range_Table, + &lrecord_range_table); +#else /* not MC_ALLOC */ Lisp_Range_Table *rt = alloc_lcrecord_type (Lisp_Range_Table, &lrecord_range_table); +#endif /* not MC_ALLOC */ rt->entries = Dynarr_new (range_table_entry); rt->type = range_table_symbol_to_type (type); return wrap_range_table (rt); @@ -347,7 +352,11 @@ CHECK_RANGE_TABLE (range_table); rt = XRANGE_TABLE (range_table); +#ifdef MC_ALLOC + rtnew = alloc_lrecord_type (Lisp_Range_Table, &lrecord_range_table); +#else /* not MC_ALLOC */ rtnew = alloc_lcrecord_type (Lisp_Range_Table, &lrecord_range_table); +#endif /* not MC_ALLOC */ rtnew->entries = Dynarr_new (range_table_entry); rtnew->type = rt->type; diff --text -u 'xemacs-21.5.20/src/rangetab.h' 'xemacs-21.5.21/src/rangetab.h' Index: ./src/rangetab.h --- ./src/rangetab.h Mon Dec 6 12:52:17 2004 +++ ./src/rangetab.h Sat Apr 9 08:11:31 2005 @@ -49,7 +49,11 @@ struct Lisp_Range_Table { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ range_table_entry_dynarr *entries; enum range_table_type type; }; diff --text -u 'xemacs-21.5.20/src/scrollbar-gtk.c' 'xemacs-21.5.21/src/scrollbar-gtk.c' Index: ./src/scrollbar-gtk.c --- ./src/scrollbar-gtk.c Tue Jan 25 08:34:09 2005 +++ ./src/scrollbar-gtk.c Sat Apr 9 08:11:31 2005 @@ -484,7 +484,11 @@ struct gtk_scrollbar_data *data = (struct gtk_scrollbar_data *) inst->scrollbar_data; +#ifdef MC_ALLOC + total += mc_alloced_storage_size (sizeof (*data), ovstats); +#else /* not MC_ALLOC */ total += malloced_storage_size (data, sizeof (*data), ovstats); +#endif /* not MC_ALLOC */ inst = inst->next; } diff --text -u 'xemacs-21.5.20/src/scrollbar-msw.c' 'xemacs-21.5.21/src/scrollbar-msw.c' Index: ./src/scrollbar-msw.c --- ./src/scrollbar-msw.c Tue Sep 21 04:19:58 2004 +++ ./src/scrollbar-msw.c Sat Apr 9 08:11:32 2005 @@ -433,7 +433,11 @@ struct mswindows_scrollbar_data *data = (struct mswindows_scrollbar_data *) inst->scrollbar_data; +#ifdef MC_ALLOC + total += mc_alloced_storage_size (sizeof (*data), ovstats); +#else /* not MC_ALLOC */ total += malloced_storage_size (data, sizeof (*data), ovstats); +#endif /* not MC_ALLOC */ inst = inst->next; } diff --text -u 'xemacs-21.5.20/src/scrollbar-x.c' 'xemacs-21.5.21/src/scrollbar-x.c' Index: ./src/scrollbar-x.c --- ./src/scrollbar-x.c Tue Jan 25 08:34:09 2005 +++ ./src/scrollbar-x.c Sat Apr 9 08:11:32 2005 @@ -703,9 +703,14 @@ struct x_scrollbar_data *data = (struct x_scrollbar_data *) inst->scrollbar_data; +#ifdef MC_ALLOC + total += mc_alloced_storage_size (sizeof (*data), ovstats); + total += mc_alloced_storage_size (1 + strlen (data->name), ovstats); +#else /* not MC_ALLOC */ total += malloced_storage_size (data, sizeof (*data), ovstats); total += malloced_storage_size (data->name, 1 + strlen (data->name), ovstats); +#endif /* not MC_ALLOC */ inst = inst->next; } diff --text -u 'xemacs-21.5.20/src/scrollbar.c' 'xemacs-21.5.21/src/scrollbar.c' Index: ./src/scrollbar.c --- ./src/scrollbar.c Thu Jan 6 12:45:32 2005 +++ ./src/scrollbar.c Sat Apr 9 08:11:32 2005 @@ -199,8 +199,13 @@ { struct device *d = XDEVICE (f->device); struct scrollbar_instance *instance = +#ifdef MC_ALLOC + alloc_lrecord_type (struct scrollbar_instance, + &lrecord_scrollbar_instance); +#else /* not MC_ALLOC */ alloc_lcrecord_type (struct scrollbar_instance, &lrecord_scrollbar_instance); +#endif /* not MC_ALLOC */ MAYBE_DEVMETH (d, create_scrollbar_instance, (f, vertical, instance)); @@ -272,7 +277,11 @@ while (inst) { +#ifdef MC_ALLOC + total += mc_alloced_storage_size (sizeof (*inst), ovstats); +#else /* not MC_ALLOC */ total += malloced_storage_size (inst, sizeof (*inst), ovstats); +#endif /* not MC_ALLOC */ inst = inst->next; } diff --text -u 'xemacs-21.5.20/src/scrollbar.h' 'xemacs-21.5.21/src/scrollbar.h' Index: ./src/scrollbar.h --- ./src/scrollbar.h Fri Mar 29 13:48:32 2002 +++ ./src/scrollbar.h Sat Apr 9 08:11:32 2005 @@ -27,7 +27,11 @@ struct scrollbar_instance { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* Used by the frame caches. */ struct scrollbar_instance *next; diff --text -u 'xemacs-21.5.20/src/select.c' 'xemacs-21.5.21/src/select.c' Index: ./src/select.c --- ./src/select.c Tue Mar 1 05:21:50 2005 +++ ./src/select.c Fri May 6 02:10:54 2005 @@ -514,7 +514,7 @@ /* Get the timestamp of the given selection */ DEFUN ("get-xemacs-selection-timestamp", Fget_selection_timestamp, 1, 1, 0, /* -Return timestamp for SELECTION, if belongs to XEmacs and exists. +Return timestamp for SELECTION, if it belongs to XEmacs and exists. The timestamp is a cons of two integers, the first being the higher-order sixteen bits of the device-specific thirty-two-bit quantity, the second diff --text -u 'xemacs-21.5.20/src/sound.c' 'xemacs-21.5.21/src/sound.c' Index: ./src/sound.c --- ./src/sound.c Fri Jan 28 11:36:26 2005 +++ ./src/sound.c Fri May 6 02:10:54 2005 @@ -430,7 +430,7 @@ sound symbols that map to other sounds should be considered abstract sounds, and are used when a particular behavior or state occurs. -Rremember that the sound symbol is the *second* argument to `ding', not the +Remember that the sound symbol is the *second* argument to `ding', not the first. The following abstract sounds are used by XEmacs itself: diff --text -u 'xemacs-21.5.20/src/specifier.c' 'xemacs-21.5.21/src/specifier.c' Index: ./src/specifier.c --- ./src/specifier.c Fri Feb 4 01:14:08 2005 +++ ./src/specifier.c Sat Apr 9 08:11:32 2005 @@ -494,8 +494,13 @@ { Lisp_Object specifier; Lisp_Specifier *sp = (Lisp_Specifier *) +#ifdef MC_ALLOC + alloc_lrecord (aligned_sizeof_specifier (data_size), + &lrecord_specifier); +#else /* not MC_ALLOC */ basic_alloc_lcrecord (aligned_sizeof_specifier (data_size), &lrecord_specifier); +#endif /* not MC_ALLOC */ sp->methods = spec_meths; sp->global_specs = Qnil; diff --text -u 'xemacs-21.5.20/src/specifier.h' 'xemacs-21.5.21/src/specifier.h' Index: ./src/specifier.h --- ./src/specifier.h Wed Jan 26 19:22:28 2005 +++ ./src/specifier.h Sat Apr 9 08:11:33 2005 @@ -216,7 +216,11 @@ struct Lisp_Specifier { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ struct specifier_methods *methods; /* we keep a chained list of all current specifiers, for GC cleanup diff --text -u 'xemacs-21.5.20/src/symbols.c' 'xemacs-21.5.21/src/symbols.c' Index: ./src/symbols.c --- ./src/symbols.c Tue Jan 25 08:34:11 2005 +++ ./src/symbols.c Mon May 16 01:38:14 2005 @@ -2187,8 +2187,13 @@ { struct symbol_value_buffer_local *bfwd +#ifdef MC_ALLOC + = alloc_lrecord_type (struct symbol_value_buffer_local, + &lrecord_symbol_value_buffer_local); +#else /* not MC_ALLOC */ = alloc_lcrecord_type (struct symbol_value_buffer_local, &lrecord_symbol_value_buffer_local); +#endif /* not MC_ALLOC */ Lisp_Object foo; bfwd->magic.type = SYMVAL_BUFFER_LOCAL; @@ -2295,8 +2300,13 @@ } /* Make sure variable is set up to hold per-buffer values */ +#ifdef MC_ALLOC + bfwd = alloc_lrecord_type (struct symbol_value_buffer_local, + &lrecord_symbol_value_buffer_local); +#else /* not MC_ALLOC */ bfwd = alloc_lcrecord_type (struct symbol_value_buffer_local, &lrecord_symbol_value_buffer_local); +#endif /* not MC_ALLOC */ bfwd->magic.type = SYMVAL_SOME_BUFFER_LOCAL; bfwd->current_buffer = Qnil; @@ -3015,8 +3025,13 @@ valcontents = XSYMBOL (variable)->value; if (!SYMBOL_VALUE_LISP_MAGIC_P (valcontents)) { +#ifdef MC_ALLOC + bfwd = alloc_lrecord_type (struct symbol_value_lisp_magic, + &lrecord_symbol_value_lisp_magic); +#else /* MC_ALLOC */ bfwd = alloc_lcrecord_type (struct symbol_value_lisp_magic, &lrecord_symbol_value_lisp_magic); +#endif /* not MC_ALLOC */ bfwd->magic.type = SYMVAL_LISP_MAGIC; for (i = 0; i < MAGIC_HANDLER_MAX; i++) { @@ -3151,8 +3166,13 @@ invalid_change ("Variable is magic and cannot be aliased", variable); reject_constant_symbols (variable, Qunbound, 0, Qt); +#ifdef MC_ALLOC + bfwd = alloc_lrecord_type (struct symbol_value_varalias, + &lrecord_symbol_value_varalias); +#else /* not MC_ALLOC */ bfwd = alloc_lcrecord_type (struct symbol_value_varalias, &lrecord_symbol_value_varalias); +#endif /* not MC_ALLOC */ bfwd->magic.type = SYMVAL_VARALIAS; bfwd->aliasee = alias; bfwd->shadowed = valcontents; @@ -3252,6 +3272,7 @@ Lisp_Object Qnull_pointer; #endif +#ifndef MC_ALLOC /* some losing systems can't have static vars at function scope... */ static const struct symbol_value_magic guts_of_unbound_marker = { /* struct symbol_value_magic */ @@ -3269,6 +3290,7 @@ 0, /* value */ SYMVAL_UNBOUND_MARKER }; +#endif /* not MC_ALLOC */ void init_symbols_once_early (void) @@ -3300,7 +3322,22 @@ { /* Required to get around a GCC syntax error on certain architectures */ +#ifdef MC_ALLOC + struct symbol_value_magic *tem = (struct symbol_value_magic *) + mc_alloc (sizeof (struct symbol_value_magic)); + MARK_LRECORD_AS_LISP_READONLY (tem); + MARK_LRECORD_AS_NOT_FREE (tem); + tem->header.type = lrecord_type_symbol_value_forward; + mcpro (wrap_pointer_1 (tem)); + tem->value = 0; + tem->type = SYMVAL_UNBOUND_MARKER; +#ifdef MC_ALLOC_TYPE_STATS + inc_lrecord_stats (sizeof (struct symbol_value_magic), + (const struct lrecord_header *) tem); +#endif /* not MC_ALLOC_TYPE_STATS */ +#else /* not MC_ALLOC */ const struct symbol_value_magic *tem = &guts_of_unbound_marker; +#endif /* not MC_ALLOC */ Qunbound = wrap_symbol_value_magic (tem); } diff --text -u 'xemacs-21.5.20/src/symeval.h' 'xemacs-21.5.21/src/symeval.h' Index: ./src/symeval.h --- ./src/symeval.h Tue Oct 14 14:03:06 2003 +++ ./src/symeval.h Sat Apr 9 08:11:33 2005 @@ -77,7 +77,11 @@ struct symbol_value_magic { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header lcheader; +#endif /* MC_ALLOC */ void *value; enum symbol_value_type type; }; @@ -277,6 +281,44 @@ DEFUN ("name, Fname, ...); // at top level in foo.c DEFSUBR (Fname); // in syms_of_foo(); */ +#ifdef MC_ALLOC +MODULE_API void defsubr (Lisp_Subr *); +#define DEFSUBR_MC_ALLOC(Fname) \ + struct Lisp_Subr *S##Fname= (struct Lisp_Subr *) \ + mc_alloc (sizeof (struct Lisp_Subr)); \ + set_lheader_implementation (&S##Fname->lheader, &lrecord_subr); \ + \ + S##Fname->min_args = MC_ALLOC_S##Fname.min_args; \ + S##Fname->max_args = MC_ALLOC_S##Fname.max_args; \ + S##Fname->prompt = MC_ALLOC_S##Fname.prompt; \ + S##Fname->doc = MC_ALLOC_S##Fname.doc; \ + S##Fname->name = MC_ALLOC_S##Fname.name; \ + S##Fname->subr_fn = MC_ALLOC_S##Fname.subr_fn; \ + MARK_LRECORD_AS_LISP_READONLY (S##Fname); + + +#define DEFSUBR(Fname) \ +do { \ + DEFSUBR_MC_ALLOC (Fname); \ + defsubr (S##Fname); \ +} while (0) + +/* To define a Lisp primitive macro using a C function `Fname', do this: + DEFUN ("name, Fname, ...); // at top level in foo.c + DEFSUBR_MACRO (Fname); // in syms_of_foo(); +*/ +MODULE_API void defsubr_macro (Lisp_Subr *); +#define DEFSUBR_MACRO(Fname) \ +do { \ + DEFSUBR_MC_ALLOC (Fname); \ + defsubr_macro (S##Fname); \ +} while (0) + +#else /* not MC_ALLOC */ +/* To define a Lisp primitive function using a C function `Fname', do this: + DEFUN ("name, Fname, ...); // at top level in foo.c + DEFSUBR (Fname); // in syms_of_foo(); +*/ MODULE_API void defsubr (Lisp_Subr *); #define DEFSUBR(Fname) defsubr (&S##Fname) @@ -286,6 +328,7 @@ */ MODULE_API void defsubr_macro (Lisp_Subr *); #define DEFSUBR_MACRO(Fname) defsubr_macro (&S##Fname) +#endif /* not MC_ALLOC */ MODULE_API void defsymbol_massage_name (Lisp_Object *location, const char *name); @@ -358,6 +401,24 @@ MODULE_API void defvar_magic (const char *symbol_name, const struct symbol_value_forward *magic); +#ifdef MC_ALLOC +#define DEFVAR_SYMVAL_FWD(lname, c_location, forward_type, magic_fun) \ +do \ +{ \ + struct symbol_value_forward *I_hate_C = \ + alloc_lrecord_type (struct symbol_value_forward, \ + &lrecord_symbol_value_forward); \ + /* mcpro ((Lisp_Object) I_hate_C);*/ \ + \ + MARK_LRECORD_AS_LISP_READONLY (I_hate_C); \ + \ + I_hate_C->magic.value = c_location; \ + I_hate_C->magic.type = forward_type; \ + I_hate_C->magicfun = magic_fun; \ + \ + defvar_magic ((lname), I_hate_C); \ +} while (0) +#else /* not MC_ALLOC */ #define DEFVAR_SYMVAL_FWD(lname, c_location, forward_type, magicfun) \ do \ { \ @@ -383,7 +444,7 @@ }; \ defvar_magic ((lname), &I_hate_C); \ } while (0) - +#endif /* not MC_ALLOC */ #define DEFVAR_SYMVAL_FWD_INT(lname, c_location, forward_type, magicfun) \ do \ { \ diff --text -u 'xemacs-21.5.20/src/symsinit.h' 'xemacs-21.5.21/src/symsinit.h' Index: ./src/symsinit.h --- ./src/symsinit.h Fri Jan 28 11:36:26 2005 +++ ./src/symsinit.h Sat Apr 9 08:11:33 2005 @@ -140,6 +140,9 @@ void syms_of_lread (void); void syms_of_macros (void); void syms_of_marker (void); +#ifdef MC_ALLOC +void syms_of_mc_alloc (void); +#endif /* MC_ALLOC */ void syms_of_md5 (void); void syms_of_menubar (void); void syms_of_menubar_mswindows (void); diff --text -u 'xemacs-21.5.20/src/sysdep.c' 'xemacs-21.5.21/src/sysdep.c' Index: ./src/sysdep.c --- ./src/sysdep.c Fri Jan 28 11:36:27 2005 +++ ./src/sysdep.c Sun May 8 20:37:42 2005 @@ -3829,7 +3829,7 @@ /* Strings corresponding to defined signals */ /************************************************************************/ -#if !defined (SYS_SIGLIST_DECLARED) && !defined (HAVE_SYS_SIGLIST) +#if (!defined(HAVE_DECL_SYS_SIGLIST) || !HAVE_DECL_SYS_SIGLIST ) && !defined (HAVE_SYS_SIGLIST) #if defined(WIN32_NATIVE) || defined(CYGWIN) const char *sys_siglist[] = @@ -4031,7 +4031,7 @@ }; #endif /* DGUX */ -#endif /* ! SYS_SIGLIST_DECLARED && ! HAVE_SYS_SIGLIST */ +#endif /* (!defined(HAVE_DECL_SYS_SIGLIST) || !HAVE_DECL_SYS_SIGLIST ) && !defined (HAVE_SYS_SIGLIST) */ /************************************************************************/ diff --text -u 'xemacs-21.5.20/src/syssignal.h' 'xemacs-21.5.21/src/syssignal.h' Index: ./src/syssignal.h --- ./src/syssignal.h Fri Mar 11 20:20:18 2005 +++ ./src/syssignal.h Sat Mar 12 20:00:29 2005 @@ -270,7 +270,7 @@ /* HAVE_DECL_SYS_SIGLIST is determined by configure. On Linux, it seems, configure incorrectly fails to find it, so s/linux.h defines HAVE_SYS_SIGLIST. */ -#if !defined (HAVE_DECL_SYS_SIGLIST) && !defined (HAVE_SYS_SIGLIST) +#if (!defined(HAVE_DECL_SYS_SIGLIST) || !HAVE_DECL_SYS_SIGLIST ) && !defined (HAVE_SYS_SIGLIST) extern const char *sys_siglist[]; #endif diff --text -u 'xemacs-21.5.20/src/tests.c' 'xemacs-21.5.21/src/tests.c' Index: ./src/tests.c --- ./src/tests.c Tue Sep 21 04:20:02 2004 +++ ./src/tests.c Sat Apr 9 08:11:33 2005 @@ -479,12 +479,22 @@ +#ifdef MC_ALLOC +#define TESTS_DEFSUBR(Fname) do { \ + DEFSUBR_MC_ALLOC (Fname); \ + defsubr (S##Fname); \ + Vtest_function_list = \ + Fcons (intern (subr_name (S##Fname)), \ + Vtest_function_list); \ +} while (0) +#else /* not MC_ALLOC */ #define TESTS_DEFSUBR(Fname) do { \ DEFSUBR (Fname); \ Vtest_function_list = \ Fcons (intern (subr_name (&S##Fname)), \ Vtest_function_list); \ } while (0) +#endif /* not MC_ALLOC */ void syms_of_tests (void) diff --text -u 'xemacs-21.5.20/src/text.c' 'xemacs-21.5.21/src/text.c' Index: ./src/text.c --- ./src/text.c Tue Jan 25 08:34:12 2005 +++ ./src/text.c Sat Apr 9 19:02:12 2005 @@ -4588,7 +4588,8 @@ { alloca_convert_vals vals; - assert (find_pos_of_existing_active_alloca_convert (srctext) < 0); + int i = find_pos_of_existing_active_alloca_convert (srctext); + assert (i < 0); vals.srctext = srctext; diff --text -u 'xemacs-21.5.20/src/toolbar.c' 'xemacs-21.5.21/src/toolbar.c' Index: ./src/toolbar.c --- ./src/toolbar.c Tue Jan 25 08:34:12 2005 +++ ./src/toolbar.c Sat Apr 9 08:11:34 2005 @@ -303,7 +303,11 @@ if (!tb) { +#ifdef MC_ALLOC + tb = alloc_lrecord_type (struct toolbar_button, &lrecord_toolbar_button); +#else /* not MC_ALLOC */ tb = alloc_lcrecord_type (struct toolbar_button, &lrecord_toolbar_button); +#endif /* not MC_ALLOC */ tb->next = Qnil; tb->frame = wrap_frame (f); tb->up_glyph = Qnil; diff --text -u 'xemacs-21.5.20/src/toolbar.h' 'xemacs-21.5.21/src/toolbar.h' Index: ./src/toolbar.h --- ./src/toolbar.h Sun Jul 7 06:05:58 2002 +++ ./src/toolbar.h Sat Apr 9 08:11:34 2005 @@ -38,7 +38,11 @@ struct toolbar_button { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object next; Lisp_Object frame; diff --text -u 'xemacs-21.5.20/src/tooltalk.c' 'xemacs-21.5.21/src/tooltalk.c' Index: ./src/tooltalk.c --- ./src/tooltalk.c Tue Sep 21 04:20:04 2004 +++ ./src/tooltalk.c Sat Apr 9 08:11:34 2005 @@ -147,7 +147,11 @@ struct Lisp_Tooltalk_Message { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object plist_sym, callback; Tt_message m; }; @@ -191,7 +195,11 @@ { Lisp_Object val; Lisp_Tooltalk_Message *msg = +#ifdef MC_ALLOC + alloc_lrecord_type (Lisp_Tooltalk_Message, &lrecord_tooltalk_message); +#else /* not MC_ALLOC */ alloc_lcrecord_type (Lisp_Tooltalk_Message, &lrecord_tooltalk_message); +#endif /* not MC_ALLOC */ msg->m = m; msg->callback = Qnil; @@ -225,7 +233,11 @@ struct Lisp_Tooltalk_Pattern { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ Lisp_Object plist_sym, callback; Tt_pattern p; }; @@ -268,7 +280,11 @@ make_tooltalk_pattern (Tt_pattern p) { Lisp_Tooltalk_Pattern *pat = +#ifdef MC_ALLOC + alloc_lrecord_type (Lisp_Tooltalk_Pattern, &lrecord_tooltalk_pattern); +#else /* not MC_ALLOC */ alloc_lcrecord_type (Lisp_Tooltalk_Pattern, &lrecord_tooltalk_pattern); +#endif /* not MC_ALLOC */ Lisp_Object val; pat->p = p; diff --text -u 'xemacs-21.5.20/src/ui-gtk.c' 'xemacs-21.5.21/src/ui-gtk.c' Index: ./src/ui-gtk.c --- ./src/ui-gtk.c Wed Jan 26 19:22:25 2005 +++ ./src/ui-gtk.c Sat Apr 9 08:11:34 2005 @@ -280,7 +280,11 @@ static emacs_ffi_data * allocate_ffi_data (void) { +#ifdef MC_ALLOC + emacs_ffi_data *data = alloc_lrecord_type (emacs_ffi_data, &lrecord_emacs_ffi); +#else /* not MC_ALLOC */ emacs_ffi_data *data = alloc_lcrecord_type (emacs_ffi_data, &lrecord_emacs_ffi); +#endif /* not MC_ALLOC */ data->return_type = GTK_TYPE_NONE; data->n_args = 0; @@ -944,8 +948,13 @@ static emacs_gtk_object_data * allocate_emacs_gtk_object_data (void) { +#ifdef MC_ALLOC + emacs_gtk_object_data *data = alloc_lrecord_type (emacs_gtk_object_data, + &lrecord_emacs_gtk_object); +#else /* not MC_ALLOC */ emacs_gtk_object_data *data = alloc_lcrecord_type (emacs_gtk_object_data, &lrecord_emacs_gtk_object); +#endif /* not MC_ALLOC */ data->object = NULL; data->alive_p = FALSE; @@ -1153,8 +1162,13 @@ static emacs_gtk_boxed_data * allocate_emacs_gtk_boxed_data (void) { +#ifdef MC_ALLOC + emacs_gtk_boxed_data *data = alloc_lrecord_type (emacs_gtk_boxed_data, + &lrecord_emacs_gtk_boxed); +#else /* not MC_ALLOC */ emacs_gtk_boxed_data *data = alloc_lcrecord_type (emacs_gtk_boxed_data, &lrecord_emacs_gtk_boxed); +#endif /* not MC_ALLOC */ data->object = NULL; data->object_type = GTK_TYPE_INVALID; diff --text -u 'xemacs-21.5.20/src/ui-gtk.h' 'xemacs-21.5.21/src/ui-gtk.h' Index: ./src/ui-gtk.h --- ./src/ui-gtk.h Fri Mar 29 13:48:46 2002 +++ ./src/ui-gtk.h Sat Apr 9 08:11:34 2005 @@ -21,7 +21,11 @@ #define MAX_GTK_ARGS 100 typedef struct { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ GtkType return_type; GtkType args[MAX_GTK_ARGS]; gint n_args; @@ -39,7 +43,11 @@ /* Encapsulate a GtkObject in Lisp */ typedef struct { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ gboolean alive_p; GtkObject *object; Lisp_Object plist; @@ -56,7 +64,11 @@ /* Encapsulate a GTK_TYPE_BOXED in lisp */ typedef struct { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ GtkType object_type; void *object; } emacs_gtk_boxed_data; diff --text -u 'xemacs-21.5.20/src/unexelf.c' 'xemacs-21.5.21/src/unexelf.c' Index: ./src/unexelf.c --- ./src/unexelf.c Tue Sep 21 04:20:05 2004 +++ ./src/unexelf.c Sat Mar 26 01:35:00 2005 @@ -477,6 +477,14 @@ # include #endif +#if defined(__FreeBSD__) && (defined(__alpha__) || defined(__amd64__)) +# ifdef __STDC__ +# define ElfW(type) Elf64_##type +# else +# define ElfW(type) Elf64_/**/type +# endif +#endif + #if __GNU_LIBRARY__ - 0 >= 6 # include /* get ElfW etc */ #endif diff --text -u 'xemacs-21.5.20/src/unicode.c' 'xemacs-21.5.21/src/unicode.c' Index: ./src/unicode.c --- ./src/unicode.c Tue Mar 1 08:36:32 2005 +++ ./src/unicode.c Sat Apr 9 08:11:34 2005 @@ -548,10 +548,15 @@ } } +#ifdef MC_ALLOC + size += mc_alloced_storage_size (256 * (level == 1 ? sizeof (short) : + sizeof (void *)), stats); +#else /* not MC_ALLOC */ size += malloced_storage_size (table, 256 * (level == 1 ? sizeof (short) : sizeof (void *)), stats); +#endif /* not MC_ALLOC */ return size; } @@ -573,10 +578,15 @@ } } +#ifdef MC_ALLOC + size += mc_alloced_storage_size (96 * (level == 1 ? sizeof (int) : + sizeof (void *)), stats); +#else /* not MC_ALLOC */ size += malloced_storage_size (table, 96 * (level == 1 ? sizeof (int) : sizeof (void *)), stats); +#endif /* not MC_ALLOC */ return size; } @@ -857,6 +867,9 @@ sledgehammer_check_unicode_tables (charset); #endif + if (EQ(charset, Vcharset_ascii) || EQ(charset, Vcharset_control_1)) + return; + /* First, the char -> unicode translation */ if (XCHARSET_DIMENSION (charset) == 1) @@ -1921,7 +1934,13 @@ { /* Processing Non-ASCII character */ char_boundary = 1; if (EQ (charset, Vcharset_control_1)) - encode_unicode_char (Vcharset_control_1, c, 0, dst, + /* See: + + (Info-goto-node "(internals)Internal String Encoding") + + for the rationale behind subtracting #xa0 from the + character's code. */ + encode_unicode_char (Vcharset_control_1, c - 0xa0, 0, dst, type, little_endian); else { diff --text -u 'xemacs-21.5.20/src/window-impl.h' 'xemacs-21.5.21/src/window-impl.h' Index: ./src/window-impl.h --- ./src/window-impl.h Fri Jun 21 06:18:49 2002 +++ ./src/window-impl.h Sat Apr 9 08:11:35 2005 @@ -84,7 +84,11 @@ struct window { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* The upper left corner coordinates of this window, as integers (pixels) relative to upper left corner of frame = 0, 0 */ @@ -168,7 +172,11 @@ struct window_mirror { +#ifdef MC_ALLOC + struct lrecord_header header; +#else /* MC_ALLOC */ struct lcrecord_header header; +#endif /* MC_ALLOC */ /* Frame this mirror is on. */ struct frame *frame; diff --text -u 'xemacs-21.5.20/src/window.c' 'xemacs-21.5.21/src/window.c' Index: ./src/window.c --- ./src/window.c Fri Feb 4 01:14:08 2005 +++ ./src/window.c Mon May 16 01:38:14 2005 @@ -246,7 +246,7 @@ { XD_BLOCK_PTR, offsetof (struct window, glyph_cachels), 1, { &glyph_cachel_dynarr_description } }, { XD_BLOCK_PTR, offsetof (struct window, line_start_cache), - 1, { &line_start_cache_dynarr_description } }, + 1, { &line_start_cache_dynarr_description }, XD_FLAG_NO_KKCC }, { XD_END } }; @@ -346,7 +346,11 @@ Lisp_Object allocate_window (void) { +#ifdef MC_ALLOC + struct window *p = alloc_lrecord_type (struct window, &lrecord_window); +#else /* not MC_ALLOC */ struct window *p = alloc_lcrecord_type (struct window, &lrecord_window); +#endif /* not MC_ALLOC */ Lisp_Object val = wrap_window (p); #define WINDOW_SLOT(slot) p->slot = Qnil; @@ -483,7 +487,11 @@ new_window_mirror (struct frame *f) { struct window_mirror *t = +#ifdef MC_ALLOC + alloc_lrecord_type (struct window_mirror, &lrecord_window_mirror); +#else /* not MC_ALLOC */ alloc_lcrecord_type (struct window_mirror, &lrecord_window_mirror); +#endif /* not MC_ALLOC */ t->frame = f; t->current_display_lines = Dynarr_new (display_line); @@ -3802,10 +3810,18 @@ { Lisp_Object new; struct window *o = XWINDOW (window); +#ifdef MC_ALLOC + struct window *p = alloc_lrecord_type (struct window, &lrecord_window); +#else /* not MC_ALLOC */ struct window *p = alloc_lcrecord_type (struct window, &lrecord_window); +#endif /* not MC_ALLOC */ new = wrap_window (p); +#ifdef MC_ALLOC + copy_lrecord (p, o); +#else /* MC_ALLOC */ copy_lcrecord (p, o); +#endif /* MC_ALLOC */ /* Don't copy the pointers to the line start cache or the face instances. */ @@ -5096,8 +5112,13 @@ { if (!mir) return; +#ifdef MC_ALLOC + stats->other += mc_alloced_storage_size (sizeof (struct window_mirror), + ovstats); +#else /* not MC_ALLOC */ stats->other += malloced_storage_size (mir, sizeof (struct window_mirror), ovstats); +#endif /* not MC_ALLOC */ #ifdef HAVE_SCROLLBARS { struct device *d = XDEVICE (FRAME_DEVICE (mir->frame)); @@ -5121,7 +5142,11 @@ struct overhead_stats *ovstats) { xzero (*stats); +#ifdef MC_ALLOC + stats->other += mc_alloced_storage_size (sizeof (struct window), ovstats); +#else /* not MC_ALLOC */ stats->other += malloced_storage_size (w, sizeof (struct window), ovstats); +#endif /* not MC_ALLOC */ stats->face += compute_face_cachel_usage (w->face_cachels, ovstats); stats->glyph += compute_glyph_cachel_usage (w->glyph_cachels, ovstats); stats->line_start += diff --text -u 'xemacs-21.5.20/src/xemacs.def.in.in' 'xemacs-21.5.21/src/xemacs.def.in.in' Index: ./src/xemacs.def.in.in --- ./src/xemacs.def.in.in Sat Nov 13 00:09:18 2004 +++ ./src/xemacs.def.in.in Mon May 16 01:38:14 2005 @@ -9,7 +9,17 @@ EXPORTS /* Exported functions */ acons +#ifdef MC_ALLOC +alloc_lrecord /* alloc_lrecord_type */ +lrecord_subr /* DEFSUBR */ +lrecord_symbol_value_forward /* DEFVAR_SYMVAL_FWD */ +#ifdef DEBUG_XEMACS +mcpro_1 /* mcpro */ +#endif +mc_alloc /* DEFSUBR */ +#else /* not MC_ALLOC */ alloc_automanaged_lcrecord /* alloc_lcrecord_type */ +#endif /* not MC_ALLOC */ apply1 #ifdef USE_ASSERTIONS assert_failed /* abort(), assert(), etc. */ diff --text -u 'xemacs-21.5.20/tests/ChangeLog' 'xemacs-21.5.21/tests/ChangeLog' Index: ./tests/ChangeLog --- ./tests/ChangeLog Sat Mar 12 04:17:36 2005 +++ ./tests/ChangeLog Sat May 28 15:10:16 2005 @@ -1,3 +1,7 @@ +2005-05-28 Stephen J. Turnbull + + * XEmacs 21.5.21 "corn" is released. + 2005-03-11 Stephen J. Turnbull * XEmacs 21.5.20 "cilantro" is released. @@ -20,6 +24,23 @@ * automated/regexp-tests.el: Test trivial subpatterns and backreferences with shy groups. +2005-03-05 Malcolm Purvis + + * autoconf/regressiontest.pl: Added explict test for '--with-athena=3d' + +2005-01-30 Stephen J. Turnbull + + * autoconf/regressiontest.pl: Basename of configure need not be + "configure" and arguments differ. HAVE_DECL_SYS_SIGLIST + differences are known spurious. Delete those lines before diff. + Add my standard configure line to test hash. + Add usage notes. + +2005-01-29 Stephen J. Turnbull + + * autoconf: New directory for tests for configure. + * autoconf/regressiontest.pl: New file from Malcolm Purvis. + 2004-10-28 Stephen J. Turnbull * automated/os-tests.el: New file. Add tests for bug reported by diff --text -u 'xemacs-21.5.20/version.sh' 'xemacs-21.5.21/version.sh' Index: ./version.sh --- ./version.sh Sat Mar 12 04:17:36 2005 +++ ./version.sh Sat May 28 15:10:16 2005 @@ -2,11 +2,11 @@ emacs_is_beta=t emacs_major_version=21 emacs_minor_version=5 -emacs_beta_version=20 -xemacs_codename="cilantro" +emacs_beta_version=21 +xemacs_codename="corn" emacs_kit_version= infodock_major_version=4 infodock_minor_version=0 infodock_build_version=8 -xemacs_extra_name="(+CVS-20050310)" +xemacs_extra_name="(+CVS-20050527)" xemacs_release_date="2005-02-18" #### End of Patch data #### #### ApplyPatch data follows #### # Data version : 1.0 # Date generated : Sat May 28 15:10:21 2005 # Generated by : makepatch 2.00_12* # Recurse directories : Yes # Excluded files : (\A|/).*\~\Z # (\A|/).*\.a\Z # (\A|/).*\.bak\Z # (\A|/).*\.BAK\Z # (\A|/).*\.elc\Z # (\A|/).*\.exe\Z # (\A|/).*\.gz\Z # (\A|/).*\.ln\Z # (\A|/).*\.o\Z # (\A|/).*\.obj\Z # (\A|/).*\.olb\Z # (\A|/).*\.old\Z # (\A|/).*\.orig\Z # (\A|/).*\.rej\Z # (\A|/).*\.so\Z # (\A|/).*\.Z\Z # (\A|/)\.del\-.*\Z # (\A|/)\.make\.state\Z # (\A|/)\.nse_depinfo\Z # (\A|/)core\Z # (\A|/)tags\Z # (\A|/)TAGS\Z # (\A|/).*\~\Z # (\A|/)\.cvsignore\Z # (\A|/)CVS\Z # (\A|/)MANIFEST\Z # (\A|/)\.precious\Z # (\A|/)TAGS\Z # (\A|/)xemacs\-packages\Z # (\A|/)mule\-packages\Z # (\A|/).*\.gz\Z # (\A|/)display\Z # (\A|/)TUTORIAL\.ru\Z # (\A|/)TUTORIAL\.th\Z # (\A|/).*\.png\Z # (\A|/).*\.bmp\Z # (\A|/).*\.ico\Z # (\A|/).*\.elc\Z # (\A|/).*\.info.*\Z # p './CHANGES-beta' 78007 1117185177 0100644 # p './ChangeLog' 164401 1117260616 0100644 # p './Makefile.in.in' 24613 1113001802 0100644 # p './autom4te.cache/output.0' 1160372 1117260615 0100644 # p './autom4te.cache/requests' 5185 1117260616 0100644 # p './autom4te.cache/traces.0' 125548 1117260615 0100644 # p './configure' 1155190 1117260616 0100755 # p './configure.ac' 204381 1117255888 0100644 # p './configure.in' 196634 1113001814 0100644 # p './configure.usage' 19967 1113001815 0100644 # p './etc/ChangeLog' 46669 1117260616 0100644 # p './etc/NEWS' 58552 1115313019 0100644 # p './etc/TUTORIAL' 64753 1111618333 0100644 # p './etc/sample.Xresources' 12134 1111666671 0100644 # p './lib-src/ChangeLog' 52019 1117260616 0100644 # p './lib-src/Makefile.in.in' 12755 1113001836 0100644 # p './lib-src/fakemail.c' 15558 1111768494 0100644 # p './lisp/ChangeLog' 791732 1117260616 0100644 # p './lisp/diagnose.el' 4630 1116175076 0100644 # p './lisp/dialog.el' 29860 1113458325 0100644 # p './lisp/easymenu.el' 9955 1111767356 0100644 # p './lisp/faces.el' 83946 1112268524 0100644 # p './lisp/files.el' 172341 1112969220 0100644 # p './lisp/font.el' 48068 1111766283 0100644 # p './lisp/map-ynp.el' 9810 1115313032 0100644 # p './lisp/menubar-items.el' 70731 1115746558 0100644 # p './lisp/minibuf.el' 90245 1113458326 0100644 # p './lisp/mule/european.el' 15617 1115744579 0100644 # p './lisp/mule/latin.el' 9711 1115744580 0100644 # p './lisp/mule/mule-ccl.el' 47392 1115313038 0100644 # p './lisp/register.el' 12395 1112012042 0100644 # p './lisp/select.el' 37231 1110661062 0100644 # p './lisp/simple.el' 178493 1115746558 0100644 # p './lisp/startup.el' 62638 1115312141 0100644 # p './lisp/x-faces.el' 32107 1112268524 0100644 # p './lisp/x-init.el' 13955 1115745282 0100644 # p './lwlib/ChangeLog' 27660 1117260616 0100644 # p './man/ChangeLog' 183399 1117260616 0100644 # p './man/internals/internals.texi' 1237995 1113796794 0100644 # p './man/lispref/mule.texi' 145454 1111854005 0100644 # p './man/standards.texi' 119947 1110867335 0100644 # p './man/xemacs-faq.texi' 319676 1115747775 0100644 # p './man/xemacs/building.texi' 29554 1115313044 0100644 # p './man/xemacs/custom.texi' 103427 1113796810 0100644 # p './man/xemacs/entering.texi' 7893 1115313044 0100644 # p './man/xemacs/major.texi' 6726 1113796810 0100644 # p './man/xemacs/menus.texi' 21645 1115313045 0100644 # p './man/xemacs/sending.texi' 14264 1115746565 0100644 # p './man/xemacs/text.texi' 47286 1115313045 0100644 # p './modules/ChangeLog' 9960 1117260616 0100644 # p './modules/ldap/eldap.c' 24855 1113001855 0100644 # p './modules/ldap/eldap.h' 2778 1113001855 0100644 # p './modules/postgresql/postgresql.c' 51481 1113001860 0100644 # p './modules/postgresql/postgresql.h' 1753 1113001860 0100644 # p './netinstall/ChangeLog' 13104 1117260616 0100644 # p './nt/ChangeLog' 66169 1117260616 0100644 # p './nt/config.inc.samp' 9619 1117255901 0100644 # p './nt/installer/Wise/ChangeLog' 2116 1117260616 0100644 # p './nt/xemacs.dsp' 23370 1113001867 0100644 # p './nt/xemacs.mak' 47969 1113001867 0100644 # p './src/ChangeLog' 1477373 1117260616 0100644 # p './src/Makefile.in.in' 33336 1113001878 0100644 # p './src/alloc.c' 167122 1116175091 0100644 # p './src/buffer.c' 98322 1113001878 0100644 # p './src/buffer.h' 40923 1113001879 0100644 # p './src/bytecode.c' 65376 1113001879 0100644 # p './src/casetab.c' 16429 1113001879 0100644 # p './src/casetab.h' 3362 1113001879 0100644 # p './src/charset.h' 19259 1113001880 0100644 # p './src/chartab.c' 52037 1113196506 0100644 # p './src/chartab.h' 8249 1113001880 0100644 # p './src/config.h.in' 32442 1113001880 0100644 # p './src/console-impl.h' 23579 1113001880 0100644 # p './src/console-msw-impl.h' 9286 1113001881 0100644 # p './src/console.c' 47451 1113001881 0100644 # p './src/data.c' 98383 1113001881 0100644 # p './src/database.c' 21046 1113001881 0100644 # p './src/depend' 42114 1113001881 0100644 # p './src/device-impl.h' 11863 1113001881 0100644 # p './src/device-msw.c' 41334 1113001882 0100644 # p './src/device-x.c' 65538 1111712434 0100644 # p './src/device.c' 43769 1113001882 0100644 # p './src/dialog-msw.c' 25031 1113001882 0100644 # p './src/dumper.c' 66231 1116175092 0100644 # p './src/dumper.h' 1180 1113001883 0100644 # p './src/elhash.c' 54508 1113001883 0100644 # p './src/emacs.c' 143737 1113094077 0100644 # p './src/eval.c' 199178 1113196284 0100644 # p './src/event-Xt.c' 107568 1112065161 0100644 # p './src/event-stream.c' 168293 1113001883 0100644 # p './src/events.h' 44293 1113001884 0100644 # p './src/extents-impl.h' 11958 1113001884 0100644 # p './src/extents.c' 238133 1115745714 0100644 # p './src/faces.c' 70381 1113001884 0100644 # p './src/faces.h' 15760 1113001885 0100644 # p './src/file-coding.c' 151277 1113001885 0100644 # p './src/file-coding.h' 44049 1113001885 0100644 # p './src/fns.c' 114861 1113001886 0100644 # p './src/frame-impl.h' 25309 1113001886 0100644 # p './src/frame-x.c' 83037 1114592508 0100644 # p './src/frame.c' 118711 1114592508 0100644 # p './src/glyphs.c' 170267 1113001886 0100644 # p './src/glyphs.h' 45966 1113001887 0100644 # p './src/gpmevent.c' 16882 1113001887 0100644 # p './src/gui.c' 21326 1113001887 0100644 # p './src/gui.h' 4057 1113001887 0100644 # p './src/intl-win32.c' 61122 1110705664 0100644 # p './src/keymap.c' 140381 1113001887 0100644 # p './src/lisp.h' 200180 1113001888 0100644 # p './src/lrecord.h' 65169 1116175093 0100644 # p './src/lstream.c' 52378 1113001889 0100644 # p './src/lstream.h' 19982 1113001889 0100644 # p './src/marker.c' 14880 1113001889 0100644 # c './src/mc-alloc.c' 0 1116175093 0100644 # c './src/mc-alloc.h' 0 1113001889 0100644 # p './src/mule-ccl.c' 63495 1112722979 0100644 # p './src/mule-charset.c' 42285 1116175093 0100644 # p './src/objects-impl.h' 6295 1113001890 0100644 # p './src/objects.c' 35967 1113001890 0100644 # p './src/opaque.c' 5290 1113001890 0100644 # p './src/opaque.h' 2366 1113001890 0100644 # p './src/print.c' 70965 1113471867 0100644 # p './src/process.c' 81313 1113001891 0100644 # p './src/procimpl.h' 5611 1113001891 0100644 # p './src/rangetab.c' 26860 1113001891 0100644 # p './src/rangetab.h' 1852 1113001891 0100644 # p './src/scrollbar-gtk.c' 16367 1113001891 0100644 # p './src/scrollbar-msw.c' 15960 1113001892 0100644 # p './src/scrollbar-x.c' 22602 1113001892 0100644 # p './src/scrollbar.c' 32171 1113001892 0100644 # p './src/scrollbar.h' 3286 1113001892 0100644 # p './src/select.c' 31667 1115313054 0100644 # p './src/sound.c' 20528 1115313054 0100644 # p './src/specifier.c' 106713 1113001892 0100644 # p './src/specifier.h' 21257 1113001893 0100644 # p './src/symbols.c' 116279 1116175094 0100644 # p './src/symeval.h' 18272 1113001893 0100644 # p './src/symsinit.h' 19084 1113001893 0100644 # p './src/sysdep.c' 117714 1115552262 0100644 # p './src/syssignal.h' 10210 1110625229 0100644 # p './src/tests.c' 16218 1113001893 0100644 # p './src/text.c' 165993 1113040932 0100644 # p './src/toolbar.c' 62366 1113001894 0100644 # p './src/toolbar.h' 3705 1113001894 0100644 # p './src/tooltalk.c' 42447 1113001894 0100644 # p './src/ui-gtk.c' 53371 1113001894 0100644 # p './src/ui-gtk.h' 1983 1113001894 0100644 # p './src/unexelf.c' 40950 1111768500 0100644 # p './src/unicode.c' 71840 1113001894 0100644 # p './src/window-impl.h' 10943 1113001895 0100644 # p './src/window.c' 174981 1116175094 0100644 # p './src/xemacs.def.in.in' 5643 1116175094 0100644 # p './tests/ChangeLog' 22114 1117260616 0100644 # p './version.sh' 283 1117260616 0100644 #### End of ApplyPatch data #### #### End of Patch kit [created: Sat May 28 15:10:21 2005] #### #### Patch checksum: 18392 743911 59338 #### #### Checksum: 18424 745050 23276 ####