diff -rNC3 smalltalk-2.1.1/ChangeLog smalltalk-2.1.2/ChangeLog *** smalltalk-2.1.1/ChangeLog Thu Apr 17 14:44:24 2003 --- smalltalk-2.1.2/ChangeLog Fri May 9 09:25:56 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,42 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! * kernel/Stream.st: define #isExternalStream. ! * kernel/FileDescr.st: ditto. ! ! 2003-05-06 Paolo Bonzini ! ! * kernel/CompildCode.st: omit # when outputting a ! literal in short form (a ClassName). ! * kernel/Builtins.st: possibly raise a FileError ! exception in ObjectMemory class>>#snapshot: ! ! 2003-04-29 Paolo Bonzini ! ! * kernel/Behavior.st: make recompiles more silent in ! regression testing mode. ! ! * kernel/Behavior.st: don't update instanceSpec in ! #addInstVarName: and #removeInstVarName:. Possibly ! recompile subclasses when adding variables. Move ! #validateIdentifier: here from Metaclass.st, and use it. ! * kernel/Class.st: possibly recompile subclasses when ! removing class variables. ! * kernel/Metaclass.st: moved #validateIdentifier: to ! Behavior. ! * kernel/Object.st: fix thinko in class mutation. ! ! 2003-04-27 Paolo Bonzini ! ! * kernel/File.st: #extensionFor: should include the leading ! dot. Reported by nicolas.pelletier3@wanadoo.fr. ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/Makefile.am smalltalk-2.1.2/Makefile.am *** smalltalk-2.1.1/Makefile.am Sat Feb 22 11:29:02 2003 --- smalltalk-2.1.2/Makefile.am Fri May 9 11:20:43 2003 *************** *** 21,32 **** PACKAGE=smalltalk ! SUBDIRS = lib-src libltdl snprintfv lightning sigsegv \ libgst i18n config kernel tcp \ examples blox-tk blox-gtk . doc tests ! basedir = $(pkgdatadir) ! base_DATA = Load.st Reload.st packages.xml noinst_DATA = gst.im dist_noinst_DATA = smalltalk-mode.el.in gst-mode.el.in lisp_LISP = smalltalk-mode.el gst-mode.el --- 21,35 ---- PACKAGE=smalltalk ! DIST_SUBDIRS = lib-src libltdl snprintfv lightning sigsegv \ libgst i18n config kernel tcp \ examples blox-tk blox-gtk . doc tests ! SUBDIRS = lib-src lightning $(subdirs) \ ! libgst i18n config kernel tcp \ ! examples blox-tk blox-gtk . doc tests ! ! pkgdata_DATA = Load.st Reload.st packages.xml noinst_DATA = gst.im dist_noinst_DATA = smalltalk-mode.el.in gst-mode.el.in lisp_LISP = smalltalk-mode.el gst-mode.el diff -rNC3 smalltalk-2.1.1/Makefile.in smalltalk-2.1.2/Makefile.in *** smalltalk-2.1.1/Makefile.in Thu Apr 17 23:31:44 2003 --- smalltalk-2.1.2/Makefile.in Fri May 9 11:55:44 2003 *************** *** 91,96 **** --- 91,98 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ *************** *** 193,205 **** AUTOMAKE_OPTIONS = gnu 1.6 ACLOCAL_AMFLAGS = -I config ! SUBDIRS = lib-src libltdl snprintfv lightning sigsegv \ libgst i18n config kernel tcp \ examples blox-tk blox-gtk . doc tests ! basedir = $(pkgdatadir) ! base_DATA = Load.st Reload.st packages.xml noinst_DATA = gst.im dist_noinst_DATA = smalltalk-mode.el.in gst-mode.el.in lisp_LISP = smalltalk-mode.el gst-mode.el --- 195,211 ---- AUTOMAKE_OPTIONS = gnu 1.6 ACLOCAL_AMFLAGS = -I config ! DIST_SUBDIRS = lib-src libltdl snprintfv lightning sigsegv \ libgst i18n config kernel tcp \ examples blox-tk blox-gtk . doc tests ! SUBDIRS = lib-src lightning $(subdirs) \ ! libgst i18n config kernel tcp \ ! examples blox-tk blox-gtk . doc tests ! ! ! pkgdata_DATA = Load.st Reload.st packages.xml noinst_DATA = gst.im dist_noinst_DATA = smalltalk-mode.el.in gst-mode.el.in lisp_LISP = smalltalk-mode.el gst-mode.el *************** *** 249,255 **** ELCFILES = gst-mode.elc smalltalk-mode.elc elisp_comp = $(top_srcdir)/config/elisp-comp ! DATA = $(base_DATA) $(dist_noinst_DATA) $(noinst_DATA) HEADERS = $(nodist_noinst_HEADERS) --- 255,261 ---- ELCFILES = gst-mode.elc smalltalk-mode.elc elisp_comp = $(top_srcdir)/config/elisp-comp ! DATA = $(dist_noinst_DATA) $(noinst_DATA) $(pkgdata_DATA) HEADERS = $(nodist_noinst_HEADERS) *************** *** 263,269 **** COPYING.LIB ChangeLog INSTALL Makefile.am Makefile.in NEWS \ THANKS TODO aclocal.m4 config.h.in configure configure.ac \ gnu-smalltalk.spec.in gst-config.in gst-package.in - DIST_SUBDIRS = $(SUBDIRS) SOURCES = $(gst_SOURCES) all: config.h --- 269,274 ---- *************** *** 285,291 **** $(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) ! $(ACLOCAL_M4): configure.ac config/align.m4 config/bold.m4 config/codeset.m4 config/ext_goto.m4 config/fault.m4 config/gcc.m4 config/getpagesize.m4 config/glib-2.0.m4 config/gmp.m4 config/gst.m4 config/gtk-2.0.m4 config/iconv.m4 config/inet.m4 config/libtool.m4 config/lightning.m4 config/localtime.m4 config/mmap-anon.m4 config/modules.m4 config/pkg.m4 config/readline.m4 config/restrict.m4 config/sigaltstack-longjmp.m4 config/sigaltstack-siglongjmp.m4 config/sigaltstack.m4 config/snprintfv.m4 config/strtoul.m4 config/symbolset.m4 config/tcltk.m4 config/version.m4 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 --- 290,296 ---- $(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) ! $(ACLOCAL_M4): configure.ac config/align.m4 config/bold.m4 config/codeset.m4 config/ext_goto.m4 config/fault.m4 config/gcc.m4 config/getpagesize.m4 config/glib-2.0.m4 config/gmp.m4 config/gst.m4 config/gtk-2.0.m4 config/iconv.m4 config/inet.m4 config/libtool.m4 config/lightning.m4 config/localtime.m4 config/mmap-anon.m4 config/modules.m4 config/pkg.m4 config/readline.m4 config/relocatable.m4 config/restrict.m4 config/sigaltstack-longjmp.m4 config/sigaltstack-siglongjmp.m4 config/sigaltstack.m4 config/snprintfv.m4 config/strtoul.m4 config/symbolset.m4 config/tcltk.m4 config/version.m4 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 *************** *** 451,473 **** clean-lisp: -test -z "$(ELCFILES)" || rm -f $(ELCFILES) ! baseDATA_INSTALL = $(INSTALL_DATA) ! install-baseDATA: $(base_DATA) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(basedir) ! @list='$(base_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(baseDATA_INSTALL) $$d$$p $(DESTDIR)$(basedir)/$$f"; \ ! $(baseDATA_INSTALL) $$d$$p $(DESTDIR)$(basedir)/$$f; \ done ! uninstall-baseDATA: @$(NORMAL_UNINSTALL) ! @list='$(base_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(basedir)/$$f"; \ ! rm -f $(DESTDIR)$(basedir)/$$f; \ done # This directory's subdirectories are mostly independent; you can cd --- 456,478 ---- clean-lisp: -test -z "$(ELCFILES)" || rm -f $(ELCFILES) ! pkgdataDATA_INSTALL = $(INSTALL_DATA) ! install-pkgdataDATA: $(pkgdata_DATA) @$(NORMAL_INSTALL) ! $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) ! @list='$(pkgdata_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f"; \ ! $(pkgdataDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgdatadir)/$$f; \ done ! uninstall-pkgdataDATA: @$(NORMAL_UNINSTALL) ! @list='$(pkgdata_DATA)'; for p in $$list; do \ f="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " rm -f $(DESTDIR)$(pkgdatadir)/$$f"; \ ! rm -f $(DESTDIR)$(pkgdatadir)/$$f; \ done # This directory's subdirectories are mostly independent; you can cd *************** *** 629,635 **** || exit 1; \ fi; \ done ! list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ --- 634,640 ---- || exit 1; \ fi; \ done ! list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d $(distdir)/$$subdir \ || mkdir $(distdir)/$$subdir \ *************** *** 719,725 **** $(HEADERS) config.h installdirs: installdirs-recursive installdirs-am: ! $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(bindir) $(DESTDIR)$(lispdir) $(DESTDIR)$(basedir) install: install-recursive install-exec: install-exec-recursive --- 724,730 ---- $(HEADERS) config.h installdirs: installdirs-recursive installdirs-am: ! $(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(bindir) $(DESTDIR)$(lispdir) $(DESTDIR)$(pkgdatadir) install: install-recursive install-exec: install-exec-recursive *************** *** 764,770 **** info-am: ! install-data-am: install-baseDATA install-lispLISP @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook --- 769,775 ---- info-am: ! install-data-am: install-lispLISP install-pkgdataDATA @$(NORMAL_INSTALL) $(MAKE) $(AM_MAKEFLAGS) install-data-hook *************** *** 794,802 **** ps-am: ! uninstall-am: uninstall-baseDATA uninstall-binPROGRAMS \ ! uninstall-binSCRIPTS uninstall-info-am uninstall-lispLISP \ ! uninstall-local uninstall-info: uninstall-info-recursive --- 799,807 ---- ps-am: ! uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ ! uninstall-info-am uninstall-lispLISP uninstall-local \ ! uninstall-pkgdataDATA uninstall-info: uninstall-info-recursive *************** *** 808,826 **** distclean-local distclean-recursive distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am \ dvi-recursive info info-am info-recursive install install-am \ ! install-baseDATA install-binPROGRAMS install-binSCRIPTS \ ! install-data install-data-am install-data-recursive \ ! install-exec install-exec-am install-exec-recursive \ ! install-info install-info-am install-info-recursive \ ! install-lispLISP install-man install-recursive install-strip \ installcheck installcheck-am installdirs installdirs-am \ installdirs-recursive maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ ! tags-recursive uninstall uninstall-am uninstall-baseDATA \ ! uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-info-am \ ! uninstall-info-recursive uninstall-lispLISP uninstall-local \ uninstall-recursive --- 813,831 ---- distclean-local distclean-recursive distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am \ dvi-recursive info info-am info-recursive install install-am \ ! install-binPROGRAMS install-binSCRIPTS install-data \ ! install-data-am install-data-recursive install-exec \ ! install-exec-am install-exec-recursive install-info \ ! install-info-am install-info-recursive install-lispLISP \ ! install-man install-pkgdataDATA install-recursive install-strip \ installcheck installcheck-am installdirs installdirs-am \ installdirs-recursive maintainer-clean maintainer-clean-generic \ maintainer-clean-recursive mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ ! tags-recursive uninstall uninstall-am uninstall-binPROGRAMS \ ! uninstall-binSCRIPTS uninstall-info-am uninstall-info-recursive \ ! uninstall-lispLISP uninstall-local uninstall-pkgdataDATA \ uninstall-recursive diff -rNC3 smalltalk-2.1.1/NEWS smalltalk-2.1.2/NEWS *** smalltalk-2.1.1/NEWS Thu Apr 17 23:27:55 2003 --- smalltalk-2.1.2/NEWS Fri May 9 10:43:17 2003 *************** *** 1,5 **** --- 1,40 ---- List of user-visible changes in GNU Smalltalk + NEWS FROM 2.1.1 TO 2.1.2 + + o Adding instance variables via #addInstVarName: validates their name and + possibly recompiles the class if the superclass defines an identically + named class. Removing class variables via #removeClassVarName: recompiles + the class. + + o BACKWARDS INCOMPATIBLE: ObjectMemory class>>#snapshot: will fail if it + cannot write to the file. + + o BACKWARDS INCOMPATIBLE: File class>>#extensionFor: includes the leading + dot. This is necessary to obtain the sensible behavior + + (File stripExtensionFrom: string), (File extensionFor: string) = string + + o Better support for detecting the headers when multiple versions of Tcl/Tk + are installed on the same machine. + + o Fixed call-in bug (if a primitive did a call-in and *then* failed, the + call-in might have dirtied the method cache and an invalid method was + invoked). This could not happen in previous releases, but the new + #snapshot: primitive satisfies this condition. + + o Configure option --disable-generational-gc to disable usage of libsigsegv + (which seems to lock up under some versions of MacOS X). + + o Fix lexing bugs under Linux/PPC and, supposedly, S390 and ARM too. + + o Fix misbehavior under GCC 2.x + + o Upgraded libsigsegv from CVS (includes ports to Linux/HPPA and + OpenBSD/i386). + + ----------------------------------------------------------------------------- + NEWS FROM 2.1 TO 2.1.1 o Support for readline 4.2 and 4.3. diff -rNC3 smalltalk-2.1.1/THANKS smalltalk-2.1.2/THANKS *** smalltalk-2.1.1/THANKS Thu Jan 9 14:16:23 2003 --- smalltalk-2.1.2/THANKS Mon Apr 28 19:42:28 2003 *************** *** 36,43 **** Federico Di Gregorio Jeremy Dreese Mark Elbrecht Markus Fritsche ! Reinout Heeck GertJan Kersten Casper Kit Thorsten Klein --- 36,44 ---- Federico Di Gregorio Jeremy Dreese Mark Elbrecht + David Forster Markus Fritsche ! Norman Jordan GertJan Kersten Casper Kit Thorsten Klein *************** *** 46,55 **** --- 47,59 ---- Alexander Lazarevic Fernando Lopez Hernandez Peter William Lount + Elisa Manara + David Mentre Dragomir Milivojevic Eben Moglen Hiroshi Nanosecond Ryan Pavlik + Nicolas Pelletier Ian Piumarta Jeff Rosenwald Alexander Shinn *************** *** 69,76 **** --- 73,82 ---- Claus Gittinger Travis Griggs Richard A. Harmon + Reinout Heeck Eliot Miranda Paul McDonough + Joseph Pelrine Don Roberts Peter van Roojen diff -rNC3 smalltalk-2.1.1/TODO smalltalk-2.1.2/TODO *** smalltalk-2.1.1/TODO Wed Apr 9 22:17:47 2003 --- smalltalk-2.1.2/TODO Tue May 6 18:57:46 2003 *************** *** 1,6 **** * maybe in 2.2? ! ** use VFS to (re)implement packages ** implement SmallScript file-in? --- 1,13 ---- * maybe in 2.2? ! ** deprecate SMALLTALK_IMAGE and SMALLTALK_KERNEL in favor of ! two new options, --image-directory and --kernel-directory. ! ! ** use intptr_t instead of long for SmallIntegers. In general, ! use stdint.h/inttypes.h way more widely (with an automatically ! generated one, perusing Autoconf). ! ! ** use VFS to (re)implement packages? ** implement SmallScript file-in? *************** *** 14,20 **** * VM ** Use multiple malloc-ed areas for the OOP table, and make heap.c ! an implementation detail of alloc.c ** Implement polymorphic inline caching --- 21,28 ---- * VM ** Use multiple malloc-ed areas for the OOP table, and make heap.c ! only an implementation detail of alloc.c (not really necessary ! anymore with MAP_NORESERVE, and quite complicated) ** Implement polymorphic inline caching diff -rNC3 smalltalk-2.1.1/aclocal.m4 smalltalk-2.1.2/aclocal.m4 *** smalltalk-2.1.1/aclocal.m4 Thu Apr 17 23:31:18 2003 --- smalltalk-2.1.2/aclocal.m4 Fri May 9 11:55:18 2003 *************** *** 31,38 **** esac ] - AC_DEFINE_UNQUOTED(VERSION_INFO, "$VERSION_INFO", - [Version of the GNU Smalltalk interface library]) AC_DEFINE_UNQUOTED(ST_MAJOR_VERSION, $ST_MAJOR_VERSION, [Major version of GNU Smalltalk]) AC_DEFINE_UNQUOTED(ST_MINOR_VERSION, $ST_MINOR_VERSION, --- 31,36 ---- *************** *** 1101,1106 **** --- 1099,1107 ---- # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- + # The next line was added by Bruno Haible 2001-06-08. + builtin([undefine],[symbols]) + # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], *************** *** 1906,1912 **** AC_MSG_RESULT($objdir) ! AC_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default --- 1907,1913 ---- AC_MSG_RESULT($objdir) ! AC_LIBTOOL_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default *************** *** 1992,1997 **** --- 1993,2011 ---- # PIC (with -KPIC) is the default. ;; + linux*) + echo '__INTEL_COMPILER' > conftest.$ac_ext + if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null + then + lt_cv_prog_cc_can_build_shared=no + else + # Intel icc + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-static' + lt_cv_prog_cc_wl='-Qoption,ld,' + fi + ;; + cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). *************** *** 3125,3130 **** --- 3139,3156 ---- dynamic_linker=no ;; + freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat *************** *** 3469,3475 **** allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 ! fi]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac --- 3495,3503 ---- allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 ! fi ! $rm conftest* ! ]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac *************** *** 4227,4233 **** # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], ! [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl --- 4255,4261 ---- # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], ! [AC_LIBTOOL_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl *************** *** 4619,4624 **** --- 4647,4659 ---- INCLTDL="$LTDLINCL" ]) + dnl AC_LIBTOOL_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and + dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't + dnl require excessive bracketing. + ifdef([AC_HELP_STRING], + [AC_DEFUN([AC_LIBTOOL_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], + [AC_DEFUN([AC_LIBTOOL_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) *************** *** 4994,5000 **** # Check for strtoul. Under some versions of AIX, strtoul returns # an incorrect terminator pointer for the string "0". ! AC_CACHE_CHECK(for strtoul, gst_cv_working_strtoul, [ exec AS_MESSAGE_FD([])>/dev/null AC_CHECK_FUNC(strtoul, gst_cv_working_strtoul=yes, gst_cv_working_strtoul=no) if test $gst_cv_working_strtoul = yes; then --- 5029,5035 ---- # Check for strtoul. Under some versions of AIX, strtoul returns # an incorrect terminator pointer for the string "0". ! AC_CACHE_CHECK(for working strtoul, gst_cv_working_strtoul, [ exec AS_MESSAGE_FD([])>/dev/null AC_CHECK_FUNC(strtoul, gst_cv_working_strtoul=yes, gst_cv_working_strtoul=no) if test $gst_cv_working_strtoul = yes; then *************** *** 5008,5015 **** value = strtoul(string, &term, 0); exit((value != 0) || (term != (string+1))); }], , ! [gst_cv_working_strtoul="yes, but broken"], ! [gst_cv_working_strtoul="yes, but cross-compiling"]) fi test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ]) --- 5043,5050 ---- value = strtoul(string, &term, 0); exit((value != 0) || (term != (string+1))); }], , ! [gst_cv_working_strtoul=no], ! [gst_cv_working_strtoul=no]) fi test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ]) *************** *** 5258,5312 **** AC_MSG_CHECKING(for Tk 8.x) AC_MSG_RESULT($with_tk) ! AC_CACHE_CHECK(how to link with Tcl/Tk 8.x, gst_cv_tcltk_libs, [ exec AS_MESSAGE_FD([])>/dev/null ! gst_cv_tcltk_libs="not found" ! if test "$with_tcl" != no -a "$with_tk" != no; then # Get the values we need from the Tcl/Tk configuration files . $with_tcl/tclConfig.sh . $with_tk/tkConfig.sh - # The indirection is required by Tcl/Tk - gst_cv_tcltk_libs="$TCL_LIBS $TK_XLIBSW $TCL_LIB_SPEC $TK_LIB_SPEC" - gst_cv_tcltk_libs=`eval echo $gst_cv_tcltk_libs` - gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include" - - save_cppflags="$CPPFLAGS" - save_libs="$LIBS" - CPPFLAGS="$CPPFLAGS $gst_cv_tcltk_includes" - LIBS="$LIBS $gst_cv_tcltk_libs" - # search for the header files, because some implementations of tclConfig.sh # do not deliver correct header includes ! save_cppflags2="$CPPFLAGS" ! for trial in 1 2 3 4 5; do ! found_so_far=no case $trial in ! 1) TCL_INCLUDES="" test "$TCL_PREFIX" != "$TK_PREFIX" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_PREFIX/include" ;; ! 2) TCL_INCLUDES="-I$TCL_SRC_DIR/.." test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_SRC_DIR/.." ;; ! 3) TCL_INCLUDES="-I$TCL_SRC_DIR/include" test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_SRC_DIR/include" ;; ! 4) TCL_INCLUDES="-I$TCL_EXEC_PREFIX/include" ! test "$TCL_EXEC_PREFIX" != "$TK_EXEC_PREFIX" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_EXEC_PREFIX/include" ;; ! 5) TCL_INCLUDES="-I$TCL_EXEC_PREFIX/include/tcl$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION -I$TK_EXEC_PREFIX/include/tk$TK_MAJOR_VERSION.$TK_MINOR_VERSION" ;; esac - CPPFLAGS="$save_cppflags2 $TCL_INCLUDES" - AC_CHECK_HEADER(tcl.h,[found_so_far=yes]) - test $found_so_far = yes && break - done - - gst_cv_tcltk_includes="$gst_cv_tcltk_includes $TCL_INCLUDES" ! # Check the headers & libraries ! AC_EGREP_CPP(everything_fine, [ #include #include #ifdef TCL_MAJOR_VERSION --- 5293,5338 ---- AC_MSG_CHECKING(for Tk 8.x) AC_MSG_RESULT($with_tk) ! save_cppflags="$CPPFLAGS" ! save_libs="$LIBS" ! ! AC_CACHE_CHECK(the include path for Tcl/Tk 8.x, gst_cv_tcltk_includes, [ exec AS_MESSAGE_FD([])>/dev/null ! gst_cv_tcltk_includes="not found" ! if test "$with_tcl" != no && test "$with_tk" != no; then # Get the values we need from the Tcl/Tk configuration files . $with_tcl/tclConfig.sh . $with_tk/tkConfig.sh # search for the header files, because some implementations of tclConfig.sh # do not deliver correct header includes ! for trial in 1 2 3 4; do case $trial in ! 1) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include" ! test "$TCL_PREFIX" != "$TCL_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TCL_EXEC_PREFIX/include" test "$TCL_PREFIX" != "$TK_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_PREFIX/include" ! test "$TK_PREFIX" != "$TK_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_EXEC_PREFIX/include" ;; ! 2) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_SRC_DIR/.." test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_SRC_DIR/.." ;; ! 3) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_SRC_DIR/include" test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_SRC_DIR/include" ;; ! 4) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include/tcl$TCL_VERSION -I$TK_PREFIX/include/tk$TK_VERSION" ! test "$TCL_PREFIX" != "$TCL_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TCL_EXEC_PREFIX/include/tcl$TCL_VERSION" ! test "$TK_PREFIX" != "$TK_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_EXEC_PREFIX/include/tk$TK_VERSION" ;; esac ! CPPFLAGS="$save_cppflags $gst_cv_tcltk_includes" ! AC_CHECK_HEADER(tcl.h, [ ! AC_EGREP_CPP(everything_fine, [ #include #include #ifdef TCL_MAJOR_VERSION *************** *** 5317,5339 **** #endif #endif #endif ! #endif], , gst_cv_tcltk_libs="not found") AC_CHECK_FUNC(Tcl_ObjSetVar2, , gst_cv_tcltk_libs="not found") AC_CHECK_FUNC(Tk_CreatePhotoImageFormat, , gst_cv_tcltk_libs="not found") - CPPFLAGS="$save_cppflags" - LIBS="$save_libs" fi test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ]) if test "$gst_cv_tcltk_libs" != "not found"; then - AC_MSG_CHECKING(include path for Tcl/Tk) - AC_MSG_RESULT($gst_cv_tcltk_includes) LIBTCLTK="$gst_cv_tcltk_libs" INCTCLTK="$gst_cv_tcltk_includes" AC_DEFINE(HAVE_TCLTK, 1, ! [Define if your system has Tcl/Tk, 8.0 or later, installed.]) fi AC_SUBST(LIBTCLTK) --- 5343,5383 ---- #endif #endif #endif ! #endif], break)]) ! ! gst_cv_tcltk_includes="not found" ! done ! fi ! ! test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ! ]) ! ! AC_CACHE_CHECK(how to link with Tcl/Tk 8.x, gst_cv_tcltk_libs, [ ! gst_cv_tcltk_libs="not found" ! exec AS_MESSAGE_FD([])>/dev/null + if test "$gst_cv_tcltk_includes" != "not found"; then + # The indirection is required by Tcl/Tk + gst_cv_tcltk_libs="$TCL_LIBS $TK_XLIBSW $TCL_LIB_SPEC $TK_LIB_SPEC" + gst_cv_tcltk_libs=`eval echo $gst_cv_tcltk_libs` + + CPPFLAGS="$save_cppflags $gst_cv_tcltk_includes" + LIBS="$save_libs $gst_cv_tcltk_libs" AC_CHECK_FUNC(Tcl_ObjSetVar2, , gst_cv_tcltk_libs="not found") AC_CHECK_FUNC(Tk_CreatePhotoImageFormat, , gst_cv_tcltk_libs="not found") fi + test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ]) + CPPFLAGS="$save_cppflags" + LIBS="$save_libs" + if test "$gst_cv_tcltk_libs" != "not found"; then LIBTCLTK="$gst_cv_tcltk_libs" INCTCLTK="$gst_cv_tcltk_includes" AC_DEFINE(HAVE_TCLTK, 1, ! [Define if your system has Tcl/Tk, 8.0 or later, installed.]) fi AC_SUBST(LIBTCLTK) diff -rNC3 smalltalk-2.1.1/blox-gtk/Makefile.in smalltalk-2.1.2/blox-gtk/Makefile.in *** smalltalk-2.1.1/blox-gtk/Makefile.in Thu Apr 17 11:43:57 2003 --- smalltalk-2.1.2/blox-gtk/Makefile.in Fri May 9 11:59:29 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/blox-tk/ChangeLog smalltalk-2.1.2/blox-tk/ChangeLog *** smalltalk-2.1.1/blox-tk/ChangeLog Thu Apr 17 14:44:34 2003 --- smalltalk-2.1.2/blox-tk/ChangeLog Fri May 9 09:26:32 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,12 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/blox-tk/Makefile.in smalltalk-2.1.2/blox-tk/Makefile.in *** smalltalk-2.1.1/blox-tk/Makefile.in Thu Apr 17 11:43:51 2003 --- smalltalk-2.1.2/blox-tk/Makefile.in Fri May 9 11:59:23 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/browser/ChangeLog smalltalk-2.1.2/browser/ChangeLog *** smalltalk-2.1.1/browser/ChangeLog Thu Apr 17 14:44:36 2003 --- smalltalk-2.1.2/browser/ChangeLog Fri May 9 09:26:44 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,18 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! 2003-05-08 Mike Anderson ! ! * browser/PList.st: add methods to copy elements ! * browser/Notifier.st: add menu items to copy stack ! trace ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/browser/Notifier.st smalltalk-2.1.2/browser/Notifier.st *** smalltalk-2.1.1/browser/Notifier.st Fri Dec 27 12:30:48 2002 --- smalltalk-2.1.2/browser/Notifier.st Fri May 9 09:14:58 2003 *************** *** 145,150 **** --- 145,153 ---- selectors: #(#('Inspect' #inspectContext)) receiver: self argument: listView; + selectors: #(#() #('Copy Trace' #copyAll) #('Copy Selection' #copySelection)) + receiver: listView + argument: nil; selectors: #(#() #('Close' #close)) receiver: listView argument: nil; diff -rNC3 smalltalk-2.1.1/browser/PList.st smalltalk-2.1.2/browser/PList.st *** smalltalk-2.1.1/browser/PList.st Thu Mar 27 22:12:33 2003 --- smalltalk-2.1.2/browser/PList.st Fri May 9 09:16:06 2003 *************** *** 151,154 **** --- 151,167 ---- blox unhighlight. ! ! + !BLOX.BLOXBrowser.PList methodsFor: 'clipboard'! + copyAll + | ws | + ws := WriteStream on: String new. + blox elements + do: [ :each | ws nextPutAll: each printString] + separatedBy: [ ws nextPut: Character nl ]. + Blox clipboard: ws contents! + + !BLOX.BLOXBrowser.PList methodsFor: 'editing'! + + copySelection + Blox clipboard: ((blox at: blox index) printString)! ! diff -rNC3 smalltalk-2.1.1/compiler/ChangeLog smalltalk-2.1.2/compiler/ChangeLog *** smalltalk-2.1.1/compiler/ChangeLog Thu Apr 17 14:44:37 2003 --- smalltalk-2.1.2/compiler/ChangeLog Fri May 9 09:26:48 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,12 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/config/Makefile.am smalltalk-2.1.2/config/Makefile.am *** smalltalk-2.1.1/config/Makefile.am Tue Mar 4 20:48:16 2003 --- smalltalk-2.1.2/config/Makefile.am Tue May 6 16:50:58 2003 *************** *** 8,14 **** align.m4 bold.m4 codeset.m4 ext_goto.m4 fault.m4 gcc.m4 getpagesize.m4 \ glib-2.0.m4 gmp.m4 gst.m4 gtk-2.0.m4 iconv.m4 inet.m4 libtool.m4 \ lightning.m4 localtime.m4 mmap-anon.m4 modules.m4 pkg.m4 \ ! readline.m4 restrict.m4 sigaltstack-longjmp.m4 \ sigaltstack-siglongjmp.m4 sigaltstack.m4 snprintfv.m4 strtoul.m4 \ symbolset.m4 tcltk.m4 version.m4 --- 8,14 ---- align.m4 bold.m4 codeset.m4 ext_goto.m4 fault.m4 gcc.m4 getpagesize.m4 \ glib-2.0.m4 gmp.m4 gst.m4 gtk-2.0.m4 iconv.m4 inet.m4 libtool.m4 \ lightning.m4 localtime.m4 mmap-anon.m4 modules.m4 pkg.m4 \ ! readline.m4 relocatable.m4 restrict.m4 sigaltstack-longjmp.m4 \ sigaltstack-siglongjmp.m4 sigaltstack.m4 snprintfv.m4 strtoul.m4 \ symbolset.m4 tcltk.m4 version.m4 diff -rNC3 smalltalk-2.1.1/config/Makefile.in smalltalk-2.1.2/config/Makefile.in *** smalltalk-2.1.1/config/Makefile.in Thu Apr 17 11:43:27 2003 --- smalltalk-2.1.2/config/Makefile.in Fri May 9 11:59:00 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ *************** *** 180,186 **** align.m4 bold.m4 codeset.m4 ext_goto.m4 fault.m4 gcc.m4 getpagesize.m4 \ glib-2.0.m4 gmp.m4 gst.m4 gtk-2.0.m4 iconv.m4 inet.m4 libtool.m4 \ lightning.m4 localtime.m4 mmap-anon.m4 modules.m4 pkg.m4 \ ! readline.m4 restrict.m4 sigaltstack-longjmp.m4 \ sigaltstack-siglongjmp.m4 sigaltstack.m4 snprintfv.m4 strtoul.m4 \ symbolset.m4 tcltk.m4 version.m4 --- 182,188 ---- align.m4 bold.m4 codeset.m4 ext_goto.m4 fault.m4 gcc.m4 getpagesize.m4 \ glib-2.0.m4 gmp.m4 gst.m4 gtk-2.0.m4 iconv.m4 inet.m4 libtool.m4 \ lightning.m4 localtime.m4 mmap-anon.m4 modules.m4 pkg.m4 \ ! readline.m4 relocatable.m4 restrict.m4 sigaltstack-longjmp.m4 \ sigaltstack-siglongjmp.m4 sigaltstack.m4 snprintfv.m4 strtoul.m4 \ symbolset.m4 tcltk.m4 version.m4 diff -rNC3 smalltalk-2.1.1/config/fault.m4 smalltalk-2.1.2/config/fault.m4 *** smalltalk-2.1.1/config/fault.m4 Mon Mar 31 18:20:59 2003 --- smalltalk-2.1.2/config/fault.m4 Tue Apr 29 22:46:02 2003 *************** *** 1,5 **** ! # fault.m4 serial 1 (libsigsegv-2.0) ! dnl Copyright (C) 2002 Bruno Haible dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program --- 1,5 ---- ! # fault.m4 serial 3 ! dnl Copyright (C) 2002-2003 Bruno Haible dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program *************** *** 17,23 **** AC_TRY_RUN([ #include #include ! #include $4 #include #include --- 17,25 ---- AC_TRY_RUN([ #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif $4 #include #include *************** *** 64,70 **** --- 66,78 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; diff -rNC3 smalltalk-2.1.1/config/inet.m4 smalltalk-2.1.2/config/inet.m4 *** smalltalk-2.1.1/config/inet.m4 Thu Apr 17 11:37:26 2003 --- smalltalk-2.1.2/config/inet.m4 Tue Apr 29 16:18:02 2003 *************** *** 13,19 **** AC_CHECK_FUNC(socket, , gst_cv_inet_sockets=no) AC_CHECK_HEADER(netinet/in.h, , gst_cv_inet_sockets=no) AC_CHECK_HEADER(arpa/inet.h, , gst_cv_inet_sockets=no) ! if test $gst_cv_inet_sockets = yes || test $ac_cv_lib_wsock32_socket = yes; then AC_DEFINE(HAVE_INET_SOCKETS, 1, [Define if your system's sockets provide access to the Internet.]) fi --- 13,19 ---- AC_CHECK_FUNC(socket, , gst_cv_inet_sockets=no) AC_CHECK_HEADER(netinet/in.h, , gst_cv_inet_sockets=no) AC_CHECK_HEADER(arpa/inet.h, , gst_cv_inet_sockets=no) ! if test $gst_cv_inet_sockets = yes || test $ac_cv_lib_wsock32_socket = yes; then AC_DEFINE(HAVE_INET_SOCKETS, 1, [Define if your system's sockets provide access to the Internet.]) fi diff -rNC3 smalltalk-2.1.1/config/libtool.m4 smalltalk-2.1.2/config/libtool.m4 *** smalltalk-2.1.1/config/libtool.m4 Sat Feb 22 11:07:13 2003 --- smalltalk-2.1.2/config/libtool.m4 Thu Apr 3 22:37:55 2003 *************** *** 22,27 **** --- 22,30 ---- ## configuration script generated by Autoconf, you may include it under ## the same distribution terms that you use for the rest of that program. + # The next line was added by Bruno Haible 2001-06-08. + builtin([undefine],[symbols]) + # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], *************** *** 833,839 **** ## FIXME: this should be a separate macro ## ! AC_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default --- 836,842 ---- ## FIXME: this should be a separate macro ## ! AC_LIBTOOL_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default *************** *** 919,924 **** --- 922,940 ---- # PIC (with -KPIC) is the default. ;; + linux*) + echo '__INTEL_COMPILER' > conftest.$ac_ext + if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null + then + lt_cv_prog_cc_can_build_shared=no + else + # Intel icc + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-static' + lt_cv_prog_cc_wl='-Qoption,ld,' + fi + ;; + cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). *************** *** 2084,2089 **** --- 2100,2117 ---- dynamic_linker=no ;; + freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat *************** *** 2444,2450 **** allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 ! fi]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac --- 2472,2480 ---- allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 ! fi ! $rm conftest* ! ]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac *************** *** 3208,3214 **** # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], ! [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl --- 3238,3244 ---- # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], ! [AC_LIBTOOL_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl *************** *** 3599,3604 **** --- 3629,3641 ---- # For backwards non-gettext consistent compatibility... INCLTDL="$LTDLINCL" ]) + + dnl AC_LIBTOOL_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and + dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't + dnl require excessive bracketing. + ifdef([AC_HELP_STRING], + [AC_DEFUN([AC_LIBTOOL_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], + [AC_DEFUN([AC_LIBTOOL_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) diff -rNC3 smalltalk-2.1.1/config/relocatable.m4 smalltalk-2.1.2/config/relocatable.m4 *** smalltalk-2.1.1/config/relocatable.m4 Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/config/relocatable.m4 Mon Apr 28 13:00:58 2003 *************** *** 0 **** --- 1,99 ---- + # relocatable.m4 serial 1 (gettext-0.12) + dnl Copyright (C) 2003 Free Software Foundation, Inc. + dnl This file is free software, distributed under the terms of the GNU + dnl General Public License. As a special exception to the GNU General + dnl Public License, this file may be distributed as part of a program + dnl that contains a configuration script generated by Autoconf, under + dnl the same distribution terms as the rest of that program. + + dnl From Bruno Haible. + + dnl Support for relocateble programs. + AC_DEFUN([AC_RELOCATABLE], + [ + AC_REQUIRE([AC_PROG_INSTALL]) + AC_BEFORE([AC_PROG_INSTALL],[AC_RELOCATABLE]) + AC_REQUIRE([AC_LIB_LIBPATH]) + AC_REQUIRE([AC_RELOCATABLE_LIBRARY]) + use_elf_origin_trick=no + if test $RELOCATABLE = yes; then + # --enable-relocatable implies --disable-rpath + enable_rpath=no + AC_LIBOBJ([relocatable]) + AC_DEFINE([ENABLE_RELOCATABLE], 1, + [Define to 1 if the package shall run at any location in the filesystem.]) + case "$host_os" in + linux*) use_elf_origin_trick=yes ;; + esac + if test $use_elf_origin_trick = yes; then + dnl Use the dynamic linker's support for relocatable programs. + case "$ac_aux_dir" in + /*) reloc_ldflags="$ac_aux_dir/reloc-ldflags" ;; + *) reloc_ldflags="\$(top_builddir)/$ac_aux_dir/reloc-ldflags" ;; + esac + SET_RELOCATABLE="RELOCATABLE_LDFLAGS = \"$reloc_ldflags\" \"@host@\" \"\$(RELOCATABLE_LIBRARY_PATH)\"" + else + dnl Unfortunately we cannot define INSTALL_PROGRAM to a command + dnl consisting of more than one word - libtool doesn't support this. + dnl So we abuse the INSTALL_PROGRAM_ENV hook, originally meant for the + dnl 'install-strip' target. + SET_RELOCATABLE="INSTALL_PROGRAM_ENV = RELOC_LIBRARY_PATH_VAR=\"$shlibpath_var\" RELOC_LIBRARY_PATH_VALUE=\"\$(RELOCATABLE_LIBRARY_PATH)\" RELOC_PREFIX=\"\$(prefix)\" RELOC_COMPILE_COMMAND=\"\$(CC) \$(CPPFLAGS) \$(CFLAGS) \$(LDFLAGS)\" RELOC_SRCDIR=\"\$(RELOCATABLE_SRC_DIR)\" RELOC_BUILDDIR=\"\$(RELOCATABLE_BUILD_DIR)\" RELOC_CONFIG_H_DIR=\"\$(RELOCATABLE_CONFIG_H_DIR)\" RELOC_INSTALL_PROG=\"$INSTALL_PROGRAM\"" + case "$ac_aux_dir" in + /*) INSTALL_PROGRAM="$ac_aux_dir/install-reloc" ;; + *) INSTALL_PROGRAM="\$(top_builddir)/$ac_aux_dir/install-reloc" ;; + esac + fi + else + SET_RELOCATABLE= + fi + AC_SUBST([SET_RELOCATABLE]) + AM_CONDITIONAL([RELOCATABLE_VIA_LD], + [test $use_elf_origin_trick = yes]) + ]) + + dnl Support for relocatable libraries. + AC_DEFUN([AC_RELOCATABLE_LIBRARY], + [ + AC_REQUIRE([AC_RELOCATABLE_NOP]) + dnl Easier to put this here once, instead of into the DEFS of each Makefile. + if test "X$prefix" = "XNONE"; then + reloc_final_prefix="$ac_default_prefix" + else + reloc_final_prefix="$prefix" + fi + AC_DEFINE_UNQUOTED([INSTALLPREFIX], ["${reloc_final_prefix}"], + [Define to the value of ${prefix}, as a string.]) + ]) + + dnl Support for relocatable packages for which it is a nop. + AC_DEFUN([AC_RELOCATABLE_NOP], + [ + AC_MSG_CHECKING([whether to activate relocatable installation]) + AC_ARG_ENABLE(relocatable, + [ --enable-relocatable install a package that can be moved in the filesystem], + [if test "$enableval" != no; then + RELOCATABLE=yes + else + RELOCATABLE=no + fi + ], RELOCATABLE=no) + AC_SUBST(RELOCATABLE) + AC_MSG_RESULT([$RELOCATABLE]) + ]) + + dnl Determine the platform dependent parameters needed to use relocatability: + dnl shlibpath_var. + AC_DEFUN([AC_LIB_LIBPATH], + [ + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library path variable], acl_cv_libpath, [ + LD="$LD" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.libpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_libpath=${acl_cv_shlibpath_var:-none} + ]) + shlibpath_var="$acl_cv_shlibpath_var" + ]) diff -rNC3 smalltalk-2.1.1/config/sigaltstack.m4 smalltalk-2.1.2/config/sigaltstack.m4 *** smalltalk-2.1.1/config/sigaltstack.m4 Mon Mar 31 18:20:59 2003 --- smalltalk-2.1.2/config/sigaltstack.m4 Thu Apr 3 22:32:57 2003 *************** *** 1,5 **** ! # sigaltstack.m4 serial 2 (libsigsegv-2.0) ! dnl Copyright (C) 2002, 2003 Bruno Haible dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program --- 1,5 ---- ! # sigaltstack.m4 serial 2 ! dnl Copyright (C) 2002-2003 Bruno Haible dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program *************** *** 11,29 **** AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) - AC_CHECK_TYPE(stack_t, , - [AC_DEFINE(stack_t, struct sigaltstack, - [Define to struct sigaltstack if that's the type of the argument to sigaltstack])], - [#include - #include ]) - AC_CHECK_FUNCS(sigaltstack) AC_CACHE_CHECK([for working sigaltstack], sv_cv_sigaltstack, [ if test "$ac_cv_func_sigaltstack" = yes; then AC_TRY_RUN([ #include #include ! #include #if HAVE_SETRLIMIT # include # include --- 11,39 ---- AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS(sigaltstack) + + if test "$ac_cv_func_sigaltstack" = yes; then + AC_CHECK_TYPE(stack_t, , + [AC_DEFINE(stack_t, [struct sigaltstack], + [Define to 'struct sigaltstack' if that's the type of the argument to sigaltstack]) + ], + [ + #include + #if HAVE_SYS_SIGNAL_H + # include + #endif + ]) + fi + AC_CACHE_CHECK([for working sigaltstack], sv_cv_sigaltstack, [ if test "$ac_cv_func_sigaltstack" = yes; then AC_TRY_RUN([ #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif #if HAVE_SETRLIMIT # include # include diff -rNC3 smalltalk-2.1.1/config/strtoul.m4 smalltalk-2.1.2/config/strtoul.m4 *** smalltalk-2.1.1/config/strtoul.m4 Tue Jun 25 20:35:56 2002 --- smalltalk-2.1.2/config/strtoul.m4 Fri May 9 09:36:07 2003 *************** *** 4,10 **** # Check for strtoul. Under some versions of AIX, strtoul returns # an incorrect terminator pointer for the string "0". ! AC_CACHE_CHECK(for strtoul, gst_cv_working_strtoul, [ exec AS_MESSAGE_FD([])>/dev/null AC_CHECK_FUNC(strtoul, gst_cv_working_strtoul=yes, gst_cv_working_strtoul=no) if test $gst_cv_working_strtoul = yes; then --- 4,10 ---- # Check for strtoul. Under some versions of AIX, strtoul returns # an incorrect terminator pointer for the string "0". ! AC_CACHE_CHECK(for working strtoul, gst_cv_working_strtoul, [ exec AS_MESSAGE_FD([])>/dev/null AC_CHECK_FUNC(strtoul, gst_cv_working_strtoul=yes, gst_cv_working_strtoul=no) if test $gst_cv_working_strtoul = yes; then *************** *** 18,25 **** value = strtoul(string, &term, 0); exit((value != 0) || (term != (string+1))); }], , ! [gst_cv_working_strtoul="yes, but broken"], ! [gst_cv_working_strtoul="yes, but cross-compiling"]) fi test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ]) --- 18,25 ---- value = strtoul(string, &term, 0); exit((value != 0) || (term != (string+1))); }], , ! [gst_cv_working_strtoul=no], ! [gst_cv_working_strtoul=no]) fi test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ]) diff -rNC3 smalltalk-2.1.1/config/tcltk.m4 smalltalk-2.1.2/config/tcltk.m4 *** smalltalk-2.1.1/config/tcltk.m4 Sun Jan 12 20:54:35 2003 --- smalltalk-2.1.2/config/tcltk.m4 Sat Apr 26 16:25:29 2003 *************** *** 46,100 **** AC_MSG_CHECKING(for Tk 8.x) AC_MSG_RESULT($with_tk) ! AC_CACHE_CHECK(how to link with Tcl/Tk 8.x, gst_cv_tcltk_libs, [ exec AS_MESSAGE_FD([])>/dev/null ! gst_cv_tcltk_libs="not found" ! if test "$with_tcl" != no -a "$with_tk" != no; then # Get the values we need from the Tcl/Tk configuration files . $with_tcl/tclConfig.sh . $with_tk/tkConfig.sh - # The indirection is required by Tcl/Tk - gst_cv_tcltk_libs="$TCL_LIBS $TK_XLIBSW $TCL_LIB_SPEC $TK_LIB_SPEC" - gst_cv_tcltk_libs=`eval echo $gst_cv_tcltk_libs` - gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include" - - save_cppflags="$CPPFLAGS" - save_libs="$LIBS" - CPPFLAGS="$CPPFLAGS $gst_cv_tcltk_includes" - LIBS="$LIBS $gst_cv_tcltk_libs" - # search for the header files, because some implementations of tclConfig.sh # do not deliver correct header includes ! save_cppflags2="$CPPFLAGS" ! for trial in 1 2 3 4 5; do ! found_so_far=no case $trial in ! 1) TCL_INCLUDES="" test "$TCL_PREFIX" != "$TK_PREFIX" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_PREFIX/include" ;; ! 2) TCL_INCLUDES="-I$TCL_SRC_DIR/.." test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_SRC_DIR/.." ;; ! 3) TCL_INCLUDES="-I$TCL_SRC_DIR/include" test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_SRC_DIR/include" ;; ! 4) TCL_INCLUDES="-I$TCL_EXEC_PREFIX/include" ! test "$TCL_EXEC_PREFIX" != "$TK_EXEC_PREFIX" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_EXEC_PREFIX/include" ;; ! 5) TCL_INCLUDES="-I$TCL_EXEC_PREFIX/include/tcl$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION -I$TK_EXEC_PREFIX/include/tk$TK_MAJOR_VERSION.$TK_MINOR_VERSION" ;; esac - CPPFLAGS="$save_cppflags2 $TCL_INCLUDES" - AC_CHECK_HEADER(tcl.h,[found_so_far=yes]) - test $found_so_far = yes && break - done - - gst_cv_tcltk_includes="$gst_cv_tcltk_includes $TCL_INCLUDES" ! # Check the headers & libraries ! AC_EGREP_CPP(everything_fine, [ #include #include #ifdef TCL_MAJOR_VERSION --- 46,91 ---- AC_MSG_CHECKING(for Tk 8.x) AC_MSG_RESULT($with_tk) ! save_cppflags="$CPPFLAGS" ! save_libs="$LIBS" ! ! AC_CACHE_CHECK(the include path for Tcl/Tk 8.x, gst_cv_tcltk_includes, [ exec AS_MESSAGE_FD([])>/dev/null ! gst_cv_tcltk_includes="not found" ! if test "$with_tcl" != no && test "$with_tk" != no; then # Get the values we need from the Tcl/Tk configuration files . $with_tcl/tclConfig.sh . $with_tk/tkConfig.sh # search for the header files, because some implementations of tclConfig.sh # do not deliver correct header includes ! for trial in 1 2 3 4; do case $trial in ! 1) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include" ! test "$TCL_PREFIX" != "$TCL_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TCL_EXEC_PREFIX/include" test "$TCL_PREFIX" != "$TK_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_PREFIX/include" ! test "$TK_PREFIX" != "$TK_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_EXEC_PREFIX/include" ;; ! 2) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_SRC_DIR/.." test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_SRC_DIR/.." ;; ! 3) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_SRC_DIR/include" test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_SRC_DIR/include" ;; ! 4) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include/tcl$TCL_VERSION -I$TK_PREFIX/include/tk$TK_VERSION" ! test "$TCL_PREFIX" != "$TCL_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TCL_EXEC_PREFIX/include/tcl$TCL_VERSION" ! test "$TK_PREFIX" != "$TK_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_EXEC_PREFIX/include/tk$TK_VERSION" ;; esac ! CPPFLAGS="$save_cppflags $gst_cv_tcltk_includes" ! AC_CHECK_HEADER(tcl.h, [ ! AC_EGREP_CPP(everything_fine, [ #include #include #ifdef TCL_MAJOR_VERSION *************** *** 105,127 **** #endif #endif #endif ! #endif], , gst_cv_tcltk_libs="not found") AC_CHECK_FUNC(Tcl_ObjSetVar2, , gst_cv_tcltk_libs="not found") AC_CHECK_FUNC(Tk_CreatePhotoImageFormat, , gst_cv_tcltk_libs="not found") - CPPFLAGS="$save_cppflags" - LIBS="$save_libs" fi test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ]) if test "$gst_cv_tcltk_libs" != "not found"; then - AC_MSG_CHECKING(include path for Tcl/Tk) - AC_MSG_RESULT($gst_cv_tcltk_includes) LIBTCLTK="$gst_cv_tcltk_libs" INCTCLTK="$gst_cv_tcltk_includes" AC_DEFINE(HAVE_TCLTK, 1, ! [Define if your system has Tcl/Tk, 8.0 or later, installed.]) fi AC_SUBST(LIBTCLTK) --- 96,136 ---- #endif #endif #endif ! #endif], break)]) ! ! gst_cv_tcltk_includes="not found" ! done ! fi ! ! test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ! ]) ! ! AC_CACHE_CHECK(how to link with Tcl/Tk 8.x, gst_cv_tcltk_libs, [ ! gst_cv_tcltk_libs="not found" ! exec AS_MESSAGE_FD([])>/dev/null + if test "$gst_cv_tcltk_includes" != "not found"; then + # The indirection is required by Tcl/Tk + gst_cv_tcltk_libs="$TCL_LIBS $TK_XLIBSW $TCL_LIB_SPEC $TK_LIB_SPEC" + gst_cv_tcltk_libs=`eval echo $gst_cv_tcltk_libs` + + CPPFLAGS="$save_cppflags $gst_cv_tcltk_includes" + LIBS="$save_libs $gst_cv_tcltk_libs" AC_CHECK_FUNC(Tcl_ObjSetVar2, , gst_cv_tcltk_libs="not found") AC_CHECK_FUNC(Tk_CreatePhotoImageFormat, , gst_cv_tcltk_libs="not found") fi + test "$silent" != yes && exec AS_MESSAGE_FD([])>&1 ]) + CPPFLAGS="$save_cppflags" + LIBS="$save_libs" + if test "$gst_cv_tcltk_libs" != "not found"; then LIBTCLTK="$gst_cv_tcltk_libs" INCTCLTK="$gst_cv_tcltk_includes" AC_DEFINE(HAVE_TCLTK, 1, ! [Define if your system has Tcl/Tk, 8.0 or later, installed.]) fi AC_SUBST(LIBTCLTK) diff -rNC3 smalltalk-2.1.1/config/version.m4 smalltalk-2.1.2/config/version.m4 *** smalltalk-2.1.1/config/version.m4 Wed Oct 2 17:05:14 2002 --- smalltalk-2.1.2/config/version.m4 Tue Apr 29 17:34:00 2003 *************** *** 18,25 **** esac ] - AC_DEFINE_UNQUOTED(VERSION_INFO, "$VERSION_INFO", - [Version of the GNU Smalltalk interface library]) AC_DEFINE_UNQUOTED(ST_MAJOR_VERSION, $ST_MAJOR_VERSION, [Major version of GNU Smalltalk]) AC_DEFINE_UNQUOTED(ST_MINOR_VERSION, $ST_MINOR_VERSION, --- 18,23 ---- diff -rNC3 smalltalk-2.1.1/config.h.in smalltalk-2.1.2/config.h.in *** smalltalk-2.1.1/config.h.in Thu Apr 17 23:33:11 2003 --- smalltalk-2.1.2/config.h.in Fri May 9 11:57:15 2003 *************** *** 187,192 **** --- 187,195 ---- /* Define to 1 if you have the `sighold' function. */ #undef HAVE_SIGHOLD + /* Define to 1 if libsigsegv is being used */ + #undef HAVE_SIGSEGV_H + /* Define to 1 if you have the `sigsetmask' function. */ #undef HAVE_SIGSETMASK *************** *** 379,387 **** /* Version number of package */ #undef VERSION - - /* Version of the GNU Smalltalk interface library */ - #undef VERSION_INFO /* Define to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel and VAX). */ --- 382,387 ---- diff -rNC3 smalltalk-2.1.1/configure smalltalk-2.1.2/configure *** smalltalk-2.1.1/configure Thu Apr 17 23:31:50 2003 --- smalltalk-2.1.2/configure Fri May 9 11:55:51 2003 *************** *** 1,6 **** #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.54 for GNU Smalltalk 2.1.1. # # Report bugs to . # --- 1,6 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.54 for GNU Smalltalk 2.1.2. # # Report bugs to . # *************** *** 424,431 **** # Identity of this package. PACKAGE_NAME='GNU Smalltalk' PACKAGE_TARNAME='smalltalk' ! PACKAGE_VERSION='2.1.1' ! PACKAGE_STRING='GNU Smalltalk 2.1.1' PACKAGE_BUGREPORT='help-smalltalk@gnu.org' ac_unique_file="main.c" --- 424,431 ---- # Identity of this package. PACKAGE_NAME='GNU Smalltalk' PACKAGE_TARNAME='smalltalk' ! PACKAGE_VERSION='2.1.2' ! PACKAGE_STRING='GNU Smalltalk 2.1.2' PACKAGE_BUGREPORT='help-smalltalk@gnu.org' ac_unique_file="main.c" *************** *** 466,473 **** # include #endif" ! ac_subdirs_all="$ac_subdirs_all libltdl snprintfv sigsegv" ! 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 PACKAGE VERSION VERSION_INFO MAINTAINER INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LN_S INSTALL_INFO EMACS lispdir build build_cpu build_vendor build_os host host_cpu host_vendor host_os ECHO RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP LIBTOOL LIBSNPRINTFV INCSNPRINTFV subdirs LEX YACC RM ICON ALLOCA LIBOBJS LIBICONV LIBGMP TCLSH LIBTCLTK INCTCLTK LIBREADLINE MODULES_EXAMPLE MODULES_TCP MODULES_GTK MODULES_I18N MODULES_TK I18N_DISABLED PKG_CONFIG ATK_CFLAGS ATK_LIBS PANGO_CFLAGS PANGO_LIBS GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS GLIB_GENMARSHAL GOBJECT_QUERY GLIB_MKENUMS BLOX_IMPLEMENTATION HAVE_GTK_TRUE HAVE_GTK_FALSE LIGHTNING_MAIN_TRUE LIGHTNING_MAIN_FALSE USE_JIT_TRANSLATION_TRUE USE_JIT_TRANSLATION_FALSE MODULES INCLTDL LIBLTDL LDPATH LTALLOCA LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. --- 466,475 ---- # include #endif" ! ac_subdirs_all="$ac_subdirs_all libltdl" ! ac_subdirs_all="$ac_subdirs_all snprintfv" ! ac_subdirs_all="$ac_subdirs_all sigsegv" ! 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 PACKAGE VERSION VERSION_INFO MAINTAINER INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LN_S INSTALL_INFO EMACS lispdir LEX YACC RM build build_cpu build_vendor build_os host host_cpu host_vendor host_os ECHO RANLIB ac_ct_RANLIB DLLTOOL ac_ct_DLLTOOL AS ac_ct_AS OBJDUMP ac_ct_OBJDUMP LIBTOOL subdirs LIBSNPRINTFV INCSNPRINTFV HAVE_SIGSEGV_TRUE HAVE_SIGSEGV_FALSE ICON ALLOCA LIBOBJS LIBICONV LIBGMP TCLSH LIBTCLTK INCTCLTK LIBREADLINE MODULES_EXAMPLE MODULES_TCP MODULES_GTK MODULES_I18N MODULES_TK I18N_DISABLED PKG_CONFIG ATK_CFLAGS ATK_LIBS PANGO_CFLAGS PANGO_LIBS GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS GLIB_GENMARSHAL GOBJECT_QUERY GLIB_MKENUMS BLOX_IMPLEMENTATION HAVE_GTK_TRUE HAVE_GTK_FALSE LIGHTNING_MAIN_TRUE LIGHTNING_MAIN_FALSE USE_JIT_TRANSLATION_TRUE USE_JIT_TRANSLATION_FALSE MODULES INCLTDL LIBLTDL LDPATH LTALLOCA LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. *************** *** 936,942 **** # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF ! \`configure' configures GNU Smalltalk 2.1.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... --- 938,944 ---- # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF ! \`configure' configures GNU Smalltalk 2.1.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... *************** *** 1002,1008 **** if test -n "$ac_init_help"; then case $ac_init_help in ! short | recursive ) echo "Configuration of GNU Smalltalk 2.1.1:";; esac cat <<\_ACEOF --- 1004,1010 ---- if test -n "$ac_init_help"; then case $ac_init_help in ! short | recursive ) echo "Configuration of GNU Smalltalk 2.1.2:";; esac cat <<\_ACEOF *************** *** 1016,1021 **** --- 1018,1024 ---- --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) + --disable-generational-gc disable generational garbage collection --disable-largefile omit support for large files --enable-gtk (would) enable GTK implementation of Blox --disable-glibtest do not try to compile and run a test GLIB program *************** *** 1030,1037 **** --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-lispdir Override the default lisp directory ! --with-gnu-ld assume the C compiler uses GNU ld default=no ! --with-pic try to use only PIC/non-PIC objects default=use both --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib --with-gmp=path set path to the GMP library --without-gmp don't try to detect and use GMP --- 1033,1040 ---- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-lispdir Override the default lisp directory ! --with-gnu-ld assume the C compiler uses GNU ld [default=no] ! --with-pic try to use only PIC/non-PIC objects [default=use both] --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib --with-gmp=path set path to the GMP library --without-gmp don't try to detect and use GMP *************** *** 1115,1121 **** test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF ! GNU Smalltalk configure 2.1.1 generated by GNU Autoconf 2.54 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 --- 1118,1124 ---- test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF ! GNU Smalltalk configure 2.1.2 generated by GNU Autoconf 2.54 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 *************** *** 1130,1136 **** This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. ! It was created by GNU Smalltalk $as_me 2.1.1, which was generated by GNU Autoconf 2.54. Invocation command line was $ $0 $@ --- 1133,1139 ---- This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. ! It was created by GNU Smalltalk $as_me 2.1.2, which was generated by GNU Autoconf 2.54. Invocation command line was $ $0 $@ *************** *** 1439,1445 **** VERSION=$PACKAGE_VERSION ! VERSION_INFO=4:9:0 # Split the version number --- 1442,1448 ---- VERSION=$PACKAGE_VERSION ! VERSION_INFO=4:10:0 # Split the version number *************** *** 1456,1466 **** cat >>confdefs.h <<_ACEOF - #define VERSION_INFO "$VERSION_INFO" - _ACEOF - - - cat >>confdefs.h <<_ACEOF #define ST_MAJOR_VERSION $ST_MAJOR_VERSION _ACEOF --- 1459,1464 ---- *************** *** 1754,1760 **** # Define the identity of the package. PACKAGE=smalltalk ! VERSION=2.1.1 cat >>confdefs.h <<_ACEOF --- 1752,1758 ---- # Define the identity of the package. PACKAGE=smalltalk ! VERSION=2.1.2 cat >>confdefs.h <<_ACEOF *************** *** 3835,3840 **** --- 3833,3848 ---- + LEX=${LEX-"${am_missing_run}flex"} + + + YACC=${YACC-"${am_missing_run}bison"} + + + test -z "$RM" && RM='rm -f' + + + case $enable_ltdl_convenience in no) { { echo "$as_me:$LINENO: error: this package needs a convenience libltdl" >&5 echo "$as_me: error: this package needs a convenience libltdl" >&2;} *************** *** 5040,5046 **** case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 5043 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? --- 5048,5054 ---- case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 5051 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? *************** *** 5663,5668 **** --- 5671,5689 ---- # PIC (with -KPIC) is the default. ;; + linux*) + echo '__INTEL_COMPILER' > conftest.$ac_ext + if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null + then + lt_cv_prog_cc_can_build_shared=no + else + # Intel icc + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-static' + lt_cv_prog_cc_wl='-Qoption,ld,' + fi + ;; + cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). *************** *** 5891,5897 **** save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no ! if { (eval echo configure:5894: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then --- 5912,5918 ---- save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no ! if { (eval echo configure:5915: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then *************** *** 6954,6959 **** --- 6975,6992 ---- dynamic_linker=no ;; + freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat *************** *** 7665,7671 **** lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&5 fi + $rm conftest* + fi echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 *************** *** 8491,8496 **** --- 8526,8536 ---- + + subdirs="$subdirs libltdl" + + + ac_configure_args="$ac_configure_args --enable-subdir" case $enable_snprintfv_convenience in no) { { echo "$as_me:$LINENO: error: this package needs a convenience snprintfv" >&5 echo "$as_me: error: this package needs a convenience snprintfv" >&2;} *************** *** 8504,8523 **** - ac_configure_args="$ac_configure_args --enable-subdir" - subdirs="$subdirs libltdl snprintfv sigsegv" - LEX=${LEX-"${am_missing_run}flex"} - YACC=${YACC-"${am_missing_run}bison"} ! test -z "$RM" && RM='rm -f' --- 8544,8580 ---- + subdirs="$subdirs snprintfv" + # Check whether --enable-generational-gc or --disable-generational-gc was given. + if test "${enable_generational_gc+set}" = set; then + enableval="$enable_generational_gc" + else + enable_generational_gc=yes + fi; + if test $enable_generational_gc != no; then + subdirs="$subdirs sigsegv" + cat >>confdefs.h <<_ACEOF + #define HAVE_SIGSEGV_H 1 + _ACEOF + + fi ! ! if test "$enable_generational_gc" = yes; then ! HAVE_SIGSEGV_TRUE= ! HAVE_SIGSEGV_FALSE='#' ! else ! HAVE_SIGSEGV_TRUE='#' ! HAVE_SIGSEGV_FALSE= ! fi *************** *** 12904,12911 **** # Check for strtoul. Under some versions of AIX, strtoul returns # an incorrect terminator pointer for the string "0". ! echo "$as_me:$LINENO: checking for strtoul" >&5 ! echo $ECHO_N "checking for strtoul... $ECHO_C" >&6 if test "${gst_cv_working_strtoul+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else --- 12961,12968 ---- # Check for strtoul. Under some versions of AIX, strtoul returns # an incorrect terminator pointer for the string "0". ! echo "$as_me:$LINENO: checking for working strtoul" >&5 ! echo $ECHO_N "checking for working strtoul... $ECHO_C" >&6 if test "${gst_cv_working_strtoul+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else *************** *** 12977,12983 **** if test $gst_cv_working_strtoul = yes; then if test "$cross_compiling" = yes; then ! gst_cv_working_strtoul="yes, but cross-compiling" else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" --- 13034,13040 ---- if test $gst_cv_working_strtoul = yes; then if test "$cross_compiling" = yes; then ! gst_cv_working_strtoul=no else cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" *************** *** 13010,13016 **** echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! gst_cv_working_strtoul="yes, but broken" fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi --- 13067,13073 ---- echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! gst_cv_working_strtoul=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi *************** *** 13863,13914 **** echo "$as_me:$LINENO: result: $with_tk" >&5 echo "${ECHO_T}$with_tk" >&6 ! echo "$as_me:$LINENO: checking how to link with Tcl/Tk 8.x" >&5 ! echo $ECHO_N "checking how to link with Tcl/Tk 8.x... $ECHO_C" >&6 ! if test "${gst_cv_tcltk_libs+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else exec 6>/dev/null ! gst_cv_tcltk_libs="not found" ! if test "$with_tcl" != no -a "$with_tk" != no; then # Get the values we need from the Tcl/Tk configuration files . $with_tcl/tclConfig.sh . $with_tk/tkConfig.sh - # The indirection is required by Tcl/Tk - gst_cv_tcltk_libs="$TCL_LIBS $TK_XLIBSW $TCL_LIB_SPEC $TK_LIB_SPEC" - gst_cv_tcltk_libs=`eval echo $gst_cv_tcltk_libs` - gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include" - - save_cppflags="$CPPFLAGS" - save_libs="$LIBS" - CPPFLAGS="$CPPFLAGS $gst_cv_tcltk_includes" - LIBS="$LIBS $gst_cv_tcltk_libs" - # search for the header files, because some implementations of tclConfig.sh # do not deliver correct header includes ! save_cppflags2="$CPPFLAGS" ! for trial in 1 2 3 4 5; do ! found_so_far=no case $trial in ! 1) TCL_INCLUDES="" test "$TCL_PREFIX" != "$TK_PREFIX" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_PREFIX/include" ;; ! 2) TCL_INCLUDES="-I$TCL_SRC_DIR/.." test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_SRC_DIR/.." ;; ! 3) TCL_INCLUDES="-I$TCL_SRC_DIR/include" test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_SRC_DIR/include" ;; ! 4) TCL_INCLUDES="-I$TCL_EXEC_PREFIX/include" ! test "$TCL_EXEC_PREFIX" != "$TK_EXEC_PREFIX" && ! TCL_INCLUDES="$TCL_INCLUDES -I$TK_EXEC_PREFIX/include" ;; ! 5) TCL_INCLUDES="-I$TCL_EXEC_PREFIX/include/tcl$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION -I$TK_EXEC_PREFIX/include/tk$TK_MAJOR_VERSION.$TK_MINOR_VERSION" ;; esac ! CPPFLAGS="$save_cppflags2 $TCL_INCLUDES" if test "${ac_cv_header_tcl_h+set}" = set; then echo "$as_me:$LINENO: checking for tcl.h" >&5 echo $ECHO_N "checking for tcl.h... $ECHO_C" >&6 --- 13920,13968 ---- echo "$as_me:$LINENO: result: $with_tk" >&5 echo "${ECHO_T}$with_tk" >&6 ! save_cppflags="$CPPFLAGS" ! save_libs="$LIBS" ! ! echo "$as_me:$LINENO: checking the include path for Tcl/Tk 8.x" >&5 ! echo $ECHO_N "checking the include path for Tcl/Tk 8.x... $ECHO_C" >&6 ! if test "${gst_cv_tcltk_includes+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else exec 6>/dev/null ! gst_cv_tcltk_includes="not found" ! if test "$with_tcl" != no && test "$with_tk" != no; then # Get the values we need from the Tcl/Tk configuration files . $with_tcl/tclConfig.sh . $with_tk/tkConfig.sh # search for the header files, because some implementations of tclConfig.sh # do not deliver correct header includes ! for trial in 1 2 3 4; do case $trial in ! 1) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include" ! test "$TCL_PREFIX" != "$TCL_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TCL_EXEC_PREFIX/include" test "$TCL_PREFIX" != "$TK_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_PREFIX/include" ! test "$TK_PREFIX" != "$TK_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_EXEC_PREFIX/include" ;; ! 2) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_SRC_DIR/.." test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_SRC_DIR/.." ;; ! 3) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_SRC_DIR/include" test "$TCL_SRC_DIR" != "$TK_SRC_DIR" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_SRC_DIR/include" ;; ! 4) gst_cv_tcltk_includes="$TK_XINCLUDES -I$TCL_PREFIX/include/tcl$TCL_VERSION -I$TK_PREFIX/include/tk$TK_VERSION" ! test "$TCL_PREFIX" != "$TCL_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TCL_EXEC_PREFIX/include/tcl$TCL_VERSION" ! test "$TK_PREFIX" != "$TK_EXEC_PREFIX" && ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes -I$TK_EXEC_PREFIX/include/tk$TK_VERSION" ;; esac ! ! CPPFLAGS="$save_cppflags $gst_cv_tcltk_includes" if test "${ac_cv_header_tcl_h+set}" = set; then echo "$as_me:$LINENO: checking for tcl.h" >&5 echo $ECHO_N "checking for tcl.h... $ECHO_C" >&6 *************** *** 14011,14027 **** fi if test $ac_cv_header_tcl_h = yes; then - found_so_far=yes - fi - ! test $found_so_far = yes && break ! done ! ! gst_cv_tcltk_includes="$gst_cv_tcltk_includes $TCL_INCLUDES" ! ! # Check the headers & libraries ! cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" --- 14065,14072 ---- fi if test $ac_cv_header_tcl_h = yes; then ! cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" *************** *** 14039,14051 **** _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "everything_fine" >/dev/null 2>&1; then ! : ! else ! gst_cv_tcltk_libs="not found" fi rm -f conftest* echo "$as_me:$LINENO: checking for Tcl_ObjSetVar2" >&5 echo $ECHO_N "checking for Tcl_ObjSetVar2... $ECHO_C" >&6 if test "${ac_cv_func_Tcl_ObjSetVar2+set}" = set; then --- 14084,14123 ---- _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "everything_fine" >/dev/null 2>&1; then ! break fi rm -f conftest* + fi + + + + gst_cv_tcltk_includes="not found" + done + fi + + test "$silent" != yes && exec 6>&1 + + fi + echo "$as_me:$LINENO: result: $gst_cv_tcltk_includes" >&5 + echo "${ECHO_T}$gst_cv_tcltk_includes" >&6 + + echo "$as_me:$LINENO: checking how to link with Tcl/Tk 8.x" >&5 + echo $ECHO_N "checking how to link with Tcl/Tk 8.x... $ECHO_C" >&6 + if test "${gst_cv_tcltk_libs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + + gst_cv_tcltk_libs="not found" + exec 6>/dev/null + if test "$gst_cv_tcltk_includes" != "not found"; then + # The indirection is required by Tcl/Tk + gst_cv_tcltk_libs="$TCL_LIBS $TK_XLIBSW $TCL_LIB_SPEC $TK_LIB_SPEC" + gst_cv_tcltk_libs=`eval echo $gst_cv_tcltk_libs` + + CPPFLAGS="$save_cppflags $gst_cv_tcltk_includes" + LIBS="$save_libs $gst_cv_tcltk_libs" echo "$as_me:$LINENO: checking for Tcl_ObjSetVar2" >&5 echo $ECHO_N "checking for Tcl_ObjSetVar2... $ECHO_C" >&6 if test "${ac_cv_func_Tcl_ObjSetVar2+set}" = set; then *************** *** 14174,14193 **** gst_cv_tcltk_libs="not found" fi - CPPFLAGS="$save_cppflags" - LIBS="$save_libs" fi test "$silent" != yes && exec 6>&1 fi echo "$as_me:$LINENO: result: $gst_cv_tcltk_libs" >&5 echo "${ECHO_T}$gst_cv_tcltk_libs" >&6 if test "$gst_cv_tcltk_libs" != "not found"; then - echo "$as_me:$LINENO: checking include path for Tcl/Tk" >&5 - echo $ECHO_N "checking include path for Tcl/Tk... $ECHO_C" >&6 - echo "$as_me:$LINENO: result: $gst_cv_tcltk_includes" >&5 - echo "${ECHO_T}$gst_cv_tcltk_includes" >&6 LIBTCLTK="$gst_cv_tcltk_libs" INCTCLTK="$gst_cv_tcltk_includes" --- 14246,14263 ---- gst_cv_tcltk_libs="not found" fi fi + test "$silent" != yes && exec 6>&1 fi echo "$as_me:$LINENO: result: $gst_cv_tcltk_libs" >&5 echo "${ECHO_T}$gst_cv_tcltk_libs" >&6 + CPPFLAGS="$save_cppflags" + LIBS="$save_libs" + if test "$gst_cv_tcltk_libs" != "not found"; then LIBTCLTK="$gst_cv_tcltk_libs" INCTCLTK="$gst_cv_tcltk_includes" *************** *** 15835,15841 **** test "$gst_cv_tcltk_libs" != "not found" && MODULES_TK="blox-tk.la" test "$gst_cv_inet_sockets" != "no" && MODULES_TCP="tcp.la" test "$ac_cv_func_nl_langinfo" = yes && \ ! test "$am_cv_func_iconv" = yes && MODULES_I18N="i18n.la" I18N_HASH="" --- 15905,15911 ---- test "$gst_cv_tcltk_libs" != "not found" && MODULES_TK="blox-tk.la" test "$gst_cv_inet_sockets" != "no" && MODULES_TCP="tcp.la" test "$ac_cv_func_nl_langinfo" = yes && \ ! test "$am_cv_func_iconv" = yes && MODULES_I18N="i18n.la" I18N_DISABLED="" *************** *** 16203,16208 **** --- 16273,16285 ---- Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi + if test -z "${HAVE_SIGSEGV_TRUE}" && test -z "${HAVE_SIGSEGV_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"HAVE_SIGSEGV\" was never defined. + Usually this means the macro was only invoked conditionally." >&5 + echo "$as_me: error: conditional \"HAVE_SIGSEGV\" was never defined. + Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } + fi if test -z "${HAVE_GTK_TRUE}" && test -z "${HAVE_GTK_FALSE}"; then { { echo "$as_me:$LINENO: error: conditional \"HAVE_GTK\" was never defined. Usually this means the macro was only invoked conditionally." >&5 *************** *** 16494,16500 **** } >&5 cat >&5 <<_CSEOF ! This file was extended by GNU Smalltalk $as_me 2.1.1, which was generated by GNU Autoconf 2.54. Invocation command line was CONFIG_FILES = $CONFIG_FILES --- 16571,16577 ---- } >&5 cat >&5 <<_CSEOF ! This file was extended by GNU Smalltalk $as_me 2.1.2, which was generated by GNU Autoconf 2.54. Invocation command line was CONFIG_FILES = $CONFIG_FILES *************** *** 16559,16565 **** cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ ! GNU Smalltalk config.status 2.1.1 configured by $0, generated by GNU Autoconf 2.54, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" --- 16636,16642 ---- cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ ! GNU Smalltalk config.status 2.1.2 configured by $0, generated by GNU Autoconf 2.54, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" *************** *** 16806,16811 **** --- 16883,16891 ---- s,@INSTALL_INFO@,$INSTALL_INFO,;t t s,@EMACS@,$EMACS,;t t s,@lispdir@,$lispdir,;t t + s,@LEX@,$LEX,;t t + s,@YACC@,$YACC,;t t + s,@RM@,$RM,;t t s,@build@,$build,;t t s,@build_cpu@,$build_cpu,;t t s,@build_vendor@,$build_vendor,;t t *************** *** 16824,16835 **** s,@OBJDUMP@,$OBJDUMP,;t t s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t s,@LIBTOOL@,$LIBTOOL,;t t s,@LIBSNPRINTFV@,$LIBSNPRINTFV,;t t s,@INCSNPRINTFV@,$INCSNPRINTFV,;t t ! s,@subdirs@,$subdirs,;t t ! s,@LEX@,$LEX,;t t ! s,@YACC@,$YACC,;t t ! s,@RM@,$RM,;t t s,@ICON@,$ICON,;t t s,@ALLOCA@,$ALLOCA,;t t s,@LIBOBJS@,$LIBOBJS,;t t --- 16904,16914 ---- s,@OBJDUMP@,$OBJDUMP,;t t s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t s,@LIBTOOL@,$LIBTOOL,;t t + s,@subdirs@,$subdirs,;t t s,@LIBSNPRINTFV@,$LIBSNPRINTFV,;t t s,@INCSNPRINTFV@,$INCSNPRINTFV,;t t ! s,@HAVE_SIGSEGV_TRUE@,$HAVE_SIGSEGV_TRUE,;t t ! s,@HAVE_SIGSEGV_FALSE@,$HAVE_SIGSEGV_FALSE,;t t s,@ICON@,$ICON,;t t s,@ALLOCA@,$ALLOCA,;t t s,@LIBOBJS@,$LIBOBJS,;t t diff -rNC3 smalltalk-2.1.1/configure.ac smalltalk-2.1.2/configure.ac *** smalltalk-2.1.1/configure.ac Thu Apr 17 11:37:57 2003 --- smalltalk-2.1.2/configure.ac Fri May 9 11:40:10 2003 *************** *** 1,6 **** dnl Hey Emacs, I want this in -*- Autoconf -*- mode, please. dnl --- ! dnl Copyright 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2002 dnl Free Software Foundation, Inc. dnl Please see COPYING for a description your rights and responsibilities dnl with this software. --- 1,6 ---- dnl Hey Emacs, I want this in -*- Autoconf -*- mode, please. dnl --- ! dnl Copyright 1992, 1993, 1994, 1995, 1999, 2000, 2001, 2002, 2003 dnl Free Software Foundation, Inc. dnl Please see COPYING for a description your rights and responsibilities dnl with this software. *************** *** 12,19 **** dnl CURRENT:REVISION:AGE means this is the REVISION-th version of dnl the CURRENT-th interface; all the interface from CURRENT-AGE dnl to CURRENT are supported. ! AC_INIT([GNU Smalltalk], 2.1.1, help-smalltalk@gnu.org, smalltalk) ! GST_REVISION(4:9:0) AC_CONFIG_AUX_DIR([config]) AC_CONFIG_SRCDIR([main.c]) AM_CONFIG_HEADER(config.h) --- 12,19 ---- dnl CURRENT:REVISION:AGE means this is the REVISION-th version of dnl the CURRENT-th interface; all the interface from CURRENT-AGE dnl to CURRENT are supported. ! AC_INIT([GNU Smalltalk], 2.1.2, help-smalltalk@gnu.org, smalltalk) ! GST_REVISION(4:10:0) AC_CONFIG_AUX_DIR([config]) AC_CONFIG_SRCDIR([main.c]) AM_CONFIG_HEADER(config.h) *************** *** 36,60 **** AC_PATH_PROG(INSTALL_INFO, install-info, :, $PATH:/sbin) AM_PATH_LISPDIR ! dnl the m4_define hacks below work around an incompatibility ! dnl between libtool and autoconf 2.53+ AC_LIBLTDL_CONVENIENCE ! AC_LIBTOOL_DLOPEN m4_define(AC_PROVIDE_AC_LIBTOOL_DLOPEN) ! AC_LIBTOOL_WIN32_DLL m4_define(AC_PROVIDE_AC_LIBTOOL_WIN32_DLL) AM_PROG_LIBTOOL ! ! AC_SNPRINTFV_CONVENIENCE ac_configure_args="$ac_configure_args --enable-subdir" ! AC_CONFIG_SUBDIRS(libltdl snprintfv sigsegv) ! ! dnl these are not provided by automake ! AM_MISSING_PROG(LEX, flex, $missing_dir) ! AM_MISSING_PROG(YACC, bison, $missing_dir) ! test -z "$RM" && RM='rm -f' ! AC_SUBST(RM) dnl dnl ------------------------------ C COMPILER / OS ------------ --- 36,70 ---- AC_PATH_PROG(INSTALL_INFO, install-info, :, $PATH:/sbin) AM_PATH_LISPDIR ! dnl We only want the GNU implementations ! AM_MISSING_PROG(LEX, flex, $missing_dir) ! AM_MISSING_PROG(YACC, bison, $missing_dir) ! ! test -z "$RM" && RM='rm -f' ! AC_SUBST(RM) ! ! dnl ! dnl ------------------------------ SUBDIRS -------------------- AC_LIBLTDL_CONVENIENCE ! AC_LIBTOOL_DLOPEN m4_define(AC_PROVIDE_AC_LIBTOOL_DLOPEN) ! AC_LIBTOOL_WIN32_DLL m4_define(AC_PROVIDE_AC_LIBTOOL_WIN32_DLL) AM_PROG_LIBTOOL ! AC_CONFIG_SUBDIRS(libltdl) ac_configure_args="$ac_configure_args --enable-subdir" ! AC_SNPRINTFV_CONVENIENCE ! AC_CONFIG_SUBDIRS(snprintfv) ! AC_ARG_ENABLE(generational-gc, ! [ --disable-generational-gc disable generational garbage collection], , ! enable_generational_gc=yes) ! if test $enable_generational_gc != no; then ! AC_CONFIG_SUBDIRS(sigsegv) ! AC_DEFINE_UNQUOTED(HAVE_SIGSEGV_H, 1, ! [Define to 1 if libsigsegv is being used]) ! fi ! AM_CONDITIONAL(HAVE_SIGSEGV, test "$enable_generational_gc" = yes) dnl dnl ------------------------------ C COMPILER / OS ------------ *************** *** 175,181 **** test "$gst_cv_tcltk_libs" != "not found" && MODULES_TK="blox-tk.la" test "$gst_cv_inet_sockets" != "no" && MODULES_TCP="tcp.la" test "$ac_cv_func_nl_langinfo" = yes && \ ! test "$am_cv_func_iconv" = yes && MODULES_I18N="i18n.la" I18N_HASH="" LIGHTNING_CONFIGURE_IF_NOT_FOUND(jit=yes, jit=no) --- 185,191 ---- test "$gst_cv_tcltk_libs" != "not found" && MODULES_TK="blox-tk.la" test "$gst_cv_inet_sockets" != "no" && MODULES_TCP="tcp.la" test "$ac_cv_func_nl_langinfo" = yes && \ ! test "$am_cv_func_iconv" = yes && MODULES_I18N="i18n.la" I18N_DISABLED="" LIGHTNING_CONFIGURE_IF_NOT_FOUND(jit=yes, jit=no) diff -rNC3 smalltalk-2.1.1/db/ChangeLog smalltalk-2.1.2/db/ChangeLog *** smalltalk-2.1.1/db/ChangeLog Thu Apr 17 14:44:39 2003 --- smalltalk-2.1.2/db/ChangeLog Fri May 9 09:26:53 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,12 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/doc/Makefile.in smalltalk-2.1.2/doc/Makefile.in *** smalltalk-2.1.1/doc/Makefile.in Thu Apr 17 14:46:51 2003 --- smalltalk-2.1.2/doc/Makefile.in Fri May 9 11:59:35 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/doc/classes.texi smalltalk-2.1.2/doc/classes.texi *** smalltalk-2.1.1/doc/classes.texi Thu Mar 27 19:01:47 2003 --- smalltalk-2.1.2/doc/classes.texi Fri May 9 09:28:49 2003 *************** *** 5287,5299 **** the ANSI standard mandates `subStrings', with an uppercase s. - @meindex subStrings:@- - @item subStrings:@- aCharacter - Answer an OrderedCollection of substrings of the receiver. A new substring - start at the start of the receiver, or after every sequence of characters - matching aCharacter - - @meindex substrings:@- @item substrings:@- aCharacter Answer an OrderedCollection of substrings of the receiver. A new substring --- 5287,5292 ---- *************** *** 5302,5307 **** --- 5295,5307 ---- the ANSI standard mandates `subStrings:@-', with an uppercase s. + @meindex subStrings:@- + @item subStrings:@- aCharacter + Answer an OrderedCollection of substrings of the receiver. A new substring + start at the start of the receiver, or after every sequence of characters + matching aCharacter + + @end table *************** *** 11008,11014 **** @table @b @meindex extensionFor:@- @item extensionFor:@- aString ! Answer the extension of a file named `aString' @meindex fullNameFor:@- --- 11008,11015 ---- @table @b @meindex extensionFor:@- @item extensionFor:@- aString ! Answer the extension of a file named `aString'. Note:@- the extension ! includes an initial dot. @meindex fullNameFor:@- *************** *** 11027,11033 **** @meindex stripExtensionFrom:@- @item stripExtensionFrom:@- aString Remove the extension from the name of a file called `aString', and ! answer the result @meindex stripFileNameFor:@- --- 11028,11034 ---- @meindex stripExtensionFrom:@- @item stripExtensionFrom:@- aString Remove the extension from the name of a file called `aString', and ! answer the result. @meindex stripFileNameFor:@- *************** *** 24768,24773 **** --- 24769,24780 ---- @meindex atEnd @item atEnd Answer whether the stream has got to an end + + + @meindex isExternalStream + @item isExternalStream + Answer whether the receiver streams on a file or socket. + By default, answer false. @end table diff -rNC3 smalltalk-2.1.1/doc/gst-base.info smalltalk-2.1.2/doc/gst-base.info *** smalltalk-2.1.1/doc/gst-base.info Thu Apr 17 11:44:15 2003 --- smalltalk-2.1.2/doc/gst-base.info Fri May 9 10:56:12 2003 *************** *** 9,1056 ****  Indirect: gst-base.info-1: 254 ! gst-base.info-2: 50120 ! gst-base.info-3: 100010 ! gst-base.info-4: 149237 ! gst-base.info-5: 198608 ! gst-base.info-6: 248290 ! gst-base.info-7: 298129 ! gst-base.info-8: 347712 ! gst-base.info-9: 397409 ! gst-base.info-10: 446346 ! gst-base.info-11: 496020 ! gst-base.info-12: 545919 ! gst-base.info-13: 595210 ! gst-base.info-14: 644893 ! gst-base.info-15: 665548 ! gst-base.info-16: 883583  Tag Table: (Indirect) Node: Top254 ! Node: Base classes2144 ! Node: AbstractNamespace11449 ! Node: AbstractNamespace class-instance creation12196 ! Node: AbstractNamespace-accessing12622 ! Node: AbstractNamespace-basic & copying13847 ! Node: AbstractNamespace-copying14388 ! Node: AbstractNamespace-namespace hierarchy14831 ! Node: AbstractNamespace-overrides for superspaces17496 ! Node: AbstractNamespace-printing19213 ! Node: AbstractNamespace-testing19785 ! Node: AlternativeObjectProxy20023 ! Node: AlternativeObjectProxy class-instance creation20757 ! Node: AlternativeObjectProxy-accessing21689 ! Node: ArithmeticError22240 ! Node: ArithmeticError-description22691 ! Node: Array22896 ! Node: Array-mutating objects23527 ! Node: Array-printing23826 ! Node: Array-testing24044 ! Node: ArrayedCollection24184 ! Node: ArrayedCollection class-instance creation24973 ! Node: ArrayedCollection-basic26094 ! Node: ArrayedCollection-built ins26992 ! Node: ArrayedCollection-copying Collections27255 ! Node: ArrayedCollection-enumerating the elements of a collection29006 ! Node: ArrayedCollection-storing30152 ! Node: Association30436 ! Node: Association class-basic31113 ! Node: Association-accessing31351 ! Node: Association-finalization31958 ! Node: Association-printing32178 ! Node: Association-storing32425 ! Node: Association-testing32678 ! Node: Autoload33022 ! Node: Autoload class-instance creation33692 ! Node: Autoload-accessing34195 ! Node: AutoloadClass34420 ! Node: AutoloadClass-accessing34945 ! Node: Bag35900 ! Node: Bag class-basic36605 ! Node: Bag-adding36861 ! Node: Bag-enumerating the elements of a collection37341 ! Node: Bag-extracting items37698 ! Node: Bag-printing37977 ! Node: Bag-removing38181 ! Node: Bag-storing38490 ! Node: Bag-testing collections38707 ! Node: Behavior39192 ! Node: Behavior-accessing class hierarchy40781 ! Node: Behavior-accessing instances and variables41507 ! Node: Behavior-accessing the methodDictionary42793 ! Node: Behavior-built ins43873 ! Node: Behavior-compilation (alternative)46061 ! Node: Behavior-compiling methods46881 ! Node: Behavior-creating a class hierarchy47341 ! Node: Behavior-enumerating47777 ! Node: Behavior-evaluating48830 ! Node: Behavior-instance creation50120 ! Node: Behavior-instance variables50899 ! Node: Behavior-method dictionary51330 ! Node: Behavior-pluggable behavior (not yet implemented)54767 ! Node: Behavior-printing hierarchy55890 ! Node: Behavior-support for lightweight classes56483 ! Node: Behavior-testing functionality57522 ! Node: Behavior-testing the class hierarchy57790 ! Node: Behavior-testing the form of the instances58312 ! Node: Behavior-testing the method dictionary59439 ! Node: BindingDictionary60825 ! Node: BindingDictionary-accessing61672 ! Node: BindingDictionary-copying63553 ! Node: BindingDictionary-forward declarations64085 ! Node: BindingDictionary-printing64690 ! Node: BindingDictionary-testing65083 ! Node: BlockClosure65297 ! Node: BlockClosure class-instance creation66520 ! Node: BlockClosure class-testing67086 ! Node: BlockClosure-accessing67379 ! Node: BlockClosure-built ins68966 ! Node: BlockClosure-control structures69732 ! Node: BlockClosure-exception handling70398 ! Node: BlockClosure-multiple process72399 ! Node: BlockClosure-overriding73841 ! Node: BlockClosure-testing74108 ! Node: BlockClosure-unwind protection74367 ! Node: BlockContext75835 ! Node: BlockContext-accessing76615 ! Node: BlockContext-printing78128 ! Node: Boolean78352 ! Node: Boolean class-testing79103 ! Node: Boolean-basic79405 ! Node: Boolean-C hacks80686 ! Node: Boolean-overriding80933 ! Node: Boolean-storing81161 ! Node: ByteArray81375 ! Node: ByteArray-built ins81916 ! Node: ByteArray-converting83198 ! Node: ByteArray-more advanced accessing83475 ! Node: ByteStream89978 ! Node: ByteStream-basic90357 ! Node: CAggregate91632 ! Node: CAggregate class-accessing91926 ! Node: CAggregate-accessing92201 ! Node: CallinProcess92424 ! Node: CArray92845 ! Node: CArray-accessing93087 ! Node: CArrayCType93279 ! Node: CArrayCType class-instance creation93579 ! Node: CArrayCType-accessing94198 ! Node: CBoolean94561 ! Node: CBoolean-accessing94858 ! Node: CByte95174 ! Node: CByte class-conversion95556 ! Node: CByte-accessing95874 ! Node: CChar96311 ! Node: CChar class-accessing96571 ! Node: CChar-accessing96920 ! Node: CCompound97222 ! Node: CCompound class-instance creation97563 ! Node: CCompound class-subclass creation97921 ! Node: CCompound-instance creation100010 ! Node: CDouble100348 ! Node: CDouble class-accessing100619 ! Node: CDouble-accessing100978 ! Node: CFloat101290 ! Node: CFloat class-accessing101567 ! Node: CFloat-accessing101921 ! Node: CFunctionDescriptor102228 ! Node: CFunctionDescriptor class-instance creation103003 ! Node: CFunctionDescriptor class-testing103350 ! Node: CFunctionDescriptor-accessing103846 ! Node: CFunctionDescriptor-calling104463 ! Node: CFunctionDescriptor-printing106402 ! Node: Character106660 ! Node: Character class-built ins107629 ! Node: Character class-constants108400 ! Node: Character class-initializing lookup tables109193 ! Node: Character class-instance creation109828 ! Node: Character class-testing110185 ! Node: Character-built ins110543 ! Node: Character-coercion methods111317 ! Node: Character-comparing111880 ! Node: Character-converting112512 ! Node: Character-printing112814 ! Node: Character-storing113187 ! Node: Character-testing113425 ! Node: Character-testing functionality114060 ! Node: CharacterArray114291 ! Node: CharacterArray class-basic115032 ! Node: CharacterArray-basic115421 ! Node: CharacterArray-built ins116097 ! Node: CharacterArray-comparing116511 ! Node: CharacterArray-converting118720 ! Node: CharacterArray-printing120076 ! Node: CharacterArray-storing120694 ! Node: CharacterArray-string processing120972 ! Node: CharacterArray-testing functionality123510 ! Node: CInt123755 ! Node: CInt class-accessing124015 ! Node: CInt-accessing124339 ! Node: Class124656 ! Node: Class-accessing instances and variables125502 ! Node: Class-filing127013 ! Node: Class-instance creation127452 ! Node: Class-instance creation - alternative129656 ! Node: Class-printing131820 ! Node: Class-saving and loading132226 ! Node: Class-testing133619 ! Node: Class-testing functionality133857 ! Node: ClassDescription134073 ! Node: ClassDescription-compiling134735 ! Node: ClassDescription-conversion135562 ! Node: ClassDescription-copying136014 ! Node: ClassDescription-filing137210 ! Node: ClassDescription-organization of messages and classes138031 ! Node: ClassDescription-printing139330 ! Node: CLong140078 ! Node: CLong class-accessing140347 ! Node: CLong-accessing140696 ! Node: CObject140998 ! Node: CObject class-conversion141848 ! Node: CObject class-instance creation142190 ! Node: CObject-accessing142787 ! Node: CObject-C data access143221 ! Node: CObject-conversion143824 ! Node: CObject-finalization144244 ! Node: CObject-pointer-like behavior144707 ! Node: Collection146961 ! Node: Collection class-instance creation147888 ! Node: Collection-adding148891 ! Node: Collection-converting149237 ! Node: Collection-copying Collections150329 ! Node: Collection-enumeration150866 ! Node: Collection-finalization153781 ! Node: Collection-printing154085 ! Node: Collection-removing154427 ! Node: Collection-storing155266 ! Node: Collection-testing collections155522 ! Node: CompiledBlock156160 ! Node: CompiledBlock class-instance creation156658 ! Node: CompiledBlock-accessing157393 ! Node: CompiledBlock-basic158451 ! Node: CompiledBlock-printing159159 ! Node: CompiledBlock-saving and loading159425 ! Node: CompiledCode159845 ! Node: CompiledCode class-cache flushing160571 ! Node: CompiledCode class-instance creation160926 ! Node: CompiledCode-accessing161471 ! Node: CompiledCode-basic162869 ! Node: CompiledCode-copying163619 ! Node: CompiledCode-debugging163843 ! Node: CompiledCode-decoding bytecodes164101 ! Node: CompiledCode-testing accesses164507 ! Node: CompiledCode-translation165667 ! Node: CompiledMethod165924 ! Node: CompiledMethod class-instance creation166702 ! Node: CompiledMethod class-lean images167338 ! Node: CompiledMethod-accessing167658 ! Node: CompiledMethod-basic169024 ! Node: CompiledMethod-printing169787 ! Node: CompiledMethod-saving and loading170127 ! Node: CompiledMethod-testing170576 ! Node: ContextPart171159 ! Node: ContextPart class-exception handling171933 ! Node: ContextPart-accessing172878 ! Node: ContextPart-built ins176110 ! Node: ContextPart-copying176795 ! Node: ContextPart-debugging177147 ! Node: ContextPart-enumerating177670 ! Node: ContextPart-exception handling178054 ! Node: ContextPart-printing178315 ! Node: CoreException178677 ! Node: CoreException class-instance creation179943 ! Node: CoreException-accessing180198 ! Node: CoreException-basic181131 ! Node: CoreException-enumerating181385 ! Node: CoreException-exception handling182042 ! Node: CoreException-instance creation182692 ! Node: CPtr182993 ! Node: CPtr-accessing183225 ! Node: CPtrCType183759 ! Node: CPtrCType class-instance creation184042 ! Node: CPtrCType-accessing184326 ! Node: CScalar184786 ! Node: CScalar class-instance creation185071 ! Node: CScalar-accessing185529 ! Node: CScalarCType186043 ! Node: CScalarCType-accessing186330 ! Node: CScalarCType-storing186657 ! Node: CShort186878 ! Node: CShort class-accessing187151 ! Node: CShort-accessing187505 ! Node: CSmalltalk187812 ! Node: CSmalltalk class-accessing188096 ! Node: CSmalltalk-accessing188470 ! Node: CString188797 ! Node: CString class-instance creation189603 ! Node: CString-accessing190061 ! Node: CStringCType190575 ! Node: CStringCType-accessing190833 ! Node: CStruct191033 ! Node: CStruct class-subclass creation191282 ! Node: CType191515 ! Node: CType class-C instance creation192629 ! Node: CType-accessing192884 ! Node: CType-C instance creation193726 ! Node: CType-storing194236 ! Node: CUChar194432 ! Node: CUChar class-getting info194696 ! Node: CUChar-accessing195059 ! Node: CUInt195369 ! Node: CUInt class-accessing195627 ! Node: CUInt-accessing195976 ! Node: CULong196278 ! Node: CULong class-accessing196540 ! Node: CULong-accessing196894 ! Node: CUnion197201 ! Node: CUnion class-subclass creation197442 ! Node: CUShort197671 ! Node: CUShort class-accessing197937 ! Node: CUShort-accessing198296 ! Node: Date198608 ! Node: Date class-basic200070 ! Node: Date class-instance creation (ANSI)201183 ! Node: Date class-instance creation (Blue Book)201658 ! Node: Date-basic202963 ! Node: Date-compatibility (non-ANSI)203422 ! Node: Date-date computations203820 ! Node: Date-printing205428 ! Node: Date-storing205641 ! Node: Date-testing205849 ! Node: DateTime206153 ! Node: DateTime class-information206787 ! Node: DateTime class-instance creation207063 ! Node: DateTime class-instance creation (non-ANSI)208349 ! Node: DateTime-basic208836 ! Node: DateTime-computations209168 ! Node: DateTime-printing209845 ! Node: DateTime-splitting in dates & times210096 ! Node: DateTime-storing210680 ! Node: DateTime-testing210930 ! Node: DateTime-time zones211290 ! Node: Delay212403 ! Node: Delay class-general inquiries213166 ! Node: Delay class-initialization213424 ! Node: Delay class-instance creation213705 ! Node: Delay-accessing214193 ! Node: Delay-comparing214432 ! Node: Delay-process delay214703 ! Node: DelayedAdaptor214924 ! Node: DelayedAdaptor-accessing215450 ! Node: Dictionary215814 ! Node: Dictionary class-instance creation216764 ! Node: Dictionary-accessing217003 ! Node: Dictionary-awful ST-80 compatibility hacks218659 ! Node: Dictionary-dictionary enumerating219107 ! Node: Dictionary-dictionary removing220180 ! Node: Dictionary-dictionary testing221034 ! Node: Dictionary-polymorphism hacks221693 ! Node: Dictionary-printing221963 ! Node: Dictionary-rehashing222312 ! Node: Dictionary-storing222514 ! Node: Dictionary-testing222759 ! Node: DirectedMessage223018 ! Node: DirectedMessage class-creating instances223584 ! Node: DirectedMessage-accessing224002 ! Node: DirectedMessage-basic224295 ! Node: DirectedMessage-multiple process224704 ! Node: DirectedMessage-saving and loading225287 ! Node: Directory225710 ! Node: Directory class-C functions226481 ! Node: Directory class-file name management226781 ! Node: Directory class-file operations227341 ! Node: Directory class-reading system defaults227708 ! Node: Directory-accessing228655 ! Node: Directory-enumerating229516 ! Node: DLD230257 ! Node: DLD class-C functions230927 ! Node: DLD class-dynamic linking231303 ! Node: DumperProxy232634 ! Node: DumperProxy class-accessing233160 ! Node: DumperProxy class-instance creation233610 ! Node: DumperProxy-saving and restoring234100 ! Node: Duration234500 ! Node: Duration class-instance creation234901 ! Node: Duration class-instance creation (non ANSI)235386 ! Node: Duration-arithmetics235850 ! Node: Error237023 ! Node: Error-exception description237338 ! Node: Exception237664 ! Node: Exception class-comparison238792 ! Node: Exception class-creating ExceptionCollections239241 ! Node: Exception class-initialization239650 ! Node: Exception class-instance creation240017 ! Node: Exception class-interoperability with TrappableEvents240586 ! Node: Exception-comparison241193 ! Node: Exception-exception description241626 ! Node: Exception-exception signaling242054 ! Node: ExceptionSet242432 ! Node: ExceptionSet class-instance creation242997 ! Node: ExceptionSet-enumerating243247 ! Node: False243796 ! Node: False-basic244185 ! Node: False-C hacks245164 ! Node: False-printing245329 ! Node: File245515 ! Node: File class-C functions246338 ! Node: File class-file name management246604 ! Node: File class-file operations247677 ! Node: File class-instance creation248290 ! Node: File class-reading system defaults248777 ! Node: File class-testing249049 ! Node: File-accessing249686 ! Node: File-file name management250771 ! Node: File-file operations251542 ! Node: File-testing252499 ! Node: FileDescriptor253415 ! Node: FileDescriptor class-initialization254566 ! Node: FileDescriptor class-instance creation254889 ! Node: FileDescriptor-accessing260907 ! Node: FileDescriptor-basic262052 ! Node: FileDescriptor-built ins263282 ! Node: FileDescriptor-class type methods264479 ! Node: FileDescriptor-initialize-release264894 ! Node: FileDescriptor-low-level access265415 ! Node: FileDescriptor-overriding inherited methods266486 ! Node: FileDescriptor-printing267272 ! Node: FileDescriptor-testing267555 ! Node: FileSegment267762 ! Node: FileSegment class-basic268371 ! Node: FileSegment class-installing268713 ! Node: FileSegment-basic269084 ! Node: FileSegment-equality269932 ! Node: FileStream270200 ! Node: FileStream class-file-in270906 ! Node: FileStream class-standard streams274427 ! Node: FileStream-basic275152 ! Node: FileStream-buffering276089 ! Node: FileStream-filing in276893 ! Node: FileStream-overriding inherited methods277807 ! Node: FileStream-testing278427 ! Node: Float278634 ! Node: Float class-byte-order dependancies279427 ! Node: Float class-characterization279692 ! Node: Float-arithmetic280699 ! Node: Float-basic281016 ! Node: Float-built ins281196 ! Node: Float-coercing282122 ! Node: Float-printing282743 ! Node: Float-storing282952 ! Node: Float-testing283158 ! Node: Float-testing functionality283910 ! Node: FloatD284091 ! Node: FloatD class-byte-order dependancies284750 ! Node: FloatD class-characterization285020 ! Node: FloatD class-converting286279 ! Node: FloatD-built ins286520 ! Node: FloatD-coercing287742 ! Node: FloatE288130 ! Node: FloatE class-byte-order dependancies288790 ! Node: FloatE class-characterization289060 ! Node: FloatE class-converting290607 ! Node: FloatE-built ins290848 ! Node: FloatE-coercing292070 ! Node: FloatQ292458 ! Node: FloatQ class-byte-order dependancies293120 ! Node: FloatQ class-characterization293390 ! Node: FloatQ class-converting294937 ! Node: FloatQ-built ins295178 ! Node: FloatQ-coercing296400 ! Node: Fraction296788 ! Node: Fraction class-converting297530 ! Node: Fraction class-instance creation297759 ! Node: Fraction-accessing298129 ! Node: Fraction-arithmetic298404 ! Node: Fraction-coercing299113 ! Node: Fraction-comparing299737 ! Node: Fraction-converting300224 ! Node: Fraction-optimized cases300710 ! Node: Fraction-printing301129 ! Node: Fraction-testing301444 ! Node: Halt301634 ! Node: Halt-description301920 ! Node: HashedCollection302156 ! Node: HashedCollection class-instance creation303007 ! Node: HashedCollection-accessing303369 ! Node: HashedCollection-builtins303934 ! Node: HashedCollection-copying304696 ! Node: HashedCollection-enumerating the elements of a collection305159 ! Node: HashedCollection-rehashing305520 ! Node: HashedCollection-removing305791 ! Node: HashedCollection-saving and loading306183 ! Node: HashedCollection-storing306682 ! Node: HashedCollection-testing collections306994 ! Node: HomedAssociation307924 ! Node: HomedAssociation class-basic308484 ! Node: HomedAssociation-accessing308771 ! Node: HomedAssociation-finalization309122 ! Node: HomedAssociation-storing309727 ! Node: IdentityDictionary309981 ! Node: IdentitySet310364 ! Node: IdentitySet-testing310753 ! Node: Integer310999 ! Node: Integer class-converting311818 ! Node: Integer-accessing312035 ! Node: Integer-basic312259 ! Node: Integer-bit operators312454 ! Node: Integer-converting313725 ! Node: Integer-extension314414 ! Node: Integer-iterators314712 ! Node: Integer-math methods315063 ! Node: Integer-printing315859 ! Node: Integer-storing316804 ! Node: Integer-testing functionality317046 ! Node: Interval317303 ! Node: Interval class-instance creation317889 ! Node: Interval-basic318476 ! Node: Interval-printing319147 ! Node: Interval-storing319372 ! Node: Interval-testing319604 ! Node: LargeArray319860 ! Node: LargeArray-overridden320253 ! Node: LargeArrayedCollection320430 ! Node: LargeArrayedCollection class-instance creation320963 ! Node: LargeArrayedCollection-accessing321307 ! Node: LargeArrayedCollection-basic321796 ! Node: LargeArraySubpart322182 ! Node: LargeArraySubpart class-instance creation323051 ! Node: LargeArraySubpart-accessing323445 ! Node: LargeArraySubpart-comparing324385 ! Node: LargeArraySubpart-modifying325392 ! Node: LargeByteArray326139 ! Node: LargeByteArray-overridden326552 ! Node: LargeInteger326978 ! Node: LargeInteger-arithmetic327764 ! Node: LargeInteger-bit operations328726 ! Node: LargeInteger-built-ins329313 ! Node: LargeInteger-coercion330377 ! Node: LargeInteger-disabled330798 ! Node: LargeInteger-primitive operations331158 ! Node: LargeInteger-testing331623 ! Node: LargeNegativeInteger332248 ! Node: LargeNegativeInteger-converting332940 ! Node: LargeNegativeInteger-numeric testing333313 ! Node: LargeNegativeInteger-reverting to LargePositiveInteger333833 ! Node: LargePositiveInteger334384 ! Node: LargePositiveInteger-arithmetic335251 ! Node: LargePositiveInteger-converting335712 ! Node: LargePositiveInteger-helper byte-level methods336265 ! Node: LargePositiveInteger-numeric testing337987 ! Node: LargePositiveInteger-primitive operations338508 ! Node: LargeWordArray339187 ! Node: LargeWordArray-overridden339607 ! Node: LargeZeroInteger339891 ! Node: LargeZeroInteger-accessing340709 ! Node: LargeZeroInteger-arithmetic340959 ! Node: LargeZeroInteger-numeric testing341874 ! Node: LargeZeroInteger-printing342196 ! Node: Link342498 ! Node: Link class-instance creation343033 ! Node: Link-basic343250 ! Node: Link-iteration343488 ! Node: LinkedList343934 ! Node: LinkedList-accessing344532 ! Node: LinkedList-adding344833 ! Node: LinkedList-enumerating345551 ! Node: LinkedList-testing345877 ! Node: LookupKey346218 ! Node: LookupKey class-basic346762 ! Node: LookupKey-accessing346989 ! Node: LookupKey-printing347239 ! Node: LookupKey-storing347471 ! Node: LookupKey-testing347712 ! Node: LookupTable348131 ! Node: LookupTable class-instance creation348859 ! Node: LookupTable-accessing349104 ! Node: LookupTable-copying349892 ! Node: LookupTable-enumerating350195 ! Node: LookupTable-rehashing350573 ! Node: LookupTable-removing350785 ! Node: LookupTable-storing351270 ! Node: Magnitude351492 ! Node: Magnitude-basic351936 ! Node: Magnitude-misc methods352451 ! Node: MappedCollection352850 ! Node: MappedCollection class-instance creation354212 ! Node: MappedCollection-basic354648 ! Node: Memory355522 ! Node: Memory class-accessing356070 ! Node: Message359950 ! Node: Message class-creating instances360588 ! Node: Message-accessing360863 ! Node: Message-basic361288 ! Node: MessageNotUnderstood361598 ! Node: MessageNotUnderstood-accessing362080 ! Node: MessageNotUnderstood-description362402 ! Node: Metaclass362666 ! Node: Metaclass class-instance creation363653 ! Node: Metaclass-accessing363921 ! Node: Metaclass-basic364350 ! Node: Metaclass-delegation365445 ! Node: Metaclass-filing366828 ! Node: Metaclass-printing367102 ! Node: Metaclass-testing functionality367640 ! Node: MethodContext367884 ! Node: MethodContext-accessing368374 ! Node: MethodContext-printing369631 ! Node: MethodDictionary369860 ! Node: MethodDictionary-adding370379 ! Node: MethodDictionary-rehashing370611 ! Node: MethodDictionary-removing370848 ! Node: MethodInfo371243 ! Node: MethodInfo-accessing371717 ! Node: MethodInfo-equality372645 ! Node: Namespace372921 ! Node: Namespace class-accessing373551 ! Node: Namespace class-disabling instance creation373937 ! Node: Namespace class-initialization374316 ! Node: Namespace-accessing374736 ! Node: Namespace-namespace hierarchy375008 ! Node: Namespace-overrides for superspaces375489 ! Node: Namespace-printing377269 ! Node: Namespace-testing377782 ! Node: NetClients.URIResolver377946 ! Node: NetClients.URIResolver class-api378389 ! Node: NetClients.URIResolver class-instance creation379522 ! Node: NetClients.URL379882 ! Node: NetClients.URL class-encoding URLs380590 ! Node: NetClients.URL class-instance creation381078 ! Node: NetClients.URL-accessing381886 ! Node: NetClients.URL-comparing384594 ! Node: NetClients.URL-copying385103 ! Node: NetClients.URL-initialize-release385623 ! Node: NetClients.URL-printing385905 ! Node: NetClients.URL-testing386182 ! Node: NetClients.URL-utilities386941 ! Node: Notification387234 ! Node: Notification-exception description387675 ! Node: NullProxy388120 ! Node: NullProxy class-instance creation388720 ! Node: NullProxy-accessing388974 ! Node: NullValueHolder389209 ! Node: NullValueHolder class-creating instances389786 ! Node: NullValueHolder-accessing390051 ! Node: Number390382 ! Node: Number class-converting391266 ! Node: Number class-testing391709 ! Node: Number-arithmetic391960 ! Node: Number-comparing393276 ! Node: Number-converting393682 ! Node: Number-copying394933 ! Node: Number-error raising395231 ! Node: Number-misc math395585 ! Node: Number-point creation397131 ! Node: Number-retrying397409 ! Node: Number-shortcuts and iterators399195 ! Node: Number-testing400043 ! Node: Number-truncation and round off401460 ! Node: Object402256 ! Node: Object class-initialization403206 ! Node: Object-built ins403881 ! Node: Object-change and update411727 ! Node: Object-class type methods412917 ! Node: Object-conversion413719 ! Node: Object-copying413949 ! Node: Object-debugging414596 ! Node: Object-dependents access415039 ! Node: Object-error raising415726 ! Node: Object-exception handling416402 ! Node: Object-finalization416906 ! Node: Object-printing417885 ! Node: Object-relational operators419611 ! Node: Object-saving and loading419956 ! Node: Object-storing420940 ! Node: Object-syntax shortcuts421528 ! Node: Object-testing functionality421836 ! Node: ObjectDumper423357 ! Node: ObjectDumper class-establishing proxy classes424550 ! Node: ObjectDumper class-instance creation425382 ! Node: ObjectDumper class-shortcuts425778 ! Node: ObjectDumper class-testing426155 ! Node: ObjectDumper-accessing426582 ! Node: ObjectDumper-loading/dumping objects427073 ! Node: ObjectDumper-stream interface427496 ! Node: ObjectMemory427861 ! Node: ObjectMemory class-accessing428977 ! Node: ObjectMemory class-builtins429227 ! Node: ObjectMemory class-dependancy432553 ! Node: ObjectMemory class-initialization432844 ! Node: ObjectMemory class-saving the image433121 ! Node: ObjectMemory-accessing433432 ! Node: ObjectMemory-builtins438369 ! Node: ObjectMemory-derived information438637 ! Node: OrderedCollection439607 ! Node: OrderedCollection class-instance creation440317 ! Node: OrderedCollection-accessing440658 ! Node: OrderedCollection-adding441108 ! Node: OrderedCollection-removing443155 ! Node: Package443792 ! Node: Package-accessing444197 ! Node: PackageLoader445788 ! Node: PackageLoader class-accessing446346 ! Node: PackageLoader class-loading448129 ! Node: PackageLoader class-testing449113 ! Node: PluggableAdaptor449387 ! Node: PluggableAdaptor class-creating instances450015 ! Node: PluggableAdaptor-accessing451093 ! Node: PluggableProxy451377 ! Node: PluggableProxy class-accessing452003 ! Node: PluggableProxy-saving and restoring452436 ! Node: Point452854 ! Node: Point class-instance creation453581 ! Node: Point-accessing453877 ! Node: Point-arithmetic454294 ! Node: Point-comparing454996 ! Node: Point-converting455792 ! Node: Point-point functions456294 ! Node: Point-printing457225 ! Node: Point-storing457442 ! Node: Point-truncation and round off457673 ! Node: PositionableStream458068 ! Node: PositionableStream class-instance creation458975 ! Node: PositionableStream-accessing-reading459483 ! Node: PositionableStream-class type methods460637 ! Node: PositionableStream-positioning461125 ! Node: PositionableStream-testing462262 ! Node: PositionableStream-truncating462727 ! Node: Process463010 ! Node: Process-accessing463578 ! Node: Process-basic465075 ! Node: Process-builtins466605 ! Node: Process-printing467398 ! Node: ProcessorScheduler467595 ! Node: ProcessorScheduler class-instance creation468262 ! Node: ProcessorScheduler-basic468559 ! Node: ProcessorScheduler-built ins470124 ! Node: ProcessorScheduler-idle tasks470809 ! Node: ProcessorScheduler-printing471150 ! Node: ProcessorScheduler-priorities471452 ! Node: ProcessorScheduler-storing473101 ! Node: ProcessorScheduler-timed invocation473425 ! Node: Promise473979 ! Node: Promise class-creating instances474551 ! Node: Promise-accessing474797 ! Node: Promise-initializing475120 ! Node: Promise-printing475347 ! Node: Random475537 ! Node: Random class-instance creation475986 ! Node: Random class-shortcuts476351 ! Node: Random-basic476667 ! Node: Random-testing477080 ! Node: ReadStream477389 ! Node: ReadStream class-instance creation477829 ! Node: ReadStream-accessing-reading478103 ! Node: ReadWriteStream478396 ! Node: ReadWriteStream class-instance creation478882 ! Node: ReadWriteStream-positioning479336 ! Node: Rectangle479700 ! Node: Rectangle class-instance creation480489 ! Node: Rectangle-accessing481030 ! Node: Rectangle-copying483427 ! Node: Rectangle-printing483644 ! Node: Rectangle-rectangle functions483969 ! Node: Rectangle-testing485809 ! Node: Rectangle-transforming486622 ! Node: Rectangle-truncation and round off487245 ! Node: RecursionLock487533 ! Node: RecursionLock class-instance creation487932 ! Node: RecursionLock-accessing488165 ! Node: RecursionLock-mutual exclusion488761 ! Node: RecursionLock-printing489119 ! Node: RootNamespace489368 ! Node: RootNamespace class-instance creation489917 ! Node: RootNamespace-namespace hierarchy490249 ! Node: RootNamespace-overrides for superspaces490679 ! Node: RootNamespace-printing491293 ! Node: RunArray491800 ! Node: RunArray class-instance creation492761 ! Node: RunArray-accessing493032 ! Node: RunArray-adding493365 ! Node: RunArray-basic494438 ! Node: RunArray-copying494742 ! Node: RunArray-enumerating495097 ! Node: RunArray-removing495556 ! Node: RunArray-searching496020 ! Node: RunArray-testing496433 ! Node: ScaledDecimal496675 ! Node: ScaledDecimal class-constants497479 ! Node: ScaledDecimal class-instance creation497728 ! Node: ScaledDecimal-arithmetic498164 ! Node: ScaledDecimal-coercion498882 ! Node: ScaledDecimal-comparing499786 ! Node: ScaledDecimal-constants500421 ! Node: ScaledDecimal-printing500722 ! Node: ScaledDecimal-storing501181 ! Node: Semaphore501418 ! Node: Semaphore class-instance creation502081 ! Node: Semaphore-accessing502453 ! Node: Semaphore-builtins502936 ! Node: Semaphore-mutual exclusion504275 ! Node: Semaphore-printing504608 ! Node: SequenceableCollection504837 ! Node: SequenceableCollection class-instance creation505539 ! Node: SequenceableCollection-basic505953 ! Node: SequenceableCollection-copying SequenceableCollections509374 ! Node: SequenceableCollection-enumerating511643 ! Node: SequenceableCollection-replacing items515055 ! Node: SequenceableCollection-testing516001 ! Node: Set516434 ! Node: Set-arithmetic516854 ! Node: Set-awful ST-80 compatibility hacks517182 ! Node: Set-comparing517542 ! Node: SharedQueue517936 ! Node: SharedQueue class-instance creation518458 ! Node: SharedQueue-accessing518826 ! Node: Signal519327 ! Node: Signal-accessing519952 ! Node: Signal-exception handling520801 ! Node: SingletonProxy523353 ! Node: SingletonProxy class-accessing523957 ! Node: SingletonProxy class-instance creation524321 ! Node: SingletonProxy-saving and restoring524761 ! Node: SmallInteger525187 ! Node: SmallInteger class-getting limits525874 ! Node: SmallInteger class-testing526359 ! Node: SmallInteger-bit arithmetic526654 ! Node: SmallInteger-built ins526931 ! Node: SmallInteger-builtins529235 ! Node: SmallInteger-coercion methods529985 ! Node: SmallInteger-testing functionality530340 ! Node: SortedCollection530572 ! Node: SortedCollection class-hacking531704 ! Node: SortedCollection class-instance creation531972 ! Node: SortedCollection-basic532484 ! Node: SortedCollection-copying533028 ! Node: SortedCollection-disabled533334 ! Node: SortedCollection-enumerating534187 ! Node: SortedCollection-saving and loading534516 ! Node: SortedCollection-searching534861 ! Node: Stream535447 ! Node: Stream-accessing-reading536389 ! Node: Stream-accessing-writing538155 ! Node: Stream-basic538709 ! Node: Stream-character writing538891 ! Node: Stream-enumerating539411 ! Node: Stream-filing out539645 ! Node: Stream-positioning539990 ! Node: Stream-printing540697 ! Node: Stream-providing consistent protocols541456 ! Node: Stream-storing541814 ! Node: Stream-testing542185 ! Node: String542356 ! Node: String class-basic542938 ! Node: String class-instance creation543254 ! Node: String-built ins543584 ! Node: String-converting545575 ! Node: String-storing545919 ! Node: String-testing functionality546155 ! Node: String-useful functionality546378 ! Node: Symbol546663 ! Node: Symbol class-built ins547489 ! Node: Symbol class-instance creation547703 ! Node: Symbol class-symbol table548841 ! Node: Symbol-basic550249 ! Node: Symbol-built ins551001 ! Node: Symbol-converting551309 ! Node: Symbol-misc551648 ! Node: Symbol-storing551811 ! Node: Symbol-testing552473 ! Node: Symbol-testing functionality552740 ! Node: SymLink552958 ! Node: SymLink class-instance creation553507 ! Node: SymLink-accessing553826 ! Node: SymLink-iteration554160 ! Node: SymLink-printing554374 ! Node: SystemDictionary554573 ! Node: SystemDictionary-basic555380 ! Node: SystemDictionary-builtins555660 ! Node: SystemDictionary-C functions556989 ! Node: SystemDictionary-miscellaneous557494 ! Node: SystemDictionary-printing557838 ! Node: SystemDictionary-special accessing558256 ! Node: SystemExceptions.AlreadyDefined558819 ! Node: SystemExceptions.AlreadyDefined-accessing559333 ! Node: SystemExceptions.ArgumentOutOfRange559584 ! Node: SystemExceptions.ArgumentOutOfRange class-signaling560172 ! Node: SystemExceptions.ArgumentOutOfRange-accessing560577 ! Node: SystemExceptions.BadReturn561154 ! Node: SystemExceptions.BadReturn-accessing561632 ! Node: SystemExceptions.CInterfaceError561875 ! Node: SystemExceptions.CInterfaceError-accessing562374 ! Node: SystemExceptions.EmptyCollection562641 ! Node: SystemExceptions.EmptyCollection-accessing563126 ! Node: SystemExceptions.EndOfStream563393 ! Node: SystemExceptions.EndOfStream class-signaling563882 ! Node: SystemExceptions.EndOfStream-accessing564221 ! Node: SystemExceptions.FileError564640 ! Node: SystemExceptions.FileError-accessing565117 ! Node: SystemExceptions.IndexOutOfRange565360 ! Node: SystemExceptions.IndexOutOfRange class-signaling565944 ! Node: SystemExceptions.IndexOutOfRange-accessing566309 ! Node: SystemExceptions.InvalidArgument566822 ! Node: SystemExceptions.InvalidArgument-accessing567317 ! Node: SystemExceptions.InvalidProcessState567573 ! Node: SystemExceptions.InvalidProcessState-accessing568102 ! Node: SystemExceptions.InvalidSize568385 ! Node: SystemExceptions.InvalidSize-accessing568850 ! Node: SystemExceptions.InvalidValue569101 ! Node: SystemExceptions.InvalidValue class-signaling569609 ! Node: SystemExceptions.InvalidValue-accessing570057 ! Node: SystemExceptions.MustBeBoolean570547 ! Node: SystemExceptions.MutationError570967 ! Node: SystemExceptions.MutationError-accessing571426 ! Node: SystemExceptions.NoRunnableProcess571685 ! Node: SystemExceptions.NoRunnableProcess-accessing572170 ! Node: SystemExceptions.NotFound572445 ! Node: SystemExceptions.NotFound class-accessing572959 ! Node: SystemExceptions.NotFound-accessing573333 ! Node: SystemExceptions.NotImplemented573622 ! Node: SystemExceptions.NotImplemented-accessing574078 ! Node: SystemExceptions.NotIndexable574341 ! Node: SystemExceptions.NotIndexable-accessing574802 ! Node: SystemExceptions.NotYetImplemented575057 ! Node: SystemExceptions.NotYetImplemented-accessing575567 ! Node: SystemExceptions.PrimitiveFailed575842 ! Node: SystemExceptions.PrimitiveFailed-accessing576325 ! Node: SystemExceptions.ProcessBeingTerminated576592 ! Node: SystemExceptions.ProcessBeingTerminated-accessing577026 ! Node: SystemExceptions.ProcessTerminated577321 ! Node: SystemExceptions.ProcessTerminated-accessing577844 ! Node: SystemExceptions.ReadOnlyObject578119 ! Node: SystemExceptions.ReadOnlyObject-accessing578598 ! Node: SystemExceptions.ShouldNotImplement578861 ! Node: SystemExceptions.ShouldNotImplement-accessing579389 ! Node: SystemExceptions.SubclassResponsibility579668 ! Node: SystemExceptions.SubclassResponsibility-accessing580236 ! Node: SystemExceptions.UserInterrupt580531 ! Node: SystemExceptions.UserInterrupt-accessing580981 ! Node: SystemExceptions.VMError581240 ! Node: SystemExceptions.VMError-accessing581664 ! Node: SystemExceptions.WrongArgumentCount581899 ! Node: SystemExceptions.WrongArgumentCount-accessing582453 ! Node: SystemExceptions.WrongClass582732 ! Node: SystemExceptions.WrongClass class-signaling583348 ! Node: SystemExceptions.WrongClass-accessing584003 ! Node: SystemExceptions.WrongMessageSent584655 ! Node: SystemExceptions.WrongMessageSent class-signaling585300 ! Node: SystemExceptions.WrongMessageSent-accessing585716 ! Node: TextCollector586304 ! Node: TextCollector class-accessing587002 ! Node: TextCollector-accessing587498 ! Node: TextCollector-printing588296 ! Node: TextCollector-set up588627 ! Node: TextCollector-storing589189 ! Node: Time589516 ! Node: Time class-basic (UTC)590295 ! Node: Time class-builtins590740 ! Node: Time class-clocks591764 ! Node: Time class-initialization592318 ! Node: Time class-instance creation592661 ! Node: Time-accessing (ANSI for DateAndTimes)593537 ! Node: Time-accessing (non ANSI & for Durations)594052 ! Node: Time-arithmetic594501 ! Node: Time-comparing594926 ! Node: TokenStream595210 ! Node: TokenStream class-instance creation596018 ! Node: TokenStream-basic596377 ! Node: TokenStream-write methods596698 ! Node: TrappableEvent596940 ! Node: TrappableEvent-enumerating597516 ! Node: TrappableEvent-instance creation598063 ! Node: True598392 ! Node: True-basic598770 ! Node: True-C hacks599719 ! Node: True-printing599878 ! Node: UndefinedObject600059 ! Node: UndefinedObject-basic600775 ! Node: UndefinedObject-class creation601043 ! Node: UndefinedObject-class creation - alternative603223 ! Node: UndefinedObject-CObject interoperability605510 ! Node: UndefinedObject-dependents access605843 ! Node: UndefinedObject-printing606191 ! Node: UndefinedObject-storing606470 ! Node: UndefinedObject-testing606745 ! Node: ValueAdaptor607580 ! Node: ValueAdaptor class-creating instances608064 ! Node: ValueAdaptor-accessing608351 ! Node: ValueAdaptor-printing608757 ! Node: ValueHolder608969 ! Node: ValueHolder class-creating instances609584 ! Node: ValueHolder-accessing609966 ! Node: ValueHolder-initializing610258 ! Node: VariableBinding610480 ! Node: VariableBinding-printing611112 ! Node: VariableBinding-saving and loading611426 ! Node: VariableBinding-storing611882 ! Node: VariableBinding-testing612169 ! Node: VersionableObjectProxy612426 ! Node: VersionableObjectProxy class-saving and restoring613322 ! Node: VersionableObjectProxy-saving and restoring614345 ! Node: VFS.ArchiveFileHandler614678 ! Node: VFS.ArchiveFileHandler class-registering615595 ! Node: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol616049 ! Node: VFS.ArchiveFileHandler-directory operations617425 ! Node: VFS.ArchiveFileHandler-file operations618266 ! Node: VFS.ArchiveMemberHandler618552 ! Node: VFS.ArchiveMemberHandler-accessing619279 ! Node: VFS.ArchiveMemberHandler-directory operations620438 ! Node: VFS.ArchiveMemberHandler-file operations621058 ! Node: VFS.ArchiveMemberHandler-finalization621723 ! Node: VFS.ArchiveMemberHandler-initializing622215 ! Node: VFS.ArchiveMemberHandler-testing622748 ! Node: VFS.DecodedFileHandler623633 ! Node: VFS.DecodedFileHandler class-registering624174 ! Node: VFS.DecodedFileHandler-files625320 ! Node: VFS.ExternalArchiveFileHandler626014 ! Node: VFS.ExternalArchiveFileHandler class-registering626845 ! Node: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol627824 ! Node: VFS.ExternalArchiveFileHandler-members629144 ! Node: VFS.ExternalArchiveFileHandler-releasing629654 ! Node: VFS.RealFileHandler630003 ! Node: VFS.RealFileHandler class-C functions630746 ! Node: VFS.RealFileHandler class-initialization631027 ! Node: VFS.RealFileHandler-accessing631353 ! Node: VFS.RealFileHandler-directory operations632542 ! Node: VFS.RealFileHandler-file operations633037 ! Node: VFS.RealFileHandler-testing633578 ! Node: VFS.VFSHandler634321 ! Node: VFS.VFSHandler class-initializing635094 ! Node: VFS.VFSHandler class-instance creation635991 ! Node: VFS.VFSHandler-accessing636333 ! Node: VFS.VFSHandler-C functions637674 ! Node: VFS.VFSHandler-directory operations638809 ! Node: VFS.VFSHandler-file operations639397 ! Node: VFS.VFSHandler-testing640170 ! Node: Warning641010 ! Node: Warning-exception description641329 ! Node: WeakArray641532 ! Node: WeakArray class-instance creation642025 ! Node: WeakArray-accessing642348 ! Node: WeakArray-conversion643995 ! Node: WeakArray-loading644629 ! Node: WeakIdentitySet644893 ! Node: WeakKeyDictionary645355 ! Node: WeakKeyDictionary-accessing645904 ! Node: WeakKeyIdentityDictionary646407 ! Node: WeakSet646935 ! Node: WeakSet-accessing647391 ! Node: WeakValueIdentityDictionary647888 ! Node: WeakValueLookupTable648434 ! Node: WeakValueLookupTable-hacks649042 ! Node: WeakValueLookupTable-rehashing649598 ! Node: WordArray649820 ! Node: WriteStream650126 ! Node: WriteStream class-instance creation650652 ! Node: WriteStream-accessing651321 ! Node: WriteStream-accessing-writing651574 ! Node: WriteStream-positioning652164 ! Node: ZeroDivide652373 ! Node: ZeroDivide class-instance creation652866 ! Node: ZeroDivide-accessing653245 ! Node: ZeroDivide-description653497 ! Node: Class index653711 ! Node: Method index665548 ! Node: Cross-reference883583  End Tag Table --- 9,1056 ----  Indirect: gst-base.info-1: 254 ! gst-base.info-2: 50116 ! gst-base.info-3: 100006 ! gst-base.info-4: 149233 ! gst-base.info-5: 198604 ! gst-base.info-6: 248339 ! gst-base.info-7: 298178 ! gst-base.info-8: 347761 ! gst-base.info-9: 397458 ! gst-base.info-10: 446395 ! gst-base.info-11: 496069 ! gst-base.info-12: 545736 ! gst-base.info-13: 595371 ! gst-base.info-14: 645054 ! gst-base.info-15: 665709 ! gst-base.info-16: 883801  Tag Table: (Indirect) Node: Top254 ! Node: Base classes2140 ! Node: AbstractNamespace11445 ! Node: AbstractNamespace class-instance creation12192 ! Node: AbstractNamespace-accessing12618 ! Node: AbstractNamespace-basic & copying13843 ! Node: AbstractNamespace-copying14384 ! Node: AbstractNamespace-namespace hierarchy14827 ! Node: AbstractNamespace-overrides for superspaces17492 ! Node: AbstractNamespace-printing19209 ! Node: AbstractNamespace-testing19781 ! Node: AlternativeObjectProxy20019 ! Node: AlternativeObjectProxy class-instance creation20753 ! Node: AlternativeObjectProxy-accessing21685 ! Node: ArithmeticError22236 ! Node: ArithmeticError-description22687 ! Node: Array22892 ! Node: Array-mutating objects23523 ! Node: Array-printing23822 ! Node: Array-testing24040 ! Node: ArrayedCollection24180 ! Node: ArrayedCollection class-instance creation24969 ! Node: ArrayedCollection-basic26090 ! Node: ArrayedCollection-built ins26988 ! Node: ArrayedCollection-copying Collections27251 ! Node: ArrayedCollection-enumerating the elements of a collection29002 ! Node: ArrayedCollection-storing30148 ! Node: Association30432 ! Node: Association class-basic31109 ! Node: Association-accessing31347 ! Node: Association-finalization31954 ! Node: Association-printing32174 ! Node: Association-storing32421 ! Node: Association-testing32674 ! Node: Autoload33018 ! Node: Autoload class-instance creation33688 ! Node: Autoload-accessing34191 ! Node: AutoloadClass34416 ! Node: AutoloadClass-accessing34941 ! Node: Bag35896 ! Node: Bag class-basic36601 ! Node: Bag-adding36857 ! Node: Bag-enumerating the elements of a collection37337 ! Node: Bag-extracting items37694 ! Node: Bag-printing37973 ! Node: Bag-removing38177 ! Node: Bag-storing38486 ! Node: Bag-testing collections38703 ! Node: Behavior39188 ! Node: Behavior-accessing class hierarchy40777 ! Node: Behavior-accessing instances and variables41503 ! Node: Behavior-accessing the methodDictionary42789 ! Node: Behavior-built ins43869 ! Node: Behavior-compilation (alternative)46057 ! Node: Behavior-compiling methods46877 ! Node: Behavior-creating a class hierarchy47337 ! Node: Behavior-enumerating47773 ! Node: Behavior-evaluating48826 ! Node: Behavior-instance creation50116 ! Node: Behavior-instance variables50895 ! Node: Behavior-method dictionary51326 ! Node: Behavior-pluggable behavior (not yet implemented)54763 ! Node: Behavior-printing hierarchy55886 ! Node: Behavior-support for lightweight classes56479 ! Node: Behavior-testing functionality57518 ! Node: Behavior-testing the class hierarchy57786 ! Node: Behavior-testing the form of the instances58308 ! Node: Behavior-testing the method dictionary59435 ! Node: BindingDictionary60821 ! Node: BindingDictionary-accessing61668 ! Node: BindingDictionary-copying63549 ! Node: BindingDictionary-forward declarations64081 ! Node: BindingDictionary-printing64686 ! Node: BindingDictionary-testing65079 ! Node: BlockClosure65293 ! Node: BlockClosure class-instance creation66516 ! Node: BlockClosure class-testing67082 ! Node: BlockClosure-accessing67375 ! Node: BlockClosure-built ins68962 ! Node: BlockClosure-control structures69728 ! Node: BlockClosure-exception handling70394 ! Node: BlockClosure-multiple process72395 ! Node: BlockClosure-overriding73837 ! Node: BlockClosure-testing74104 ! Node: BlockClosure-unwind protection74363 ! Node: BlockContext75831 ! Node: BlockContext-accessing76611 ! Node: BlockContext-printing78124 ! Node: Boolean78348 ! Node: Boolean class-testing79099 ! Node: Boolean-basic79401 ! Node: Boolean-C hacks80682 ! Node: Boolean-overriding80929 ! Node: Boolean-storing81157 ! Node: ByteArray81371 ! Node: ByteArray-built ins81912 ! Node: ByteArray-converting83194 ! Node: ByteArray-more advanced accessing83471 ! Node: ByteStream89974 ! Node: ByteStream-basic90353 ! Node: CAggregate91628 ! Node: CAggregate class-accessing91922 ! Node: CAggregate-accessing92197 ! Node: CallinProcess92420 ! Node: CArray92841 ! Node: CArray-accessing93083 ! Node: CArrayCType93275 ! Node: CArrayCType class-instance creation93575 ! Node: CArrayCType-accessing94194 ! Node: CBoolean94557 ! Node: CBoolean-accessing94854 ! Node: CByte95170 ! Node: CByte class-conversion95552 ! Node: CByte-accessing95870 ! Node: CChar96307 ! Node: CChar class-accessing96567 ! Node: CChar-accessing96916 ! Node: CCompound97218 ! Node: CCompound class-instance creation97559 ! Node: CCompound class-subclass creation97917 ! Node: CCompound-instance creation100006 ! Node: CDouble100344 ! Node: CDouble class-accessing100615 ! Node: CDouble-accessing100974 ! Node: CFloat101286 ! Node: CFloat class-accessing101563 ! Node: CFloat-accessing101917 ! Node: CFunctionDescriptor102224 ! Node: CFunctionDescriptor class-instance creation102999 ! Node: CFunctionDescriptor class-testing103346 ! Node: CFunctionDescriptor-accessing103842 ! Node: CFunctionDescriptor-calling104459 ! Node: CFunctionDescriptor-printing106398 ! Node: Character106656 ! Node: Character class-built ins107625 ! Node: Character class-constants108396 ! Node: Character class-initializing lookup tables109189 ! Node: Character class-instance creation109824 ! Node: Character class-testing110181 ! Node: Character-built ins110539 ! Node: Character-coercion methods111313 ! Node: Character-comparing111876 ! Node: Character-converting112508 ! Node: Character-printing112810 ! Node: Character-storing113183 ! Node: Character-testing113421 ! Node: Character-testing functionality114056 ! Node: CharacterArray114287 ! Node: CharacterArray class-basic115028 ! Node: CharacterArray-basic115417 ! Node: CharacterArray-built ins116093 ! Node: CharacterArray-comparing116507 ! Node: CharacterArray-converting118716 ! Node: CharacterArray-printing120072 ! Node: CharacterArray-storing120690 ! Node: CharacterArray-string processing120968 ! Node: CharacterArray-testing functionality123506 ! Node: CInt123751 ! Node: CInt class-accessing124011 ! Node: CInt-accessing124335 ! Node: Class124652 ! Node: Class-accessing instances and variables125498 ! Node: Class-filing127009 ! Node: Class-instance creation127448 ! Node: Class-instance creation - alternative129652 ! Node: Class-printing131816 ! Node: Class-saving and loading132222 ! Node: Class-testing133615 ! Node: Class-testing functionality133853 ! Node: ClassDescription134069 ! Node: ClassDescription-compiling134731 ! Node: ClassDescription-conversion135558 ! Node: ClassDescription-copying136010 ! Node: ClassDescription-filing137206 ! Node: ClassDescription-organization of messages and classes138027 ! Node: ClassDescription-printing139326 ! Node: CLong140074 ! Node: CLong class-accessing140343 ! Node: CLong-accessing140692 ! Node: CObject140994 ! Node: CObject class-conversion141844 ! Node: CObject class-instance creation142186 ! Node: CObject-accessing142783 ! Node: CObject-C data access143217 ! Node: CObject-conversion143820 ! Node: CObject-finalization144240 ! Node: CObject-pointer-like behavior144703 ! Node: Collection146957 ! Node: Collection class-instance creation147884 ! Node: Collection-adding148887 ! Node: Collection-converting149233 ! Node: Collection-copying Collections150325 ! Node: Collection-enumeration150862 ! Node: Collection-finalization153777 ! Node: Collection-printing154081 ! Node: Collection-removing154423 ! Node: Collection-storing155262 ! Node: Collection-testing collections155518 ! Node: CompiledBlock156156 ! Node: CompiledBlock class-instance creation156654 ! Node: CompiledBlock-accessing157389 ! Node: CompiledBlock-basic158447 ! Node: CompiledBlock-printing159155 ! Node: CompiledBlock-saving and loading159421 ! Node: CompiledCode159841 ! Node: CompiledCode class-cache flushing160567 ! Node: CompiledCode class-instance creation160922 ! Node: CompiledCode-accessing161467 ! Node: CompiledCode-basic162865 ! Node: CompiledCode-copying163615 ! Node: CompiledCode-debugging163839 ! Node: CompiledCode-decoding bytecodes164097 ! Node: CompiledCode-testing accesses164503 ! Node: CompiledCode-translation165663 ! Node: CompiledMethod165920 ! Node: CompiledMethod class-instance creation166698 ! Node: CompiledMethod class-lean images167334 ! Node: CompiledMethod-accessing167654 ! Node: CompiledMethod-basic169020 ! Node: CompiledMethod-printing169783 ! Node: CompiledMethod-saving and loading170123 ! Node: CompiledMethod-testing170572 ! Node: ContextPart171155 ! Node: ContextPart class-exception handling171929 ! Node: ContextPart-accessing172874 ! Node: ContextPart-built ins176106 ! Node: ContextPart-copying176791 ! Node: ContextPart-debugging177143 ! Node: ContextPart-enumerating177666 ! Node: ContextPart-exception handling178050 ! Node: ContextPart-printing178311 ! Node: CoreException178673 ! Node: CoreException class-instance creation179939 ! Node: CoreException-accessing180194 ! Node: CoreException-basic181127 ! Node: CoreException-enumerating181381 ! Node: CoreException-exception handling182038 ! Node: CoreException-instance creation182688 ! Node: CPtr182989 ! Node: CPtr-accessing183221 ! Node: CPtrCType183755 ! Node: CPtrCType class-instance creation184038 ! Node: CPtrCType-accessing184322 ! Node: CScalar184782 ! Node: CScalar class-instance creation185067 ! Node: CScalar-accessing185525 ! Node: CScalarCType186039 ! Node: CScalarCType-accessing186326 ! Node: CScalarCType-storing186653 ! Node: CShort186874 ! Node: CShort class-accessing187147 ! Node: CShort-accessing187501 ! Node: CSmalltalk187808 ! Node: CSmalltalk class-accessing188092 ! Node: CSmalltalk-accessing188466 ! Node: CString188793 ! Node: CString class-instance creation189599 ! Node: CString-accessing190057 ! Node: CStringCType190571 ! Node: CStringCType-accessing190829 ! Node: CStruct191029 ! Node: CStruct class-subclass creation191278 ! Node: CType191511 ! Node: CType class-C instance creation192625 ! Node: CType-accessing192880 ! Node: CType-C instance creation193722 ! Node: CType-storing194232 ! Node: CUChar194428 ! Node: CUChar class-getting info194692 ! Node: CUChar-accessing195055 ! Node: CUInt195365 ! Node: CUInt class-accessing195623 ! Node: CUInt-accessing195972 ! Node: CULong196274 ! Node: CULong class-accessing196536 ! Node: CULong-accessing196890 ! Node: CUnion197197 ! Node: CUnion class-subclass creation197438 ! Node: CUShort197667 ! Node: CUShort class-accessing197933 ! Node: CUShort-accessing198292 ! Node: Date198604 ! Node: Date class-basic200066 ! Node: Date class-instance creation (ANSI)201179 ! Node: Date class-instance creation (Blue Book)201654 ! Node: Date-basic202959 ! Node: Date-compatibility (non-ANSI)203418 ! Node: Date-date computations203816 ! Node: Date-printing205424 ! Node: Date-storing205637 ! Node: Date-testing205845 ! Node: DateTime206149 ! Node: DateTime class-information206783 ! Node: DateTime class-instance creation207059 ! Node: DateTime class-instance creation (non-ANSI)208345 ! Node: DateTime-basic208832 ! Node: DateTime-computations209164 ! Node: DateTime-printing209841 ! Node: DateTime-splitting in dates & times210092 ! Node: DateTime-storing210676 ! Node: DateTime-testing210926 ! Node: DateTime-time zones211286 ! Node: Delay212399 ! Node: Delay class-general inquiries213162 ! Node: Delay class-initialization213420 ! Node: Delay class-instance creation213701 ! Node: Delay-accessing214189 ! Node: Delay-comparing214428 ! Node: Delay-process delay214699 ! Node: DelayedAdaptor214920 ! Node: DelayedAdaptor-accessing215446 ! Node: Dictionary215810 ! Node: Dictionary class-instance creation216760 ! Node: Dictionary-accessing216999 ! Node: Dictionary-awful ST-80 compatibility hacks218655 ! Node: Dictionary-dictionary enumerating219103 ! Node: Dictionary-dictionary removing220176 ! Node: Dictionary-dictionary testing221030 ! Node: Dictionary-polymorphism hacks221689 ! Node: Dictionary-printing221959 ! Node: Dictionary-rehashing222308 ! Node: Dictionary-storing222510 ! Node: Dictionary-testing222755 ! Node: DirectedMessage223014 ! Node: DirectedMessage class-creating instances223580 ! Node: DirectedMessage-accessing223998 ! Node: DirectedMessage-basic224291 ! Node: DirectedMessage-multiple process224700 ! Node: DirectedMessage-saving and loading225283 ! Node: Directory225706 ! Node: Directory class-C functions226477 ! Node: Directory class-file name management226777 ! Node: Directory class-file operations227337 ! Node: Directory class-reading system defaults227704 ! Node: Directory-accessing228651 ! Node: Directory-enumerating229512 ! Node: DLD230253 ! Node: DLD class-C functions230923 ! Node: DLD class-dynamic linking231299 ! Node: DumperProxy232630 ! Node: DumperProxy class-accessing233156 ! Node: DumperProxy class-instance creation233606 ! Node: DumperProxy-saving and restoring234096 ! Node: Duration234496 ! Node: Duration class-instance creation234897 ! Node: Duration class-instance creation (non ANSI)235382 ! Node: Duration-arithmetics235846 ! Node: Error237019 ! Node: Error-exception description237334 ! Node: Exception237660 ! Node: Exception class-comparison238788 ! Node: Exception class-creating ExceptionCollections239237 ! Node: Exception class-initialization239646 ! Node: Exception class-instance creation240013 ! Node: Exception class-interoperability with TrappableEvents240582 ! Node: Exception-comparison241189 ! Node: Exception-exception description241622 ! Node: Exception-exception signaling242050 ! Node: ExceptionSet242428 ! Node: ExceptionSet class-instance creation242993 ! Node: ExceptionSet-enumerating243243 ! Node: False243792 ! Node: False-basic244181 ! Node: False-C hacks245160 ! Node: False-printing245325 ! Node: File245511 ! Node: File class-C functions246334 ! Node: File class-file name management246600 ! Node: File class-file operations247726 ! Node: File class-instance creation248339 ! Node: File class-reading system defaults248826 ! Node: File class-testing249098 ! Node: File-accessing249735 ! Node: File-file name management250820 ! Node: File-file operations251591 ! Node: File-testing252548 ! Node: FileDescriptor253464 ! Node: FileDescriptor class-initialization254615 ! Node: FileDescriptor class-instance creation254938 ! Node: FileDescriptor-accessing260956 ! Node: FileDescriptor-basic262101 ! Node: FileDescriptor-built ins263331 ! Node: FileDescriptor-class type methods264528 ! Node: FileDescriptor-initialize-release264943 ! Node: FileDescriptor-low-level access265464 ! Node: FileDescriptor-overriding inherited methods266535 ! Node: FileDescriptor-printing267321 ! Node: FileDescriptor-testing267604 ! Node: FileSegment267811 ! Node: FileSegment class-basic268420 ! Node: FileSegment class-installing268762 ! Node: FileSegment-basic269133 ! Node: FileSegment-equality269981 ! Node: FileStream270249 ! Node: FileStream class-file-in270955 ! Node: FileStream class-standard streams274476 ! Node: FileStream-basic275201 ! Node: FileStream-buffering276138 ! Node: FileStream-filing in276942 ! Node: FileStream-overriding inherited methods277856 ! Node: FileStream-testing278476 ! Node: Float278683 ! Node: Float class-byte-order dependancies279476 ! Node: Float class-characterization279741 ! Node: Float-arithmetic280748 ! Node: Float-basic281065 ! Node: Float-built ins281245 ! Node: Float-coercing282171 ! Node: Float-printing282792 ! Node: Float-storing283001 ! Node: Float-testing283207 ! Node: Float-testing functionality283959 ! Node: FloatD284140 ! Node: FloatD class-byte-order dependancies284799 ! Node: FloatD class-characterization285069 ! Node: FloatD class-converting286328 ! Node: FloatD-built ins286569 ! Node: FloatD-coercing287791 ! Node: FloatE288179 ! Node: FloatE class-byte-order dependancies288839 ! Node: FloatE class-characterization289109 ! Node: FloatE class-converting290656 ! Node: FloatE-built ins290897 ! Node: FloatE-coercing292119 ! Node: FloatQ292507 ! Node: FloatQ class-byte-order dependancies293169 ! Node: FloatQ class-characterization293439 ! Node: FloatQ class-converting294986 ! Node: FloatQ-built ins295227 ! Node: FloatQ-coercing296449 ! Node: Fraction296837 ! Node: Fraction class-converting297579 ! Node: Fraction class-instance creation297808 ! Node: Fraction-accessing298178 ! Node: Fraction-arithmetic298453 ! Node: Fraction-coercing299162 ! Node: Fraction-comparing299786 ! Node: Fraction-converting300273 ! Node: Fraction-optimized cases300759 ! Node: Fraction-printing301178 ! Node: Fraction-testing301493 ! Node: Halt301683 ! Node: Halt-description301969 ! Node: HashedCollection302205 ! Node: HashedCollection class-instance creation303056 ! Node: HashedCollection-accessing303418 ! Node: HashedCollection-builtins303983 ! Node: HashedCollection-copying304745 ! Node: HashedCollection-enumerating the elements of a collection305208 ! Node: HashedCollection-rehashing305569 ! Node: HashedCollection-removing305840 ! Node: HashedCollection-saving and loading306232 ! Node: HashedCollection-storing306731 ! Node: HashedCollection-testing collections307043 ! Node: HomedAssociation307973 ! Node: HomedAssociation class-basic308533 ! Node: HomedAssociation-accessing308820 ! Node: HomedAssociation-finalization309171 ! Node: HomedAssociation-storing309776 ! Node: IdentityDictionary310030 ! Node: IdentitySet310413 ! Node: IdentitySet-testing310802 ! Node: Integer311048 ! Node: Integer class-converting311867 ! Node: Integer-accessing312084 ! Node: Integer-basic312308 ! Node: Integer-bit operators312503 ! Node: Integer-converting313774 ! Node: Integer-extension314463 ! Node: Integer-iterators314761 ! Node: Integer-math methods315112 ! Node: Integer-printing315908 ! Node: Integer-storing316853 ! Node: Integer-testing functionality317095 ! Node: Interval317352 ! Node: Interval class-instance creation317938 ! Node: Interval-basic318525 ! Node: Interval-printing319196 ! Node: Interval-storing319421 ! Node: Interval-testing319653 ! Node: LargeArray319909 ! Node: LargeArray-overridden320302 ! Node: LargeArrayedCollection320479 ! Node: LargeArrayedCollection class-instance creation321012 ! Node: LargeArrayedCollection-accessing321356 ! Node: LargeArrayedCollection-basic321845 ! Node: LargeArraySubpart322231 ! Node: LargeArraySubpart class-instance creation323100 ! Node: LargeArraySubpart-accessing323494 ! Node: LargeArraySubpart-comparing324434 ! Node: LargeArraySubpart-modifying325441 ! Node: LargeByteArray326188 ! Node: LargeByteArray-overridden326601 ! Node: LargeInteger327027 ! Node: LargeInteger-arithmetic327813 ! Node: LargeInteger-bit operations328775 ! Node: LargeInteger-built-ins329362 ! Node: LargeInteger-coercion330426 ! Node: LargeInteger-disabled330847 ! Node: LargeInteger-primitive operations331207 ! Node: LargeInteger-testing331672 ! Node: LargeNegativeInteger332297 ! Node: LargeNegativeInteger-converting332989 ! Node: LargeNegativeInteger-numeric testing333362 ! Node: LargeNegativeInteger-reverting to LargePositiveInteger333882 ! Node: LargePositiveInteger334433 ! Node: LargePositiveInteger-arithmetic335300 ! Node: LargePositiveInteger-converting335761 ! Node: LargePositiveInteger-helper byte-level methods336314 ! Node: LargePositiveInteger-numeric testing338036 ! Node: LargePositiveInteger-primitive operations338557 ! Node: LargeWordArray339236 ! Node: LargeWordArray-overridden339656 ! Node: LargeZeroInteger339940 ! Node: LargeZeroInteger-accessing340758 ! Node: LargeZeroInteger-arithmetic341008 ! Node: LargeZeroInteger-numeric testing341923 ! Node: LargeZeroInteger-printing342245 ! Node: Link342547 ! Node: Link class-instance creation343082 ! Node: Link-basic343299 ! Node: Link-iteration343537 ! Node: LinkedList343983 ! Node: LinkedList-accessing344581 ! Node: LinkedList-adding344882 ! Node: LinkedList-enumerating345600 ! Node: LinkedList-testing345926 ! Node: LookupKey346267 ! Node: LookupKey class-basic346811 ! Node: LookupKey-accessing347038 ! Node: LookupKey-printing347288 ! Node: LookupKey-storing347520 ! Node: LookupKey-testing347761 ! Node: LookupTable348180 ! Node: LookupTable class-instance creation348908 ! Node: LookupTable-accessing349153 ! Node: LookupTable-copying349941 ! Node: LookupTable-enumerating350244 ! Node: LookupTable-rehashing350622 ! Node: LookupTable-removing350834 ! Node: LookupTable-storing351319 ! Node: Magnitude351541 ! Node: Magnitude-basic351985 ! Node: Magnitude-misc methods352500 ! Node: MappedCollection352899 ! Node: MappedCollection class-instance creation354261 ! Node: MappedCollection-basic354697 ! Node: Memory355571 ! Node: Memory class-accessing356119 ! Node: Message359999 ! Node: Message class-creating instances360637 ! Node: Message-accessing360912 ! Node: Message-basic361337 ! Node: MessageNotUnderstood361647 ! Node: MessageNotUnderstood-accessing362129 ! Node: MessageNotUnderstood-description362451 ! Node: Metaclass362715 ! Node: Metaclass class-instance creation363702 ! Node: Metaclass-accessing363970 ! Node: Metaclass-basic364399 ! Node: Metaclass-delegation365494 ! Node: Metaclass-filing366877 ! Node: Metaclass-printing367151 ! Node: Metaclass-testing functionality367689 ! Node: MethodContext367933 ! Node: MethodContext-accessing368423 ! Node: MethodContext-printing369680 ! Node: MethodDictionary369909 ! Node: MethodDictionary-adding370428 ! Node: MethodDictionary-rehashing370660 ! Node: MethodDictionary-removing370897 ! Node: MethodInfo371292 ! Node: MethodInfo-accessing371766 ! Node: MethodInfo-equality372694 ! Node: Namespace372970 ! Node: Namespace class-accessing373600 ! Node: Namespace class-disabling instance creation373986 ! Node: Namespace class-initialization374365 ! Node: Namespace-accessing374785 ! Node: Namespace-namespace hierarchy375057 ! Node: Namespace-overrides for superspaces375538 ! Node: Namespace-printing377318 ! Node: Namespace-testing377831 ! Node: NetClients.URIResolver377995 ! Node: NetClients.URIResolver class-api378438 ! Node: NetClients.URIResolver class-instance creation379571 ! Node: NetClients.URL379931 ! Node: NetClients.URL class-encoding URLs380639 ! Node: NetClients.URL class-instance creation381127 ! Node: NetClients.URL-accessing381935 ! Node: NetClients.URL-comparing384643 ! Node: NetClients.URL-copying385152 ! Node: NetClients.URL-initialize-release385672 ! Node: NetClients.URL-printing385954 ! Node: NetClients.URL-testing386231 ! Node: NetClients.URL-utilities386990 ! Node: Notification387283 ! Node: Notification-exception description387724 ! Node: NullProxy388169 ! Node: NullProxy class-instance creation388769 ! Node: NullProxy-accessing389023 ! Node: NullValueHolder389258 ! Node: NullValueHolder class-creating instances389835 ! Node: NullValueHolder-accessing390100 ! Node: Number390431 ! Node: Number class-converting391315 ! Node: Number class-testing391758 ! Node: Number-arithmetic392009 ! Node: Number-comparing393325 ! Node: Number-converting393731 ! Node: Number-copying394982 ! Node: Number-error raising395280 ! Node: Number-misc math395634 ! Node: Number-point creation397180 ! Node: Number-retrying397458 ! Node: Number-shortcuts and iterators399244 ! Node: Number-testing400092 ! Node: Number-truncation and round off401509 ! Node: Object402305 ! Node: Object class-initialization403255 ! Node: Object-built ins403930 ! Node: Object-change and update411776 ! Node: Object-class type methods412966 ! Node: Object-conversion413768 ! Node: Object-copying413998 ! Node: Object-debugging414645 ! Node: Object-dependents access415088 ! Node: Object-error raising415775 ! Node: Object-exception handling416451 ! Node: Object-finalization416955 ! Node: Object-printing417934 ! Node: Object-relational operators419660 ! Node: Object-saving and loading420005 ! Node: Object-storing420989 ! Node: Object-syntax shortcuts421577 ! Node: Object-testing functionality421885 ! Node: ObjectDumper423406 ! Node: ObjectDumper class-establishing proxy classes424599 ! Node: ObjectDumper class-instance creation425431 ! Node: ObjectDumper class-shortcuts425827 ! Node: ObjectDumper class-testing426204 ! Node: ObjectDumper-accessing426631 ! Node: ObjectDumper-loading/dumping objects427122 ! Node: ObjectDumper-stream interface427545 ! Node: ObjectMemory427910 ! Node: ObjectMemory class-accessing429026 ! Node: ObjectMemory class-builtins429276 ! Node: ObjectMemory class-dependancy432602 ! Node: ObjectMemory class-initialization432893 ! Node: ObjectMemory class-saving the image433170 ! Node: ObjectMemory-accessing433481 ! Node: ObjectMemory-builtins438418 ! Node: ObjectMemory-derived information438686 ! Node: OrderedCollection439656 ! Node: OrderedCollection class-instance creation440366 ! Node: OrderedCollection-accessing440707 ! Node: OrderedCollection-adding441157 ! Node: OrderedCollection-removing443204 ! Node: Package443841 ! Node: Package-accessing444246 ! Node: PackageLoader445837 ! Node: PackageLoader class-accessing446395 ! Node: PackageLoader class-loading448178 ! Node: PackageLoader class-testing449162 ! Node: PluggableAdaptor449436 ! Node: PluggableAdaptor class-creating instances450064 ! Node: PluggableAdaptor-accessing451142 ! Node: PluggableProxy451426 ! Node: PluggableProxy class-accessing452052 ! Node: PluggableProxy-saving and restoring452485 ! Node: Point452903 ! Node: Point class-instance creation453630 ! Node: Point-accessing453926 ! Node: Point-arithmetic454343 ! Node: Point-comparing455045 ! Node: Point-converting455841 ! Node: Point-point functions456343 ! Node: Point-printing457274 ! Node: Point-storing457491 ! Node: Point-truncation and round off457722 ! Node: PositionableStream458117 ! Node: PositionableStream class-instance creation459024 ! Node: PositionableStream-accessing-reading459532 ! Node: PositionableStream-class type methods460686 ! Node: PositionableStream-positioning461174 ! Node: PositionableStream-testing462311 ! Node: PositionableStream-truncating462776 ! Node: Process463059 ! Node: Process-accessing463627 ! Node: Process-basic465124 ! Node: Process-builtins466654 ! Node: Process-printing467447 ! Node: ProcessorScheduler467644 ! Node: ProcessorScheduler class-instance creation468311 ! Node: ProcessorScheduler-basic468608 ! Node: ProcessorScheduler-built ins470173 ! Node: ProcessorScheduler-idle tasks470858 ! Node: ProcessorScheduler-printing471199 ! Node: ProcessorScheduler-priorities471501 ! Node: ProcessorScheduler-storing473150 ! Node: ProcessorScheduler-timed invocation473474 ! Node: Promise474028 ! Node: Promise class-creating instances474600 ! Node: Promise-accessing474846 ! Node: Promise-initializing475169 ! Node: Promise-printing475396 ! Node: Random475586 ! Node: Random class-instance creation476035 ! Node: Random class-shortcuts476400 ! Node: Random-basic476716 ! Node: Random-testing477129 ! Node: ReadStream477438 ! Node: ReadStream class-instance creation477878 ! Node: ReadStream-accessing-reading478152 ! Node: ReadWriteStream478445 ! Node: ReadWriteStream class-instance creation478931 ! Node: ReadWriteStream-positioning479385 ! Node: Rectangle479749 ! Node: Rectangle class-instance creation480538 ! Node: Rectangle-accessing481079 ! Node: Rectangle-copying483476 ! Node: Rectangle-printing483693 ! Node: Rectangle-rectangle functions484018 ! Node: Rectangle-testing485858 ! Node: Rectangle-transforming486671 ! Node: Rectangle-truncation and round off487294 ! Node: RecursionLock487582 ! Node: RecursionLock class-instance creation487981 ! Node: RecursionLock-accessing488214 ! Node: RecursionLock-mutual exclusion488810 ! Node: RecursionLock-printing489168 ! Node: RootNamespace489417 ! Node: RootNamespace class-instance creation489966 ! Node: RootNamespace-namespace hierarchy490298 ! Node: RootNamespace-overrides for superspaces490728 ! Node: RootNamespace-printing491342 ! Node: RunArray491849 ! Node: RunArray class-instance creation492810 ! Node: RunArray-accessing493081 ! Node: RunArray-adding493414 ! Node: RunArray-basic494487 ! Node: RunArray-copying494791 ! Node: RunArray-enumerating495146 ! Node: RunArray-removing495605 ! Node: RunArray-searching496069 ! Node: RunArray-testing496482 ! Node: ScaledDecimal496724 ! Node: ScaledDecimal class-constants497528 ! Node: ScaledDecimal class-instance creation497777 ! Node: ScaledDecimal-arithmetic498213 ! Node: ScaledDecimal-coercion498931 ! Node: ScaledDecimal-comparing499835 ! Node: ScaledDecimal-constants500470 ! Node: ScaledDecimal-printing500771 ! Node: ScaledDecimal-storing501230 ! Node: Semaphore501467 ! Node: Semaphore class-instance creation502130 ! Node: Semaphore-accessing502502 ! Node: Semaphore-builtins502985 ! Node: Semaphore-mutual exclusion504324 ! Node: Semaphore-printing504657 ! Node: SequenceableCollection504886 ! Node: SequenceableCollection class-instance creation505588 ! Node: SequenceableCollection-basic506002 ! Node: SequenceableCollection-copying SequenceableCollections509423 ! Node: SequenceableCollection-enumerating511692 ! Node: SequenceableCollection-replacing items515104 ! Node: SequenceableCollection-testing516050 ! Node: Set516483 ! Node: Set-arithmetic516903 ! Node: Set-awful ST-80 compatibility hacks517231 ! Node: Set-comparing517591 ! Node: SharedQueue517985 ! Node: SharedQueue class-instance creation518507 ! Node: SharedQueue-accessing518875 ! Node: Signal519376 ! Node: Signal-accessing520001 ! Node: Signal-exception handling520850 ! Node: SingletonProxy523402 ! Node: SingletonProxy class-accessing524006 ! Node: SingletonProxy class-instance creation524370 ! Node: SingletonProxy-saving and restoring524810 ! Node: SmallInteger525236 ! Node: SmallInteger class-getting limits525923 ! Node: SmallInteger class-testing526408 ! Node: SmallInteger-bit arithmetic526703 ! Node: SmallInteger-built ins526980 ! Node: SmallInteger-builtins529284 ! Node: SmallInteger-coercion methods530034 ! Node: SmallInteger-testing functionality530389 ! Node: SortedCollection530621 ! Node: SortedCollection class-hacking531753 ! Node: SortedCollection class-instance creation532021 ! Node: SortedCollection-basic532533 ! Node: SortedCollection-copying533077 ! Node: SortedCollection-disabled533383 ! Node: SortedCollection-enumerating534236 ! Node: SortedCollection-saving and loading534565 ! Node: SortedCollection-searching534910 ! Node: Stream535496 ! Node: Stream-accessing-reading536438 ! Node: Stream-accessing-writing538204 ! Node: Stream-basic538758 ! Node: Stream-character writing538940 ! Node: Stream-enumerating539460 ! Node: Stream-filing out539694 ! Node: Stream-positioning540039 ! Node: Stream-printing540746 ! Node: Stream-providing consistent protocols541505 ! Node: Stream-storing541863 ! Node: Stream-testing542234 ! Node: String542517 ! Node: String class-basic543099 ! Node: String class-instance creation543415 ! Node: String-built ins543745 ! Node: String-converting545736 ! Node: String-storing546080 ! Node: String-testing functionality546316 ! Node: String-useful functionality546539 ! Node: Symbol546824 ! Node: Symbol class-built ins547650 ! Node: Symbol class-instance creation547864 ! Node: Symbol class-symbol table549002 ! Node: Symbol-basic550410 ! Node: Symbol-built ins551162 ! Node: Symbol-converting551470 ! Node: Symbol-misc551809 ! Node: Symbol-storing551972 ! Node: Symbol-testing552634 ! Node: Symbol-testing functionality552901 ! Node: SymLink553119 ! Node: SymLink class-instance creation553668 ! Node: SymLink-accessing553987 ! Node: SymLink-iteration554321 ! Node: SymLink-printing554535 ! Node: SystemDictionary554734 ! Node: SystemDictionary-basic555541 ! Node: SystemDictionary-builtins555821 ! Node: SystemDictionary-C functions557150 ! Node: SystemDictionary-miscellaneous557655 ! Node: SystemDictionary-printing557999 ! Node: SystemDictionary-special accessing558417 ! Node: SystemExceptions.AlreadyDefined558980 ! Node: SystemExceptions.AlreadyDefined-accessing559494 ! Node: SystemExceptions.ArgumentOutOfRange559745 ! Node: SystemExceptions.ArgumentOutOfRange class-signaling560333 ! Node: SystemExceptions.ArgumentOutOfRange-accessing560738 ! Node: SystemExceptions.BadReturn561315 ! Node: SystemExceptions.BadReturn-accessing561793 ! Node: SystemExceptions.CInterfaceError562036 ! Node: SystemExceptions.CInterfaceError-accessing562535 ! Node: SystemExceptions.EmptyCollection562802 ! Node: SystemExceptions.EmptyCollection-accessing563287 ! Node: SystemExceptions.EndOfStream563554 ! Node: SystemExceptions.EndOfStream class-signaling564043 ! Node: SystemExceptions.EndOfStream-accessing564382 ! Node: SystemExceptions.FileError564801 ! Node: SystemExceptions.FileError-accessing565278 ! Node: SystemExceptions.IndexOutOfRange565521 ! Node: SystemExceptions.IndexOutOfRange class-signaling566105 ! Node: SystemExceptions.IndexOutOfRange-accessing566470 ! Node: SystemExceptions.InvalidArgument566983 ! Node: SystemExceptions.InvalidArgument-accessing567478 ! Node: SystemExceptions.InvalidProcessState567734 ! Node: SystemExceptions.InvalidProcessState-accessing568263 ! Node: SystemExceptions.InvalidSize568546 ! Node: SystemExceptions.InvalidSize-accessing569011 ! Node: SystemExceptions.InvalidValue569262 ! Node: SystemExceptions.InvalidValue class-signaling569770 ! Node: SystemExceptions.InvalidValue-accessing570218 ! Node: SystemExceptions.MustBeBoolean570708 ! Node: SystemExceptions.MutationError571128 ! Node: SystemExceptions.MutationError-accessing571587 ! Node: SystemExceptions.NoRunnableProcess571846 ! Node: SystemExceptions.NoRunnableProcess-accessing572331 ! Node: SystemExceptions.NotFound572606 ! Node: SystemExceptions.NotFound class-accessing573120 ! Node: SystemExceptions.NotFound-accessing573494 ! Node: SystemExceptions.NotImplemented573783 ! Node: SystemExceptions.NotImplemented-accessing574239 ! Node: SystemExceptions.NotIndexable574502 ! Node: SystemExceptions.NotIndexable-accessing574963 ! Node: SystemExceptions.NotYetImplemented575218 ! Node: SystemExceptions.NotYetImplemented-accessing575728 ! Node: SystemExceptions.PrimitiveFailed576003 ! Node: SystemExceptions.PrimitiveFailed-accessing576486 ! Node: SystemExceptions.ProcessBeingTerminated576753 ! Node: SystemExceptions.ProcessBeingTerminated-accessing577187 ! Node: SystemExceptions.ProcessTerminated577482 ! Node: SystemExceptions.ProcessTerminated-accessing578005 ! Node: SystemExceptions.ReadOnlyObject578280 ! Node: SystemExceptions.ReadOnlyObject-accessing578759 ! Node: SystemExceptions.ShouldNotImplement579022 ! Node: SystemExceptions.ShouldNotImplement-accessing579550 ! Node: SystemExceptions.SubclassResponsibility579829 ! Node: SystemExceptions.SubclassResponsibility-accessing580397 ! Node: SystemExceptions.UserInterrupt580692 ! Node: SystemExceptions.UserInterrupt-accessing581142 ! Node: SystemExceptions.VMError581401 ! Node: SystemExceptions.VMError-accessing581825 ! Node: SystemExceptions.WrongArgumentCount582060 ! Node: SystemExceptions.WrongArgumentCount-accessing582614 ! Node: SystemExceptions.WrongClass582893 ! Node: SystemExceptions.WrongClass class-signaling583509 ! Node: SystemExceptions.WrongClass-accessing584164 ! Node: SystemExceptions.WrongMessageSent584816 ! Node: SystemExceptions.WrongMessageSent class-signaling585461 ! Node: SystemExceptions.WrongMessageSent-accessing585877 ! Node: TextCollector586465 ! Node: TextCollector class-accessing587163 ! Node: TextCollector-accessing587659 ! Node: TextCollector-printing588457 ! Node: TextCollector-set up588788 ! Node: TextCollector-storing589350 ! Node: Time589677 ! Node: Time class-basic (UTC)590456 ! Node: Time class-builtins590901 ! Node: Time class-clocks591925 ! Node: Time class-initialization592479 ! Node: Time class-instance creation592822 ! Node: Time-accessing (ANSI for DateAndTimes)593698 ! Node: Time-accessing (non ANSI & for Durations)594213 ! Node: Time-arithmetic594662 ! Node: Time-comparing595087 ! Node: TokenStream595371 ! Node: TokenStream class-instance creation596179 ! Node: TokenStream-basic596538 ! Node: TokenStream-write methods596859 ! Node: TrappableEvent597101 ! Node: TrappableEvent-enumerating597677 ! Node: TrappableEvent-instance creation598224 ! Node: True598553 ! Node: True-basic598931 ! Node: True-C hacks599880 ! Node: True-printing600039 ! Node: UndefinedObject600220 ! Node: UndefinedObject-basic600936 ! Node: UndefinedObject-class creation601204 ! Node: UndefinedObject-class creation - alternative603384 ! Node: UndefinedObject-CObject interoperability605671 ! Node: UndefinedObject-dependents access606004 ! Node: UndefinedObject-printing606352 ! Node: UndefinedObject-storing606631 ! Node: UndefinedObject-testing606906 ! Node: ValueAdaptor607741 ! Node: ValueAdaptor class-creating instances608225 ! Node: ValueAdaptor-accessing608512 ! Node: ValueAdaptor-printing608918 ! Node: ValueHolder609130 ! Node: ValueHolder class-creating instances609745 ! Node: ValueHolder-accessing610127 ! Node: ValueHolder-initializing610419 ! Node: VariableBinding610641 ! Node: VariableBinding-printing611273 ! Node: VariableBinding-saving and loading611587 ! Node: VariableBinding-storing612043 ! Node: VariableBinding-testing612330 ! Node: VersionableObjectProxy612587 ! Node: VersionableObjectProxy class-saving and restoring613483 ! Node: VersionableObjectProxy-saving and restoring614506 ! Node: VFS.ArchiveFileHandler614839 ! Node: VFS.ArchiveFileHandler class-registering615756 ! Node: VFS.ArchiveFileHandler-ArchiveMemberHandler protocol616210 ! Node: VFS.ArchiveFileHandler-directory operations617586 ! Node: VFS.ArchiveFileHandler-file operations618427 ! Node: VFS.ArchiveMemberHandler618713 ! Node: VFS.ArchiveMemberHandler-accessing619440 ! Node: VFS.ArchiveMemberHandler-directory operations620599 ! Node: VFS.ArchiveMemberHandler-file operations621219 ! Node: VFS.ArchiveMemberHandler-finalization621884 ! Node: VFS.ArchiveMemberHandler-initializing622376 ! Node: VFS.ArchiveMemberHandler-testing622909 ! Node: VFS.DecodedFileHandler623794 ! Node: VFS.DecodedFileHandler class-registering624335 ! Node: VFS.DecodedFileHandler-files625481 ! Node: VFS.ExternalArchiveFileHandler626175 ! Node: VFS.ExternalArchiveFileHandler class-registering627006 ! Node: VFS.ExternalArchiveFileHandler-ArchiveMemberHandler protocol627985 ! Node: VFS.ExternalArchiveFileHandler-members629305 ! Node: VFS.ExternalArchiveFileHandler-releasing629815 ! Node: VFS.RealFileHandler630164 ! Node: VFS.RealFileHandler class-C functions630907 ! Node: VFS.RealFileHandler class-initialization631188 ! Node: VFS.RealFileHandler-accessing631514 ! Node: VFS.RealFileHandler-directory operations632703 ! Node: VFS.RealFileHandler-file operations633198 ! Node: VFS.RealFileHandler-testing633739 ! Node: VFS.VFSHandler634482 ! Node: VFS.VFSHandler class-initializing635255 ! Node: VFS.VFSHandler class-instance creation636152 ! Node: VFS.VFSHandler-accessing636494 ! Node: VFS.VFSHandler-C functions637835 ! Node: VFS.VFSHandler-directory operations638970 ! Node: VFS.VFSHandler-file operations639558 ! Node: VFS.VFSHandler-testing640331 ! Node: Warning641171 ! Node: Warning-exception description641490 ! Node: WeakArray641693 ! Node: WeakArray class-instance creation642186 ! Node: WeakArray-accessing642509 ! Node: WeakArray-conversion644156 ! Node: WeakArray-loading644790 ! Node: WeakIdentitySet645054 ! Node: WeakKeyDictionary645516 ! Node: WeakKeyDictionary-accessing646065 ! Node: WeakKeyIdentityDictionary646568 ! Node: WeakSet647096 ! Node: WeakSet-accessing647552 ! Node: WeakValueIdentityDictionary648049 ! Node: WeakValueLookupTable648595 ! Node: WeakValueLookupTable-hacks649203 ! Node: WeakValueLookupTable-rehashing649759 ! Node: WordArray649981 ! Node: WriteStream650287 ! Node: WriteStream class-instance creation650813 ! Node: WriteStream-accessing651482 ! Node: WriteStream-accessing-writing651735 ! Node: WriteStream-positioning652325 ! Node: ZeroDivide652534 ! Node: ZeroDivide class-instance creation653027 ! Node: ZeroDivide-accessing653406 ! Node: ZeroDivide-description653658 ! Node: Class index653872 ! Node: Method index665709 ! Node: Cross-reference883801  End Tag Table diff -rNC3 smalltalk-2.1.1/doc/gst-base.info-1 smalltalk-2.1.2/doc/gst-base.info-1 *** smalltalk-2.1.1/doc/gst-base.info-1 Thu Apr 17 11:44:15 2003 --- smalltalk-2.1.2/doc/gst-base.info-1 Fri May 9 10:56:12 2003 *************** *** 6,13 **** * Base classes: (gst-base). The GNU Smalltalk base classes. END-INFO-DIR-ENTRY ! This file documents GNU Smalltalk Version 2.1.1. It was last updated ! on 25 June 2002. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, Inc. --- 6,13 ---- * Base classes: (gst-base). The GNU Smalltalk base classes. END-INFO-DIR-ENTRY ! This file documents GNU Smalltalk Version 2.1.2. It was last updated ! on 9 May 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, Inc. *************** *** 31,38 **** This document describes the class libraries that are distributed together with the GNU Smalltalk programming language. ! This file documents GNU Smalltalk Version 2.1.1. It was last updated ! on 25 June 2002. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, Inc. --- 31,38 ---- This document describes the class libraries that are distributed together with the GNU Smalltalk programming language. ! This file documents GNU Smalltalk Version 2.1.2. It was last updated ! on 9 May 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, Inc. diff -rNC3 smalltalk-2.1.1/doc/gst-base.info-11 smalltalk-2.1.2/doc/gst-base.info-11 *** smalltalk-2.1.1/doc/gst-base.info-11 Thu Apr 17 11:44:15 2003 --- smalltalk-2.1.2/doc/gst-base.info-11 Fri May 9 10:56:12 2003 *************** *** 1474,1479 **** --- 1474,1483 ---- atEnd Answer whether the stream has got to an end + isExternalStream + Answer whether the receiver streams on a file or socket. By + default, answer false. +  File: gst-base.info, Node: String, Next: Symbol, Prev: Stream, Up: Base classes *************** *** 1570,1588 **** size Answer the size of the receiver - -  - File: gst-base.info, Node: String-converting, Next: String-storing, Prev: String-built ins, Up: String - - String: converting - ------------------ - - asByteArray - Return the receiver, converted to a ByteArray of ASCII values - - asString - But I already am a String! Really! - - asSymbol - Returns the symbol corresponding to the receiver --- 1574,1577 ---- diff -rNC3 smalltalk-2.1.1/doc/gst-base.info-12 smalltalk-2.1.2/doc/gst-base.info-12 *** smalltalk-2.1.1/doc/gst-base.info-12 Thu Apr 17 11:44:15 2003 --- smalltalk-2.1.2/doc/gst-base.info-12 Fri May 9 10:56:12 2003 *************** *** 7,12 **** --- 7,27 ---- END-INFO-DIR-ENTRY  + File: gst-base.info, Node: String-converting, Next: String-storing, Prev: String-built ins, Up: String + + String: converting + ------------------ + + asByteArray + Return the receiver, converted to a ByteArray of ASCII values + + asString + But I already am a String! Really! + + asSymbol + Returns the symbol corresponding to the receiver + +  File: gst-base.info, Node: String-storing, Next: String-testing functionality, Prev: String-converting, Up: String String: storing diff -rNC3 smalltalk-2.1.1/doc/gst-base.info-15 smalltalk-2.1.2/doc/gst-base.info-15 *** smalltalk-2.1.1/doc/gst-base.info-15 Thu Apr 17 11:44:15 2003 --- smalltalk-2.1.2/doc/gst-base.info-15 Fri May 9 10:56:12 2003 *************** *** 1557,1563 **** * isExecutable <3>: VFS.ArchiveMemberHandler-testing. * isExecutable: File-testing. * isExecutable_: File class-testing. ! * isExternalStream <1>: PositionableStream-class type methods. * isExternalStream: FileDescriptor-class type methods. * isFile: File-testing. * isFileScheme: NetClients.URL-testing. --- 1557,1564 ---- * isExecutable <3>: VFS.ArchiveMemberHandler-testing. * isExecutable: File-testing. * isExecutable_: File class-testing. ! * isExternalStream <1>: Stream-testing. ! * isExternalStream <2>: PositionableStream-class type methods. * isExternalStream: FileDescriptor-class type methods. * isFile: File-testing. * isFileScheme: NetClients.URL-testing. *************** *** 2842,2849 **** * subspacesDo_: AbstractNamespace-namespace hierarchy. * substrings: CharacterArray-string processing. * subStrings: CharacterArray-string processing. - * substrings_: CharacterArray-string processing. * subStrings_: CharacterArray-string processing. * subtractDate_: Date-basic. * subtractDays_: Date-basic. * subtractTime_: Time-arithmetic. --- 2843,2850 ---- * subspacesDo_: AbstractNamespace-namespace hierarchy. * substrings: CharacterArray-string processing. * subStrings: CharacterArray-string processing. * subStrings_: CharacterArray-string processing. + * substrings_: CharacterArray-string processing. * subtractDate_: Date-basic. * subtractDays_: Date-basic. * subtractTime_: Time-arithmetic. diff -rNC3 smalltalk-2.1.1/doc/gst-base.info-3 smalltalk-2.1.2/doc/gst-base.info-3 *** smalltalk-2.1.1/doc/gst-base.info-3 Thu Apr 17 11:44:15 2003 --- smalltalk-2.1.2/doc/gst-base.info-3 Fri May 9 10:56:12 2003 *************** *** 739,755 **** backwards compatibility; the ANSI standard mandates `subStrings', with an uppercase s. - subStrings: aCharacter - Answer an OrderedCollection of substrings of the receiver. A new - substring start at the start of the receiver, or after every - sequence of characters matching aCharacter - substrings: aCharacter Answer an OrderedCollection of substrings of the receiver. A new substring start at the start of the receiver, or after every sequence of characters matching aCharacter. This message is preserved for backwards compatibility; the ANSI standard mandates `subStrings:', with an uppercase s.  File: gst-base.info, Node: CharacterArray-testing functionality, Prev: CharacterArray-string processing, Up: CharacterArray --- 739,755 ---- backwards compatibility; the ANSI standard mandates `subStrings', with an uppercase s. substrings: aCharacter Answer an OrderedCollection of substrings of the receiver. A new substring start at the start of the receiver, or after every sequence of characters matching aCharacter. This message is preserved for backwards compatibility; the ANSI standard mandates `subStrings:', with an uppercase s. + + subStrings: aCharacter + Answer an OrderedCollection of substrings of the receiver. A new + substring start at the start of the receiver, or after every + sequence of characters matching aCharacter  File: gst-base.info, Node: CharacterArray-testing functionality, Prev: CharacterArray-string processing, Up: CharacterArray diff -rNC3 smalltalk-2.1.1/doc/gst-base.info-5 smalltalk-2.1.2/doc/gst-base.info-5 *** smalltalk-2.1.1/doc/gst-base.info-5 Thu Apr 17 11:44:15 2003 --- smalltalk-2.1.2/doc/gst-base.info-5 Fri May 9 10:56:12 2003 *************** *** 1632,1638 **** -------------------------------- extensionFor: aString ! Answer the extension of a file named `aString' fullNameFor: aString Answer the full path to a file called `aString', resolving the `.' --- 1632,1639 ---- -------------------------------- extensionFor: aString ! Answer the extension of a file named `aString'. Note: the ! extension includes an initial dot. fullNameFor: aString Answer the full path to a file called `aString', resolving the `.' *************** *** 1646,1652 **** stripExtensionFrom: aString Remove the extension from the name of a file called `aString', and ! answer the result stripFileNameFor: aString Determine the path of the name of a file called `aString', and --- 1647,1653 ---- stripExtensionFrom: aString Remove the extension from the name of a file called `aString', and ! answer the result. stripFileNameFor: aString Determine the path of the name of a file called `aString', and diff -rNC3 smalltalk-2.1.1/doc/gst-libs.info smalltalk-2.1.2/doc/gst-libs.info *** smalltalk-2.1.1/doc/gst-libs.info Thu Apr 17 11:44:17 2003 --- smalltalk-2.1.2/doc/gst-libs.info Fri May 9 10:56:14 2003 *************** *** 9,376 ****  Indirect: gst-libs.info-1: 257 ! gst-libs.info-2: 49161 ! gst-libs.info-3: 96786 ! gst-libs.info-4: 144738 ! gst-libs.info-5: 181079 ! gst-libs.info-6: 230284 ! gst-libs.info-7: 280008 ! gst-libs.info-8: 326077 ! gst-libs.info-9: 346117 ! gst-libs.info-10: 428108  Tag Table: (Indirect) Node: Top257 ! Node: BLOX2294 ! Node: BLOX.BArc4836 ! Node: BLOX.BArc-accessing5141 ! Node: BLOX.BBalloon6674 ! Node: BLOX.BBalloon class-accessing7138 ! Node: BLOX.BBalloon-accessing7553 ! Node: BLOX.BBalloon-initializing7936 ! Node: BLOX.BBoundingBox8173 ! Node: BLOX.BBoundingBox-accessing8636 ! Node: BLOX.BButton11364 ! Node: BLOX.BButton class-instance creation11831 ! Node: BLOX.BButton-accessing12166 ! Node: BLOX.BButtonLike16338 ! Node: BLOX.BButtonLike-accessing16677 ! Node: BLOX.BCanvas17465 ! Node: BLOX.BCanvas-accessing18223 ! Node: BLOX.BCanvas-geometry management19066 ! Node: BLOX.BCanvas-widget protocol20772 ! Node: BLOX.BCanvasObject21984 ! Node: BLOX.BCanvasObject class-instance creation22518 ! Node: BLOX.BCanvasObject-accessing22922 ! Node: BLOX.BCanvasObject-widget protocol24859 ! Node: BLOX.BCheckMenuItem26131 ! Node: BLOX.BCheckMenuItem class-instance creation26570 ! Node: BLOX.BCheckMenuItem-accessing26880 ! Node: BLOX.BColorButton27329 ! Node: BLOX.BColorButton-accessing27750 ! Node: BLOX.BContainer28204 ! Node: BLOX.BContainer-accessing28641 ! Node: BLOX.BDialog29293 ! Node: BLOX.BDialog class-instance creation29906 ! Node: BLOX.BDialog class-prompters30808 ! Node: BLOX.BDialog-accessing34330 ! Node: BLOX.BDialog-widget protocol35523 ! Node: BLOX.BDropDown36410 ! Node: BLOX.BDropDown-accessing37332 ! Node: BLOX.BDropDown-callbacks42581 ! Node: BLOX.BDropDown-flexibility43192 ! Node: BLOX.BDropDown-list box accessing44672 ! Node: BLOX.BDropDown-widget protocol47707 ! Node: BLOX.BDropDownEdit48635 ! Node: BLOX.BDropDownEdit-accessing49161 ! Node: BLOX.BDropDownEdit-accessing-overrides51310 ! Node: BLOX.BDropDownEdit-text accessing51612 ! Node: BLOX.BDropDownList53007 ! Node: BLOX.BDropDownList-accessing53546 ! Node: BLOX.BDropDownList-callbacks56218 ! Node: BLOX.BDropDownList-list box accessing56903 ! Node: BLOX.BEdit57328 ! Node: BLOX.BEdit class-instance creation57735 ! Node: BLOX.BEdit-accessing58058 ! Node: BLOX.BEdit-widget protocol62406 ! Node: BLOX.BEmbeddedImage64369 ! Node: BLOX.BEmbeddedImage-accessing64710 ! Node: BLOX.BEmbeddedText65644 ! Node: BLOX.BEmbeddedText-accessing65996 ! Node: BLOX.BEventSet68926 ! Node: BLOX.BEventSet class-initializing69614 ! Node: BLOX.BEventSet-accessing70067 ! Node: BLOX.BEventSet-initializing70341 ! Node: BLOX.BEventTarget70709 ! Node: BLOX.BEventTarget-intercepting events71070 ! Node: BLOX.BExtended77151 ! Node: BLOX.BExtended-accessing77959 ! Node: BLOX.BExtended-customization78208 ! Node: BLOX.BForm79207 ! Node: BLOX.BForm-accessing79570 ! Node: BLOX.BImage81002 ! Node: BLOX.BImage class-arrows81577 ! Node: BLOX.BImage class-GNU82064 ! Node: BLOX.BImage class-icons82303 ! Node: BLOX.BImage class-instance creation82801 ! Node: BLOX.BImage class-small icons83544 ! Node: BLOX.BImage-accessing83911 ! Node: BLOX.BImage-image management87024 ! Node: BLOX.BImage-widget protocol89535 ! Node: BLOX.BLabel89829 ! Node: BLOX.BLabel class-initialization90211 ! Node: BLOX.BLabel class-instance creation90476 ! Node: BLOX.BLabel-accessing90846 ! Node: BLOX.BLine95530 ! Node: BLOX.BLine-accessing95866 ! Node: BLOX.BList96421 ! Node: BLOX.BList-accessing96786 ! Node: BLOX.BList-widget protocol108667 ! Node: BLOX.Blox110035 ! Node: BLOX.Blox class-event dispatching111113 ! Node: BLOX.Blox class-instance creation112389 ! Node: BLOX.Blox class-utility112824 ! Node: BLOX.Blox-accessing115946 ! Node: BLOX.Blox-basic117285 ! Node: BLOX.Blox-creating children117867 ! Node: BLOX.Blox-customization118873 ! Node: BLOX.Blox-widget protocol119655 ! Node: BLOX.BMenu121901 ! Node: BLOX.BMenu class-instance creation122289 ! Node: BLOX.BMenu-accessing122691 ! Node: BLOX.BMenu-callback registration123525 ! Node: BLOX.BMenuBar124608 ! Node: BLOX.BMenuBar-accessing124933 ! Node: BLOX.BMenuItem125153 ! Node: BLOX.BMenuItem class-instance creation125633 ! Node: BLOX.BMenuItem-accessing126022 ! Node: BLOX.BMenuObject126835 ! Node: BLOX.BMenuObject-accessing127224 ! Node: BLOX.BMenuObject-callback129548 ! Node: BLOX.BOval130489 ! Node: BLOX.BPolyline130803 ! Node: BLOX.BPolyline-accessing131132 ! Node: BLOX.BPopupMenu133454 ! Node: BLOX.BPopupMenu-widget protocol133861 ! Node: BLOX.BPopupWindow134063 ! Node: BLOX.BPopupWindow-geometry management134656 ! Node: BLOX.BPrimitive136709 ! Node: BLOX.BPrimitive-accessing137090 ! Node: BLOX.BProgress137306 ! Node: BLOX.BProgress-accessing137628 ! Node: BLOX.BRadioButton138859 ! Node: BLOX.BRadioButton-accessing139198 ! Node: BLOX.BRadioGroup140071 ! Node: BLOX.BRadioGroup-accessing140694 ! Node: BLOX.BRadioGroup-widget protocol141154 ! Node: BLOX.BRectangle141469 ! Node: BLOX.BRectangle-accessing141807 ! Node: BLOX.BScrolledCanvas142280 ! Node: BLOX.BSpline142699 ! Node: BLOX.BSpline-accessing143026 ! Node: BLOX.BText143442 ! Node: BLOX.BText class-accessing144057 ! Node: BLOX.BText class-instance creation144385 ! Node: BLOX.BText-accessing144738 ! Node: BLOX.BText-attributes150570 ! Node: BLOX.BText-geometry management151826 ! Node: BLOX.BText-images153390 ! Node: BLOX.BText-inserting text155057 ! Node: BLOX.BText-position & lines157058 ! Node: BLOX.BTextAttributes158850 ! Node: BLOX.BTextAttributes class-instance-creation shortcuts159306 ! Node: BLOX.BTextAttributes-colors162150 ! Node: BLOX.BTextAttributes-setting attributes163224 ! Node: BLOX.BTextBindings167363 ! Node: BLOX.BTextBindings class-instance creation167897 ! Node: BLOX.BTextTags168134 ! Node: BLOX.BToggle168493 ! Node: BLOX.BToggle-accessing168872 ! Node: BLOX.BTransientWindow169755 ! Node: BLOX.BTransientWindow class-instance creation170264 ! Node: BLOX.BTransientWindow-widget protocol170868 ! Node: BLOX.BViewport171445 ! Node: BLOX.BViewport-accessing171876 ! Node: BLOX.BViewport-scrollbars172121 ! Node: BLOX.BWidget173066 ! Node: BLOX.BWidget class-popups173625 ! Node: BLOX.BWidget-accessing174865 ! Node: BLOX.BWidget-customization179465 ! Node: BLOX.BWidget-geometry management181079 ! Node: BLOX.BWidget-widget protocol197570 ! Node: BLOX.BWindow199595 ! Node: BLOX.BWindow class-instance creation200038 ! Node: BLOX.BWindow-accessing200460 ! Node: BLOX.BWindow-widget protocol203167 ! Node: BLOX.Gui207862 ! Node: BLOX.Gui-accessing208252 ! Node: TCP208498 ! Node: TCP.AbstractSocket209838 ! Node: TCP.AbstractSocket class-defaults210400 ! Node: TCP.AbstractSocket class-instance creation211273 ! Node: TCP.AbstractSocket class-timed-out operations211855 ! Node: TCP.AbstractSocket-accessing212833 ! Node: TCP.AbstractSocket-printing213965 ! Node: TCP.AbstractSocket-socket options214260 ! Node: TCP.AbstractSocket-stream protocol215180 ! Node: TCP.AbstractSocketImpl215705 ! Node: TCP.AbstractSocketImpl class-abstract216286 ! Node: TCP.AbstractSocketImpl class-socket creation216731 ! Node: TCP.AbstractSocketImpl-accessing217060 ! Node: TCP.AbstractSocketImpl-asynchronous operations218208 ! Node: TCP.AbstractSocketImpl-socket operations218937 ! Node: TCP.AbstractSocketImpl-socket options220890 ! Node: TCP.Datagram222851 ! Node: TCP.Datagram class-instance creation223161 ! Node: TCP.Datagram-accessing224459 ! Node: TCP.DatagramSocket225479 ! Node: TCP.DatagramSocket class-accessing225977 ! Node: TCP.DatagramSocket class-initialization226613 ! Node: TCP.DatagramSocket class-instance creation226962 ! Node: TCP.DatagramSocket-accessing227964 ! Node: TCP.DatagramSocket-direct operations228854 ! Node: TCP.DatagramSocketImpl229156 ! Node: TCP.DatagramSocketImpl class-parameters229578 ! Node: TCP.DatagramSocketImpl-accessing229866 ! Node: TCP.DatagramSocketImpl-socket operations230284 ! Node: TCP.ICMPSocketImpl231423 ! Node: TCP.ICMPSocketImpl class-implementation231721 ! Node: TCP.IPAddress232004 ! Node: TCP.IPAddress class-constants232457 ! Node: TCP.IPAddress class-initialization232767 ! Node: TCP.IPAddress class-instance creation233467 ! Node: TCP.IPAddress-accessing237329 ! Node: TCP.IPAddress-printing238454 ! Node: TCP.MulticastSocket238668 ! Node: TCP.MulticastSocket-instance creation238970 ! Node: TCP.MulticastSocketImpl239788 ! Node: TCP.MulticastSocketImpl-multicasting240107 ! Node: TCP.OOBSocketImpl240881 ! Node: TCP.OOBSocketImpl class-implementation241234 ! Node: TCP.OOBSocketImpl-implementation241553 ! Node: TCP.RawSocketImpl241947 ! Node: TCP.RawSocketImpl class-parameters242238 ! Node: TCP.ReadBuffer242465 ! Node: TCP.ReadBuffer class-instance creation242927 ! Node: TCP.ReadBuffer-buffer handling243383 ! Node: TCP.ServerSocket244270 ! Node: TCP.ServerSocket class-instance creation244640 ! Node: TCP.ServerSocket-accessing246101 ! Node: TCP.ServerSocket-initializing247011 ! Node: TCP.Socket247391 ! Node: TCP.Socket class-accessing247940 ! Node: TCP.Socket class-instance creation248730 ! Node: TCP.Socket class-tests249559 ! Node: TCP.Socket class-well known ports251105 ! Node: TCP.Socket-accessing253180 ! Node: TCP.Socket-out-of-band data253478 ! Node: TCP.Socket-printing253775 ! Node: TCP.Socket-stream protocol254030 ! Node: TCP.SocketAddress256110 ! Node: TCP.SocketAddress class-abstract256573 ! Node: TCP.SocketAddress class-accessing257002 ! Node: TCP.SocketAddress class-host name lookup258995 ! Node: TCP.SocketAddress class-initialization259786 ! Node: TCP.SocketAddress-accessing260981 ! Node: TCP.SocketImpl261973 ! Node: TCP.SocketImpl class-parameters262344 ! Node: TCP.SocketImpl-abstract262591 ! Node: TCP.SocketImpl-socket operations262909 ! Node: TCP.TCPSocketImpl263336 ! Node: TCP.TCPSocketImpl class-implementation263672 ! Node: TCP.TCPSocketImpl-implementation263991 ! Node: TCP.UDPSocketImpl264305 ! Node: TCP.UDPSocketImpl class-implementation264649 ! Node: TCP.UDPSocketImpl-multicasting264966 ! Node: TCP.WriteBuffer265859 ! Node: TCP.WriteBuffer-buffer handling266263 ! Node: I18N266702 ! Node: I18N.BigEndianFileStream269263 ! Node: I18N.EncodedStream269611 ! Node: I18N.EncodedStream class-initializing270139 ! Node: I18N.EncodedStream class-instance creation271009 ! Node: I18N.Encoder271918 ! Node: I18N.Encoder class-instance creation272470 ! Node: I18N.Encoder-stream operations272893 ! Node: I18N.Encoders.ComposeUCS4BE273948 ! Node: I18N.Encoders.ComposeUCS4BE-stream operation274473 ! Node: I18N.Encoders.ComposeUCS4LE274809 ! Node: I18N.Encoders.ComposeUCS4LE-stream operation275347 ! Node: I18N.Encoders.FromUCS4275686 ! Node: I18N.Encoders.FromUCS4-stream operation276193 ! Node: I18N.Encoders.FromUTF7276465 ! Node: I18N.Encoders.FromUTF7 class-initialization276846 ! Node: I18N.Encoders.FromUTF7-converting277157 ! Node: I18N.Encoders.Iconv277828 ! Node: I18N.Encoders.Iconv-stream operation278502 ! Node: I18N.Encoders.SplitUCS4BE278898 ! Node: I18N.Encoders.SplitUCS4BE-stream operation279438 ! Node: I18N.Encoders.SplitUCS4LE280008 ! Node: I18N.Encoders.SplitUCS4LE-stream operation280552 ! Node: I18N.Encoders.ToUCS4281122 ! Node: I18N.Encoders.ToUCS4-stream operation281654 ! Node: I18N.Encoders.ToUTF7281929 ! Node: I18N.Encoders.ToUTF7 class-initialization282438 ! Node: I18N.Encoders.ToUTF7-conversion282739 ! Node: I18N.FileStreamSegment283174 ! Node: I18N.FileStreamSegment-basic283600 ! Node: I18N.IncompleteSequenceError283905 ! Node: I18N.IncompleteSequenceError-accessing284458 ! Node: I18N.InvalidCharsetError284709 ! Node: I18N.InvalidCharsetError-accessing285142 ! Node: I18N.InvalidSequenceError285377 ! Node: I18N.InvalidSequenceError-accessing285798 ! Node: I18N.LcMessages286037 ! Node: I18N.LcMessages class-accessing286483 ! Node: I18N.LcMessages-accessing286855 ! Node: I18N.LcMessages-opening MO files287579 ! Node: I18N.LcMessagesCatalog288362 ! Node: I18N.LcMessagesDomain288727 ! Node: I18N.LcMessagesDomain class-opening MO files289827 ! Node: I18N.LcMessagesDomain-handling the cache290203 ! Node: I18N.LcMessagesDomain-querying290727 ! Node: I18N.LcMessagesDummyDomain291835 ! Node: I18N.LcMessagesMoFileVersion0292244 ! Node: I18N.LcMessagesMoFileVersion0 class-documentation292927 ! Node: I18N.LcMessagesMoFileVersion0 class-plurals300873 ! Node: I18N.LcMessagesMoFileVersion0-flushing the cache301508 ! Node: I18N.LcMessagesTerritoryDomain301934 ! Node: I18N.LcMessagesTerritoryDomain class-instance creation302398 ! Node: I18N.LcMonetary302763 ! Node: I18N.LcMonetary class-accessing303287 ! Node: I18N.LcMonetary-printing303658 ! Node: I18N.LcMonetaryISO304442 ! Node: I18N.LcMonetaryISO class-accessing304725 ! Node: I18N.LcNumeric304986 ! Node: I18N.LcNumeric class-accessing305451 ! Node: I18N.LcNumeric-printing305817 ! Node: I18N.LcPrintFormats306306 ! Node: I18N.LcPrintFormats-printing306859 ! Node: I18N.LcTime307354 ! Node: I18N.LcTime class-accessing307842 ! Node: I18N.LcTime-printing308193 ! Node: I18N.LcTime-tests310478 ! Node: I18N.Locale310697 ! Node: I18N.Locale class-initialization311352 ! Node: I18N.Locale class-instance creation311725 ! Node: I18N.Locale-subobjects312363 ! Node: I18N.LocaleConventions312989 ! Node: I18N.LocaleConventions class-accessing313425 ! Node: I18N.LocaleConventions-accessing314134 ! Node: I18N.LocaleData314450 ! Node: I18N.LocaleData class-accessing314952 ! Node: I18N.LocaleData class-database316008 ! Node: I18N.LocaleData-accessing316464 ! Node: I18N.LocaleData-initialization317622 ! Node: I18N.RTEAlternativeNode318007 ! Node: I18N.RTEAlternativeNode class-compiling318371 ! Node: I18N.RTEAlternativeNode-computing318776 ! Node: I18N.RTEBinaryNode319337 ! Node: I18N.RTEBinaryNode class-compiling319730 ! Node: I18N.RTEBinaryNode-compiling320083 ! Node: I18N.RTEBinaryNode-computing320379 ! Node: I18N.RTELiteralNode320906 ! Node: I18N.RTELiteralNode class-initializing321258 ! Node: I18N.RTELiteralNode-computing321556 ! Node: I18N.RTENegationNode321971 ! Node: I18N.RTENegationNode class-initializing322330 ! Node: I18N.RTENegationNode-computing322630 ! Node: I18N.RTEParameterNode323072 ! Node: I18N.RTEParameterNode-computing323384 ! Node: I18N.RunTimeExpression323686 ! Node: I18N.RunTimeExpression class-compiling324123 ! Node: I18N.RunTimeExpression class-initializing324732 ! Node: I18N.RunTimeExpression class-instance creation325092 ! Node: I18N.RunTimeExpression-computing325452 ! Node: XML325862 ! Node: Building a DOM from XML326077 ! Node: Building XML331460 ! Node: Using DTDs334628 ! Node: XSL Processing337882 ! Node: Attributions339307 ! Node: Class index339646 ! Node: Method index346117 ! Node: Cross-reference428108  End Tag Table --- 9,377 ----  Indirect: gst-libs.info-1: 257 ! gst-libs.info-2: 49153 ! gst-libs.info-3: 96778 ! gst-libs.info-4: 144730 ! gst-libs.info-5: 181071 ! gst-libs.info-6: 230617 ! gst-libs.info-7: 280341 ! gst-libs.info-8: 326410 ! gst-libs.info-9: 346450 ! gst-libs.info-10: 428510  Tag Table: (Indirect) Node: Top257 ! Node: BLOX2286 ! Node: BLOX.BArc4828 ! Node: BLOX.BArc-accessing5133 ! Node: BLOX.BBalloon6666 ! Node: BLOX.BBalloon class-accessing7130 ! Node: BLOX.BBalloon-accessing7545 ! Node: BLOX.BBalloon-initializing7928 ! Node: BLOX.BBoundingBox8165 ! Node: BLOX.BBoundingBox-accessing8628 ! Node: BLOX.BButton11356 ! Node: BLOX.BButton class-instance creation11823 ! Node: BLOX.BButton-accessing12158 ! Node: BLOX.BButtonLike16330 ! Node: BLOX.BButtonLike-accessing16669 ! Node: BLOX.BCanvas17457 ! Node: BLOX.BCanvas-accessing18215 ! Node: BLOX.BCanvas-geometry management19058 ! Node: BLOX.BCanvas-widget protocol20764 ! Node: BLOX.BCanvasObject21976 ! Node: BLOX.BCanvasObject class-instance creation22510 ! Node: BLOX.BCanvasObject-accessing22914 ! Node: BLOX.BCanvasObject-widget protocol24851 ! Node: BLOX.BCheckMenuItem26123 ! Node: BLOX.BCheckMenuItem class-instance creation26562 ! Node: BLOX.BCheckMenuItem-accessing26872 ! Node: BLOX.BColorButton27321 ! Node: BLOX.BColorButton-accessing27742 ! Node: BLOX.BContainer28196 ! Node: BLOX.BContainer-accessing28633 ! Node: BLOX.BDialog29285 ! Node: BLOX.BDialog class-instance creation29898 ! Node: BLOX.BDialog class-prompters30800 ! Node: BLOX.BDialog-accessing34322 ! Node: BLOX.BDialog-widget protocol35515 ! Node: BLOX.BDropDown36402 ! Node: BLOX.BDropDown-accessing37324 ! Node: BLOX.BDropDown-callbacks42573 ! Node: BLOX.BDropDown-flexibility43184 ! Node: BLOX.BDropDown-list box accessing44664 ! Node: BLOX.BDropDown-widget protocol47699 ! Node: BLOX.BDropDownEdit48627 ! Node: BLOX.BDropDownEdit-accessing49153 ! Node: BLOX.BDropDownEdit-accessing-overrides51302 ! Node: BLOX.BDropDownEdit-text accessing51604 ! Node: BLOX.BDropDownList52999 ! Node: BLOX.BDropDownList-accessing53538 ! Node: BLOX.BDropDownList-callbacks56210 ! Node: BLOX.BDropDownList-list box accessing56895 ! Node: BLOX.BEdit57320 ! Node: BLOX.BEdit class-instance creation57727 ! Node: BLOX.BEdit-accessing58050 ! Node: BLOX.BEdit-widget protocol62398 ! Node: BLOX.BEmbeddedImage64361 ! Node: BLOX.BEmbeddedImage-accessing64702 ! Node: BLOX.BEmbeddedText65636 ! Node: BLOX.BEmbeddedText-accessing65988 ! Node: BLOX.BEventSet68918 ! Node: BLOX.BEventSet class-initializing69606 ! Node: BLOX.BEventSet-accessing70059 ! Node: BLOX.BEventSet-initializing70333 ! Node: BLOX.BEventTarget70701 ! Node: BLOX.BEventTarget-intercepting events71062 ! Node: BLOX.BExtended77143 ! Node: BLOX.BExtended-accessing77951 ! Node: BLOX.BExtended-customization78200 ! Node: BLOX.BForm79199 ! Node: BLOX.BForm-accessing79562 ! Node: BLOX.BImage80994 ! Node: BLOX.BImage class-arrows81569 ! Node: BLOX.BImage class-GNU82056 ! Node: BLOX.BImage class-icons82295 ! Node: BLOX.BImage class-instance creation82793 ! Node: BLOX.BImage class-small icons83536 ! Node: BLOX.BImage-accessing83903 ! Node: BLOX.BImage-image management87016 ! Node: BLOX.BImage-widget protocol89527 ! Node: BLOX.BLabel89821 ! Node: BLOX.BLabel class-initialization90203 ! Node: BLOX.BLabel class-instance creation90468 ! Node: BLOX.BLabel-accessing90838 ! Node: BLOX.BLine95522 ! Node: BLOX.BLine-accessing95858 ! Node: BLOX.BList96413 ! Node: BLOX.BList-accessing96778 ! Node: BLOX.BList-widget protocol108659 ! Node: BLOX.Blox110027 ! Node: BLOX.Blox class-event dispatching111105 ! Node: BLOX.Blox class-instance creation112381 ! Node: BLOX.Blox class-utility112816 ! Node: BLOX.Blox-accessing115938 ! Node: BLOX.Blox-basic117277 ! Node: BLOX.Blox-creating children117859 ! Node: BLOX.Blox-customization118865 ! Node: BLOX.Blox-widget protocol119647 ! Node: BLOX.BMenu121893 ! Node: BLOX.BMenu class-instance creation122281 ! Node: BLOX.BMenu-accessing122683 ! Node: BLOX.BMenu-callback registration123517 ! Node: BLOX.BMenuBar124600 ! Node: BLOX.BMenuBar-accessing124925 ! Node: BLOX.BMenuItem125145 ! Node: BLOX.BMenuItem class-instance creation125625 ! Node: BLOX.BMenuItem-accessing126014 ! Node: BLOX.BMenuObject126827 ! Node: BLOX.BMenuObject-accessing127216 ! Node: BLOX.BMenuObject-callback129540 ! Node: BLOX.BOval130481 ! Node: BLOX.BPolyline130795 ! Node: BLOX.BPolyline-accessing131124 ! Node: BLOX.BPopupMenu133446 ! Node: BLOX.BPopupMenu-widget protocol133853 ! Node: BLOX.BPopupWindow134055 ! Node: BLOX.BPopupWindow-geometry management134648 ! Node: BLOX.BPrimitive136701 ! Node: BLOX.BPrimitive-accessing137082 ! Node: BLOX.BProgress137298 ! Node: BLOX.BProgress-accessing137620 ! Node: BLOX.BRadioButton138851 ! Node: BLOX.BRadioButton-accessing139190 ! Node: BLOX.BRadioGroup140063 ! Node: BLOX.BRadioGroup-accessing140686 ! Node: BLOX.BRadioGroup-widget protocol141146 ! Node: BLOX.BRectangle141461 ! Node: BLOX.BRectangle-accessing141799 ! Node: BLOX.BScrolledCanvas142272 ! Node: BLOX.BSpline142691 ! Node: BLOX.BSpline-accessing143018 ! Node: BLOX.BText143434 ! Node: BLOX.BText class-accessing144049 ! Node: BLOX.BText class-instance creation144377 ! Node: BLOX.BText-accessing144730 ! Node: BLOX.BText-attributes150562 ! Node: BLOX.BText-geometry management151818 ! Node: BLOX.BText-images153382 ! Node: BLOX.BText-inserting text155049 ! Node: BLOX.BText-position & lines157050 ! Node: BLOX.BTextAttributes158842 ! Node: BLOX.BTextAttributes class-instance-creation shortcuts159298 ! Node: BLOX.BTextAttributes-colors162142 ! Node: BLOX.BTextAttributes-setting attributes163216 ! Node: BLOX.BTextBindings167355 ! Node: BLOX.BTextBindings class-instance creation167889 ! Node: BLOX.BTextTags168126 ! Node: BLOX.BToggle168485 ! Node: BLOX.BToggle-accessing168864 ! Node: BLOX.BTransientWindow169747 ! Node: BLOX.BTransientWindow class-instance creation170256 ! Node: BLOX.BTransientWindow-widget protocol170860 ! Node: BLOX.BViewport171437 ! Node: BLOX.BViewport-accessing171868 ! Node: BLOX.BViewport-scrollbars172113 ! Node: BLOX.BWidget173058 ! Node: BLOX.BWidget class-popups173617 ! Node: BLOX.BWidget-accessing174857 ! Node: BLOX.BWidget-customization179457 ! Node: BLOX.BWidget-geometry management181071 ! Node: BLOX.BWidget-widget protocol197562 ! Node: BLOX.BWindow199587 ! Node: BLOX.BWindow class-instance creation200030 ! Node: BLOX.BWindow-accessing200452 ! Node: BLOX.BWindow-widget protocol203159 ! Node: BLOX.Gui207854 ! Node: BLOX.Gui-accessing208244 ! Node: TCP208490 ! Node: TCP.AbstractSocket209830 ! Node: TCP.AbstractSocket class-defaults210435 ! Node: TCP.AbstractSocket class-instance creation211308 ! Node: TCP.AbstractSocket class-timed-out operations211890 ! Node: TCP.AbstractSocket-accessing212868 ! Node: TCP.AbstractSocket-printing214000 ! Node: TCP.AbstractSocket-socket options214295 ! Node: TCP.AbstractSocket-stream protocol215215 ! Node: TCP.AbstractSocket-testing215775 ! Node: TCP.AbstractSocketImpl216038 ! Node: TCP.AbstractSocketImpl class-abstract216619 ! Node: TCP.AbstractSocketImpl class-socket creation217064 ! Node: TCP.AbstractSocketImpl-accessing217393 ! Node: TCP.AbstractSocketImpl-asynchronous operations218541 ! Node: TCP.AbstractSocketImpl-socket operations219270 ! Node: TCP.AbstractSocketImpl-socket options221223 ! Node: TCP.Datagram223184 ! Node: TCP.Datagram class-instance creation223494 ! Node: TCP.Datagram-accessing224792 ! Node: TCP.DatagramSocket225812 ! Node: TCP.DatagramSocket class-accessing226310 ! Node: TCP.DatagramSocket class-initialization226946 ! Node: TCP.DatagramSocket class-instance creation227295 ! Node: TCP.DatagramSocket-accessing228297 ! Node: TCP.DatagramSocket-direct operations229187 ! Node: TCP.DatagramSocketImpl229489 ! Node: TCP.DatagramSocketImpl class-parameters229911 ! Node: TCP.DatagramSocketImpl-accessing230199 ! Node: TCP.DatagramSocketImpl-socket operations230617 ! Node: TCP.ICMPSocketImpl231756 ! Node: TCP.ICMPSocketImpl class-implementation232054 ! Node: TCP.IPAddress232337 ! Node: TCP.IPAddress class-constants232790 ! Node: TCP.IPAddress class-initialization233100 ! Node: TCP.IPAddress class-instance creation233800 ! Node: TCP.IPAddress-accessing237662 ! Node: TCP.IPAddress-printing238787 ! Node: TCP.MulticastSocket239001 ! Node: TCP.MulticastSocket-instance creation239303 ! Node: TCP.MulticastSocketImpl240121 ! Node: TCP.MulticastSocketImpl-multicasting240440 ! Node: TCP.OOBSocketImpl241214 ! Node: TCP.OOBSocketImpl class-implementation241567 ! Node: TCP.OOBSocketImpl-implementation241886 ! Node: TCP.RawSocketImpl242280 ! Node: TCP.RawSocketImpl class-parameters242571 ! Node: TCP.ReadBuffer242798 ! Node: TCP.ReadBuffer class-instance creation243260 ! Node: TCP.ReadBuffer-buffer handling243716 ! Node: TCP.ServerSocket244603 ! Node: TCP.ServerSocket class-instance creation244973 ! Node: TCP.ServerSocket-accessing246434 ! Node: TCP.ServerSocket-initializing247344 ! Node: TCP.Socket247724 ! Node: TCP.Socket class-accessing248273 ! Node: TCP.Socket class-instance creation249063 ! Node: TCP.Socket class-tests249892 ! Node: TCP.Socket class-well known ports251438 ! Node: TCP.Socket-accessing253513 ! Node: TCP.Socket-out-of-band data253811 ! Node: TCP.Socket-printing254108 ! Node: TCP.Socket-stream protocol254363 ! Node: TCP.SocketAddress256443 ! Node: TCP.SocketAddress class-abstract256906 ! Node: TCP.SocketAddress class-accessing257335 ! Node: TCP.SocketAddress class-host name lookup259328 ! Node: TCP.SocketAddress class-initialization260119 ! Node: TCP.SocketAddress-accessing261314 ! Node: TCP.SocketImpl262306 ! Node: TCP.SocketImpl class-parameters262677 ! Node: TCP.SocketImpl-abstract262924 ! Node: TCP.SocketImpl-socket operations263242 ! Node: TCP.TCPSocketImpl263669 ! Node: TCP.TCPSocketImpl class-implementation264005 ! Node: TCP.TCPSocketImpl-implementation264324 ! Node: TCP.UDPSocketImpl264638 ! Node: TCP.UDPSocketImpl class-implementation264982 ! Node: TCP.UDPSocketImpl-multicasting265299 ! Node: TCP.WriteBuffer266192 ! Node: TCP.WriteBuffer-buffer handling266596 ! Node: I18N267035 ! Node: I18N.BigEndianFileStream269596 ! Node: I18N.EncodedStream269944 ! Node: I18N.EncodedStream class-initializing270472 ! Node: I18N.EncodedStream class-instance creation271342 ! Node: I18N.Encoder272251 ! Node: I18N.Encoder class-instance creation272803 ! Node: I18N.Encoder-stream operations273226 ! Node: I18N.Encoders.ComposeUCS4BE274281 ! Node: I18N.Encoders.ComposeUCS4BE-stream operation274806 ! Node: I18N.Encoders.ComposeUCS4LE275142 ! Node: I18N.Encoders.ComposeUCS4LE-stream operation275680 ! Node: I18N.Encoders.FromUCS4276019 ! Node: I18N.Encoders.FromUCS4-stream operation276526 ! Node: I18N.Encoders.FromUTF7276798 ! Node: I18N.Encoders.FromUTF7 class-initialization277179 ! Node: I18N.Encoders.FromUTF7-converting277490 ! Node: I18N.Encoders.Iconv278161 ! Node: I18N.Encoders.Iconv-stream operation278835 ! Node: I18N.Encoders.SplitUCS4BE279231 ! Node: I18N.Encoders.SplitUCS4BE-stream operation279771 ! Node: I18N.Encoders.SplitUCS4LE280341 ! Node: I18N.Encoders.SplitUCS4LE-stream operation280885 ! Node: I18N.Encoders.ToUCS4281455 ! Node: I18N.Encoders.ToUCS4-stream operation281987 ! Node: I18N.Encoders.ToUTF7282262 ! Node: I18N.Encoders.ToUTF7 class-initialization282771 ! Node: I18N.Encoders.ToUTF7-conversion283072 ! Node: I18N.FileStreamSegment283507 ! Node: I18N.FileStreamSegment-basic283933 ! Node: I18N.IncompleteSequenceError284238 ! Node: I18N.IncompleteSequenceError-accessing284791 ! Node: I18N.InvalidCharsetError285042 ! Node: I18N.InvalidCharsetError-accessing285475 ! Node: I18N.InvalidSequenceError285710 ! Node: I18N.InvalidSequenceError-accessing286131 ! Node: I18N.LcMessages286370 ! Node: I18N.LcMessages class-accessing286816 ! Node: I18N.LcMessages-accessing287188 ! Node: I18N.LcMessages-opening MO files287912 ! Node: I18N.LcMessagesCatalog288695 ! Node: I18N.LcMessagesDomain289060 ! Node: I18N.LcMessagesDomain class-opening MO files290160 ! Node: I18N.LcMessagesDomain-handling the cache290536 ! Node: I18N.LcMessagesDomain-querying291060 ! Node: I18N.LcMessagesDummyDomain292168 ! Node: I18N.LcMessagesMoFileVersion0292577 ! Node: I18N.LcMessagesMoFileVersion0 class-documentation293260 ! Node: I18N.LcMessagesMoFileVersion0 class-plurals301206 ! Node: I18N.LcMessagesMoFileVersion0-flushing the cache301841 ! Node: I18N.LcMessagesTerritoryDomain302267 ! Node: I18N.LcMessagesTerritoryDomain class-instance creation302731 ! Node: I18N.LcMonetary303096 ! Node: I18N.LcMonetary class-accessing303620 ! Node: I18N.LcMonetary-printing303991 ! Node: I18N.LcMonetaryISO304775 ! Node: I18N.LcMonetaryISO class-accessing305058 ! Node: I18N.LcNumeric305319 ! Node: I18N.LcNumeric class-accessing305784 ! Node: I18N.LcNumeric-printing306150 ! Node: I18N.LcPrintFormats306639 ! Node: I18N.LcPrintFormats-printing307192 ! Node: I18N.LcTime307687 ! Node: I18N.LcTime class-accessing308175 ! Node: I18N.LcTime-printing308526 ! Node: I18N.LcTime-tests310811 ! Node: I18N.Locale311030 ! Node: I18N.Locale class-initialization311685 ! Node: I18N.Locale class-instance creation312058 ! Node: I18N.Locale-subobjects312696 ! Node: I18N.LocaleConventions313322 ! Node: I18N.LocaleConventions class-accessing313758 ! Node: I18N.LocaleConventions-accessing314467 ! Node: I18N.LocaleData314783 ! Node: I18N.LocaleData class-accessing315285 ! Node: I18N.LocaleData class-database316341 ! Node: I18N.LocaleData-accessing316797 ! Node: I18N.LocaleData-initialization317955 ! Node: I18N.RTEAlternativeNode318340 ! Node: I18N.RTEAlternativeNode class-compiling318704 ! Node: I18N.RTEAlternativeNode-computing319109 ! Node: I18N.RTEBinaryNode319670 ! Node: I18N.RTEBinaryNode class-compiling320063 ! Node: I18N.RTEBinaryNode-compiling320416 ! Node: I18N.RTEBinaryNode-computing320712 ! Node: I18N.RTELiteralNode321239 ! Node: I18N.RTELiteralNode class-initializing321591 ! Node: I18N.RTELiteralNode-computing321889 ! Node: I18N.RTENegationNode322304 ! Node: I18N.RTENegationNode class-initializing322663 ! Node: I18N.RTENegationNode-computing322963 ! Node: I18N.RTEParameterNode323405 ! Node: I18N.RTEParameterNode-computing323717 ! Node: I18N.RunTimeExpression324019 ! Node: I18N.RunTimeExpression class-compiling324456 ! Node: I18N.RunTimeExpression class-initializing325065 ! Node: I18N.RunTimeExpression class-instance creation325425 ! Node: I18N.RunTimeExpression-computing325785 ! Node: XML326195 ! Node: Building a DOM from XML326410 ! Node: Building XML331793 ! Node: Using DTDs334961 ! Node: XSL Processing338215 ! Node: Attributions339640 ! Node: Class index339979 ! Node: Method index346450 ! Node: Cross-reference428510  End Tag Table diff -rNC3 smalltalk-2.1.1/doc/gst-libs.info-1 smalltalk-2.1.2/doc/gst-libs.info-1 *** smalltalk-2.1.1/doc/gst-libs.info-1 Thu Apr 17 11:44:17 2003 --- smalltalk-2.1.2/doc/gst-libs.info-1 Fri May 9 10:56:14 2003 *************** *** 6,13 **** * Libraries: (gst-libs). The GNU Smalltalk class libraries. END-INFO-DIR-ENTRY ! This file documents GNU Smalltalk Version 2.1.1. It was last updated ! on 18 August 2002. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, Inc. --- 6,13 ---- * Libraries: (gst-libs). The GNU Smalltalk class libraries. END-INFO-DIR-ENTRY ! This file documents GNU Smalltalk Version 2.1.2. It was last updated ! on 9 May 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, Inc. *************** *** 31,38 **** This document describes the class libraries that are distributed together with the GNU Smalltalk programming language. ! This file documents GNU Smalltalk Version 2.1.1. It was last updated ! on 18 August 2002. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, Inc. --- 31,38 ---- This document describes the class libraries that are distributed together with the GNU Smalltalk programming language. ! This file documents GNU Smalltalk Version 2.1.2. It was last updated ! on 9 May 2003. Copyright (C) 1988-92, 1994-95, 1999-2001 Free Software Foundation, Inc. diff -rNC3 smalltalk-2.1.1/doc/gst-libs.info-5 smalltalk-2.1.2/doc/gst-libs.info-5 *** smalltalk-2.1.1/doc/gst-libs.info-5 Thu Apr 17 11:44:17 2003 --- smalltalk-2.1.2/doc/gst-libs.info-5 Fri May 9 10:56:14 2003 *************** *** 745,750 **** --- 745,751 ---- * TCP.AbstractSocket-printing:: (instance) * TCP.AbstractSocket-socket options:: (instance) * TCP.AbstractSocket-stream protocol:: (instance) + * TCP.AbstractSocket-testing:: (instance)  File: gst-libs.info, Node: TCP.AbstractSocket class-defaults, Next: TCP.AbstractSocket class-instance creation, Up: TCP.AbstractSocket *************** *** 883,889 **** Answer `String'.  ! File: gst-libs.info, Node: TCP.AbstractSocket-stream protocol, Prev: TCP.AbstractSocket-socket options, Up: TCP.AbstractSocket TCP.AbstractSocket: stream protocol ----------------------------------- --- 884,890 ---- Answer `String'.  ! File: gst-libs.info, Node: TCP.AbstractSocket-stream protocol, Next: TCP.AbstractSocket-testing, Prev: TCP.AbstractSocket-socket options, Up: TCP.AbstractSocket TCP.AbstractSocket: stream protocol ----------------------------------- *************** *** 898,903 **** --- 899,913 ---- nextPut: char Write `char' to the socket, failing if the connection is dead. The SIGPIPE signal is automatically caught and ignored by the system. + +  + File: gst-libs.info, Node: TCP.AbstractSocket-testing, Prev: TCP.AbstractSocket-stream protocol, Up: TCP.AbstractSocket + + TCP.AbstractSocket: testing + --------------------------- + + isExternalStream + Answer whether the receiver streams on a file or socket.  File: gst-libs.info, Node: TCP.AbstractSocketImpl, Next: TCP.Datagram, Prev: TCP.AbstractSocket, Up: TCP diff -rNC3 smalltalk-2.1.1/doc/gst-libs.info-9 smalltalk-2.1.2/doc/gst-libs.info-9 *** smalltalk-2.1.1/doc/gst-libs.info-9 Thu Apr 17 11:44:17 2003 --- smalltalk-2.1.2/doc/gst-libs.info-9 Fri May 9 10:56:14 2003 *************** *** 595,600 **** --- 595,601 ---- * isDigitAddress_: TCP.SocketAddress class-accessing. * isDropdownVisible: BLOX.BDropDown-widget protocol. * isEmpty: TCP.ReadBuffer-buffer handling. + * isExternalStream: TCP.AbstractSocket-testing. * isFull: TCP.ReadBuffer-buffer handling. * isMapped: BLOX.BWindow-widget protocol. * isMulticast: TCP.IPAddress-accessing. diff -rNC3 smalltalk-2.1.1/doc/gst.1 smalltalk-2.1.2/doc/gst.1 *** smalltalk-2.1.1/doc/gst.1 Thu Apr 17 11:44:06 2003 --- smalltalk-2.1.2/doc/gst.1 Fri May 9 11:59:36 2003 *************** *** 1,5 **** .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. ! .TH SMALLTALK "1" "April 2003" "Smalltalk version 2.1" "User Commands" .SH NAME Smalltalk \- the GNU Smalltalk virtual machine .SH DESCRIPTION --- 1,5 ---- .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.28. ! .TH SMALLTALK "1" "May 2003" "Smalltalk version 2.1.2" "User Commands" .SH NAME Smalltalk \- the GNU Smalltalk virtual machine .SH DESCRIPTION diff -rNC3 smalltalk-2.1.1/doc/gst.info-1 smalltalk-2.1.2/doc/gst.info-1 *** smalltalk-2.1.1/doc/gst.info-1 Thu Apr 17 11:44:09 2003 --- smalltalk-2.1.2/doc/gst.info-1 Tue Apr 29 16:58:53 2003 *************** *** 6,12 **** * GNU Smalltalk: (gst). The GNU Smalltalk environment. END-INFO-DIR-ENTRY ! This file documents GNU Smalltalk Version 2.1.1. It was last updated on 12 December 2002. Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, --- 6,12 ---- * GNU Smalltalk: (gst). The GNU Smalltalk environment. END-INFO-DIR-ENTRY ! This file documents GNU Smalltalk Version 2.1.2. It was last updated on 12 December 2002. Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, *************** *** 31,37 **** This document describes installing and operating the GNU Smalltalk programming language. ! This file documents GNU Smalltalk Version 2.1.1. It was last updated on 12 December 2002. Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, --- 31,37 ---- This document describes installing and operating the GNU Smalltalk programming language. ! This file documents GNU Smalltalk Version 2.1.2. It was last updated on 12 December 2002. Copyright (C) 1988, 1989, 1991, 1992, 1994, 1995, 1999, 2000, 2001, diff -rNC3 smalltalk-2.1.1/doc/stamp-1 smalltalk-2.1.2/doc/stamp-1 *** smalltalk-2.1.1/doc/stamp-1 Thu Apr 17 11:44:06 2003 --- smalltalk-2.1.2/doc/stamp-1 Fri May 9 11:59:37 2003 *************** *** 1,4 **** ! @set UPDATED 25 June 2002 ! @set UPDATED-MONTH June 2002 ! @set EDITION 2.1.1 ! @set VERSION 2.1.1 --- 1,4 ---- ! @set UPDATED 9 May 2003 ! @set UPDATED-MONTH May 2003 ! @set EDITION 2.1.2 ! @set VERSION 2.1.2 diff -rNC3 smalltalk-2.1.1/doc/stamp-2 smalltalk-2.1.2/doc/stamp-2 *** smalltalk-2.1.1/doc/stamp-2 Thu Apr 17 11:44:07 2003 --- smalltalk-2.1.2/doc/stamp-2 Fri May 9 11:59:37 2003 *************** *** 1,4 **** ! @set UPDATED 18 August 2002 ! @set UPDATED-MONTH August 2002 ! @set EDITION 2.1.1 ! @set VERSION 2.1.1 --- 1,4 ---- ! @set UPDATED 9 May 2003 ! @set UPDATED-MONTH May 2003 ! @set EDITION 2.1.2 ! @set VERSION 2.1.2 diff -rNC3 smalltalk-2.1.1/doc/stamp-vti smalltalk-2.1.2/doc/stamp-vti *** smalltalk-2.1.1/doc/stamp-vti Thu Apr 17 11:44:06 2003 --- smalltalk-2.1.2/doc/stamp-vti Fri May 9 11:59:36 2003 *************** *** 1,4 **** @set UPDATED 12 December 2002 @set UPDATED-MONTH December 2002 ! @set EDITION 2.1.1 ! @set VERSION 2.1.1 --- 1,4 ---- @set UPDATED 12 December 2002 @set UPDATED-MONTH December 2002 ! @set EDITION 2.1.2 ! @set VERSION 2.1.2 diff -rNC3 smalltalk-2.1.1/doc/tcp.texi smalltalk-2.1.2/doc/tcp.texi *** smalltalk-2.1.1/doc/tcp.texi Thu Mar 27 19:03:11 2003 --- smalltalk-2.1.2/doc/tcp.texi Fri May 9 09:29:06 2003 *************** *** 153,158 **** --- 153,159 ---- * TCP.AbstractSocket-printing:: (instance) * TCP.AbstractSocket-socket options:: (instance) * TCP.AbstractSocket-stream protocol:: (instance) + * TCP.AbstractSocket-testing:: (instance) @end menu *************** *** 369,374 **** --- 370,388 ---- @item nextPut:@- char Write `char' to the socket, failing if the connection is dead. The SIGPIPE signal is automatically caught and ignored by the system. + + + @end table + + + + @node TCP.AbstractSocket-testing + @subsection TCP.AbstractSocket:@- testing + + @table @b + @meindex isExternalStream + @item isExternalStream + Answer whether the receiver streams on a file or socket. @end table diff -rNC3 smalltalk-2.1.1/doc/vers-base.texi smalltalk-2.1.2/doc/vers-base.texi *** smalltalk-2.1.1/doc/vers-base.texi Thu Apr 17 11:44:06 2003 --- smalltalk-2.1.2/doc/vers-base.texi Fri May 9 10:43:18 2003 *************** *** 1,4 **** ! @set UPDATED 25 June 2002 ! @set UPDATED-MONTH June 2002 ! @set EDITION 2.1.1 ! @set VERSION 2.1.1 --- 1,4 ---- ! @set UPDATED 9 May 2003 ! @set UPDATED-MONTH May 2003 ! @set EDITION 2.1.2 ! @set VERSION 2.1.2 diff -rNC3 smalltalk-2.1.1/doc/vers-gst.texi smalltalk-2.1.2/doc/vers-gst.texi *** smalltalk-2.1.1/doc/vers-gst.texi Thu Apr 17 11:44:06 2003 --- smalltalk-2.1.2/doc/vers-gst.texi Tue Apr 29 16:57:48 2003 *************** *** 1,4 **** @set UPDATED 12 December 2002 @set UPDATED-MONTH December 2002 ! @set EDITION 2.1.1 ! @set VERSION 2.1.1 --- 1,4 ---- @set UPDATED 12 December 2002 @set UPDATED-MONTH December 2002 ! @set EDITION 2.1.2 ! @set VERSION 2.1.2 diff -rNC3 smalltalk-2.1.1/doc/vers-libs.texi smalltalk-2.1.2/doc/vers-libs.texi *** smalltalk-2.1.1/doc/vers-libs.texi Thu Apr 17 11:44:07 2003 --- smalltalk-2.1.2/doc/vers-libs.texi Fri May 9 10:43:18 2003 *************** *** 1,4 **** ! @set UPDATED 18 August 2002 ! @set UPDATED-MONTH August 2002 ! @set EDITION 2.1.1 ! @set VERSION 2.1.1 --- 1,4 ---- ! @set UPDATED 9 May 2003 ! @set UPDATED-MONTH May 2003 ! @set EDITION 2.1.2 ! @set VERSION 2.1.2 diff -rNC3 smalltalk-2.1.1/examples/Makefile.in smalltalk-2.1.2/examples/Makefile.in *** smalltalk-2.1.1/examples/Makefile.in Thu Apr 17 11:43:44 2003 --- smalltalk-2.1.2/examples/Makefile.in Fri May 9 11:59:17 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/gnu-smalltalk.spec smalltalk-2.1.2/gnu-smalltalk.spec *** smalltalk-2.1.1/gnu-smalltalk.spec Thu Apr 17 23:44:28 2003 --- smalltalk-2.1.2/gnu-smalltalk.spec Fri May 9 11:57:16 2003 *************** *** 2,8 **** Summary: GNU Smalltalk Name: gst ! Version: 2.1.1 Release: 1 Source: ftp://ftp.gnu.org/gnu/smalltalk/smalltalk-%{version}.tar.gz Copyright: GPL --- 2,8 ---- Summary: GNU Smalltalk Name: gst ! Version: 2.1.2 Release: 1 Source: ftp://ftp.gnu.org/gnu/smalltalk/smalltalk-%{version}.tar.gz Copyright: GPL diff -rNC3 smalltalk-2.1.1/i18n/ChangeLog smalltalk-2.1.2/i18n/ChangeLog *** smalltalk-2.1.1/i18n/ChangeLog Thu Apr 17 14:44:28 2003 --- smalltalk-2.1.2/i18n/ChangeLog Fri May 9 09:26:19 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,12 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/i18n/Makefile.in smalltalk-2.1.2/i18n/Makefile.in *** smalltalk-2.1.1/i18n/Makefile.in Thu Apr 17 11:43:21 2003 --- smalltalk-2.1.2/i18n/Makefile.in Fri May 9 11:58:54 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/kernel/Behavior.st smalltalk-2.1.2/kernel/Behavior.st *** smalltalk-2.1.1/kernel/Behavior.st Sun Mar 2 13:02:50 2003 --- smalltalk-2.1.2/kernel/Behavior.st Tue Apr 29 17:27:00 2003 *************** *** 52,84 **** addInstVarName: aString "Add the given instance variable to instance of the receiver" ! instanceVariables := instanceVariables isNil ! ifTrue: [ { aString asSymbol } ] ! ifFalse: [ instanceVariables copyWith: aString asSymbol ]. ! instanceSpec := instanceSpec + 4096. "Highly implementation specific" self ! updateInstanceVars: instanceVariables variable: self isVariable words: self isWords ! pointers: self isPointers ! removeInstVarName: aString "Remove the given instance variable from the receiver and recompile all of the receiver's subclasses" ! instanceVariables := instanceVariables copyWithout: aString asSymbol. ! instanceSpec := instanceSpec - 4096. "Highly implementation specific" ! self asClass compileAll; compileAllSubclasses. ! self asMetaclass compileAll; compileAllSubclasses. self ! updateInstanceVars: instanceVariables variable: self isVariable words: self isWords ! pointers: self isPointers ! ! --- 52,98 ---- addInstVarName: aString "Add the given instance variable to instance of the receiver" ! | newInstanceVariables duplicated symbol | ! self validateIdentifier: aString. ! ! symbol := aString asSymbol. ! newInstanceVariables := instanceVariables isNil ! ifTrue: [ { symbol } ] ! ifFalse: [ instanceVariables copyWith: symbol ]. ! ! duplicated := self superclass allInstVarNames includes: symbol. self ! updateInstanceVars: newInstanceVariables variable: self isVariable words: self isWords ! pointers: self isPointers. ! ! duplicated ifTrue: [ self compileAll ]. ! self compileAllSubclasses. ! removeInstVarName: aString "Remove the given instance variable from the receiver and recompile all of the receiver's subclasses" ! | newInstanceVariables symbol index | ! ! symbol := aString asSymbol. ! index := instanceVariables findLast: [ :each | each = symbol ]. ! index = 0 ifTrue: [ SystemExceptions.NotFound signalOn: symbol what: 'instance variable' ]. ! ! newInstanceVariables := instanceVariables ! copyReplaceFrom: index to: index with: #(). self ! updateInstanceVars: newInstanceVariables variable: self isVariable words: self isWords ! pointers: self isPointers. ! ! self compileAll; compileAllSubclasses. ! ! *************** *** 281,289 **** ] on: Error do: [ :ex | ex return: false ]. ok ifFalse: [ ^nil ]. ! Transcript ! nextPutAll: 'Recompiling selector: '; ! print: selector asSymbol; nl. ^self compile: source classified: category ! --- 295,305 ---- ] on: Error do: [ :ex | ex return: false ]. ok ifFalse: [ ^nil ]. ! RegressionTesting ifFalse: [ ! Transcript ! nextPutAll: 'Recompiling selector: '; ! print: selector asSymbol; nl. ! ]. ^self compile: source classified: category ! *************** *** 301,309 **** ] on: Error do: [ :ex | ex return: false ]. ok ifFalse: [ ^nil ]. ! Transcript ! nextPutAll: 'Recompiling selector: '; ! print: selector asSymbol; nl. ^self compile: source classified: category notifying: aNotifier ! --- 317,327 ---- ] on: Error do: [ :ex | ex return: false ]. ok ifFalse: [ ^nil ]. ! RegressionTesting ifFalse: [ ! Transcript ! nextPutAll: 'Recompiling selector: '; ! print: selector asSymbol; nl. ! ]. ^self compile: source classified: category notifying: aNotifier ! *************** *** 356,362 **** "Recompile all selectors in the receiver. Ignore errors." self methodDictionary notNil ifTrue: [ ! Transcript nextPutAll: 'Recompiling class: '; print: self; nl. self methodDictionary keysDo: [ :selector | self recompile: selector ] ] ! --- 374,382 ---- "Recompile all selectors in the receiver. Ignore errors." self methodDictionary notNil ifTrue: [ ! RegressionTesting ifFalse: [ ! Transcript nextPutAll: 'Recompiling class: '; print: self; nl. ! ]. self methodDictionary keysDo: [ :selector | self recompile: selector ] ] ! *************** *** 366,372 **** ding #error: messages if something goes wrong." self methodDictionary notNil ifTrue: [ ! Transcript nextPutAll: 'Recompiling class: '; print: self; nl. self methodDictionary keysDo: [ :selector | self recompile: selector notifying: aNotifier] ] ! ! --- 386,394 ---- ding #error: messages if something goes wrong." self methodDictionary notNil ifTrue: [ ! RegressionTesting ifFalse: [ ! Transcript nextPutAll: 'Recompiling class: '; print: self; nl. ! ]. self methodDictionary keysDo: [ :selector | self recompile: selector notifying: aNotifier] ] ! ! *************** *** 1176,1181 **** --- 1198,1216 ---- instanceVariables := instVariableArray ! + validateIdentifier: token + "Token is a string or string-oid" + | firstTime | + firstTime := true. + token do: [ :ch | + (ch isLetter | (firstTime not and: [ ch = $_ | ch isDigit ])) + ifFalse: [ SystemExceptions.InvalidValue signalOn: token reason: 'invalid Smalltalk identifier' ]. + + firstTime := false + ]. + ^true + ! + updateInstanceVars: variableArray variable: variableBoolean words: wordBoolean *************** *** 1184,1190 **** "Update instance variables and instance spec of the class and all its subclasses" | instVarMap startOfInstanceVars endOfInstanceVars newInstanceVars ! oldInstVars map oldClass instances | startOfInstanceVars := self superclass instSize + 1. endOfInstanceVars := self instSize. --- 1219,1225 ---- "Update instance variables and instance spec of the class and all its subclasses" | instVarMap startOfInstanceVars endOfInstanceVars newInstanceVars ! oldInstVars oldClass instances | startOfInstanceVars := self superclass instSize + 1. endOfInstanceVars := self instSize. *************** *** 1194,1201 **** oldInstVars := self allInstVarNames. instVarMap := Array new: newInstanceVars size. ! startOfInstanceVars to: endOfInstanceVars do: [ :i | ! map := newInstanceVars indexOf: (oldInstVars at: i). map > 0 ifTrue: [instVarMap at: map put: i] ]. --- 1229,1236 ---- oldInstVars := self allInstVarNames. instVarMap := Array new: newInstanceVars size. ! startOfInstanceVars to: endOfInstanceVars do: [ :i || map | ! map := newInstanceVars findLast: [ :each | each = (oldInstVars at: i) ]. map > 0 ifTrue: [instVarMap at: map put: i] ]. diff -rNC3 smalltalk-2.1.1/kernel/Builtins.st smalltalk-2.1.2/kernel/Builtins.st *** smalltalk-2.1.1/kernel/Builtins.st Tue Feb 25 18:40:55 2003 --- smalltalk-2.1.2/kernel/Builtins.st Tue May 6 20:22:33 2003 *************** *** 1342,1347 **** --- 1342,1350 ---- snapshot: aString "Save an image on the aString file" + ^aString isString + ifFalse: [ SystemExceptions.WrongClass signalOn: aString mustBe: String ] + ifTrue: [ File checkError ] ! gcMessage diff -rNC3 smalltalk-2.1.1/kernel/Class.st smalltalk-2.1.2/kernel/Class.st *** smalltalk-2.1.1/kernel/Class.st Fri Mar 14 17:35:55 2003 --- smalltalk-2.1.2/kernel/Class.st Tue Apr 29 16:52:47 2003 *************** *** 113,123 **** still in use." | sym | sym := aString asClassPoolKey. - " ### test for use in method " (classVariables notNil and: [classVariables includesKey: sym]) ! ifTrue: [ ^classVariables removeKey: sym ]. ! SystemExceptions.NotFound signalOn: aString what: 'class variable' ! classPool --- 113,124 ---- still in use." | sym | sym := aString asClassPoolKey. (classVariables notNil and: [classVariables includesKey: sym]) ! ifFalse: [ SystemExceptions.NotFound signalOn: aString what: 'class variable' ]. ! classVariables removeKey: sym. ! self asClass compileAll; compileAllSubclasses. ! self asMetaclass compileAll; compileAllSubclasses. ! classPool diff -rNC3 smalltalk-2.1.1/kernel/CompildCode.st smalltalk-2.1.2/kernel/CompildCode.st *** smalltalk-2.1.1/kernel/CompildCode.st Tue Feb 25 18:40:55 2003 --- smalltalk-2.1.2/kernel/CompildCode.st Tue May 6 17:23:07 2003 *************** *** 794,800 **** | printString | printString := anObject printString. printString size > 30 ! ifTrue: [ printString := '%1 %2' bindWith: anObject class article with: anObject class name ]. aStream nextPutAll: 'push '; nextPutAll: printString; nl! --- 794,800 ---- | printString | printString := anObject printString. printString size > 30 ! ifTrue: [ printString := '%1 %2' bindWith: anObject class article with: anObject class name asString ]. aStream nextPutAll: 'push '; nextPutAll: printString; nl! diff -rNC3 smalltalk-2.1.1/kernel/File.st smalltalk-2.1.2/kernel/File.st *** smalltalk-2.1.1/kernel/File.st Tue Feb 25 18:40:55 2003 --- smalltalk-2.1.2/kernel/File.st Tue May 6 18:57:58 2003 *************** *** 62,93 **** !File class methodsFor: 'file name management'! extensionFor: aString ! "Answer the extension of a file named `aString'" | index | aString isEmpty ifTrue: [ ^'' ]. index := aString findLast: [ :each | ! each = Directory pathSeparator ifTrue: [ ^'' ] each = $. ]. ! "Special case .foo and /bar/.foo" ! index = 1 ifTrue: [ ^'' ]. (aString at: index - 1) = Directory pathSeparator ifTrue: [ ^'' ]. ! ^aString copyFrom: index + 1 to: aString size. ! stripExtensionFrom: aString "Remove the extension from the name of a file called `aString', and ! answer the result" | index | aString isEmpty ifTrue: [ ^'' ]. index := aString findLast: [ :each | ! each = Directory pathSeparator ifTrue: [ ^aString ] each = $. ]. ! "Special case .foo and /bar/.foo" ! index = 1 ifTrue: [ ^aString ]. (aString at: index - 1) = Directory pathSeparator ifTrue: [ ^aString ]. ^aString copyFrom: 1 to: index - 1 ! --- 62,94 ---- !File class methodsFor: 'file name management'! extensionFor: aString ! "Answer the extension of a file named `aString'. Note: the extension ! includes an initial dot." | index | aString isEmpty ifTrue: [ ^'' ]. index := aString findLast: [ :each | ! each = Directory pathSeparator ifTrue: [ ^'' ]. each = $. ]. ! "Special case foo, .foo and /bar/.foo, all of which have no extension" ! index <= 1 ifTrue: [ ^'' ]. (aString at: index - 1) = Directory pathSeparator ifTrue: [ ^'' ]. ! ^aString copyFrom: index to: aString size. ! stripExtensionFrom: aString "Remove the extension from the name of a file called `aString', and ! answer the result." | index | aString isEmpty ifTrue: [ ^'' ]. index := aString findLast: [ :each | ! each = Directory pathSeparator ifTrue: [ ^aString ]. each = $. ]. ! "Special case foo, .foo and /bar/.foo, all of which have no extension" ! index <= 1 ifTrue: [ ^aString ]. (aString at: index - 1) = Directory pathSeparator ifTrue: [ ^aString ]. ^aString copyFrom: 1 to: index - 1 ! diff -rNC3 smalltalk-2.1.1/kernel/FileDescr.st smalltalk-2.1.2/kernel/FileDescr.st *** smalltalk-2.1.1/kernel/FileDescr.st Sat Mar 22 08:48:40 2003 --- smalltalk-2.1.2/kernel/FileDescr.st Thu May 8 10:11:57 2003 *************** *** 544,549 **** --- 544,554 ---- self isPipe ifFalse: [ ^self fileOp: 6 ]. atEnd isNil ifTrue: [ atEnd := false ]. ^atEnd + ! + + isExternalStream + "Answer whether the receiver streams on a file or socket." + ^true ! ! diff -rNC3 smalltalk-2.1.1/kernel/Makefile.in smalltalk-2.1.2/kernel/Makefile.in *** smalltalk-2.1.1/kernel/Makefile.in Thu Apr 17 11:43:33 2003 --- smalltalk-2.1.2/kernel/Makefile.in Fri May 9 11:59:06 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/kernel/Metaclass.st smalltalk-2.1.2/kernel/Metaclass.st *** smalltalk-2.1.1/kernel/Metaclass.st Sun Mar 2 12:59:51 2003 --- smalltalk-2.1.2/kernel/Metaclass.st Tue Apr 29 15:30:41 2003 *************** *** 478,497 **** ^dict ! - validateIdentifier: token - "Token is a string or string-oid" - | firstTime | - firstTime := true. - token do: [ :ch | - (ch isLetter | (firstTime not and: [ ch = $_ | ch isDigit ])) - ifFalse: [ SystemExceptions.InvalidValue signalOn: token reason: 'invalid Smalltalk identifier' ]. - - firstTime := false - ]. - ^true - ! - - growClassInstance | newClass numInstVars | newClass := self new. --- 478,483 ---- diff -rNC3 smalltalk-2.1.1/kernel/Object.st smalltalk-2.1.2/kernel/Object.st *** smalltalk-2.1.1/kernel/Object.st Tue Feb 25 18:40:55 2003 --- smalltalk-2.1.2/kernel/Object.st Tue Apr 29 16:02:10 2003 *************** *** 649,655 **** ifFalse: [ class basicNew ]. end := instVarMap size + start - 1. ! "Copy the instance variables, if any" 1 to: start - 1 do: [ :i | aCopy instVarAt: i put: (self instVarAt: i) --- 649,655 ---- ifFalse: [ class basicNew ]. end := instVarMap size + start - 1. ! "Copy the instance variables, if any" 1 to: start - 1 do: [ :i | aCopy instVarAt: i put: (self instVarAt: i) *************** *** 662,669 **** aCopy instVarAt: i put: (self instVarAt: mappedValue) ] ]. ! ! end + 1 to: self class instSize do: [ :i | aCopy instVarAt: i put: (self instVarAt: i + adjustment) ]. --- 662,668 ---- aCopy instVarAt: i put: (self instVarAt: mappedValue) ] ]. ! end + 1 to: class instSize do: [ :i | aCopy instVarAt: i put: (self instVarAt: i + adjustment) ]. diff -rNC3 smalltalk-2.1.1/kernel/Stream.st smalltalk-2.1.2/kernel/Stream.st *** smalltalk-2.1.1/kernel/Stream.st Tue Feb 25 18:40:55 2003 --- smalltalk-2.1.2/kernel/Stream.st Thu May 8 10:11:43 2003 *************** *** 205,210 **** --- 205,216 ---- atEnd "Answer whether the stream has got to an end" self subclassResponsibility + ! + + isExternalStream + "Answer whether the receiver streams on a file or socket. + By default, answer false." + ^false ! ! diff -rNC3 smalltalk-2.1.1/kernel/VFS.st smalltalk-2.1.2/kernel/VFS.st *** smalltalk-2.1.1/kernel/VFS.st Tue Mar 4 20:36:49 2003 --- smalltalk-2.1.2/kernel/VFS.st Tue Apr 29 16:18:11 2003 *************** *** 780,792 **** directory and of the parent of the system kernel directory." ActivePaths := WeakValueLookupTable new. FileTypes := LookupTable new. ! [ self fileSystemsIn: Directory kernel, '/../vfs' ] ! on: Error do: [ :ex | ex return ]. [ self fileSystemsIn: Directory image, '/vfs' ] ! on: Error do: [ :ex | ex return ]. [ self fileSystemsIn: Directory systemKernel, '/../vfs' ] ! on: Error do: [ :ex | ex return ]. ! ^FileTypes keys asSet! fileSystemsIn: path --- 780,792 ---- directory and of the parent of the system kernel directory." ActivePaths := WeakValueLookupTable new. FileTypes := LookupTable new. ! [ self fileSystemsIn: Directory kernel, '/../vfs' ] ! on: Error do: [ :ex | ex return ]. [ self fileSystemsIn: Directory image, '/vfs' ] ! on: Error do: [ :ex | ex return ]. [ self fileSystemsIn: Directory systemKernel, '/../vfs' ] ! on: Error do: [ :ex | ex return ]. ! ^FileTypes keys asSet! fileSystemsIn: path diff -rNC3 smalltalk-2.1.1/lib-src/Makefile.in smalltalk-2.1.2/lib-src/Makefile.in *** smalltalk-2.1.1/lib-src/Makefile.in Thu Apr 17 11:41:45 2003 --- smalltalk-2.1.2/lib-src/Makefile.in Fri May 9 11:57:21 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/lib-src/ansidecl.h smalltalk-2.1.2/lib-src/ansidecl.h *** smalltalk-2.1.1/lib-src/ansidecl.h Fri Apr 18 01:13:35 2003 --- smalltalk-2.1.2/lib-src/ansidecl.h Mon Apr 28 19:47:09 2003 *************** *** 19,33 **** #ifndef __attribute__ # if !defined __GNUC__ || !defined __GNUC_MINOR__ ! # define __attribute__ (x) ! # elif (__GNUC__ * 1000 + _GNUC_MINOR) < 2007 ! # define __attribute__ (x) # endif #endif /* Attribute __malloc__ on functions was valid as of gcc 2.96. */ #ifndef ATTRIBUTE_MALLOC ! # if (__GNUC__ * 1000 + _GNUC_MINOR) >= 2096 # define ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) # else # define ATTRIBUTE_MALLOC --- 19,33 ---- #ifndef __attribute__ # if !defined __GNUC__ || !defined __GNUC_MINOR__ ! # define __attribute__(x) ! # elif (__GNUC__ * 1000 + __GNUC_MINOR__) < 2007 ! # define __attribute__(x) # endif #endif /* Attribute __malloc__ on functions was valid as of gcc 2.96. */ #ifndef ATTRIBUTE_MALLOC ! # if (__GNUC__ * 1000 + __GNUC_MINOR__) >= 2096 # define ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) # else # define ATTRIBUTE_MALLOC *************** *** 36,42 **** /* Attribute __pure__ on functions was valid as of gcc 2.96. */ #ifndef ATTRIBUTE_PURE ! # if (__GNUC__ * 1000 + _GNUC_MINOR) >= 2096 # define ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define ATTRIBUTE_PURE --- 36,42 ---- /* Attribute __pure__ on functions was valid as of gcc 2.96. */ #ifndef ATTRIBUTE_PURE ! # if (__GNUC__ * 1000 + __GNUC_MINOR__) >= 2096 # define ATTRIBUTE_PURE __attribute__ ((__pure__)) # else # define ATTRIBUTE_PURE diff -rNC3 smalltalk-2.1.1/lib-src/ftruncate.c smalltalk-2.1.2/lib-src/ftruncate.c *** smalltalk-2.1.1/lib-src/ftruncate.c Tue Mar 4 20:45:02 2003 --- smalltalk-2.1.2/lib-src/ftruncate.c Tue Apr 29 16:16:52 2003 *************** *** 1,64 **** ! /* ftruncate replacement for Win32 ! Copyright (C) 2003 The GLib team ! ! This program is free software; you can redistribute it and/or ! modify it under the terms of the GNU Lesser General Public License ! as published by the Free Software Foundation; either version 2.1, ! or (at your option) any later version. ! ! This program 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 Lesser General Public ! License along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ! USA. ! ! */ ! ! #if defined __MSVCRT__ || defined __CYGWIN__ || defined __CYGWIN32__ || defined WIN32 || defined _WIN32 || defined __WIN32__ ! #define WIN32_LEAN_AND_MEAN ! #include ! #else ! #error Sorry, an alternative ftruncate implementation is only provided for Win32. Write to help-smalltalk@gnu.org. ! #endif ! ! #include ! #include ! #include ! ! int ! ftruncate (int fd, unsigned int size) ! { ! HANDLE hfile; ! unsigned int curpos; ! ! if (fd < 0) ! { ! errno = EBADF; ! return -1; ! } ! ! hfile = (HANDLE) _get_osfhandle (fd); ! curpos = SetFilePointer (hfile, 0, NULL, FILE_CURRENT); ! if (curpos == ~0 ! || SetFilePointer (hfile, size, NULL, FILE_BEGIN) == ~0 ! || !SetEndOfFile (hfile)) ! { ! int error = GetLastError (); ! switch (error) ! { ! case ERROR_INVALID_HANDLE: ! errno = EBADF; ! break; ! default: ! errno = EIO; ! break; ! } ! return -1; ! } ! return 0; ! } ! --- 1,64 ---- ! /* ftruncate replacement for Win32 ! Copyright (C) 2003 The GLib team ! ! This program is free software; you can redistribute it and/or ! modify it under the terms of the GNU Lesser General Public License ! as published by the Free Software Foundation; either version 2.1, ! or (at your option) any later version. ! ! This program 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 Lesser General Public ! License along with this program; if not, write to the Free Software ! Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, ! USA. ! ! */ ! ! #if defined __MSVCRT__ || defined __CYGWIN__ || defined __CYGWIN32__ || defined WIN32 || defined _WIN32 || defined __WIN32__ ! #define WIN32_LEAN_AND_MEAN ! #include ! #else ! #error Sorry, an alternative ftruncate implementation is only provided for Win32. Write to help-smalltalk@gnu.org. ! #endif ! ! #include ! #include ! #include ! ! int ! ftruncate (int fd, unsigned int size) ! { ! HANDLE hfile; ! unsigned int curpos; ! ! if (fd < 0) ! { ! errno = EBADF; ! return -1; ! } ! ! hfile = (HANDLE) _get_osfhandle (fd); ! curpos = SetFilePointer (hfile, 0, NULL, FILE_CURRENT); ! if (curpos == ~0 ! || SetFilePointer (hfile, size, NULL, FILE_BEGIN) == ~0 ! || !SetEndOfFile (hfile)) ! { ! int error = GetLastError (); ! switch (error) ! { ! case ERROR_INVALID_HANDLE: ! errno = EBADF; ! break; ! default: ! errno = EIO; ! break; ! } ! return -1; ! } ! return 0; ! } ! diff -rNC3 smalltalk-2.1.1/libgst/ChangeLog smalltalk-2.1.2/libgst/ChangeLog *** smalltalk-2.1.1/libgst/ChangeLog Fri Apr 18 10:25:47 2003 --- smalltalk-2.1.2/libgst/ChangeLog Fri May 9 09:25:22 2003 *************** *** 1,4 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. --- 1,68 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! * libgst/alloc.c: rationalize inclusions ! * libgst/byte.c: rationalize inclusions ! * libgst/callin.c: rationalize inclusions ! * libgst/cint.c: rationalize inclusions ! * libgst/comp.c: rationalize inclusions ! * libgst/dict.c: rationalize inclusions ! * libgst/dict.inl: rationalize inclusions ! * libgst/events.c: rationalize inclusions ! * libgst/gstpriv.h: add more inclusions ! * libgst/heap.c: rationalize inclusions ! * libgst/input.c: rationalize inclusions ! * libgst/interp-bc.inl: rationalize inclusions ! * libgst/interp.c: rationalize inclusions ! * libgst/interp.inl: rationalize inclusions ! * libgst/lex.c: rationalize inclusions ! * libgst/lib.c: rationalize inclusions ! * libgst/mpz.c: rationalize inclusions ! * libgst/oop.c: rationalize inclusions ! * libgst/opt.c: rationalize inclusions ! * libgst/print.c: rationalize inclusions ! * libgst/save.c: rationalize inclusions ! * libgst/str.c: rationalize inclusions ! * libgst/sym.c: rationalize inclusions ! * libgst/sysdep.c: rationalize inclusions ! * libgst/tree.c: rationalize inclusions ! * libgst/xlat.c: rationalize inclusions ! * libgst/comp.h: rationalize inclusions ! * libgst/opt.h: rationalize inclusions ! * libgst/interp.h: rationalize inclusions ! ! 2003-05-06 Paolo Bonzini ! ! * libgst/interp.c: define PROTECT_CURRENT_PROCESS_WITH ! and PROTECT_FROM_INTERRUPT_WITH. Use them in ! parse_stream_with_protection ! * libgst/prims.def: use them. ! ! * libgst/cint.h: declare _gst_errno and _gst_set_errno ! * libgst/cint.c: saved_errno -> _gst_errno, implement ! _gst_set_errno ! * libgst/prims.def: the VMpr_ObjectMemory_snapshot ! primitive can fail; use _gst_set_errno ! ! * libgst/save.c: invoke hook after opening the file. ! ! 2003-04-28 Paolo Bonzini ! ! * libgst/input.c: don't advance the pointer in a ! STREAM_STRING after EOF; don't unread an EOF as ! _gst_next_char will return an EOF again. ! * libgst/lex.c: change the lexing functions to ! accept an int so that EOF and 255 are not confused. ! ! 2003-04-27 Paolo Bonzini ! ! * libgst/sysdep.c: return ENOMEM properly under Win32. ! Separate detection of availability of a particular technique ! and reservation of memory. find_heap_base renamed to ! anon_mmap_check. ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. *************** *** 7,13 **** a macro which is used the same way when MAP_ANON is used and when it is not. ! 2002-04-16 Paolo Bonzini * libgst/genpr-parse.y: add ATTRIBUTE_UNUSED attributes to the primitives' arguments. --- 71,77 ---- a macro which is used the same way when MAP_ANON is used and when it is not. ! 2003-04-16 Paolo Bonzini * libgst/genpr-parse.y: add ATTRIBUTE_UNUSED attributes to the primitives' arguments. *************** *** 20,47 **** testing mode, disable regression testing mode when loading .stpre. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. ! 2002-04-09 Paolo Bonzini * libgst/interp-bc.inl: endExecution must FLUSH, not END (this broke the IA64). ! 2002-04-08 Paolo Bonzini * libgst/interp.inl: add definitions to support broken inttypes.h like FreeBSD's. * libgst/sysdep.c: move the declaration of the FD static variable before _gst_osmem_alloc. ! 2002-04-07 Paolo Bonzini * libgst/dict.c: fix mismatch between sizeof argument and actual type. ! 2002-03-30 Paolo Bonzini * libgst/lex.c: strdup -> xstrdup * libgst/alloc.c: define xstrdup --- 84,111 ---- testing mode, disable regression testing mode when loading .stpre. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. ! 2003-04-09 Paolo Bonzini * libgst/interp-bc.inl: endExecution must FLUSH, not END (this broke the IA64). ! 2003-04-08 Paolo Bonzini * libgst/interp.inl: add definitions to support broken inttypes.h like FreeBSD's. * libgst/sysdep.c: move the declaration of the FD static variable before _gst_osmem_alloc. ! 2003-04-07 Paolo Bonzini * libgst/dict.c: fix mismatch between sizeof argument and actual type. ! 2003-03-30 Paolo Bonzini * libgst/lex.c: strdup -> xstrdup * libgst/alloc.c: define xstrdup *************** *** 51,57 **** * libgst/lib.c: strdup -> xstrdup * libgst/sysdep.c: strdup -> xstrdup ! 2002-03-26 Paolo Bonzini * libgst/byte.c: remove checks on availability of bytecode array. Make explicit calls to allocate bytecode array. --- 115,121 ---- * libgst/lib.c: strdup -> xstrdup * libgst/sysdep.c: strdup -> xstrdup ! 2003-03-26 Paolo Bonzini * libgst/byte.c: remove checks on availability of bytecode array. Make explicit calls to allocate bytecode array. *************** *** 71,118 **** * libgst/save.c: check for file version <= VERSION_REQUIRED, not ==. ! 2002-03-23 Paolo Bonzini * libgst/prims.def: extract a loop invariant from VMpr_Behavior_someInstance ! 2002-03-21 Paolo Bonzini * libgst/sysdep.c: added _gst_full_write * libgst/input.c: use it instead of _gst_write * libgst/save.c: use it instead of _gst_write ! 2002-03-19 Paolo Bonzini * libgst/sysdep.c: always provide _gst_recv & _gst_send * libgst/sysdep.h: always declare them * libgst/save.c: include socketx.h ! 2002-03-15 Paolo Bonzini * libgst/dict.inl: fix initialization of word subclasses. ! 2002-03-14 Paolo Bonzini * libgst/sysdep.c: make _gst_read and _gst_write abort on EFAULT * libgst/prims.def: use them * libgst/input.c: use them ! 2002-03-04 Paolo Bonzini * libgst/lib.c: load exception handling before VFS. * libgst/sysdep.c: redisorganize _gst_open_pipe into separate functions. Use spawnl and Win32 pipes if available. ! 2002-03-02 Paolo Bonzini * libgst/oop.c: don't reset the heap_limit if the heap was grown. ! 2002-03-01 Paolo Bonzini * libgst/heap.c: move system dependent stuff * libgst/sysdep.c: ...here --- 135,182 ---- * libgst/save.c: check for file version <= VERSION_REQUIRED, not ==. ! 2003-03-23 Paolo Bonzini * libgst/prims.def: extract a loop invariant from VMpr_Behavior_someInstance ! 2003-03-21 Paolo Bonzini * libgst/sysdep.c: added _gst_full_write * libgst/input.c: use it instead of _gst_write * libgst/save.c: use it instead of _gst_write ! 2003-03-19 Paolo Bonzini * libgst/sysdep.c: always provide _gst_recv & _gst_send * libgst/sysdep.h: always declare them * libgst/save.c: include socketx.h ! 2003-03-15 Paolo Bonzini * libgst/dict.inl: fix initialization of word subclasses. ! 2003-03-14 Paolo Bonzini * libgst/sysdep.c: make _gst_read and _gst_write abort on EFAULT * libgst/prims.def: use them * libgst/input.c: use them ! 2003-03-04 Paolo Bonzini * libgst/lib.c: load exception handling before VFS. * libgst/sysdep.c: redisorganize _gst_open_pipe into separate functions. Use spawnl and Win32 pipes if available. ! 2003-03-02 Paolo Bonzini * libgst/oop.c: don't reset the heap_limit if the heap was grown. ! 2003-03-01 Paolo Bonzini * libgst/heap.c: move system dependent stuff * libgst/sysdep.c: ...here *************** *** 132,138 **** * libgst/heap.h: declare them * libgst/alloc.c: use them ! 2002-02-28 Paolo Bonzini * lib-src/signalx.h: new file * lib-src/signalx.c: new file --- 196,202 ---- * libgst/heap.h: declare them * libgst/alloc.c: use them ! 2003-02-28 Paolo Bonzini * lib-src/signalx.h: new file * lib-src/signalx.c: new file *************** *** 141,154 **** * libgst/interp.c: include signalx.h * libgst/sysdep.c: include signalx.h ! 2002-02-28 Paolo Bonzini * libgst/sysdep.c: cook up a simple mechanism to disable and enable signals where the OS does not provide that (again, MinGW32). Fix semicolons in DISABLE and ENABLE. Don't block fatal errors. ! 2002-02-27 Paolo Bonzini * libgst/cint.c: turn malloc to xmalloc * libgst/save.c: turn malloc to xmalloc --- 205,218 ---- * libgst/interp.c: include signalx.h * libgst/sysdep.c: include signalx.h ! 2003-02-28 Paolo Bonzini * libgst/sysdep.c: cook up a simple mechanism to disable and enable signals where the OS does not provide that (again, MinGW32). Fix semicolons in DISABLE and ENABLE. Don't block fatal errors. ! 2003-02-27 Paolo Bonzini * libgst/cint.c: turn malloc to xmalloc * libgst/save.c: turn malloc to xmalloc *************** *** 161,174 **** * libgst/sysdep.h: declare it and PROT_* * libgst/oop.c: use it ! 2002-02-25 Paolo Bonzini * libgst/oop.c: avoid out-of-memory while compacting * libgst/print.c: tweak the precision for FloatE's, FloatD's and FloatQ's depending on float.h, except in regression testing mode. ! 2002-02-15 Paolo Bonzini * libgst/heap.c: support !HAVE_SBRK * libgst/prims.def: support !HAVE_USLEEP --- 225,238 ---- * libgst/sysdep.h: declare it and PROT_* * libgst/oop.c: use it ! 2003-02-25 Paolo Bonzini * libgst/oop.c: avoid out-of-memory while compacting * libgst/print.c: tweak the precision for FloatE's, FloatD's and FloatQ's depending on float.h, except in regression testing mode. ! 2003-02-15 Paolo Bonzini * libgst/heap.c: support !HAVE_SBRK * libgst/prims.def: support !HAVE_USLEEP *************** *** 178,184 **** * libgst/sysdep.c: ditto * libgst/events.c: ditto ! 2002-02-13 Paolo Bonzini * libgst/gst.h: tweak a little the definition of alloca * libgst/heap.c: fix typos, add WIN32_LEAN_AND_MEAN --- 242,248 ---- * libgst/sysdep.c: ditto * libgst/events.c: ditto ! 2003-02-13 Paolo Bonzini * libgst/gst.h: tweak a little the definition of alloca * libgst/heap.c: fix typos, add WIN32_LEAN_AND_MEAN *************** *** 187,193 **** * libgst/save.c: disable mmap-ing under WIN32 * libgst/sysdep.c: add WIN32_LEAN_AND_MEAN ! 2003-02-09 Paolo Bonzini (bonzini@gnu.org) * libgst/interp.c: don't print C backtrace during compilation if SIGINT is received. --- 251,257 ---- * libgst/save.c: disable mmap-ing under WIN32 * libgst/sysdep.c: add WIN32_LEAN_AND_MEAN ! 2003-03-09 Paolo Bonzini (bonzini@gnu.org) * libgst/interp.c: don't print C backtrace during compilation if SIGINT is received. diff -rNC3 smalltalk-2.1.1/libgst/Makefile.am smalltalk-2.1.2/libgst/Makefile.am *** smalltalk-2.1.1/libgst/Makefile.am Fri Apr 4 09:22:25 2003 --- smalltalk-2.1.2/libgst/Makefile.am Fri May 9 10:41:42 2003 *************** *** 1,8 **** ! EXTRA_DIST = valgrind.supp \ ! prims.def ! # This switch is not included in libtool 1.4, but it will be included ! # in libtool 1.5; I have plugged it back in libtool 1.4, so that it is # upwards compatible. LIBTOOL = @LIBTOOL@ --tag disable-shared --- 1,21 ---- ! dist_noinst_DATA = valgrind.supp prims.def ! if USE_JIT_TRANSLATION ! INCLIGHTNING = -I$(top_srcdir)/lightning -I$(top_builddir)/lightning ! else ! INCLIGHTNING = ! endif ! ! if HAVE_SIGSEGV ! INCSIGSEGV = -I$(top_srcdir)/sigsegv/src -I$(top_builddir)/sigsegv/src ! LIBSIGSEGV = $(top_builddir)/sigsegv/src/libsigsegv.la ! else ! INCSIGSEGV = ! LIBSIGSEGV = ! endif ! ! # This switch is not included in libtool 1.4, but it is included in ! # libtool 1.5; I have plugged it back in libtool 1.4, so that it is # upwards compatible. LIBTOOL = @LIBTOOL@ --tag disable-shared *************** *** 13,21 **** AM_CPPFLAGS = -DKERNEL_PATH=\"$(pkgdatadir)/kernel\" -Wall \ -DIMAGE_PATH=\"$(pkgdatadir)\" -DMODULE_PATH=\"$(pkglibdir)\" ! INCLUDES = -I$(top_srcdir)/lib-src -I$(top_srcdir)/lightning \ ! -I$(top_builddir)/lightning @INCLTDL@ @INCSNPRINTFV@ \ ! -I$(top_srcdir)/sigsegv/src -I$(top_builddir)/sigsegv/src include_HEADERS = gstpub.h gst.h noinst_PROGRAMS = genprims --- 26,33 ---- AM_CPPFLAGS = -DKERNEL_PATH=\"$(pkgdatadir)/kernel\" -Wall \ -DIMAGE_PATH=\"$(pkgdatadir)\" -DMODULE_PATH=\"$(pkglibdir)\" ! INCLUDES = -I$(top_srcdir)/lib-src $(INCLIGHTNING) \ ! @INCLTDL@ @INCSNPRINTFV@ $(INCSIGSEGV) include_HEADERS = gstpub.h gst.h noinst_PROGRAMS = genprims *************** *** 23,35 **** # definitions for libgst.la ! libgst_la_LIBADD=$(top_builddir)/lib-src/library.la \ ! $(top_builddir)/sigsegv/src/libsigsegv.la \ @LIBLTDL@ @LIBSNPRINTFV@ @LIBREADLINE@ @LIBGMP@ libgst_la_LDFLAGS = -version-info $(VERSION_INFO) ! libgst_la_DEPENDENCIES=$(top_builddir)/lib-src/library.la \ ! $(top_builddir)/sigsegv/src/libsigsegv.la \ @LIBLTDL@ @LIBSNPRINTFV@ @LIBREADLINE@ @LIBGMP@ libgst_la_SOURCES = \ --- 35,45 ---- # definitions for libgst.la ! libgst_la_LIBADD=$(top_builddir)/lib-src/library.la $(LIBSIGSEGV) \ @LIBLTDL@ @LIBSNPRINTFV@ @LIBREADLINE@ @LIBGMP@ libgst_la_LDFLAGS = -version-info $(VERSION_INFO) ! libgst_la_DEPENDENCIES=$(top_builddir)/lib-src/library.la $(LIBSIGSEGV) \ @LIBLTDL@ @LIBSNPRINTFV@ @LIBREADLINE@ @LIBGMP@ libgst_la_SOURCES = \ diff -rNC3 smalltalk-2.1.1/libgst/Makefile.in smalltalk-2.1.2/libgst/Makefile.in *** smalltalk-2.1.1/libgst/Makefile.in Thu Apr 17 11:43:12 2003 --- smalltalk-2.1.2/libgst/Makefile.in Fri May 9 11:58:46 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ *************** *** 95,102 **** LIBSNPRINTFV = @LIBSNPRINTFV@ LIBTCLTK = @LIBTCLTK@ ! # This switch is not included in libtool 1.4, but it will be included ! # in libtool 1.5; I have plugged it back in libtool 1.4, so that it is # upwards compatible. LIBTOOL = @LIBTOOL@ --tag disable-shared LIGHTNING_MAIN_FALSE = @LIGHTNING_MAIN_FALSE@ --- 97,104 ---- LIBSNPRINTFV = @LIBSNPRINTFV@ LIBTCLTK = @LIBTCLTK@ ! # This switch is not included in libtool 1.4, but it is included in ! # libtool 1.5; I have plugged it back in libtool 1.4, so that it is # upwards compatible. LIBTOOL = @LIBTOOL@ --tag disable-shared LIGHTNING_MAIN_FALSE = @LIGHTNING_MAIN_FALSE@ *************** *** 174,182 **** subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ ! EXTRA_DIST = valgrind.supp \ ! prims.def LEX_OUTPUT_ROOT = lex.yy AM_LFLAGS = -Cfe -o$(LEX_OUTPUT_ROOT).c --- 176,190 ---- subdirs = @subdirs@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ ! dist_noinst_DATA = valgrind.supp prims.def + @USE_JIT_TRANSLATION_TRUE@INCLIGHTNING = -I$(top_srcdir)/lightning -I$(top_builddir)/lightning + @USE_JIT_TRANSLATION_FALSE@INCLIGHTNING = + @HAVE_SIGSEGV_FALSE@INCSIGSEGV = + + @HAVE_SIGSEGV_TRUE@INCSIGSEGV = -I$(top_srcdir)/sigsegv/src -I$(top_builddir)/sigsegv/src + @HAVE_SIGSEGV_FALSE@LIBSIGSEGV = + @HAVE_SIGSEGV_TRUE@LIBSIGSEGV = $(top_builddir)/sigsegv/src/libsigsegv.la LEX_OUTPUT_ROOT = lex.yy AM_LFLAGS = -Cfe -o$(LEX_OUTPUT_ROOT).c *************** *** 185,193 **** -DIMAGE_PATH=\"$(pkgdatadir)\" -DMODULE_PATH=\"$(pkglibdir)\" ! INCLUDES = -I$(top_srcdir)/lib-src -I$(top_srcdir)/lightning \ ! -I$(top_builddir)/lightning @INCLTDL@ @INCSNPRINTFV@ \ ! -I$(top_srcdir)/sigsegv/src -I$(top_builddir)/sigsegv/src include_HEADERS = gstpub.h gst.h --- 193,200 ---- -DIMAGE_PATH=\"$(pkgdatadir)\" -DMODULE_PATH=\"$(pkglibdir)\" ! INCLUDES = -I$(top_srcdir)/lib-src $(INCLIGHTNING) \ ! @INCLTDL@ @INCSNPRINTFV@ $(INCSIGSEGV) include_HEADERS = gstpub.h gst.h *************** *** 196,209 **** # definitions for libgst.la ! libgst_la_LIBADD = $(top_builddir)/lib-src/library.la \ ! $(top_builddir)/sigsegv/src/libsigsegv.la \ @LIBLTDL@ @LIBSNPRINTFV@ @LIBREADLINE@ @LIBGMP@ libgst_la_LDFLAGS = -version-info $(VERSION_INFO) ! libgst_la_DEPENDENCIES = $(top_builddir)/lib-src/library.la \ ! $(top_builddir)/sigsegv/src/libsigsegv.la \ @LIBLTDL@ @LIBSNPRINTFV@ @LIBREADLINE@ @LIBGMP@ --- 203,214 ---- # definitions for libgst.la ! libgst_la_LIBADD = $(top_builddir)/lib-src/library.la $(LIBSIGSEGV) \ @LIBLTDL@ @LIBSNPRINTFV@ @LIBREADLINE@ @LIBGMP@ libgst_la_LDFLAGS = -version-info $(VERSION_INFO) ! libgst_la_DEPENDENCIES = $(top_builddir)/lib-src/library.la $(LIBSIGSEGV) \ @LIBLTDL@ @LIBSNPRINTFV@ @LIBREADLINE@ @LIBGMP@ *************** *** 295,304 **** LTYACCCOMPILE = $(LIBTOOL) --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) YLWRAP = $(top_srcdir)/config/ylwrap DIST_SOURCES = $(libgst_la_SOURCES) $(genprims_SOURCES) HEADERS = $(include_HEADERS) $(nodist_noinst_HEADERS) $(noinst_HEADERS) ! DIST_COMMON = $(include_HEADERS) $(noinst_HEADERS) ChangeLog \ ! Makefile.am Makefile.in genpr-parse.c genpr-scan.c gst-parse.c SOURCES = $(libgst_la_SOURCES) $(genprims_SOURCES) all: $(BUILT_SOURCES) --- 300,312 ---- LTYACCCOMPILE = $(LIBTOOL) --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) YLWRAP = $(top_srcdir)/config/ylwrap DIST_SOURCES = $(libgst_la_SOURCES) $(genprims_SOURCES) + DATA = $(dist_noinst_DATA) + HEADERS = $(include_HEADERS) $(nodist_noinst_HEADERS) $(noinst_HEADERS) ! DIST_COMMON = $(dist_noinst_DATA) $(include_HEADERS) $(noinst_HEADERS) \ ! ChangeLog Makefile.am Makefile.in genpr-parse.c genpr-scan.c \ ! gst-parse.c SOURCES = $(libgst_la_SOURCES) $(genprims_SOURCES) all: $(BUILT_SOURCES) *************** *** 541,547 **** done check-am: all-am check: check-am ! all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(HEADERS) installdirs: $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) --- 549,555 ---- done check-am: all-am check: check-am ! all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) installdirs: $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) diff -rNC3 smalltalk-2.1.1/libgst/alloc.c smalltalk-2.1.2/libgst/alloc.c *** smalltalk-2.1.1/libgst/alloc.c Thu Apr 17 11:37:26 2003 --- smalltalk-2.1.2/libgst/alloc.c Fri May 9 12:02:03 2003 *************** *** 27,56 **** * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ***********************************************************************/ - #ifdef HAVE_CONFIG_H - #include "config.h" - #endif - - #include "gst.h" #include "gstpriv.h" - #include - #include - - #ifdef HAVE_UNISTD_H - #include - #endif - - #if STDC_HEADERS - #include - #include - #endif /* STDC_HEADERS */ - - #ifdef HAVE_EXECINFO_H - #include - #endif - - /* Define to provide a log of memory allocations on stderr. */ /* #define LOG_MEMORY_OPERATIONS */ --- 27,34 ---- *************** *** 894,900 **** k = (long) block; i = 18; do ! buf[i--] = (k & 15) < 10 ? (k & 15) + 48 : (k & 15) + 55; while (k >>= 4); buf[i--] = 'x'; buf[i] = '0'; --- 872,878 ---- k = (long) block; i = 18; do ! buf[i--] = (k & 15) + ((k & 15) < 10 ? '0' : 'a'); while (k >>= 4); buf[i--] = 'x'; buf[i] = '0'; *************** *** 904,910 **** k = (long) n; i = 38; do ! buf[i--] = (k % 10) + 48; while (k /= 10); } --- 882,888 ---- k = (long) n; i = 38; do ! buf[i--] = (k % 10) + '0'; while (k /= 10); } diff -rNC3 smalltalk-2.1.1/libgst/byte.c smalltalk-2.1.2/libgst/byte.c *** smalltalk-2.1.1/libgst/byte.c Thu Mar 27 21:49:51 2003 --- smalltalk-2.1.2/libgst/byte.c Fri May 9 09:02:13 2003 *************** *** 29,43 **** * ***********************************************************************/ - - #include "gst.h" #include "gstpriv.h" - - #if STDC_HEADERS - #include /* for memcpy */ - #include - #endif /* STDC_HEADERS */ - #include #define BYTECODE_CHUNK_SIZE 64 --- 29,35 ---- diff -rNC3 smalltalk-2.1.1/libgst/callin.c smalltalk-2.1.2/libgst/callin.c *** smalltalk-2.1.1/libgst/callin.c Sun Dec 15 14:33:22 2002 --- smalltalk-2.1.2/libgst/callin.c Fri May 9 09:02:37 2003 *************** *** 34,51 **** * ***********************************************************************/ - - #include "gst.h" #include "gstpriv.h" - - #include - #if STDC_HEADERS - #include - #endif /* STDC_HEADERS */ - - #include - - #include #ifndef NAN #define NAN (0.0 / 0.0) --- 34,40 ---- diff -rNC3 smalltalk-2.1.1/libgst/cint.c smalltalk-2.1.2/libgst/cint.c *** smalltalk-2.1.1/libgst/cint.c Fri Feb 28 09:35:47 2003 --- smalltalk-2.1.2/libgst/cint.c Fri May 9 09:05:27 2003 *************** *** 30,72 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" #include - #ifdef STDC_HEADERS - # include - # include - #endif /* STDC_HEADERS */ - - #include - #include - #include - #include - - #ifdef HAVE_UNISTD_H - #include - #endif - - #ifdef HAVE_DIRENT_H - # include - # define NAMLEN(dirent) strlen((dirent)->d_name) - #else - # define dirent direct - # define NAMLEN(dirent) (dirent)->d_namlen - # ifdef HAVE_SYS_NDIR_H - # include - # endif - # ifdef HAVE_SYS_DIR_H - # include - # endif - # ifdef HAVE_NDIR_H - # include - # endif - #endif - - #define ARG_VEC_SIZE 20 /* 20 shorts, 10 longs or ptrs, 5 dbls */ typedef enum --- 30,39 ---- *************** *** 239,247 **** static int get_argc (void); static char *get_argv (int n); - /* The errno on output from a callout */ - static int saved_errno; - /* The binary tree of function names vs. function addresses. */ static cfunc_info *c_func_root = NULL; --- 206,211 ---- *************** *** 334,339 **** --- 298,307 ---- sizeof (float), /* CDATA_FLOAT */ sizeof (double) /* CDATA_DOUBLE */ }; + + /* The errno on output from a callout */ + int _gst_errno; + *************** *** 349,358 **** int get_errno (void) { ! int returned; ! returned = saved_errno; ! saved_errno = 0; ! return (returned); } int --- 317,326 ---- int get_errno (void) { ! int old; ! old = _gst_errno; ! _gst_errno = 0; ! return (old); } int *************** *** 1062,1077 **** break; } ! /* ENOTEMPTY and EEXIST are synonymous; some systems use one, and ! some use the other. We always uses EEXIST which is provided by all ! systems. */ ! ! #ifdef ENOTEMPTY ! saved_errno = (errno == ENOTEMPTY) ? EEXIST : errno; ! #else ! saved_errno = errno; ! #endif ! return resultOOP; } --- 1030,1036 ---- break; } ! _gst_set_errno (errno); return resultOOP; } *************** *** 1188,1193 **** --- 1147,1166 ---- xfree (symbolName); return (FROM_INT (CDATA_UNKNOWN)); + } + + void + _gst_set_errno(int errnum) + { + /* ENOTEMPTY and EEXIST are synonymous; some systems use one, and + some use the other. We always uses EEXIST which is provided by all + systems. */ + + #ifdef ENOTEMPTY + _gst_errno = (errnum == ENOTEMPTY) ? EEXIST : errnum; + #else + _gst_errno = errnum; + #endif } void diff -rNC3 smalltalk-2.1.1/libgst/cint.h smalltalk-2.1.2/libgst/cint.h *** smalltalk-2.1.1/libgst/cint.h Thu Nov 14 23:24:45 2002 --- smalltalk-2.1.2/libgst/cint.h Tue May 6 17:05:54 2003 *************** *** 34,39 **** --- 34,41 ---- #ifndef GST_CINT_H #define GST_CINT_H + /* Value of errno which is checked by the Smalltalk base classes. */ + extern int _gst_errno; /* Element type for the name-to-C-function mapping table. */ typedef void (*p_void_func) (); *************** *** 83,87 **** --- 85,91 ---- OOP returnTypeOOP, OOP argsOOP); + /* Set the value of errno which is checked by Smalltalk to be errnum. */ + extern void _gst_set_errno(int errnum); #endif /* GST_CINT_H */ diff -rNC3 smalltalk-2.1.1/libgst/comp.c smalltalk-2.1.2/libgst/comp.c *** smalltalk-2.1.1/libgst/comp.c Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/libgst/comp.c Fri May 9 09:04:09 2003 *************** *** 29,58 **** * ***********************************************************************/ - - #include "gst.h" #include "gstpriv.h" - #include "obstack.h" - - #include - #include - #include /* for printf */ - - #if defined(HAVE_SYS_TIME_H) || defined(TIME_WITH_SYS_TIME) - # include - #endif - #if !defined(HAVE_SYS_TIME_H) || defined(TIME_WITH_SYS_TIME) - # include - #endif - - #ifdef HAVE_SYS_RESOURCE_H - # include - #endif - - #if STDC_HEADERS - #include - #include - #endif /* STDC_HEADERS */ /* Define this if you want declaration tracing to print the bytecodes both *before* and *after* the optimizer is ran. Default behavior --- 29,35 ---- diff -rNC3 smalltalk-2.1.1/libgst/comp.h smalltalk-2.1.2/libgst/comp.h *** smalltalk-2.1.1/libgst/comp.h Fri Apr 18 01:11:49 2003 --- smalltalk-2.1.2/libgst/comp.h Fri May 9 09:20:50 2003 *************** *** 33,41 **** #ifndef GST_COMP_H #define GST_COMP_H - #include "tree.h" - #include "byte.h" - /* These next three defines are the number of bits in a method header for the number of stack bits, the number of _gst_temporaries, and the number of arguments that the method takes. If the representation is changed, these --- 33,38 ---- diff -rNC3 smalltalk-2.1.1/libgst/dict.c smalltalk-2.1.2/libgst/dict.c *** smalltalk-2.1.1/libgst/dict.c Tue Apr 15 17:26:58 2003 --- smalltalk-2.1.2/libgst/dict.c Fri May 9 09:04:27 2003 *************** *** 29,44 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - - #include - #include - #include - #if STDC_HEADERS - #include - #include - #endif /* STDC_HEADERS */ /* this must be big enough that the Smalltalk dictionary does not have to grow between the time gst_dictionary is loaded and the time the kernel is --- 29,35 ---- diff -rNC3 smalltalk-2.1.1/libgst/dict.inl smalltalk-2.1.2/libgst/dict.inl *** smalltalk-2.1.1/libgst/dict.inl Thu Apr 17 11:37:45 2003 --- smalltalk-2.1.2/libgst/dict.inl Fri May 9 09:09:07 2003 *************** *** 28,50 **** * ***********************************************************************/ - #if STDC_HEADERS - #include - #include - #endif /* STDC_HEADERS */ - - /* TODO: replace this cruft with autoconf tests that generate a stdint.h */ - #if defined HAVE_INTTYPES_H - #include - #elif defined HAVE_STDINT_H - #include - #elif defined __GNUC__ - typedef long long int64_t; - typedef unsigned long long uint64_t; - #endif - - #include - /* Scramble the bits of X. */ static inline unsigned long scramble (unsigned long x); --- 28,33 ---- diff -rNC3 smalltalk-2.1.1/libgst/events.c smalltalk-2.1.2/libgst/events.c *** smalltalk-2.1.1/libgst/events.c Fri Feb 28 12:46:11 2003 --- smalltalk-2.1.2/libgst/events.c Fri May 9 09:04:39 2003 *************** *** 28,50 **** * ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - - #include - #include - #include "signalx.h" - - #ifdef HAVE_UNISTD_H - #include - #endif - - #if defined(HAVE_SYS_TIME_H) || defined(TIME_WITH_SYS_TIME) - # include - #endif - #if !defined(HAVE_SYS_TIME_H) || defined(TIME_WITH_SYS_TIME) - # include - #endif /* This structure defines a list of pairs `struct pollfd'->semaphore --- 28,34 ---- diff -rNC3 smalltalk-2.1.1/libgst/gstpriv.h smalltalk-2.1.2/libgst/gstpriv.h *** smalltalk-2.1.1/libgst/gstpriv.h Fri Apr 18 10:38:56 2003 --- smalltalk-2.1.2/libgst/gstpriv.h Fri May 9 09:21:22 2003 *************** *** 33,38 **** --- 33,39 ---- #define GST_GSTPRIV_H #include "config.h" + #include "gst.h" #if SIZEOF_CHAR_P != SIZEOF_LONG #error longs and pointer have different sizes *************** *** 433,444 **** --- 434,492 ---- #define END_MACRO else (void)0 #endif + #include #include #include + #include #include #include + #include #include #include + #include + #include + #include + #include + #include + #include + #include + #include + + #ifdef HAVE_DIRENT_H + # include + # define NAMLEN(dirent) strlen((dirent)->d_name) + #else + # define dirent direct + # define NAMLEN(dirent) (dirent)->d_namlen + # ifdef HAVE_SYS_NDIR_H + # include + # endif + # ifdef HAVE_SYS_DIR_H + # include + # endif + # ifdef HAVE_NDIR_H + # include + # endif + #endif + + #if defined(HAVE_SYS_TIME_H) || defined(TIME_WITH_SYS_TIME) + # include + #endif + #if !defined(HAVE_SYS_TIME_H) || defined(TIME_WITH_SYS_TIME) + # include + #endif + + #ifdef HAVE_SYS_RESOURCE_H + #include + #endif + + #ifdef HAVE_EXECINFO_H + #include + #endif + + #ifdef HAVE_SYS_FILE_H + #include + #endif #ifdef HAVE_UNISTD_H #include *************** *** 448,462 **** #include #endif #include "ansidecl.h" #include "signalx.h" ! #include "alloc.h" #include "md-config.h" #include "memzero.h" #include "avltrees.h" #include "rbtrees.h" - #include "sigsegv.h" #include "tree.h" #include "input.h" --- 496,530 ---- #include #endif + /* TODO: replace this cruft with autoconf tests that generate a stdint.h */ + #if defined HAVE_INTTYPES_H + #include + #elif defined HAVE_STDINT_H + #include + #elif defined __GNUC__ + typedef long long int64_t; + typedef unsigned long long uint64_t; + #endif + + #if defined HAVE_INTTYPES_H || defined HAVE_STDINT_H + #ifndef UINTMAX_C + #define UINTMAX_C(n) n##UL + #endif + #ifndef UINTMAX_MAX + #define UINTMAX_MAX ULONG_MAX + #endif + #endif + #include "ansidecl.h" #include "signalx.h" ! #include "mathl.h" ! #include "socketx.h" ! #include "strspell.h" #include "alloc.h" #include "md-config.h" #include "memzero.h" #include "avltrees.h" #include "rbtrees.h" #include "tree.h" #include "input.h" *************** *** 467,472 **** --- 535,541 ---- #include "events.h" #include "gstpub.h" #include "heap.h" + #include "comp.h" #include "interp.h" #include "lex.h" #include "lib.h" *************** *** 475,481 **** #include "save.h" #include "str.h" #include "sysdep.h" - #include "comp.h" #include "sym.h" #include "xlat.h" #include "mpz.h" --- 544,549 ---- diff -rNC3 smalltalk-2.1.1/libgst/heap.c smalltalk-2.1.2/libgst/heap.c *** smalltalk-2.1.1/libgst/heap.c Sat Mar 1 13:11:46 2003 --- smalltalk-2.1.2/libgst/heap.c Fri May 9 09:05:04 2003 *************** *** 28,45 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - - #include - #include - #include - #include - #include - - #ifdef HAVE_UNISTD_H - # include - #endif struct heap; --- 28,34 ---- diff -rNC3 smalltalk-2.1.1/libgst/input.c smalltalk-2.1.2/libgst/input.c *** smalltalk-2.1.1/libgst/input.c Thu Apr 17 23:26:34 2003 --- smalltalk-2.1.2/libgst/input.c Fri May 9 09:05:19 2003 *************** *** 28,52 **** * ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - #include - #include - #include - #include - - #ifdef HAVE_UNISTD_H - #include - #endif - - #ifdef STDC_HEADERS - # include - # include - #endif /* STDC_HEADERS */ - - #include - #ifdef HAVE_READLINE # include # include --- 28,35 ---- *************** *** 336,343 **** switch (stream->type) { case STREAM_STRING: ! ic = (unsigned char) *stream->st_str.str++; ! return ((ic == '\0') ? EOF : ic); case STREAM_OOP: /* Refill the buffer... */ --- 319,331 ---- switch (stream->type) { case STREAM_STRING: ! ic = (unsigned char) *stream->st_str.str; ! if (!ic) ! return EOF; ! else ! stream->st_str.str++; ! ! return ic; case STREAM_OOP: /* Refill the buffer... */ *************** *** 806,812 **** void _gst_unread_char (int ic) { ! in_stream->pushedBackChars[in_stream->pushedBackCount++] = ic; } --- 794,801 ---- void _gst_unread_char (int ic) { ! if (ic != EOF) ! in_stream->pushedBackChars[in_stream->pushedBackCount++] = ic; } diff -rNC3 smalltalk-2.1.1/libgst/interp-bc.inl smalltalk-2.1.2/libgst/interp-bc.inl *** smalltalk-2.1.1/libgst/interp-bc.inl Wed Apr 9 22:14:30 2003 --- smalltalk-2.1.2/libgst/interp-bc.inl Tue May 6 19:12:47 2003 *************** *** 214,222 **** { long hashIndex; OOP methodOOP; ! REGISTER (1, gst_method_context newContext); ! REGISTER (2, method_cache_entry * methodData); ! REGISTER (3, method_header header); /* hash the selector and the class of the receiver together using XOR. Since both are addresses in the object table, and since --- 214,222 ---- { long hashIndex; OOP methodOOP; ! method_cache_entry * methodData; ! gst_method_context newContext; ! REGISTER (1, method_header header); /* hash the selector and the class of the receiver together using XOR. Since both are addresses in the object table, and since *************** *** 239,245 **** --- 239,251 ---- } } + /* Note that execute_primitive_operation might invoke a call-in, and + which might in turn modify the method cache in general and + corrupt methodData in particular. So, load everything before + this can happen. */ + header = methodData->methodHeader; + methodOOP = methodData->methodOOP; #ifndef OPTIMIZE #ifdef DEBUG_CODE_FLOW *************** *** 292,298 **** { /* 3, return literal constant */ /* replace receiver with the returned literal constant */ ! SET_STACKTOP (GET_METHOD_LITERALS (methodData->methodOOP)[0]); _gst_literal_returns++; return; } --- 298,304 ---- { /* 3, return literal constant */ /* replace receiver with the returned literal constant */ ! SET_STACKTOP (GET_METHOD_LITERALS (methodOOP)[0]); _gst_literal_returns++; return; } *************** *** 303,312 **** /* primitive succeeded. Continue with the parent context */ return; - /* primitive failed. Invoke the normal method. methodData - may be clobbered by a setjmp in - _gst_execute_primitive_operation */ - methodData = &method_cache[hashIndex]; break; case 0: /* only here so that the compiler skips a range check */ --- 309,314 ---- *************** *** 318,332 **** } } ! /* Prepare new state. - Note that activate_new_context might trigger and GC, and finalization - during the GC might in turn modify the method cache in general and - corrupt methodData in particular. This bug has never been observed - in the stable branch (2.0.x) but occurs quite commonly with the new - GC. */ - - methodOOP = methodData->methodOOP; newContext = activate_new_context (header.stack_depth, sendArgs); newContext->flags = MCF_IS_METHOD_CONTEXT; SET_THIS_METHOD (methodOOP, 0); --- 320,327 ---- } } ! /* Prepare new state. */ newContext = activate_new_context (header.stack_depth, sendArgs); newContext->flags = MCF_IS_METHOD_CONTEXT; SET_THIS_METHOD (methodOOP, 0); diff -rNC3 smalltalk-2.1.1/libgst/interp.c smalltalk-2.1.2/libgst/interp.c *** smalltalk-2.1.1/libgst/interp.c Fri Apr 18 01:12:10 2003 --- smalltalk-2.1.2/libgst/interp.c Fri May 9 12:00:16 2003 *************** *** 32,64 **** * ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - #include - #include - #include - #include "signalx.h" - #include - #include - #include - #include "strspell.h" - #include "mathl.h" - #include "socketx.h" - - #ifdef HAVE_UNISTD_H - #include - #endif - - #ifdef STDC_HEADERS - #include - #include - #endif /* STDC_HEADERS */ - - #ifdef HAVE_EXECINFO_H - #include - #endif - /* The local regs concept hopes, by caching the values of IP and SP in --- 32,39 ---- *************** *** 548,553 **** --- 523,564 ---- static RETSIGTYPE preempt_smalltalk_process (int sig); #endif + /* This macro acts as a block statement (if, for, while); it + accepts a pointer to an interp_jmp_buf and executes its body + so that the current process is suspended and SIGINT breaks + out of it. */ + #define PROTECT_CURRENT_PROCESS_WITH(jb) \ + for ((jb)->next = reentrancy_jmp_buf, \ + (jb)->suspended = 0, \ + (jb)->processOOP = get_active_process (), \ + _gst_register_oop ((jb)->processOOP), \ + reentrancy_jmp_buf = (jb), \ + in_interpreter = false; \ + !in_interpreter; \ + in_interpreter = true, \ + _gst_unregister_oop ((jb)->processOOP), \ + reentrancy_jmp_buf = reentrancy_jmp_buf->next) \ + if (setjmp (reentrancy_jmp_buf->jmpBuf) != 0) \ + continue; \ + else \ + + /* This macro acts as a block statement (if, for, while); it + accepts a pointer to an interp_jmp_buf and executes its body + so that the current process is not suspended (like in + asynchronous C call-outs) but SIGINT breaks out of it. */ + #define PROTECT_FROM_INTERRUPT_WITH(jb) \ + for ((jb)->next = reentrancy_jmp_buf, \ + (jb)->suspended = 0, \ + (jb)->processOOP = _gst_nil_oop, \ + reentrancy_jmp_buf = (jb), \ + in_interpreter = false; \ + !in_interpreter; \ + in_interpreter = true, \ + reentrancy_jmp_buf = reentrancy_jmp_buf->next) \ + if (setjmp (reentrancy_jmp_buf->jmpBuf) != 0) \ + continue; \ + else \ + /* Pick a process that is the highest-priority process different from the currently executing one, and schedule it for execution after the first sequence points. */ *************** *** 2349,2355 **** { PTR array[11]; size_t size = backtrace (array, 11); ! backtrace_symbols_fd (array + 1, size, STDERR_FILENO); } #endif } --- 2360,2366 ---- { PTR array[11]; size_t size = backtrace (array, 11); ! backtrace_symbols_fd (array + 1, size - 1, STDERR_FILENO); } #endif } *************** *** 2472,2489 **** { interp_jmp_buf localJmpBuf; ! localJmpBuf.next = reentrancy_jmp_buf; ! localJmpBuf.suspended = 0; ! localJmpBuf.processOOP = get_active_process (); ! _gst_register_oop (localJmpBuf.processOOP); ! ! reentrancy_jmp_buf = &localJmpBuf; ! in_interpreter = false; ! ! if (setjmp (reentrancy_jmp_buf->jmpBuf) == 0) _gst_parse_stream (); - - in_interpreter = true; - _gst_unregister_oop (localJmpBuf.processOOP); - reentrancy_jmp_buf = reentrancy_jmp_buf->next; } --- 2483,2488 ---- { interp_jmp_buf localJmpBuf; ! PROTECT_CURRENT_PROCESS_WITH (&localJmpBuf) _gst_parse_stream (); } diff -rNC3 smalltalk-2.1.1/libgst/interp.h smalltalk-2.1.2/libgst/interp.h *** smalltalk-2.1.1/libgst/interp.h Fri Apr 18 01:12:12 2003 --- smalltalk-2.1.2/libgst/interp.h Fri May 9 09:20:46 2003 *************** *** 33,40 **** #ifndef GST_INTERP_H #define GST_INTERP_H - #include "comp.h" - /* The number of available process priorities */ #define NUM_PRIORITIES 9 #define USER_SCHEDULING_PRIORITY 4 --- 33,38 ---- diff -rNC3 smalltalk-2.1.1/libgst/interp.inl smalltalk-2.1.2/libgst/interp.inl *** smalltalk-2.1.1/libgst/interp.inl Fri Apr 18 00:56:43 2003 --- smalltalk-2.1.2/libgst/interp.inl Fri May 9 09:10:04 2003 *************** *** 29,50 **** ***********************************************************************/ - #ifdef HAVE_INTTYPES_H - #include - #endif - #ifdef HAVE_LIMITS_H - #include - #endif - - #ifdef HAVE_INTTYPES_H - #ifndef UINTMAX_C - #define UINTMAX_C(n) n##UL - #endif - #ifndef UINTMAX_MAX - #define UINTMAX_MAX ULONG_MAX - #endif - #endif - /* Multiply a*b and in case of an overflow, answer OVERFLOWING_INT so that we can work it out the same way we do with adds and subtracts. */ --- 29,34 ---- diff -rNC3 smalltalk-2.1.1/libgst/lex.c smalltalk-2.1.2/libgst/lex.c *** smalltalk-2.1.1/libgst/lex.c Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/libgst/lex.c Fri May 9 09:06:32 2003 *************** *** 30,50 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - #include - #include - #include - #include #if defined(__FreeBSD__) #include #endif - #if STDC_HEADERS - # include - #endif /* STDC_HEADERS */ - /* Define this if you want the lexer to print all the tokens that it scans, * before passing them to the parser. */ --- 30,41 ---- *************** *** 93,104 **** static mst_Boolean is_digit (int ic); /* Answer true if C is a valid base-BASE digit. */ ! static mst_Boolean is_base_digit (char c, int base); /* Answer true if the first thing available in the stream is the string "primitive:" */ ! static mst_Boolean parse_primitive (char c, YYSTYPE * lvalp); /* Parse the fractional part of a Float constant. Store it in --- 84,95 ---- static mst_Boolean is_digit (int ic); /* Answer true if C is a valid base-BASE digit. */ ! static mst_Boolean is_base_digit (int c, int base); /* Answer true if the first thing available in the stream is the string "primitive:" */ ! static mst_Boolean parse_primitive (int c, YYSTYPE * lvalp); /* Parse the fractional part of a Float constant. Store it in *************** *** 107,113 **** is not NULL, the digits are stored in the buffer maintained by str.c, and LARGEINTEGER is set to true if numPtr does not have sufficient precision. */ ! static int parse_fraction (char c, int base, long double *numPtr, mst_Boolean *largeInteger); --- 98,104 ---- is not NULL, the digits are stored in the buffer maintained by str.c, and LARGEINTEGER is set to true if numPtr does not have sufficient precision. */ ! static int parse_fraction (int c, int base, long double *numPtr, mst_Boolean *largeInteger); *************** *** 119,125 **** digits are stored in the buffer maintained by str.c, and LARGEINTEGER is set to true if the return value does not have sufficient precision. */ ! static long double parse_digits (char c, mst_Boolean negative, int base, mst_Boolean * largeInteger); --- 110,116 ---- digits are stored in the buffer maintained by str.c, and LARGEINTEGER is set to true if the return value does not have sufficient precision. */ ! static long double parse_digits (int c, mst_Boolean negative, int base, mst_Boolean * largeInteger); *************** *** 132,172 **** int base); /* Raise an error. */ ! static int invalid (char c, YYSTYPE * lvalp); /* Parse a comment. C is '"'. Return 0 to indicate the lexer that this lexeme must be ignored. */ ! static int comment (char c, YYSTYPE * lvalp); /* Parse a character literal. C is '$' */ ! static int char_literal (char c, YYSTYPE * lvalp); /* Parse a binary operator. C is the first symbol in the selector */ ! static int parse_bin_op (char c, YYSTYPE * lvalp); /* Parse a string literal. C is '\'' */ ! static int string_literal (char c, YYSTYPE * lvalp); /* Parse a number. C is the first digit. */ ! static int parse_number (char c, YYSTYPE * lvalp); /* Parse an identifier. C is the first letter. */ ! static int parse_ident (char c, YYSTYPE * lvalp); /* Try to parse an assignment operator. C is ':'. */ ! static int parse_colon (char c, YYSTYPE * lvalp); /* Convert the digit C (if it is a valid base-BASE digit) to its value. Raise an error if it is invalid. */ ! static int digit_to_int (char c, int base); /* Raise BASE to the N-th power. */ --- 123,163 ---- int base); /* Raise an error. */ ! static int invalid (int c, YYSTYPE * lvalp); /* Parse a comment. C is '"'. Return 0 to indicate the lexer that this lexeme must be ignored. */ ! static int comment (int c, YYSTYPE * lvalp); /* Parse a character literal. C is '$' */ ! static int char_literal (int c, YYSTYPE * lvalp); /* Parse a binary operator. C is the first symbol in the selector */ ! static int parse_bin_op (int c, YYSTYPE * lvalp); /* Parse a string literal. C is '\'' */ ! static int string_literal (int c, YYSTYPE * lvalp); /* Parse a number. C is the first digit. */ ! static int parse_number (int c, YYSTYPE * lvalp); /* Parse an identifier. C is the first letter. */ ! static int parse_ident (int c, YYSTYPE * lvalp); /* Try to parse an assignment operator. C is ':'. */ ! static int parse_colon (int c, YYSTYPE * lvalp); /* Convert the digit C (if it is a valid base-BASE digit) to its value. Raise an error if it is invalid. */ ! static int digit_to_int (int c, int base); /* Raise BASE to the N-th power. */ *************** *** 180,186 **** typedef struct { ! int (*lexFunc) (char, YYSTYPE *); int retToken; int _gst_char_class; --- 171,177 ---- typedef struct { ! int (*lexFunc) (int, YYSTYPE *); int retToken; int _gst_char_class; *************** *** 406,412 **** int ! invalid (char c, YYSTYPE * lvalp) { char charName[3], *cp; --- 397,403 ---- int ! invalid (int c, YYSTYPE * lvalp) { char charName[3], *cp; *************** *** 431,437 **** int ! comment (char c, YYSTYPE * lvalp) { int ic; --- 422,428 ---- int ! comment (int c, YYSTYPE * lvalp) { int ic; *************** *** 451,457 **** } int ! char_literal (char c, YYSTYPE * lvalp) { int ic; --- 442,448 ---- } int ! char_literal (int c, YYSTYPE * lvalp) { int ic; *************** *** 473,479 **** } int ! parse_colon (char c, YYSTYPE * lvalp) { int ic; --- 464,470 ---- } int ! parse_colon (int c, YYSTYPE * lvalp) { int ic; *************** *** 491,497 **** int ! parse_bin_op (char c, YYSTYPE * lvalp) { char buf[3], *bp; --- 482,488 ---- int ! parse_bin_op (int c, YYSTYPE * lvalp) { char buf[3], *bp; *************** *** 531,537 **** } int ! string_literal (char c, YYSTYPE * lvalp) { int ic; --- 522,528 ---- } int ! string_literal (int c, YYSTYPE * lvalp) { int ic; *************** *** 564,570 **** } mst_Boolean ! parse_primitive (char c, YYSTYPE * lvalp) { mst_Boolean result; --- 555,561 ---- } mst_Boolean ! parse_primitive (int c, YYSTYPE * lvalp) { mst_Boolean result; *************** *** 575,581 **** } int ! parse_ident (char c, YYSTYPE * lvalp) { int ic, identType; --- 566,572 ---- } int ! parse_ident (int c, YYSTYPE * lvalp) { int ic, identType; *************** *** 674,680 **** } int ! parse_number (char c, YYSTYPE * lvalp) { OOP numOOP; --- 665,671 ---- } int ! parse_number (int c, YYSTYPE * lvalp) { OOP numOOP; *************** *** 871,877 **** } long double ! parse_digits (char c, mst_Boolean negative, int base, mst_Boolean * largeInteger) --- 862,868 ---- } long double ! parse_digits (int c, mst_Boolean negative, int base, mst_Boolean * largeInteger) *************** *** 915,921 **** } int ! parse_fraction (char c, int base, long double *numPtr, mst_Boolean *largeInteger) --- 906,912 ---- } int ! parse_fraction (int c, int base, long double *numPtr, mst_Boolean *largeInteger) *************** *** 954,960 **** int ! digit_to_int (char c, int base) { if (c < '0' || (c > '9' && c < 'A') || c > 'Z') --- 945,951 ---- int ! digit_to_int (int c, int base) { if (c < '0' || (c > '9' && c < 'A') || c > 'Z') *************** *** 981,987 **** } mst_Boolean ! is_base_digit (char c, int base) { if (c < '0' || (c > '9' && c < 'A') || c > 'Z') --- 972,978 ---- } mst_Boolean ! is_base_digit (int c, int base) { if (c < '0' || (c > '9' && c < 'A') || c > 'Z') diff -rNC3 smalltalk-2.1.1/libgst/lib.c smalltalk-2.1.2/libgst/lib.c *** smalltalk-2.1.1/libgst/lib.c Wed Apr 16 23:02:58 2003 --- smalltalk-2.1.2/libgst/lib.c Fri May 9 09:06:43 2003 *************** *** 31,59 **** - #include "gst.h" #include "gstpriv.h" #include "getopt.h" - #include - #include - - #ifdef HAVE_UNISTD_H - #include - #endif - - #ifdef HAVE_STDLIB_H - #include - #endif - - - #if STDC_HEADERS - #include - #endif /* STDC_HEADERS */ - #ifndef MAXPATHLEN ! #define MAXPATHLEN 1024 /* max length of a file and ! path */ #endif --- 31,41 ---- #include "gstpriv.h" #include "getopt.h" #ifndef MAXPATHLEN ! #define MAXPATHLEN 1024 /* max length of a file and path */ #endif diff -rNC3 smalltalk-2.1.1/libgst/mpz.c smalltalk-2.1.2/libgst/mpz.c *** smalltalk-2.1.1/libgst/mpz.c Fri Nov 29 19:37:58 2002 --- smalltalk-2.1.2/libgst/mpz.c Fri May 9 09:06:52 2003 *************** *** 28,38 **** * ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - #include - #include - #include "mathl.h" #if HAVE_GMP #include --- 28,34 ---- diff -rNC3 smalltalk-2.1.1/libgst/oop.c smalltalk-2.1.2/libgst/oop.c *** smalltalk-2.1.1/libgst/oop.c Fri Apr 18 01:12:18 2003 --- smalltalk-2.1.2/libgst/oop.c Fri May 9 09:53:03 2003 *************** *** 30,43 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" ! #include ! #if STDC_HEADERS ! #include ! #include ! #endif /* STDC_HEADERS */ #define K 1024 #define INIT_NUM_INCUBATOR_OOPS 50 --- 30,40 ---- ***********************************************************************/ #include "gstpriv.h" ! #ifdef HAVE_SIGSEGV_H ! #include "sigsegv.h" ! #endif #define K 1024 #define INIT_NUM_INCUBATOR_OOPS 50 *************** *** 60,66 **** /* Define this flag to turn on debugging code for oldspace management */ /* #define MMAN_DEBUGGING */ ! #ifndef HAVE_SIGSEGV_RECOVERY #define NO_SIGSEGV_HANDLING #endif --- 57,63 ---- /* Define this flag to turn on debugging code for oldspace management */ /* #define MMAN_DEBUGGING */ ! #if !defined HAVE_SIGSEGV_RECOVERY || !(HAVE_SIGSEGV_RECOVERY-0) #define NO_SIGSEGV_HANDLING #endif *************** *** 183,190 **** --- 180,189 ---- /* Hook that discards freed pages from the remembered table. */ static void oldspace_before_freeing (heap_data *h, heap_block *blk, size_t sz); + #ifndef NO_SIGSEGV_HANDLING /* The a global SIGSEGV handler. */ static int oldspace_sigsegv_handler (void* fault_address, int serious); + #endif /* Hook that triggers garbage collection. */ static void oldspace_nomemory (heap_data *h, size_t sz); *************** *** 247,253 **** --- 246,254 ---- { if (!_gst_mem.old) { + #ifndef NO_SIGSEGV_HANDLING sigsegv_install_handler (oldspace_sigsegv_handler); + #endif if (!eden) eden = 300 * K; if (!survivor) *************** *** 830,835 **** --- 831,837 ---- _gst_global_gc (sz); } + #ifndef NO_SIGSEGV_HANDLING int oldspace_sigsegv_handler (void* fault_address, int serious) { static int reentering, reentered; *************** *** 869,874 **** --- 871,877 ---- add_to_grey_list ((PTR) page, getpagesize() / SIZEOF_CHAR_P, NULL); return !reentered; } + #endif void diff -rNC3 smalltalk-2.1.1/libgst/opt.c smalltalk-2.1.2/libgst/opt.c *** smalltalk-2.1.1/libgst/opt.c Fri Apr 18 01:12:22 2003 --- smalltalk-2.1.2/libgst/opt.c Fri May 9 09:07:03 2003 *************** *** 29,42 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - #if STDC_HEADERS - #include /* for memcpy */ - #include - #endif /* STDC_HEADERS */ - #include /* Define this to disable the peephole bytecode optimizer. It works well and increases a bit performance, so there's no reason to do that --- 29,36 ---- diff -rNC3 smalltalk-2.1.1/libgst/opt.h smalltalk-2.1.2/libgst/opt.h *** smalltalk-2.1.1/libgst/opt.h Fri Apr 18 01:12:24 2003 --- smalltalk-2.1.2/libgst/opt.h Fri May 9 09:20:48 2003 *************** *** 32,39 **** #ifndef GST_OPT_H #define GST_OPT_H - #include "byte.h" - /* This divides the byte codes of a method in basic blocks, optimizes each one, joins the optimized blocks and return a new vector of byte codes that contains the stream of optimized byte codes. --- 32,37 ---- diff -rNC3 smalltalk-2.1.1/libgst/prims.def smalltalk-2.1.2/libgst/prims.def *** smalltalk-2.1.1/libgst/prims.def Sun Mar 23 14:14:33 2003 --- smalltalk-2.1.2/libgst/prims.def Tue May 6 18:55:02 2003 *************** *** 4782,4791 **** oop2 = POP_OOP (); if (IS_CLASS (oop2, _gst_string_class)) { fileName = _gst_to_cstring (oop2); ! _gst_save_to_file (fileName); xfree (fileName); ! PRIM_SUCCEEDED; } UNPOP (1); PRIM_FAILED; --- 4782,4800 ---- oop2 = POP_OOP (); if (IS_CLASS (oop2, _gst_string_class)) { + interp_jmp_buf localJmpBuf; + mst_Boolean success = false; fileName = _gst_to_cstring (oop2); ! errno = 0; ! ! PROTECT_CURRENT_PROCESS_WITH (&localJmpBuf) ! success = _gst_save_to_file (fileName); ! xfree (fileName); ! if (success) ! PRIM_SUCCEEDED; ! else ! _gst_set_errno (errno); } UNPOP (1); PRIM_FAILED; *************** *** 5134,5139 **** --- 5143,5151 ---- } + if (errno) + _gst_set_errno (errno); + UNPOP (numArgs); PRIM_FAILED; } *************** *** 5290,5310 **** context = (gst_method_context) OOP_TO_OBJ (contextOOP); ! localJmpBuf.next = reentrancy_jmp_buf; ! localJmpBuf.suspended = 0; ! localJmpBuf.processOOP = _gst_nil_oop; ! ! reentrancy_jmp_buf = &localJmpBuf; ! in_interpreter = false; ! ! if (setjmp (reentrancy_jmp_buf->jmpBuf) == 0) result = _gst_invoke_croutine (cFuncOOP, context->receiver, context->contextStack); - in_interpreter = true; - reentrancy_jmp_buf = reentrancy_jmp_buf->next; - if (result) { SET_EXCEPT_FLAG (true); --- 5302,5312 ---- context = (gst_method_context) OOP_TO_OBJ (contextOOP); ! PROTECT_FROM_INTERRUPT_WITH (&localJmpBuf) result = _gst_invoke_croutine (cFuncOOP, context->receiver, context->contextStack); if (result) { SET_EXCEPT_FLAG (true); *************** *** 5334,5355 **** active process can change. */ PUSH_OOP (resultOOP); ! localJmpBuf.next = reentrancy_jmp_buf; ! localJmpBuf.suspended = 0; ! localJmpBuf.processOOP = get_active_process (); ! _gst_register_oop (localJmpBuf.processOOP); ! ! reentrancy_jmp_buf = &localJmpBuf; ! in_interpreter = false; ! ! if (setjmp (reentrancy_jmp_buf->jmpBuf) == 0) result = _gst_invoke_croutine (cFuncOOP, context->receiver, context->contextStack); - - in_interpreter = true; - _gst_unregister_oop (localJmpBuf.processOOP); - reentrancy_jmp_buf = reentrancy_jmp_buf->next; if (result) { --- 5336,5345 ---- active process can change. */ PUSH_OOP (resultOOP); ! PROTECT_CURRENT_PROCESS_WITH (&localJmpBuf) result = _gst_invoke_croutine (cFuncOOP, context->receiver, context->contextStack); if (result) { diff -rNC3 smalltalk-2.1.1/libgst/print.c smalltalk-2.1.2/libgst/print.c *** smalltalk-2.1.1/libgst/print.c Fri Apr 4 09:15:02 2003 --- smalltalk-2.1.2/libgst/print.c Fri May 9 09:07:10 2003 *************** *** 30,40 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" #include "snprintfv/mem.h" - - #include /* Print a String OOP to a snprintfv stream, STREAM. */ --- 30,37 ---- diff -rNC3 smalltalk-2.1.1/libgst/save.c smalltalk-2.1.2/libgst/save.c *** smalltalk-2.1.1/libgst/save.c Thu Mar 27 19:00:29 2003 --- smalltalk-2.1.2/libgst/save.c Fri May 9 09:07:28 2003 *************** *** 30,59 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - #include - #include - #include - - #ifdef HAVE_UNISTD_H - #include - #endif - - #if HAVE_INET_SOCKETS - #include "socketx.h" /* for ntohl */ - #endif - - #if STDC_HEADERS - #include /* for memcpy */ - #include - #endif /* STDC_HEADERS */ - - #ifdef HAVE_SYS_MMAN - #include - #endif - #define READ_BUFFER_SIZE 524288 #define WRITE_BUFFER_SIZE 65536 --- 30,37 ---- *************** *** 258,268 **** { int imageFd; - _gst_invoke_hook ("aboutToSnapshot"); - imageFd = _gst_open_file (fileName, "w"); if (imageFd < 0) return (false); _gst_global_gc (0); _gst_finish_incremental_gc (); --- 236,246 ---- { int imageFd; imageFd = _gst_open_file (fileName, "w"); if (imageFd < 0) return (false); + + _gst_invoke_hook ("aboutToSnapshot"); _gst_global_gc (0); _gst_finish_incremental_gc (); diff -rNC3 smalltalk-2.1.1/libgst/str.c smalltalk-2.1.2/libgst/str.c *** smalltalk-2.1.1/libgst/str.c Tue Jun 25 20:35:34 2002 --- smalltalk-2.1.2/libgst/str.c Fri May 9 09:07:34 2003 *************** *** 30,45 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - - #include - #include - - #if STDC_HEADERS - #include - #include - #endif /* STDC_HEADERS */ #define STRING_BASE_SIZE 128 --- 30,36 ---- diff -rNC3 smalltalk-2.1.1/libgst/sym.c smalltalk-2.1.2/libgst/sym.c *** smalltalk-2.1.1/libgst/sym.c Thu Feb 27 21:22:40 2003 --- smalltalk-2.1.2/libgst/sym.c Fri May 9 09:07:41 2003 *************** *** 30,44 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - - #include - #include - #if STDC_HEADERS - #include - #include - #endif /* STDC_HEADERS */ typedef struct { --- 30,36 ---- diff -rNC3 smalltalk-2.1.1/libgst/sysdep.c smalltalk-2.1.2/libgst/sysdep.c *** smalltalk-2.1.1/libgst/sysdep.c Fri Apr 18 10:32:58 2003 --- smalltalk-2.1.2/libgst/sysdep.c Fri May 9 09:08:07 2003 *************** *** 34,56 **** ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - #include - #include - #include - #include - #include - #include - #include - #include "signalx.h" - #include "socketx.h" - - #ifdef HAVE_UNISTD_H - #include - #endif - #ifdef HAVE_SYS_TIMES_H # include #endif --- 34,41 ---- *************** *** 59,68 **** # include #endif - #ifdef HAVE_SYS_MMAN_H - # include - #endif - #ifdef HAVE_TERMIOS_H # include #endif --- 44,49 ---- *************** *** 83,106 **** #include #endif - #ifdef HAVE_SYS_RESOURCE_H - # include - #endif - - #if defined(HAVE_SYS_TIME_H) || defined(TIME_WITH_SYS_TIME) - # include - #endif - #if !defined(HAVE_SYS_TIME_H) || defined(TIME_WITH_SYS_TIME) - # include - #endif - - #ifdef STDC_HEADERS - # include - # include - #endif /* STDC_HEADERS */ - - #include - #ifdef WIN32 # define WIN32_LEAN_AND_MEAN /* avoid including junk */ # include --- 64,69 ---- *************** *** 998,1005 **** break; } ! pty->master = _open_osfhandle (hMaster, pty->access | O_BINARY); ! return pty->master; } #else return -1; --- 961,968 ---- break; } ! pty->master = _open_osfhandle (hMaster, pty->access | O_BINARY); ! return pty->master; } #else return -1; *************** *** 1464,1471 **** } /* We have three possible implementations: Win32, mmap-ing /dev/zero ! or using anonymous mmaps, and anonymous mmaps with MAP_NORESERVE. */ typedef struct heap_implementation { PTR (*reserve) (size_t); void (*release) (PTR, size_t); PTR (*commit) (PTR, size_t); --- 1427,1438 ---- } /* We have three possible implementations: Win32, mmap-ing /dev/zero ! or using anonymous mmaps, and anonymous mmaps with MAP_NORESERVE. ! There is support for providing fallback implementations, but it ! is not used currently. */ ! typedef struct heap_implementation { + mst_Boolean (*check) (); PTR (*reserve) (size_t); void (*release) (PTR, size_t); PTR (*commit) (PTR, size_t); *************** *** 1478,1485 **** static PTR win32_commit (PTR, size_t); static void win32_decommit (PTR, size_t); struct heap_implementation heap_impl_tab[] = { ! { win32_reserve, win32_release, win32_commit, win32_decommit }, ! { NULL, NULL, NULL, NULL } }; #else /* !WIN32 */ --- 1445,1452 ---- static PTR win32_commit (PTR, size_t); static void win32_decommit (PTR, size_t); struct heap_implementation heap_impl_tab[] = { ! { NULL, win32_reserve, win32_release, win32_commit, win32_decommit }, ! { NULL, NULL, NULL, NULL, NULL } }; #else /* !WIN32 */ *************** *** 1487,1502 **** static PTR noreserve_reserve (size_t); static void noreserve_decommit (PTR, size_t); #endif static PTR anon_mmap_reserve (size_t); static void anon_mmap_release (PTR, size_t); static PTR anon_mmap_commit (PTR, size_t); struct heap_implementation heap_impl_tab[] = { # ifdef MAP_NORESERVE ! { noreserve_reserve, _gst_osmem_free, anon_mmap_commit, noreserve_decommit }, # endif ! { anon_mmap_reserve, anon_mmap_release, anon_mmap_commit, _gst_osmem_free }, ! { NULL, NULL, NULL, NULL } }; # ifndef MAP_ANON --- 1454,1470 ---- static PTR noreserve_reserve (size_t); static void noreserve_decommit (PTR, size_t); #endif + static mst_Boolean anon_mmap_check (void); static PTR anon_mmap_reserve (size_t); static void anon_mmap_release (PTR, size_t); static PTR anon_mmap_commit (PTR, size_t); struct heap_implementation heap_impl_tab[] = { # ifdef MAP_NORESERVE ! { NULL, noreserve_reserve, _gst_osmem_free, anon_mmap_commit, noreserve_decommit }, # endif ! { anon_mmap_check, anon_mmap_reserve, anon_mmap_release, anon_mmap_commit, _gst_osmem_free }, ! { NULL, NULL, NULL, NULL, NULL } }; # ifndef MAP_ANON *************** *** 1514,1532 **** ! static heap_implementation *impl = heap_impl_tab; PTR _gst_osmem_reserve (size_t size) { ! PTR base; ! ! for (; impl->reserve; impl++) ! if ((base = impl->reserve (size))) ! return base; ! ! errno = ENOMEM; ! return (NULL); } void --- 1482,1508 ---- ! static heap_implementation *impl; PTR _gst_osmem_reserve (size_t size) { ! if (!impl) ! { ! /* Find an implementation of heaps that is ok for this machine. ! The check is done at run-time because it is cheap. */ ! for (impl = heap_impl_tab; impl->reserve; impl++) ! if (!impl->check || impl->check ()) ! return impl->reserve (size); ! ! /* Not found, check again the next time just in case and return ! ENOMEM. */ ! impl = NULL; ! errno = ENOMEM; ! return (NULL); ! } ! else ! return impl->reserve (size); } void *************** *** 1559,1567 **** if (result) return result; ! VirtualFree (addr, size, MEM_DECOMMIT); } return NULL; #else --- 1535,1544 ---- if (result) return result; ! VirtualFree (addr, size, MEM_RELEASE); } + errno = ENOMEM; return NULL; #else *************** *** 1592,1598 **** PTR win32_reserve (size_t size) { ! return VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_NOACCESS); } void --- 1569,1580 ---- PTR win32_reserve (size_t size) { ! PTR base; ! base = VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_NOACCESS); ! if (!base) ! errno = ENOMEM; ! ! return base; } void *************** *** 1604,1610 **** PTR win32_commit (PTR base, size_t size) { ! return VirtualAlloc (base, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); } void --- 1586,1597 ---- PTR win32_commit (PTR base, size_t size) { ! PTR addr; ! addr = VirtualAlloc (base, size, MEM_COMMIT, PAGE_EXECUTE_READWRITE); ! if (!addr) ! errno = ENOMEM; ! ! return addr; } void *************** *** 1637,1658 **** #endif /* Implementation of the four basic primitives when MAP_NORESERVE ! is not available. */ static char *baseaddr; - static PTR find_heap_base (void); PTR anon_mmap_reserve (size_t size) { PTR base; ! if (!baseaddr) ! baseaddr = find_heap_base (); ! ! base = baseaddr; ! baseaddr += size; ! return base; } void --- 1624,1651 ---- #endif /* Implementation of the four basic primitives when MAP_NORESERVE ! is not available. Not foolproof, but we try to keep the balance ! between simplicity and usefulness. */ static char *baseaddr; PTR anon_mmap_reserve (size_t size) { PTR base; ! /* We must check for overflows in baseaddr! */ ! if (((unsigned long) baseaddr) + size < (unsigned long) baseaddr) ! { ! errno = ENOMEM; ! return NULL; ! } ! else ! { ! base = baseaddr; ! baseaddr += size; ! return base; ! } } void *************** *** 1695,1702 **** longjmp (already_mapped, 1); } ! PTR ! find_heap_base (void) { volatile char *mmapGuess, *higher, *lower; /* reference addresses */ volatile char *first = NULL, *second; /* probed addresses */ --- 1688,1695 ---- longjmp (already_mapped, 1); } ! mst_Boolean ! anon_mmap_check (void) { volatile char *mmapGuess, *higher, *lower; /* reference addresses */ volatile char *first = NULL, *second; /* probed addresses */ *************** *** 1719,1724 **** --- 1712,1720 ---- volatile SigHandler oldSegvHandler; int pagesize = getpagesize(); + if (baseaddr) + return (true); + /* Placate GNU C's warnings about clobbered variables */ testPtr = (volatile int *) &higher; testPtr = (volatile int *) &lower; *************** *** 1791,1801 **** munmap ((char *) mmapGuess, pagesize); if (first == NULL || *step == -1) { ! _gst_errorf ("Could not find a place for the Smalltalk heaps."); ! return (NULL); } - else - return (PTR) (first); } #endif /* !WIN32 */ --- 1787,1797 ---- munmap ((char *) mmapGuess, pagesize); if (first == NULL || *step == -1) + return (false); + else { ! baseaddr = (PTR) first; ! return (true); } } #endif /* !WIN32 */ diff -rNC3 smalltalk-2.1.1/libgst/tree.c smalltalk-2.1.2/libgst/tree.c *** smalltalk-2.1.1/libgst/tree.c Thu Mar 27 21:22:30 2003 --- smalltalk-2.1.2/libgst/tree.c Fri May 9 09:08:22 2003 *************** *** 29,39 **** * ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - - #include - #include char *_gst_nil_name = "(nil)"; /* how to print nil */ --- 29,35 ---- diff -rNC3 smalltalk-2.1.1/libgst/xlat.c smalltalk-2.1.2/libgst/xlat.c *** smalltalk-2.1.1/libgst/xlat.c Mon Feb 3 12:06:41 2003 --- smalltalk-2.1.2/libgst/xlat.c Fri May 9 09:08:38 2003 *************** *** 28,41 **** * ***********************************************************************/ - #include "gst.h" #include "gstpriv.h" - #include "jitpriv.h" #ifdef USE_JIT_TRANSLATION #include "lightning.h" ! ! #include #ifdef __GNUC__ #warning .--------------------------------------- --- 28,38 ---- * ***********************************************************************/ #include "gstpriv.h" #ifdef USE_JIT_TRANSLATION #include "lightning.h" ! #include "jitpriv.h" #ifdef __GNUC__ #warning .--------------------------------------- diff -rNC3 smalltalk-2.1.1/lightning/Makefile.in smalltalk-2.1.2/lightning/Makefile.in *** smalltalk-2.1.1/lightning/Makefile.in Thu Apr 17 11:41:56 2003 --- smalltalk-2.1.2/lightning/Makefile.in Fri May 9 11:57:30 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/net/ChangeLog smalltalk-2.1.2/net/ChangeLog *** smalltalk-2.1.1/net/ChangeLog Thu Apr 17 14:44:41 2003 --- smalltalk-2.1.2/net/ChangeLog Fri May 9 09:26:57 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,12 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/numerics/NumericsAdds.st smalltalk-2.1.2/numerics/NumericsAdds.st *** smalltalk-2.1.1/numerics/NumericsAdds.st Thu Sep 12 20:34:41 2002 --- smalltalk-2.1.2/numerics/NumericsAdds.st Tue Apr 29 16:16:55 2003 *************** *** 1,223 **** ! "====================================================================== ! | ! | Numerical methods - Additions to the base classes ! | ! | ! ======================================================================" ! ! ! "====================================================================== ! | ! | Written by Didier Besset. ! | ! | This file is distributed together with GNU Smalltalk. ! | ! ======================================================================" ! ! ! !Integer methodsFor: 'numerics'! ! ! gamma ! "Compute the Gamma function for the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99 " ! ! self > 0 ! ifFalse:[ ^self error: 'Attempt to compute the Gamma function of a non-positive integer']. ! ^( self - 1) factorial! ! ! random ! "Answer a random integer between 0 and the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 15/2/99 " ! ! ^Dhb.DhbMitchellMooreGenerator new integerValue: self! ! ! ! !Number class methodsFor: 'numerics'! ! ! random ! "Answers a random number between 0 and the receiver ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 17/2/99 " ! ! ^Dhb.DhbMitchellMooreGenerator new floatValue * self! ! ! ! !Number methodsFor: 'numerics'! ! ! addPolynomial: aPolynomial ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 19/4/99 " ! ! ^aPolynomial addNumber: self! ! ! asLimitedPrecisionReal ! "Convert the receiver to an instance of ! some subclass of LimitedPrecisionReal. ! This method defines what the default is." ! ! ^self asFloat! ! ! beta: aNumber ! "Computes the beta function of the receiver and aNumber ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 1/3/99 " ! ! ^( self logBeta: aNumber) exp! ! ! dividingPolynomial: aPolynomial ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 17/4/99 " ! ! ^aPolynomial timesNumber: (1 / self)! ! ! equalsTo: aNumber ! " (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 21/4/99 " ! ! ^self relativelyEqualsTo: aNumber upTo: Dhb.DhbFloatingPointMachine new defaultNumericalPrecision ! ! ! ! errorFunction ! "Answer the error function for the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99 " ! ! ^Dhb.DhbErfApproximation new value: self ! ! ! ! gamma ! "Compute the Gamma function for the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99" ! ! ^self > 1 ! ifTrue: [^Dhb.DhbLanczosFormula new gamma: self] ! ifFalse: [self < 0 ! ifTrue: [Float pi / ((Float pi * self) sin * (1 - self) gamma)] ! ifFalse: [(Dhb.DhbLanczosFormula new gamma: self + 1) ! / self]]! ! ! logBeta: aNumber ! "Computes the logarithm of the beta function of the receiver and aNumber ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 1/3/99 " ! ! ^self logGamma + aNumber logGamma - ( self + aNumber) logGamma! ! ! logGamma ! "Computes the log of the Gamma function (for positive numbers only) ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 1/3/99 " ! ! ^self > 1 ! ifTrue: [ Dhb.DhbLanczosFormula new logGamma: self] ! ifFalse:[ self > 0 ! ifTrue: [ ( Dhb.DhbLanczosFormula new logGamma: ( self + 1) ) - self ln ] ! ifFalse: [ ^self error: 'Argument for the log gamma function must be positive'] ! ]! ! ! productWithMatrix: aMatrix ! "Answer a new matrix, product of aMatrix with the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99 " ! ! ^aMatrix class rows: ( aMatrix rowsCollect: [ :each | each * self])! ! ! productWithVector: aVector ! "Answers a new vector product of the receiver with aVector. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99 " ! ! ^aVector collect: [ :each | each * self]! ! ! random ! "Answers a random number distributed between 0 and the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 17/2/99 " ! ! ^self class random * self! ! ! relativelyEqualsTo: aNumber upTo: aSmallNumber ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 21/4/99 " ! ! | norm | ! norm := self abs max: aNumber abs. ! ^norm <= Dhb.DhbFloatingPointMachine new defaultNumericalPrecision ! or: [ (self - aNumber) abs < ( aSmallNumber * norm)]! ! ! subtractToPolynomial: aPolynomial ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 19/4/99 " ! ! ^aPolynomial addNumber: self negated! ! ! timesPolynomial: aPolynomial ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 17/4/99 " ! ! ^aPolynomial timesNumber: self! ! ! ! !Point methodsFor: 'numerics'! ! ! extentFromBottomLeft: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: (self - (0 @ (aPoint isInteger ifTrue: [ aPoint ] ! ifFalse:[ aPoint y ]))) ! extent: aPoint! ! ! extentFromBottomRight: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: (self - aPoint) extent: aPoint! ! ! extentFromCenter: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: ( self - ( aPoint // 2)) extent: aPoint! ! ! extentFromTopLeft: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: self extent: aPoint! ! ! extentFromTopRight: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: (self - ((aPoint isInteger ifTrue: [ aPoint ] ! ifFalse:[ aPoint x ]) @ 0)) ! extent: aPoint! ! ! ! !Rectangle methodsFor: 'numerics'! ! ! positiveRectangle ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^( origin min: corner) corner: ( origin max: corner)! ! ! ! !Collection methodsFor: 'numerics'! ! ! asVector ! ^(Dhb.DhbVector new: self size) ! replaceElementsFrom: 1 to: self size withArray: self startingAt: 1 ! ! ! ! ! !Dhb.DhbPolynomial methodsFor: 'numerics'! ! ! generality ! ^nil ! ! ! ! ! !Dhb.DhbVector methodsFor: 'numerics'! ! ! generality ! ^nil ! ! ! ! --- 1,223 ---- ! "====================================================================== ! | ! | Numerical methods - Additions to the base classes ! | ! | ! ======================================================================" ! ! ! "====================================================================== ! | ! | Written by Didier Besset. ! | ! | This file is distributed together with GNU Smalltalk. ! | ! ======================================================================" ! ! ! !Integer methodsFor: 'numerics'! ! ! gamma ! "Compute the Gamma function for the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99 " ! ! self > 0 ! ifFalse:[ ^self error: 'Attempt to compute the Gamma function of a non-positive integer']. ! ^( self - 1) factorial! ! ! random ! "Answer a random integer between 0 and the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 15/2/99 " ! ! ^Dhb.DhbMitchellMooreGenerator new integerValue: self! ! ! ! !Number class methodsFor: 'numerics'! ! ! random ! "Answers a random number between 0 and the receiver ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 17/2/99 " ! ! ^Dhb.DhbMitchellMooreGenerator new floatValue * self! ! ! ! !Number methodsFor: 'numerics'! ! ! addPolynomial: aPolynomial ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 19/4/99 " ! ! ^aPolynomial addNumber: self! ! ! asLimitedPrecisionReal ! "Convert the receiver to an instance of ! some subclass of LimitedPrecisionReal. ! This method defines what the default is." ! ! ^self asFloat! ! ! beta: aNumber ! "Computes the beta function of the receiver and aNumber ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 1/3/99 " ! ! ^( self logBeta: aNumber) exp! ! ! dividingPolynomial: aPolynomial ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 17/4/99 " ! ! ^aPolynomial timesNumber: (1 / self)! ! ! equalsTo: aNumber ! " (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 21/4/99 " ! ! ^self relativelyEqualsTo: aNumber upTo: Dhb.DhbFloatingPointMachine new defaultNumericalPrecision ! ! ! ! errorFunction ! "Answer the error function for the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99 " ! ! ^Dhb.DhbErfApproximation new value: self ! ! ! ! gamma ! "Compute the Gamma function for the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99" ! ! ^self > 1 ! ifTrue: [^Dhb.DhbLanczosFormula new gamma: self] ! ifFalse: [self < 0 ! ifTrue: [Float pi / ((Float pi * self) sin * (1 - self) gamma)] ! ifFalse: [(Dhb.DhbLanczosFormula new gamma: self + 1) ! / self]]! ! ! logBeta: aNumber ! "Computes the logarithm of the beta function of the receiver and aNumber ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 1/3/99 " ! ! ^self logGamma + aNumber logGamma - ( self + aNumber) logGamma! ! ! logGamma ! "Computes the log of the Gamma function (for positive numbers only) ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 1/3/99 " ! ! ^self > 1 ! ifTrue: [ Dhb.DhbLanczosFormula new logGamma: self] ! ifFalse:[ self > 0 ! ifTrue: [ ( Dhb.DhbLanczosFormula new logGamma: ( self + 1) ) - self ln ] ! ifFalse: [ ^self error: 'Argument for the log gamma function must be positive'] ! ]! ! ! productWithMatrix: aMatrix ! "Answer a new matrix, product of aMatrix with the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99 " ! ! ^aMatrix class rows: ( aMatrix rowsCollect: [ :each | each * self])! ! ! productWithVector: aVector ! "Answers a new vector product of the receiver with aVector. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 11/2/99 " ! ! ^aVector collect: [ :each | each * self]! ! ! random ! "Answers a random number distributed between 0 and the receiver. ! (c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 17/2/99 " ! ! ^self class random * self! ! ! relativelyEqualsTo: aNumber upTo: aSmallNumber ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 21/4/99 " ! ! | norm | ! norm := self abs max: aNumber abs. ! ^norm <= Dhb.DhbFloatingPointMachine new defaultNumericalPrecision ! or: [ (self - aNumber) abs < ( aSmallNumber * norm)]! ! ! subtractToPolynomial: aPolynomial ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 19/4/99 " ! ! ^aPolynomial addNumber: self negated! ! ! timesPolynomial: aPolynomial ! "(c) Copyrights Didier BESSET, 1999, all rights reserved. ! Initial code: 17/4/99 " ! ! ^aPolynomial timesNumber: self! ! ! ! !Point methodsFor: 'numerics'! ! ! extentFromBottomLeft: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: (self - (0 @ (aPoint isInteger ifTrue: [ aPoint ] ! ifFalse:[ aPoint y ]))) ! extent: aPoint! ! ! extentFromBottomRight: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: (self - aPoint) extent: aPoint! ! ! extentFromCenter: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: ( self - ( aPoint // 2)) extent: aPoint! ! ! extentFromTopLeft: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: self extent: aPoint! ! ! extentFromTopRight: aPoint ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^Rectangle origin: (self - ((aPoint isInteger ifTrue: [ aPoint ] ! ifFalse:[ aPoint x ]) @ 0)) ! extent: aPoint! ! ! ! !Rectangle methodsFor: 'numerics'! ! ! positiveRectangle ! "(c) Copyrights Didier BESSET, 1998, all rights reserved ! Initial code: 21/4/98 " ! ! ^( origin min: corner) corner: ( origin max: corner)! ! ! ! !Collection methodsFor: 'numerics'! ! ! asVector ! ^(Dhb.DhbVector new: self size) ! replaceElementsFrom: 1 to: self size withArray: self startingAt: 1 ! ! ! ! ! !Dhb.DhbPolynomial methodsFor: 'numerics'! ! ! generality ! ^nil ! ! ! ! ! !Dhb.DhbVector methodsFor: 'numerics'! ! ! generality ! ^nil ! ! ! ! diff -rNC3 smalltalk-2.1.1/packages.xml smalltalk-2.1.2/packages.xml *** smalltalk-2.1.1/packages.xml Fri Apr 18 10:39:48 2003 --- smalltalk-2.1.2/packages.xml Fri May 9 13:56:50 2003 *************** *** 1,4 **** ! --- 1,4 ---- ! diff -rNC3 smalltalk-2.1.1/sigsegv/AUTHORS smalltalk-2.1.2/sigsegv/AUTHORS *** smalltalk-2.1.1/sigsegv/AUTHORS Sun Jul 28 17:43:00 2002 --- smalltalk-2.1.2/sigsegv/AUTHORS Mon Apr 28 13:03:20 2003 *************** *** 1,4 **** Authors of GNU libsigsegv. Bruno Haible Versions 1.0 and 2.0 ! Paolo Bonzini HP-UX support --- 1,4 ---- Authors of GNU libsigsegv. Bruno Haible Versions 1.0 and 2.0 ! Paolo Bonzini HP-UX, MacOS X, Cygwin support diff -rNC3 smalltalk-2.1.1/sigsegv/ChangeLog smalltalk-2.1.2/sigsegv/ChangeLog *** smalltalk-2.1.1/sigsegv/ChangeLog Thu Apr 17 14:44:44 2003 --- smalltalk-2.1.2/sigsegv/ChangeLog Sat May 3 08:53:49 2003 *************** *** 1,8 **** ! 2003-04-08 Paolo Bonzini ! Various changes for GNU Smalltalk. Port to Darwin ! and Cygwin, compile under NetBSD and IA64/Linux, use ! symlinks in configure. 2002-08-28 Bruno Haible --- 1,168 ---- ! 2003-05-02 Bruno Haible ! * src/handler-unix.c: Add special case for stack handling on IA-64. ! * src/fault-linux-ia64.h: Complete the port. ! * configure.in: Improve Linux/IA-64 support. ! ! 2003-05-01 Bruno Haible ! ! * configure.in: Don't use fault-hurd.h on NetBSD/alpha. It does not ! work. ! ! 2003-05-01 Bruno Haible ! ! Support for Linux/HPPA. ! * fault-linux-hppa.h: Don't include . ! (SIGSEGV_FAULT_ADDRESS): Change. ! (SIGSEGV_FAULT_ADDRESS_FROM_SIGINFO): Define it, otherwise the value ! passed for sip is 0. ! (SIGSEGV_FAULT_CONTEXT, SIGSEGV_FAULT_STACKPOINTER): Remove macros. ! * configure.in: Improve Linux/HPPA support. ! ! 2003-05-01 Bruno Haible ! ! Support for OpenBSD/i386. ! * src/fault-openbsd.h: New file. ! * src/fault-openbsd-i386.h: New file. ! * src/Makefile.am (noinst_HEADERS): Add them. ! * configure.in: If the POSIX test works and the OS is OpenBSD, use ! fault-openbsd.h instead of fault-posix.h. ! ! 2003-05-01 Bruno Haible ! ! * src/fault-hpux-hppa.h: Make it work on machines with 64-bit registers ! as well. ! * configure.in: Likewise. ! ! 2003-04-29 Bruno Haible ! ! * configure.in: Define HAVE_STACKVMA if CFG_STACKVMA is nontrivial. ! * src/handler-unix.c: Test HAVE_STACKVMA instead of CFG_STACKVMA. ! ! * m4/fault.m4 (SV_TRY_FAULT): On HP-UX, always pass 0 as first argument ! of mmap(). ! * tests/mmaputil.h (mmap_zeromap): Likewise. ! ! 2003-04-28 Bruno Haible ! ! * src/stackvma-freebsd.c (sigsegv_get_vma): Fix logic error. ! ! 2002-04-17 Paolo Bonzini ! ! Support for Cygwin. ! * configure.in: Treat cygwin* like mingw*. ! * src/handler-win32.c [CYGWIN] (exception_list, _except_list, ! debug_get_except_list, cygwin_exception_handler, ! libsigsegv_exception_handler, do_install_main_exception_filter): New ! definitions. ! (install_main_exception_filter): New function. ! (sigsegv_install_handler, stackoverflow_install_handler): Call it. ! ! 2003-04-26 Bruno Haible ! ! * configure.in: Don't set sv_cv_have_stack_overflow_recovery=yes if ! not all of the fault-*.h and stackvma-*.h premises are fulfilled. ! Reported by Paolo Bonzini for NetBSD/Alpha. ! ! 2003-04-03 Bruno Haible ! ! * configure.in: Add --enable-relocatable option. ! * m4/relocatable.m4: New file, from GNU gettext. ! * m4/Makefile.am (EXTRA_DIST): Add it. ! ! * m4/libtool.m4: Update from GNU gettext, based on libtool-1.4.3. ! * autoconf/ltmain.sh: Likewise. ! ! 2003-04-02 Bruno Haible ! ! * configure.in: Bump version number to 2.1. ! ! * tests/stackoverflow2.c: New file, based on code by Paolo Bonzini. ! * tests/Makefile.am (TESTS, noinst_PROGRAMS): Add stackoverflow2. ! ! 2003-04-02 Paolo Bonzini ! Bruno Haible ! ! Complete the port to MacOS X (Darwin). ! * m4/fault.m4: Include sys/signal.h. Have an exit status of 3 instead ! of 1 if fault_address is misdetected. ! * m4/sigaltstack.m4: Define stack_t to struct sigaltstack if absent. ! Include . ! * configure.in: Add check for sys/signal.h. ! Add support for catching stack overflow on MacOSX. ! Add support for MacOSX on i386. ! Provide a fallback for SS_ONSTACK before using it. ! * src/fault-macos-i386.h: New file. ! * src/stackvma-mach.c: New file. ! * src/fault-macos-powerpc.h (SIGSEGV_FAULT_STACKPOINTER): Change. ! * src/handler-unix.c: Include . ! (SS_DISABLE): Provide a fallback. ! * src/leave-sigaltstack.c: Include sys/signal.h. ! (SS_ONSTACK): Provide a fallback. ! * src/Makefile.am (noinst_HEADERS): Add fault-macos-i386.h. ! (EXTRA_DIST): Add stackvma-mach.c. ! * tests/sigsegv1.c: Abort after 10 handler invocations. ! (main): Drop SKIP message, now emitted by automake 1.7.x. ! * tests/sigsegv2.c: Abort after 10 handler invocations. ! (main): Drop SKIP message, now emitted by automake 1.7.x. ! * tests/stackoverflow1.c (main): Drop SKIP message, now emitted by ! automake 1.7.x. ! ! 2002-10-14 Bruno Haible ! ! * src/fault-none.h: New file. ! * src/fault.h: Include CFG_FAULT unconditionally. ! * src/leave-none.c: New file. ! * src/leave.c: Include CFG_LEAVE unconditionally. ! * src/stackvma.c: Include CFG_STACKVMA unconditionally. ! * configure.in (CFG_LEAVE, CFG_STACKVMA): Define always. ! * src/Makefile.am (noinst_HEADERS): Add fault-none.h. ! (EXTRA_DIST): Add leave-none.c. ! Reported by Paolo Bonzini . ! ! 2002-09-30 Bruno Haible ! ! * src/Makefile.am (noinst_HEADERS): Add fault-hurd.h, ! fault-linux-m68k.c, fault-macos-powerpc.h, fault-macos-powerpc.c, ! signals-hurd.h, signals-macos.h. ! ! 2002-09-30 Bruno Haible ! ! * Makefile.am (check-next): Don't ask for reports from i?86-*-linux* ! platforms. ! ! 2002-09-30 Bruno Haible ! ! Better Linux/PowerPC support. ! * configure.in: Change Linux/PowerPC support. ! * src/fault-linux-powerpc.h (SIGSEGV_FAULT_ADDRESS): New macro. ! ! 2002-09-30 Bruno Haible ! ! Better Linux/m68k support. ! * configure.in: Change Linux/m68k support. ! * src/fault-linux-m68k.c: New file. ! * src/fault-linux-m68k.h: Use it. ! ! 2002-09-30 Bruno Haible ! ! Tentative Hurd support. ! * configure.in: Add Hurd support. ! * src/signals-hurd.h: New file. ! * src/fault-hurd.h: New file. ! ! 2002-09-30 Bruno Haible ! ! MacOSX/PowerPC support. ! * configure.in: Add MacOSX/PowerPC support. ! * src/signals-macos.h: New file. ! * src/fault-macos-powerpc.c: New file. ! * src/fault-macos-powerpc.h: New file. ! ! 2002-09-16 Bruno Haible ! ! * src/fault-posix.h: Don't include . Needed for hppa-linux. ! Reported by Will Newton . 2002-08-28 Bruno Haible diff -rNC3 smalltalk-2.1.1/sigsegv/Makefile.am smalltalk-2.1.2/sigsegv/Makefile.am *** smalltalk-2.1.1/sigsegv/Makefile.am Sat Oct 12 11:13:20 2002 --- smalltalk-2.1.2/sigsegv/Makefile.am Tue May 6 16:49:49 2003 *************** *** 22,31 **** SUBDIRS = src tests ! EXTRA_DIST = ChangeLog.1 PORTING DISTCLEANFILES = termbold termnorm # Lead the user through the installation, in the hope that he will help us # by sending his config.log. --- 22,32 ---- SUBDIRS = src tests ! EXTRA_DIST = ChangeLog.1 PORTING README.woe32 Makefile.msvc config.h.msvc DISTCLEANFILES = termbold termnorm + # Lead the user through the installation, in the hope that he will help us # by sending his config.log. *************** *** 44,62 **** check-next: @when="Now"; \ if grep '^@PLATFORM@ .* @VERSION@$$' $(srcdir)/PORTING > /dev/null; then :; else \ ! echo; \ ! echo "Please send the following summary line via email to the author"; \ ! echo "Bruno Haible for inclusion into the list of"; \ ! echo "successfully tested platforms (see PORTING file). Please also"; \ ! echo "send the config.log file; this will help improving portability"; \ ! echo "of the package."; echo; \ ! if test @HAVE_SIGSEGV_RECOVERY@ = 1; then have1=yes; else have1=no; fi; \ ! if test @HAVE_STACK_OVERFLOW_RECOVERY@ = 1; then have2=yes; else have2=no; fi; \ ! echo `cat termbold`"libsigsegv: @PLATFORM@ | $$have1 | $$have2 | @VERSION@"`cat termnorm`; \ ! when="Then"; \ fi; \ echo; echo "$$when please type '"`cat termbold`"make install"`cat termnorm`"' to install the package."; echo install-am: install-next install-next: @echo; echo "Now use the package; you can remove it later via '"`cat termbold`"make uninstall"`cat termnorm`"'."; echo --- 45,74 ---- check-next: @when="Now"; \ if grep '^@PLATFORM@ .* @VERSION@$$' $(srcdir)/PORTING > /dev/null; then :; else \ ! case '@PLATFORM@' in \ ! i?86-*-linux*) ;; \ ! *) \ ! echo; \ ! echo "Please send the following summary line via email to the author"; \ ! echo "Bruno Haible for inclusion into the list of"; \ ! echo "successfully tested platforms (see PORTING file). Please also"; \ ! echo "send the config.log file; this will help improving portability"; \ ! echo "of the package."; echo; \ ! if test @HAVE_SIGSEGV_RECOVERY@ = 1; then have1=yes; else have1=no; fi; \ ! if test @HAVE_STACK_OVERFLOW_RECOVERY@ = 1; then have2=yes; else have2=no; fi; \ ! echo `cat termbold`"libsigsegv: @PLATFORM@ | $$have1 | $$have2 | @VERSION@"`cat termnorm`; \ ! when="Then"; \ ! ;; \ ! esac; \ fi; \ echo; echo "$$when please type '"`cat termbold`"make install"`cat termnorm`"' to install the package."; echo install-am: install-next install-next: @echo; echo "Now use the package; you can remove it later via '"`cat termbold`"make uninstall"`cat termnorm`"'."; echo + + + # Rules for "make dist". + + config.h.msvc : config.h.in + sed -e 's/#undef CFG_HANDLER/#define CFG_HANDLER "handler-win32.c"/' < $(srcdir)/config.h.in > $@ diff -rNC3 smalltalk-2.1.1/sigsegv/Makefile.in smalltalk-2.1.2/sigsegv/Makefile.in *** smalltalk-2.1.1/sigsegv/Makefile.in Thu Apr 17 23:34:52 2003 --- smalltalk-2.1.2/sigsegv/Makefile.in Fri May 9 11:57:51 2003 *************** *** 46,51 **** --- 46,56 ---- AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ + CFG_FAULT = @CFG_FAULT@ + CFG_HANDLER = @CFG_HANDLER@ + CFG_LEAVE = @CFG_LEAVE@ + CFG_SIGNALS = @CFG_SIGNALS@ + CFG_STACKVMA = @CFG_STACKVMA@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ *************** *** 82,87 **** --- 87,93 ---- PATH_SEPARATOR = @PATH_SEPARATOR@ PLATFORM = @PLATFORM@ RANLIB = @RANLIB@ + RELOCATABLE = @RELOCATABLE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ *************** *** 126,132 **** SUBDIRS = src tests ! EXTRA_DIST = ChangeLog.1 PORTING DISTCLEANFILES = termbold termnorm --- 132,138 ---- SUBDIRS = src tests ! EXTRA_DIST = ChangeLog.1 PORTING README.woe32 Makefile.msvc config.h.msvc DISTCLEANFILES = termbold termnorm *************** *** 154,160 **** ../config/install-sh ../config/ltmain.sh ../config/mdate-sh \ ../config/missing ../config/mkinstalldirs ../config/texinfo.tex \ ../config/ylwrap AUTHORS COPYING ChangeLog INSTALL Makefile.am \ ! Makefile.in NEWS aclocal.m4 config.h.in configure configure.in DIST_SUBDIRS = $(SUBDIRS) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive --- 160,166 ---- ../config/install-sh ../config/ltmain.sh ../config/mdate-sh \ ../config/missing ../config/mkinstalldirs ../config/texinfo.tex \ ../config/ylwrap AUTHORS COPYING ChangeLog INSTALL Makefile.am \ ! Makefile.in NEWS aclocal.m4 config.h.in configure configure.ac DIST_SUBDIRS = $(SUBDIRS) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive *************** *** 163,169 **** am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno ! $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status --- 169,175 ---- am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno ! $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status *************** *** 171,180 **** $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck ! $(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) ! $(ACLOCAL_M4): configure.in ../config/align.m4 ../config/bold.m4 ../config/codeset.m4 ../config/ext_goto.m4 ../config/fault.m4 ../config/gcc.m4 ../config/getpagesize.m4 ../config/glib-2.0.m4 ../config/gmp.m4 ../config/gst.m4 ../config/gtk-2.0.m4 ../config/iconv.m4 ../config/inet.m4 ../config/libtool.m4 ../config/lightning.m4 ../config/localtime.m4 ../config/mmap-anon.m4 ../config/modules.m4 ../config/pkg.m4 ../config/readline.m4 ../config/restrict.m4 ../config/sigaltstack-longjmp.m4 ../config/sigaltstack-siglongjmp.m4 ../config/sigaltstack.m4 ../config/snprintfv.m4 ../config/strtoul.m4 ../config/symbolset.m4 ../config/tcltk.m4 ../config/version.m4 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 --- 177,186 ---- $(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck ! $(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) ! $(ACLOCAL_M4): configure.ac ../config/align.m4 ../config/bold.m4 ../config/codeset.m4 ../config/ext_goto.m4 ../config/fault.m4 ../config/gcc.m4 ../config/getpagesize.m4 ../config/glib-2.0.m4 ../config/gmp.m4 ../config/gst.m4 ../config/gtk-2.0.m4 ../config/iconv.m4 ../config/inet.m4 ../config/libtool.m4 ../config/lightning.m4 ../config/localtime.m4 ../config/mmap-anon.m4 ../config/modules.m4 ../config/pkg.m4 ../config/readline.m4 ../config/relocatable.m4 ../config/restrict.m4 ../config/sigaltstack-longjmp.m4 ../config/sigaltstack-siglongjmp.m4 ../config/sigaltstack.m4 ../config/snprintfv.m4 ../config/strtoul.m4 ../config/symbolset.m4 ../config/tcltk.m4 ../config/version.m4 cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 *************** *** 187,193 **** @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h ! $(srcdir)/config.h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOHEADER) touch $(srcdir)/config.h.in --- 193,199 ---- @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h ! $(srcdir)/config.h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOHEADER) touch $(srcdir)/config.h.in *************** *** 551,572 **** check-next: @when="Now"; \ if grep '^@PLATFORM@ .* @VERSION@$$' $(srcdir)/PORTING > /dev/null; then :; else \ ! echo; \ ! echo "Please send the following summary line via email to the author"; \ ! echo "Bruno Haible for inclusion into the list of"; \ ! echo "successfully tested platforms (see PORTING file). Please also"; \ ! echo "send the config.log file; this will help improving portability"; \ ! echo "of the package."; echo; \ ! if test @HAVE_SIGSEGV_RECOVERY@ = 1; then have1=yes; else have1=no; fi; \ ! if test @HAVE_STACK_OVERFLOW_RECOVERY@ = 1; then have2=yes; else have2=no; fi; \ ! echo `cat termbold`"libsigsegv: @PLATFORM@ | $$have1 | $$have2 | @VERSION@"`cat termnorm`; \ ! when="Then"; \ fi; \ echo; echo "$$when please type '"`cat termbold`"make install"`cat termnorm`"' to install the package."; echo install-am: install-next install-next: @echo; echo "Now use the package; you can remove it later via '"`cat termbold`"make uninstall"`cat termnorm`"'."; echo # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: --- 557,588 ---- check-next: @when="Now"; \ if grep '^@PLATFORM@ .* @VERSION@$$' $(srcdir)/PORTING > /dev/null; then :; else \ ! case '@PLATFORM@' in \ ! i?86-*-linux*) ;; \ ! *) \ ! echo; \ ! echo "Please send the following summary line via email to the author"; \ ! echo "Bruno Haible for inclusion into the list of"; \ ! echo "successfully tested platforms (see PORTING file). Please also"; \ ! echo "send the config.log file; this will help improving portability"; \ ! echo "of the package."; echo; \ ! if test @HAVE_SIGSEGV_RECOVERY@ = 1; then have1=yes; else have1=no; fi; \ ! if test @HAVE_STACK_OVERFLOW_RECOVERY@ = 1; then have2=yes; else have2=no; fi; \ ! echo `cat termbold`"libsigsegv: @PLATFORM@ | $$have1 | $$have2 | @VERSION@"`cat termnorm`; \ ! when="Then"; \ ! ;; \ ! esac; \ fi; \ echo; echo "$$when please type '"`cat termbold`"make install"`cat termnorm`"' to install the package."; echo install-am: install-next install-next: @echo; echo "Now use the package; you can remove it later via '"`cat termbold`"make uninstall"`cat termnorm`"'."; echo + + # Rules for "make dist". + + config.h.msvc : config.h.in + sed -e 's/#undef CFG_HANDLER/#define CFG_HANDLER "handler-win32.c"/' < $(srcdir)/config.h.in > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -rNC3 smalltalk-2.1.1/sigsegv/Makefile.msvc smalltalk-2.1.2/sigsegv/Makefile.msvc *** smalltalk-2.1.1/sigsegv/Makefile.msvc Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/Makefile.msvc Thu Aug 29 20:26:28 2002 *************** *** 0 **** --- 1,116 ---- + # -*- Makefile -*- for libsigsegv + + #### Start of system configuration section. #### + + # Flags that can be set on the nmake command line: + # MFLAGS={-ML|-MT|-MD} for defining the compilation model + # MFLAGS=-ML (the default) Single-threaded, statically linked - libc.lib + # MFLAGS=-MT Multi-threaded, statically linked - libcmt.lib + # MFLAGS=-MD Multi-threaded, dynamically linked - msvcrt.lib + # DEBUG=1 for compiling with debugging information + # Note that nmake command line flags are automatically passed to subdirectory + # Makefiles. Therefore we don't need to pass them explicitly to subdirectory + # Makefiles, but the subdirectory Makefiles need to have the same defaults. + # Building as a DLL not supported yet. + DLL=0 + !if !defined(DEBUG) + DEBUG=0 + !endif + !if !defined(MFLAGS) + !if !$(DLL) + MFLAGS= + !else + MFLAGS=-MD + !endif + !endif + + !if $(DEBUG) + OPTIMFLAGS = -Od -Z7 + !else + OPTIMFLAGS = -D_NDEBUG -O1 + !endif + + # Directories used by "make": + srcdir = . + + # Directories used by "make install": + prefix = /usr/local + local_prefix = /usr/local + exec_prefix = $(prefix) + libdir = $(exec_prefix)/lib + includedir = $(prefix)/include + + # Programs used by "make": + CC = cl + CFLAGS = $(MFLAGS) $(OPTIMFLAGS) + CPP = cl -E + INCLUDES = -I. -I$(srcdir) + AR = lib + AR_FLAGS = /out: + MV = ren + CP = copy + LN = copy + RM = -del + + # Programs used by "make install": + INSTALL = @INSTALL@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_DATA = @INSTALL_DATA@ + + #### End of system configuration section. #### + + SHELL = /bin/sh + + OBJECTS = handler.obj dispatcher.obj + + all : sigsegv.lib + + config.h : config.h.msvc + $(CP) $(srcdir)\config.h.msvc config.h + + sigsegv.h : src/sigsegv.h.msvc + $(CP) $(srcdir)\src\sigsegv.h.msvc sigsegv.h + + handler.obj : $(srcdir)/src/handler.c sigsegv.h config.h + $(CC) $(CFLAGS) $(INCLUDES) -c $(srcdir)/src/handler.c + + dispatcher.obj : $(srcdir)/src/dispatcher.c sigsegv.h config.h + $(CC) $(CFLAGS) $(INCLUDES) -c $(srcdir)/src/dispatcher.c + + !if !$(DLL) + sigsegv.lib : $(OBJECTS) + $(RM) sigsegv.lib + $(AR) $(AR_FLAGS)sigsegv.lib $(OBJECTS) + !else + # sigsegv.dll and sigsegv.lib are created together. + sigsegv.lib : $(OBJECTS) + $(CC) $(MFLAGS) -LD $(OBJECTS) -Fesigsegv.dll + !endif + + sigsegv1.exe : $(srcdir)/tests/sigsegv1.c sigsegv.h sigsegv.lib + $(CC) $(CFLAGS) $(INCLUDES) $(srcdir)/tests/sigsegv1.c sigsegv.lib /Fesigsegv1 + + sigsegv2.exe : $(srcdir)/tests/sigsegv2.c sigsegv.h sigsegv.lib + $(CC) $(CFLAGS) $(INCLUDES) $(srcdir)/tests/sigsegv2.c sigsegv.lib /Fesigsegv2 + + stackoverflow1.exe : $(srcdir)/tests/stackoverflow1.c sigsegv.h sigsegv.lib + $(CC) $(CFLAGS) $(INCLUDES) $(srcdir)/tests/stackoverflow1.c sigsegv.lib /Festackoverflow1 + + check : all sigsegv1.exe sigsegv2.exe stackoverflow1.exe + sigsegv1.exe + sigsegv2.exe + stackoverflow1.exe + + mostlyclean : clean + + clean : force + $(RM) sigsegv.h *.obj *.lib *.exp *.dll core + $(RM) sigsegv1.exe sigsegv2.exe stackoverflow1.exe + + distclean : clean + $(RM) config.status config.log config.cache Makefile config.h + + maintainer-clean : distclean + + force : + diff -rNC3 smalltalk-2.1.1/sigsegv/NEWS smalltalk-2.1.2/sigsegv/NEWS *** smalltalk-2.1.1/sigsegv/NEWS Sat Oct 12 13:02:42 2002 --- smalltalk-2.1.2/sigsegv/NEWS Sat May 3 08:53:49 2003 *************** *** 1,3 **** --- 1,10 ---- + New in 2.1: + + * Support for MacOS X contributed by Paolo Bonzini. + * Support for Cygwin contributed by Paolo Bonzini. + * Support for Linux/ia64 and Linux/hppa contributed by Bruno Haible. + * Support for OpenBSD/i386 contributed by Bruno Haible. + New in 2.0: * Modernized infrastructure. diff -rNC3 smalltalk-2.1.1/sigsegv/PORTING smalltalk-2.1.2/sigsegv/PORTING *** smalltalk-2.1.1/sigsegv/PORTING Tue Apr 8 17:08:55 2003 --- smalltalk-2.1.2/sigsegv/PORTING Sat May 3 08:53:49 2003 *************** *** 3,35 **** __PLATFORM__________________________________SIGSEGV__STACK_OVERFLOW__VERSION___ | | | ! alpha-dec-osf4.0d | yes | yes | 1.95 ! alpha-dec-osf5.1 | yes | yes | 1.95 alphaev67-unknown-linux2.4.17-gnu-glibc2.1 | yes | yes | 1.95 ! hppa2.0w-hp-hpux11.00 | yes | yes | 1.95 ! i586-pc-beos | no | yes | 1.96 i686-pc-linux2.2.14-gnu-glibc2.1 | yes | yes | 2.0 i686-pc-linux2.2.19-gnu-glibc2.1 | yes | yes | 1.95 ! i686-pc-linux2.4.7-gnu-glibc2.2 | yes | yes | 1.95 ! i686-pc-linux2.4.18-gnu-glibc2.2 | yes | yes | 1.95 i686-pc-linux2.4.18-gnu-glibc2.3 | yes | yes | 1.97 i686-pc-mingw32 | yes | yes | 1.96 i686-pc-win32-msvc6 | yes | yes | 1.96 ! i386-unknown-freebsd4.0 | yes | yes | 1.96 ! i386-unknown-freebsd4.0-gnu-glibc2.3 | yes | yes | 1.95 i386-unknown-freebsd4.6 | yes | yes | 1.95 ! mips-sgi-irix6.5 | yes | yes | 1.95 ! rs6000-ibm-aix3.2.5 | yes | no | 1.95 powerpc-ibm-aix4.3.3.0 | yes | yes | 1.95 powerpc-unknown-linux2.2.17-gnu-glibc2.1 | no | yes | 1.95 ! sparc-sun-solaris2.7 | yes | yes | 1.95 ! sparc-sun-solaris2.8 | yes | yes | 1.95 sparc64-unknown-linux2.2.18-gnu-glibc2.1 | no | no | 1.95 - powerpc-apple-macos | yes | yes | 2.0-gst - alphaev67-unknown-netbsd1.6 | no | no | 2.0-gst - - Port attempts to the following platforms have been unsuccessful so far: - i686-pc-cygwin Porting to new platforms --- 3,68 ---- __PLATFORM__________________________________SIGSEGV__STACK_OVERFLOW__VERSION___ | | | ! alpha-dec-osf4.0d | yes | yes | 2.1 ! alpha-dec-osf4.0f | yes | yes | 2.0 ! alpha-dec-osf4.0g | yes | yes | 2.1 ! alpha-dec-osf5.1 | yes | yes | 2.1 alphaev67-unknown-linux2.4.17-gnu-glibc2.1 | yes | yes | 1.95 ! alphaev6-unknown-linux2.2.19-gnu-glibc2.2 | yes | yes | 2.1 ! alphaev67-unknown-linux2.4.4-gnu-glibc2.2 | yes | yes | 2.1 ! alphaev6-unknown-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.1 ! alphaev67-unknown-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.1 ! alphaev6-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.1 ! alphaev67-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.1 ! alpha-unknown-netbsd1.6 | no | no | 2.1 ! armv4l-unknown-linux2.4.0-gnu-glibc2.2 | no | yes | 2.1 ! armv4l-unknown-linux2.4.3-gnu-glibc2.2 | yes | yes | 2.1 ! armv4l-unknown-linux2.4.9-gnu-glibc2.2 | no | yes | 2.0.1 ! hppa2.0-hp-hpux10.20 | yes | yes | 2.1 ! hppa2.0w-hp-hpux11.00 | yes | yes | 2.1 ! hppa2.0w-hp-hpux11.11 | yes | yes | 2.1 ! hppa-unknown-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0.1 ! hppa64-unknown-linux2.4.17-gnu-glibc2.2 | yes | yes | 2.1 ! i586-pc-beos | no | yes | 2.1 ! i686-pc-cygwin | yes | yes | 2.02 ! i586-pc-linux2.2.14-gnu-glibc2.1 | yes | yes | 2.1 i686-pc-linux2.2.14-gnu-glibc2.1 | yes | yes | 2.0 i686-pc-linux2.2.19-gnu-glibc2.1 | yes | yes | 1.95 ! i486-pc-linux2.2.21-gnu-glibc2.1 | yes | yes | 2.0 ! i586-pc-linux2.4.18-gnu-glibc2.1 | yes | yes | 2.0 ! i686-pc-linux2.2.16-gnu-glibc2.2 | yes | yes | 2.0 ! i686-pc-linux2.2.19-gnu-glibc2.2 | yes | yes | 2.0 ! i686-pc-linux2.4.7-gnu-glibc2.2 | yes | yes | 2.1 ! i586-pc-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.0 ! i686-pc-linux2.4.9-gnu-glibc2.2 | yes | yes | 2.0 ! i386-pc-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.0 ! i686-pc-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.0 ! i586-pc-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0 ! i686-pc-linux2.4.19-gnu-glibc2.2 | yes | yes | 2.0 i686-pc-linux2.4.18-gnu-glibc2.3 | yes | yes | 1.97 + i486-pc-linux2.4.20-gnu-glibc2.3 | yes | yes | 2.0 + i686-pc-linux2.4.20-gnu-glibc2.3 | yes | yes | 2.0 i686-pc-mingw32 | yes | yes | 1.96 i686-pc-win32-msvc6 | yes | yes | 1.96 ! i386-unknown-freebsd4.0 | yes | yes | 2.1 ! i386-unknown-freebsd4.0-gnu-glibc2.3 | yes | yes | 2.1 i386-unknown-freebsd4.6 | yes | yes | 1.95 ! i386-unknown-freebsd4.7 | yes | yes | 2.1 ! i386-unknown-netbsdelf1.6 | no | no | 2.1 ! i386-unknown-openbsd3.2 | yes | yes | 2.1 ! ia64-hp-hpux11.22 | yes | no | 2.1 ! ia64-unknown-linux2.4.18-gnu-glibc2.2 | yes | yes | 2.1 ! mips-sgi-irix6.5 | yes | yes | 2.1 ! rs6000-ibm-aix3.2.5 | yes | no | 2.1 powerpc-ibm-aix4.3.3.0 | yes | yes | 1.95 + powerpc-apple-darwin5.5 | yes | yes | 2.0.2 powerpc-unknown-linux2.2.17-gnu-glibc2.1 | no | yes | 1.95 ! powerpc-unknown-linux2.2.17-gnu-glibc2.2 | yes | yes | 2.0.1 ! sparc-sun-solaris2.6 | yes | yes | 2.0 ! sparc-sun-solaris2.7 | yes | yes | 2.1 ! sparc-sun-solaris2.8 | yes | yes | 2.1 ! sparc-sun-solaris2.9 | yes | yes | 2.1 sparc64-unknown-linux2.2.18-gnu-glibc2.1 | no | no | 1.95 Porting to new platforms *************** *** 43,66 **** * List of signals that are sent when an invalid virtual memory address is accessed, or when the stack overflows. This is a file among signals-*.h. ! configure chooses and sets the variable CFG_SIGNALS, and config.status ! creates a symlink from it to signals.h. * What arguments are passed to a fault handler. This is a file among fault-*.h. ! configure chooses and sets the variable CFG_FAULT, and config.status ! creates a symlink from it to fault.h. * How to determine the stack's virtual memory area. This is a file among stackvma-*.c. ! configure chooses and sets the variable CFG_STACKVMA, and config.status ! creates a symlink from it to stackvma.c. * How to leave a signal handler that is executing on the alternate signal stack. This is a file among leave-*.c. ! configure chooses and sets the variable CFG_LEAVE, and config.status ! creates a symlink from it to leave.c. For each of these, the approach should be: --- 76,95 ---- * List of signals that are sent when an invalid virtual memory address is accessed, or when the stack overflows. This is a file among signals-*.h. ! configure chooses and sets the variable CFG_SIGNALS. * What arguments are passed to a fault handler. This is a file among fault-*.h. ! configure chooses and sets the variable CFG_FAULT. * How to determine the stack's virtual memory area. This is a file among stackvma-*.c. ! configure chooses and sets the variable CFG_STACKVMA. * How to leave a signal handler that is executing on the alternate signal stack. This is a file among leave-*.c. ! configure chooses and sets the variable CFG_LEAVE. For each of these, the approach should be: *************** *** 75,86 **** Then regenerate the configure script (run "autoconf") and verify that the test says "yes" on your platform. - - After you checked this, you can add a pattern for the CPU-VENDOR-OS - triple that, if matched, will trigger your code; this will be used - in cross-compilation scenarios. If you choose to do so, regenerate - the configure script (run "autoconf") again and verify that the test - still says "yes" on your platform. - - Create a platform dependent file (e.g. fault--.h) and change configure.in to choose this particular file when your test says "yes". Then regenerate the configure script (run "autoconf"). --- 104,109 ---- *************** *** 88,92 **** - Verify that "make" and "make check" pass. For non-Unix systems, a separate handler-.c is likely to be needed. - Again, configure chooses and sets the variable CFG_HANDLER, and config.status - creates a symlink from it to handler.c. --- 111,113 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/README smalltalk-2.1.2/sigsegv/README *** smalltalk-2.1.1/sigsegv/README Sat Oct 12 13:02:42 2002 --- smalltalk-2.1.2/sigsegv/README Thu Aug 29 20:30:32 2002 *************** *** 88,97 **** make check make install ! Installation instructions on Woe32 with MS Visual C/C++ 4.0 or 5.0: ! ! nmake -f Makefile.msvc check Copyright notice: --- 88,96 ---- make check make install ! Installation instructions on Woe32: + See README.woe32. Copyright notice: diff -rNC3 smalltalk-2.1.1/sigsegv/README.woe32 smalltalk-2.1.2/sigsegv/README.woe32 *** smalltalk-2.1.1/sigsegv/README.woe32 Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/README.woe32 Thu Aug 29 20:26:28 2002 *************** *** 0 **** --- 1,50 ---- + Installation on Woe32 (WinNT/2000/XP, Win95/98/ME): + + =============================================================================== + Installation instructions on Woe32 with Cygwin, compiling for mingw32: + + - Requires the cygwin tools, with the mingw32 compiler and runtime packages. + + - Build instructions: + + Make sure that cygwin's 'bin' directory is the first entry in PATH. + + Run bash. + + CC="gcc -mno-cygwin" ./configure --host=i386-pc-mingw32 + make + make check + make install + + =============================================================================== + Installation instructions on Woe32 with MS Visual C/C++ 4.0, 5.0, or 6.0: + + - Requires MS Visual C/C++ 4.0 or 5.0 or 6.0. + + - Cannot build in a separate directory. + + - Build instructions: + + Make sure that the MSVC4.0 or MSVC5.0 or MSVC6.0 utilities ("cl" etc.) are + found in PATH. + + For shared library (DLL): **NOT YET SUPPORTED** + + nmake -f Makefile.msvc DLL=1 MFLAGS=-MD check + + For static library: + + nmake -f Makefile.msvc check + + If you want to build both the shared and static library, you have to + unpack the libsigsegv sources twice in different directories. Don't mix + the two formats; you cannot use the sigsegv.h generated for the static + library together with the shared library or vice versa. + + - Installation: + + Copy sigsegv.h to your header file repository. + Copy sigsegv.lib to your library repository. + If you built for shared library, also copy sigsegv.dll into one of the + directories listed in your PATH, or into the directory containing the + executable which shall make use of libsigsegv. diff -rNC3 smalltalk-2.1.1/sigsegv/aclocal.m4 smalltalk-2.1.2/sigsegv/aclocal.m4 *** smalltalk-2.1.1/sigsegv/aclocal.m4 Thu Apr 17 23:34:38 2003 --- smalltalk-2.1.2/sigsegv/aclocal.m4 Fri May 9 11:57:36 2003 *************** *** 843,876 **** Usually this means the macro was only invoked conditionally.]) fi])]) - # Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- - - # Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. - - # This program 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. - - # This program 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 this program; if not, write to the Free Software - # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - # 02111-1307, USA. - - AC_PREREQ([2.52]) - - # serial 6 - - # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. - AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], --- 843,853 ---- Usually this means the macro was only invoked conditionally.]) fi])]) # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- + # The next line was added by Bruno Haible 2001-06-08. + builtin([undefine],[symbols]) + # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], *************** *** 1676,1682 **** AC_MSG_RESULT($objdir) ! AC_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default --- 1653,1659 ---- AC_MSG_RESULT($objdir) ! AC_LIBTOOL_ARG_WITH(pic, [ --with-pic try to use only PIC/non-PIC objects [default=use both]], pic_mode="$withval", pic_mode=default) test -z "$pic_mode" && pic_mode=default *************** *** 1762,1767 **** --- 1739,1757 ---- # PIC (with -KPIC) is the default. ;; + linux*) + echo '__INTEL_COMPILER' > conftest.$ac_ext + if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null + then + lt_cv_prog_cc_can_build_shared=no + else + # Intel icc + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-static' + lt_cv_prog_cc_wl='-Qoption,ld,' + fi + ;; + cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). *************** *** 2895,2900 **** --- 2885,2902 ---- dynamic_linker=no ;; + freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat *************** *** 3239,3245 **** allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 ! fi]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac --- 3241,3249 ---- allow_undefined_flag=$save_allow_undefined_flag else cat conftest.err 1>&5 ! fi ! $rm conftest* ! ]) AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) ;; esac *************** *** 3997,4003 **** # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], ! [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl --- 4001,4007 ---- # AC_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN([AC_PROG_LD], ! [AC_LIBTOOL_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl *************** *** 4389,4394 **** --- 4393,4405 ---- INCLTDL="$LTDLINCL" ]) + dnl AC_LIBTOOL_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and + dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't + dnl require excessive bracketing. + ifdef([AC_HELP_STRING], + [AC_DEFUN([AC_LIBTOOL_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], + [AC_DEFUN([AC_LIBTOOL_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + # old names AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) *************** *** 4674,4681 **** fi ]) ! # fault.m4 serial 1 (libsigsegv-2.0) ! dnl Copyright (C) 2002 Bruno Haible dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program --- 4685,4692 ---- fi ]) ! # fault.m4 serial 3 ! dnl Copyright (C) 2002-2003 Bruno Haible dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program *************** *** 4693,4699 **** AC_TRY_RUN([ #include #include ! #include $4 #include #include --- 4704,4712 ---- AC_TRY_RUN([ #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif $4 #include #include *************** *** 4740,4746 **** --- 4753,4765 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 4786,4793 **** ]) ]) ! # sigaltstack.m4 serial 2 (libsigsegv-2.0) ! dnl Copyright (C) 2002, 2003 Bruno Haible dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program --- 4805,4812 ---- ]) ]) ! # sigaltstack.m4 serial 2 ! dnl Copyright (C) 2002-2003 Bruno Haible dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program *************** *** 4799,4817 **** AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) - AC_CHECK_TYPE(stack_t, , - [AC_DEFINE(stack_t, struct sigaltstack, - [Define to struct sigaltstack if that's the type of the argument to sigaltstack])], - [#include - #include ]) - AC_CHECK_FUNCS(sigaltstack) AC_CACHE_CHECK([for working sigaltstack], sv_cv_sigaltstack, [ if test "$ac_cv_func_sigaltstack" = yes; then AC_TRY_RUN([ #include #include ! #include #if HAVE_SETRLIMIT # include # include --- 4818,4846 ---- AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_CHECK_FUNCS(sigaltstack) + + if test "$ac_cv_func_sigaltstack" = yes; then + AC_CHECK_TYPE(stack_t, , + [AC_DEFINE(stack_t, [struct sigaltstack], + [Define to 'struct sigaltstack' if that's the type of the argument to sigaltstack]) + ], + [ + #include + #if HAVE_SYS_SIGNAL_H + # include + #endif + ]) + fi + AC_CACHE_CHECK([for working sigaltstack], sv_cv_sigaltstack, [ if test "$ac_cv_func_sigaltstack" = yes; then AC_TRY_RUN([ #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif #if HAVE_SETRLIMIT # include # include *************** *** 5060,5064 **** --- 5089,5291 ---- esac ]) ]) + ]) + + # relocatable.m4 serial 1 (gettext-0.12) + dnl Copyright (C) 2003 Free Software Foundation, Inc. + dnl This file is free software, distributed under the terms of the GNU + dnl General Public License. As a special exception to the GNU General + dnl Public License, this file may be distributed as part of a program + dnl that contains a configuration script generated by Autoconf, under + dnl the same distribution terms as the rest of that program. + + dnl From Bruno Haible. + + dnl Support for relocateble programs. + AC_DEFUN([AC_RELOCATABLE], + [ + AC_REQUIRE([AC_PROG_INSTALL]) + AC_BEFORE([AC_PROG_INSTALL],[AC_RELOCATABLE]) + AC_REQUIRE([AC_LIB_LIBPATH]) + AC_REQUIRE([AC_RELOCATABLE_LIBRARY]) + use_elf_origin_trick=no + if test $RELOCATABLE = yes; then + # --enable-relocatable implies --disable-rpath + enable_rpath=no + AC_LIBOBJ([relocatable]) + AC_DEFINE([ENABLE_RELOCATABLE], 1, + [Define to 1 if the package shall run at any location in the filesystem.]) + case "$host_os" in + linux*) use_elf_origin_trick=yes ;; + esac + if test $use_elf_origin_trick = yes; then + dnl Use the dynamic linker's support for relocatable programs. + case "$ac_aux_dir" in + /*) reloc_ldflags="$ac_aux_dir/reloc-ldflags" ;; + *) reloc_ldflags="\$(top_builddir)/$ac_aux_dir/reloc-ldflags" ;; + esac + SET_RELOCATABLE="RELOCATABLE_LDFLAGS = \"$reloc_ldflags\" \"@host@\" \"\$(RELOCATABLE_LIBRARY_PATH)\"" + else + dnl Unfortunately we cannot define INSTALL_PROGRAM to a command + dnl consisting of more than one word - libtool doesn't support this. + dnl So we abuse the INSTALL_PROGRAM_ENV hook, originally meant for the + dnl 'install-strip' target. + SET_RELOCATABLE="INSTALL_PROGRAM_ENV = RELOC_LIBRARY_PATH_VAR=\"$shlibpath_var\" RELOC_LIBRARY_PATH_VALUE=\"\$(RELOCATABLE_LIBRARY_PATH)\" RELOC_PREFIX=\"\$(prefix)\" RELOC_COMPILE_COMMAND=\"\$(CC) \$(CPPFLAGS) \$(CFLAGS) \$(LDFLAGS)\" RELOC_SRCDIR=\"\$(RELOCATABLE_SRC_DIR)\" RELOC_BUILDDIR=\"\$(RELOCATABLE_BUILD_DIR)\" RELOC_CONFIG_H_DIR=\"\$(RELOCATABLE_CONFIG_H_DIR)\" RELOC_INSTALL_PROG=\"$INSTALL_PROGRAM\"" + case "$ac_aux_dir" in + /*) INSTALL_PROGRAM="$ac_aux_dir/install-reloc" ;; + *) INSTALL_PROGRAM="\$(top_builddir)/$ac_aux_dir/install-reloc" ;; + esac + fi + else + SET_RELOCATABLE= + fi + AC_SUBST([SET_RELOCATABLE]) + AM_CONDITIONAL([RELOCATABLE_VIA_LD], + [test $use_elf_origin_trick = yes]) + ]) + + dnl Support for relocatable libraries. + AC_DEFUN([AC_RELOCATABLE_LIBRARY], + [ + AC_REQUIRE([AC_RELOCATABLE_NOP]) + dnl Easier to put this here once, instead of into the DEFS of each Makefile. + if test "X$prefix" = "XNONE"; then + reloc_final_prefix="$ac_default_prefix" + else + reloc_final_prefix="$prefix" + fi + AC_DEFINE_UNQUOTED([INSTALLPREFIX], ["${reloc_final_prefix}"], + [Define to the value of ${prefix}, as a string.]) + ]) + + dnl Support for relocatable packages for which it is a nop. + AC_DEFUN([AC_RELOCATABLE_NOP], + [ + AC_MSG_CHECKING([whether to activate relocatable installation]) + AC_ARG_ENABLE(relocatable, + [ --enable-relocatable install a package that can be moved in the filesystem], + [if test "$enableval" != no; then + RELOCATABLE=yes + else + RELOCATABLE=no + fi + ], RELOCATABLE=no) + AC_SUBST(RELOCATABLE) + AC_MSG_RESULT([$RELOCATABLE]) + ]) + + dnl Determine the platform dependent parameters needed to use relocatability: + dnl shlibpath_var. + AC_DEFUN([AC_LIB_LIBPATH], + [ + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library path variable], acl_cv_libpath, [ + LD="$LD" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.libpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_libpath=${acl_cv_shlibpath_var:-none} + ]) + shlibpath_var="$acl_cv_shlibpath_var" + ]) + + # lib-ld.m4 serial 1 (gettext-0.11) + dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. + dnl This file is free software, distributed under the terms of the GNU + dnl General Public License. As a special exception to the GNU General + dnl Public License, this file may be distributed as part of a program + dnl that contains a configuration script generated by Autoconf, under + dnl the same distribution terms as the rest of that program. + + dnl Subroutines of libtool.m4, + dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision + dnl with libtool.m4. + + dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. + AC_DEFUN([AC_LIB_PROG_LD_GNU], + [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, + [# I'd rather use --version here, but apparently some GNU ld's only accept -v. + if $LD -v 2>&1 &5; then + acl_cv_prog_gnu_ld=yes + else + acl_cv_prog_gnu_ld=no + fi]) + with_gnu_ld=$acl_cv_prog_gnu_ld + ]) + + dnl From libtool-1.4. Sets the variable LD. + AC_DEFUN([AC_LIB_PROG_LD], + [AC_ARG_WITH(gnu-ld, + [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], + test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + ac_prog=ld + if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac + elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) + else + AC_MSG_CHECKING([for non-GNU ld]) + fi + AC_CACHE_VAL(acl_cv_path_LD, + [if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" + else + acl_cv_path_LD="$LD" # Let the user override the test with a path. + fi]) + LD="$acl_cv_path_LD" + if test -n "$LD"; then + AC_MSG_RESULT($LD) + else + AC_MSG_RESULT(no) + fi + test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) + AC_LIB_PROG_LD_GNU ]) diff -rNC3 smalltalk-2.1.1/sigsegv/config.h.in smalltalk-2.1.2/sigsegv/config.h.in *** smalltalk-2.1.1/sigsegv/config.h.in Thu Apr 17 23:35:27 2003 --- smalltalk-2.1.2/sigsegv/config.h.in Fri May 9 11:58:29 2003 *************** *** 1,4 **** ! /* config.h.in. Generated from configure.in by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H --- 1,19 ---- ! /* config.h.in. Generated from configure.ac by autoheader. */ ! ! /* The name of the include file describing the fault handler. */ ! #undef CFG_FAULT ! ! /* The name of the file implementing the handler functionality. */ ! #undef CFG_HANDLER ! ! /* The name of the file implementing sigsegv_reset_onstack_flag. */ ! #undef CFG_LEAVE ! ! /* The name of the include file describing the fault signals. */ ! #undef CFG_SIGNALS ! ! /* The name of the file determining the stack virtual memory area. */ ! #undef CFG_STACKVMA /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H *************** *** 34,44 **** /* Define to 1 if you have the `sigaltstack' function. */ #undef HAVE_SIGALTSTACK ! /* Define to 1 if you have the header file. */ ! #undef HAVE_SIGINFO_H ! ! /* Define if we are able to determine the virtual memory area of a given ! address. */ #undef HAVE_STACKVMA /* Define to 1 if you have the header file. */ --- 49,55 ---- /* Define to 1 if you have the `sigaltstack' function. */ #undef HAVE_SIGALTSTACK ! /* Define if CFG_STACKVMA is set to a nontrivial source file. */ #undef HAVE_STACKVMA /* Define to 1 if you have the header file. */ *************** *** 56,70 **** /* Define if sysconf(_SC_PAGESIZE) is available as a function or a macro. */ #undef HAVE_SYSCONF_PAGESIZE /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H - /* Define to 1 if you have the header file. */ - #undef HAVE_UCONTEXT_H - /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H --- 67,81 ---- /* Define if sysconf(_SC_PAGESIZE) is available as a function or a macro. */ #undef HAVE_SYSCONF_PAGESIZE + /* Define to 1 if you have the header file. */ + #undef HAVE_SYS_SIGNAL_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H *************** *** 100,105 **** /* Version number of package */ #undef VERSION ! /* Define to struct sigaltstack if that's the type of the argument to sigaltstack */ #undef stack_t --- 111,116 ---- /* Version number of package */ #undef VERSION ! /* Define to 'struct sigaltstack' if that's the type of the argument to sigaltstack */ #undef stack_t diff -rNC3 smalltalk-2.1.1/sigsegv/config.h.msvc smalltalk-2.1.2/sigsegv/config.h.msvc *** smalltalk-2.1.1/sigsegv/config.h.msvc Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/config.h.msvc Fri May 9 11:58:29 2003 *************** *** 0 **** --- 1,116 ---- + /* config.h.in. Generated from configure.ac by autoheader. */ + + /* The name of the include file describing the fault handler. */ + #undef CFG_FAULT + + /* The name of the file implementing the handler functionality. */ + #define CFG_HANDLER "handler-win32.c" + + /* The name of the file implementing sigsegv_reset_onstack_flag. */ + #undef CFG_LEAVE + + /* The name of the include file describing the fault signals. */ + #undef CFG_SIGNALS + + /* The name of the file determining the stack virtual memory area. */ + #undef CFG_STACKVMA + + /* Define to 1 if you have the header file. */ + #undef HAVE_DLFCN_H + + /* Define if getpagesize() is available as a function or a macro. */ + #undef HAVE_GETPAGESIZE + + /* Define to 1 if you have the `getrlimit' function. */ + #undef HAVE_GETRLIMIT + + /* Define to 1 if you have the header file. */ + #undef HAVE_INTTYPES_H + + /* Define to 1 if you have the header file. */ + #undef HAVE_MEMORY_H + + /* Define if defines MAP_ANON and mmaping with MAP_ANON works. */ + #undef HAVE_MMAP_ANON + + /* Define if defines MAP_ANONYMOUS and mmaping with MAP_ANONYMOUS + works. */ + #undef HAVE_MMAP_ANONYMOUS + + /* Define if mmaping of the special device /dev/zero works. */ + #undef HAVE_MMAP_DEVZERO + + /* Define if PAGESIZE is available as a macro. */ + #undef HAVE_PAGESIZE + + /* Define to 1 if you have the `setrlimit' function. */ + #undef HAVE_SETRLIMIT + + /* Define to 1 if you have the `sigaltstack' function. */ + #undef HAVE_SIGALTSTACK + + /* Define if CFG_STACKVMA is set to a nontrivial source file. */ + #undef HAVE_STACKVMA + + /* Define to 1 if you have the header file. */ + #undef HAVE_STDINT_H + + /* Define to 1 if you have the header file. */ + #undef HAVE_STDLIB_H + + /* Define to 1 if you have the header file. */ + #undef HAVE_STRINGS_H + + /* Define to 1 if you have the header file. */ + #undef HAVE_STRING_H + + /* Define if sysconf(_SC_PAGESIZE) is available as a function or a macro. */ + #undef HAVE_SYSCONF_PAGESIZE + + /* Define to 1 if you have the header file. */ + #undef HAVE_SYS_SIGNAL_H + + /* Define to 1 if you have the header file. */ + #undef HAVE_SYS_STAT_H + + /* Define to 1 if you have the header file. */ + #undef HAVE_SYS_TYPES_H + + /* Define to 1 if you have the header file. */ + #undef HAVE_UNISTD_H + + /* Define if you have the sigaltstack() function and it works. */ + #undef HAVE_WORKING_SIGALTSTACK + + /* Name of package */ + #undef PACKAGE + + /* Define to the address where bug reports for this package should be sent. */ + #undef PACKAGE_BUGREPORT + + /* Define to the full name of this package. */ + #undef PACKAGE_NAME + + /* Define to the full name and version of this package. */ + #undef PACKAGE_STRING + + /* Define to the one symbol short name of this package. */ + #undef PACKAGE_TARNAME + + /* Define to the version of this package. */ + #undef PACKAGE_VERSION + + /* Define as the direction of stack growth for your system. STACK_DIRECTION > + 0 => grows toward higher addresses STACK_DIRECTION < 0 => grows toward + lower addresses STACK_DIRECTION = 0 => spaghetti stack. */ + #undef STACK_DIRECTION + + /* Define to 1 if you have the ANSI C header files. */ + #undef STDC_HEADERS + + /* Version number of package */ + #undef VERSION + + /* Define to 'struct sigaltstack' if that's the type of the argument to + sigaltstack */ + #undef stack_t diff -rNC3 smalltalk-2.1.1/sigsegv/configure smalltalk-2.1.2/sigsegv/configure *** smalltalk-2.1.1/sigsegv/configure Thu Apr 17 23:34:56 2003 --- smalltalk-2.1.2/sigsegv/configure Fri May 9 11:57:56 2003 *************** *** 1,6 **** #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.54 for libsigsegv 2.0-gst. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. --- 1,6 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.54 for libsigsegv 2.1-pre. # # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 # Free Software Foundation, Inc. *************** *** 422,429 **** # Identity of this package. PACKAGE_NAME='libsigsegv' PACKAGE_TARNAME='libsigsegv' ! PACKAGE_VERSION='2.0-gst' ! PACKAGE_STRING='libsigsegv 2.0-gst' PACKAGE_BUGREPORT='' ac_unique_file="src/sigsegv.h.in" --- 422,429 ---- # Identity of this package. PACKAGE_NAME='libsigsegv' PACKAGE_TARNAME='libsigsegv' ! PACKAGE_VERSION='2.1-pre' ! PACKAGE_STRING='libsigsegv 2.1-pre' PACKAGE_BUGREPORT='' ac_unique_file="src/sigsegv.h.in" *************** *** 464,470 **** # 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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP build build_cpu build_vendor build_os host host_cpu host_vendor host_os PLATFORM LN_S ECHO RANLIB ac_ct_RANLIB EGREP LIBTOOL FAULT_CONTEXT FAULT_CONTEXT_INCLUDE HAVE_SIGSEGV_RECOVERY HAVE_STACK_OVERFLOW_RECOVERY LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. --- 464,470 ---- # 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 INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP build build_cpu build_vendor build_os host host_cpu host_vendor host_os PLATFORM LN_S ECHO RANLIB ac_ct_RANLIB EGREP LIBTOOL CFG_SIGNALS CFG_FAULT FAULT_CONTEXT FAULT_CONTEXT_INCLUDE HAVE_SIGSEGV_RECOVERY CFG_STACKVMA HAVE_STACK_OVERFLOW_RECOVERY CFG_LEAVE CFG_HANDLER RELOCATABLE LIBOBJS LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. *************** *** 933,939 **** # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF ! \`configure' configures libsigsegv 2.0-gst to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... --- 933,939 ---- # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF ! \`configure' configures libsigsegv 2.1-pre to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... *************** *** 999,1005 **** if test -n "$ac_init_help"; then case $ac_init_help in ! short | recursive ) echo "Configuration of libsigsegv 2.0-gst:";; esac cat <<\_ACEOF --- 999,1005 ---- if test -n "$ac_init_help"; then case $ac_init_help in ! short | recursive ) echo "Configuration of libsigsegv 2.1-pre:";; esac cat <<\_ACEOF *************** *** 1008,1023 **** --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking Speeds up one-time builds --enable-dependency-tracking Do not reject slow dependency extractors ! --enable-shared=PKGS build shared libraries default=no --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ! --with-gnu-ld assume the C compiler uses GNU ld default=no ! --with-pic try to use only PIC/non-PIC objects default=use both Some influential environment variables: CC C compiler command --- 1008,1024 ---- --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking Speeds up one-time builds --enable-dependency-tracking Do not reject slow dependency extractors ! --enable-shared=PKGS build shared libraries default=yes --enable-static=PKGS build static libraries default=yes --enable-fast-install=PKGS optimize for fast installation default=yes --disable-libtool-lock avoid locking (might break parallel builds) + --enable-relocatable install a package that can be moved in the filesystem Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ! --with-gnu-ld assume the C compiler uses GNU ld [default=no] ! --with-pic try to use only PIC/non-PIC objects [default=use both] Some influential environment variables: CC C compiler command *************** *** 1093,1099 **** test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF ! libsigsegv configure 2.0-gst generated by GNU Autoconf 2.54 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 --- 1094,1100 ---- test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF ! libsigsegv configure 2.1-pre generated by GNU Autoconf 2.54 Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 *************** *** 1108,1114 **** This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. ! It was created by libsigsegv $as_me 2.0-gst, which was generated by GNU Autoconf 2.54. Invocation command line was $ $0 $@ --- 1109,1115 ---- This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. ! It was created by libsigsegv $as_me 2.1-pre, which was generated by GNU Autoconf 2.54. Invocation command line was $ $0 $@ *************** *** 1414,1419 **** --- 1415,1422 ---- + ac_config_headers="$ac_config_headers config.h" + ac_aux_dir= for ac_dir in ../config $srcdir/../config; do *************** *** 1729,1735 **** # Define the identity of the package. PACKAGE=libsigsegv ! VERSION=2.0-gst cat >>confdefs.h <<_ACEOF --- 1732,1738 ---- # Define the identity of the package. PACKAGE=libsigsegv ! VERSION=2.1-pre cat >>confdefs.h <<_ACEOF *************** *** 1855,1863 **** - ac_config_headers="$ac_config_headers config.h" - - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' --- 1858,1863 ---- *************** *** 3181,3187 **** test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - # Check whether --enable-shared or --disable-shared was given. if test "${enable_shared+set}" = set; then enableval="$enable_shared" --- 3181,3186 ---- *************** *** 3202,3208 **** ;; esac else ! enable_shared=no fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then --- 3201,3207 ---- ;; esac else ! enable_shared=yes fi; # Check whether --enable-static or --disable-static was given. if test "${enable_static+set}" = set; then *************** *** 4544,4550 **** case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 4547 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? --- 4543,4549 ---- case $host in *-*-irix6*) # Find out which ABI we are using. ! echo '#line 4546 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? *************** *** 4830,4835 **** --- 4829,4847 ---- # PIC (with -KPIC) is the default. ;; + linux*) + echo '__INTEL_COMPILER' > conftest.$ac_ext + if $CC -E conftest.$ac_ext >/dev/null | grep __INTEL_COMPILER >/dev/null + then + lt_cv_prog_cc_can_build_shared=no + else + # Intel icc + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-static' + lt_cv_prog_cc_wl='-Qoption,ld,' + fi + ;; + cygwin* | mingw* | pw32* | os2*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). *************** *** 5058,5064 **** save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no ! if { (eval echo configure:5061: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then --- 5070,5076 ---- save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" compiler_c_o=no ! if { (eval echo configure:5073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.$ac_objext; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings if test -s out/conftest.err; then *************** *** 6121,6126 **** --- 6133,6150 ---- dynamic_linker=no ;; + freebsd*-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='GNU ld.so' + ;; + freebsd*) objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` version_type=freebsd-$objformat *************** *** 6832,6838 **** lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&5 fi + $rm conftest* + fi echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 *************** *** 7661,7675 **** # For testing cross-compilation behaviour. #cross_compiling=yes ! { echo; echo "${term_bold}Optional Platform Environment:${term_norm}"; } >& 6 case "$host_os" in ! sunos4* | freebsd* | hpux* | darwin*) ! CFG_SIGNALS=signals-segv-bus.h ;; *) ! CFG_SIGNALS=signals-segv.h ;; esac ! ac_config_links="$ac_config_links src/signals.h:src/$CFG_SIGNALS" # How to determine the memory page size. --- 7687,7828 ---- # For testing cross-compilation behaviour. #cross_compiling=yes ! { echo; echo "${term_bold}Optional Platform Environment:${term_norm}"; ! echo "If something locks up here, please reconfigure with ${term_bold}--disable-generational-gc${term_norm}" ! } >& 6 ! ! ! for ac_header in sys/signal.h ! do ! as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo "$as_me:$LINENO: checking for $ac_header" >&5 ! echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ! else ! # Is the header compilable? ! echo "$as_me:$LINENO: checking $ac_header usability" >&5 ! echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! #include "confdefs.h" ! $ac_includes_default ! #include <$ac_header> ! _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! ac_header_compiler=yes ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ac_header_compiler=no ! fi ! rm -f 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 $ac_header presence" >&5 ! echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! #include "confdefs.h" ! #include <$ac_header> ! _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 ! 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 ! cat 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 in ! yes:no ) ! { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ! echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ! echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; ! no:yes ) ! { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ! echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ! echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ! echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; ! esac ! echo "$as_me:$LINENO: checking for $ac_header" >&5 ! echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! eval "$as_ac_Header=$ac_header_preproc" ! fi ! echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 ! echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ! ! fi ! if test `eval echo '${'$as_ac_Header'}'` = yes; then ! cat >>confdefs.h <<_ACEOF ! #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 ! _ACEOF ! ! fi ! ! done ! case "$host_os" in ! sunos4* | freebsd*) ! CFG_SIGNALS=signals-bsd.h ;; ! hpux*) ! CFG_SIGNALS=signals-hpux.h ;; ! macos* | darwin*) ! CFG_SIGNALS=signals-macos.h ;; ! gnu*) ! CFG_SIGNALS=signals-hurd.h ;; *) ! CFG_SIGNALS=signals.h ;; esac ! ! cat >>confdefs.h <<_ACEOF ! #define CFG_SIGNALS "$CFG_SIGNALS" ! _ACEOF ! # How to determine the memory page size. *************** *** 8261,8412 **** ! for ac_header in siginfo.h ucontext.h ! do ! as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo "$as_me:$LINENO: checking for $ac_header" >&5 ! echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_Header+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 - fi - echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 - echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 else ! # Is the header compilable? ! echo "$as_me:$LINENO: checking $ac_header usability" >&5 ! echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 ! cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" ! $ac_includes_default ! #include <$ac_header> _ACEOF ! rm -f conftest.$ac_objext ! if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! ac_header_compiler=yes else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! ac_header_compiler=no fi ! rm -f 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 $ac_header presence" >&5 ! echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 ! cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" - #include <$ac_header> - _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 - 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 - cat 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 in ! yes:no ) ! { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 ! echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ! echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; ! no:yes ) ! { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 ! echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ! echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ! { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 ! echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; ! esac ! echo "$as_me:$LINENO: checking for $ac_header" >&5 ! echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 ! if eval "test \"\${$as_ac_Header+set}\" = set"; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 else ! eval "$as_ac_Header=$ac_header_preproc" fi - echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 - echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 fi ! if test `eval echo '${'$as_ac_Header'}'` = yes; then ! cat >>confdefs.h <<_ACEOF ! #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi - done ! echo "$as_me:$LINENO: checking whether a fault handler according to POSIX works" >&5 ! echo $ECHO_N "checking whether a fault handler according to POSIX works... $ECHO_C" >&6 ! if test "${sv_cv_fault_posix+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! *-*-solaris2.[7-9] | i?86-*-linux2.[4-9]* | i?86-*-freebsd[4-9]* | alpha*-dec-osf[4-9]* | *-*-hpux11* | mips-sgi-irix6*) sv_cv_fault_posix=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include ! #ifdef HAVE_SIGINFO_H ! #include ! #endif ! void sigsegv_handler (int sig, siginfo_t *sip, void *ucp) { ! void *fault_address = (void *) (sip->si_addr); } int main () { struct sigaction action; ! action.sa_sigaction = &sigsegv_handler; ! action.sa_flags = SA_SIGINFO; ; return 0; } --- 8414,9132 ---- ! ! ! echo "$as_me:$LINENO: checking whether a fault handler according to POSIX works" >&5 ! echo $ECHO_N "checking whether a fault handler according to POSIX works... $ECHO_C" >&6 ! if test "${sv_cv_fault_posix+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ! ! if test "$cross_compiling" = yes; then ! case "$host" in ! *-*-solaris2.[7-9] | i?86-*-linux2.[4-9]* | i?86-*-freebsd[4-9]* | alpha*-dec-osf[4-9]* | *-*-hpux11* | mips-sgi-irix6*) sv_cv_fault_posix=yes ;; ! *) ! cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" ! ! #include ! ! void sigsegv_handler (int sig, siginfo_t *sip, void *ucp) ! { ! void *fault_address = (void *) (sip->si_addr); ! } ! ! int ! main () ! { ! struct sigaction action; ! action.sa_sigaction = &sigsegv_handler; ! action.sa_flags = SA_SIGINFO; ! ; ! return 0; ! } _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_posix="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_posix=no fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! ;; ! esac ! else ! cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" ! #include ! #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! ! #include ! #include ! #if HAVE_MMAP_DEVZERO ! # include ! # ifndef MAP_FILE ! # define MAP_FILE 0 ! # endif ! #endif ! #ifndef PROT_NONE ! # define PROT_NONE 0 ! #endif ! #if HAVE_MMAP_ANON ! # define zero_fd -1 ! # define map_flags MAP_ANON | MAP_PRIVATE ! #elif HAVE_MMAP_ANONYMOUS ! # define zero_fd -1 ! # define map_flags MAP_ANONYMOUS | MAP_PRIVATE ! #elif HAVE_MMAP_DEVZERO ! static int zero_fd; ! # define map_flags MAP_FILE | MAP_PRIVATE ! #endif ! unsigned long page; ! int handler_called = 0; ! void sigsegv_handler (int sig, siginfo_t *sip, void *ucp) ! { ! void *fault_address = (void *) (sip->si_addr); ! handler_called++; ! if (fault_address != (void*)(page + 0x678)) ! exit (3); ! if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0) ! exit (2); ! } ! void crasher (unsigned long p) ! { ! *(int *) (p + 0x678) = 42; ! } ! int main () ! { ! void *p; ! struct sigaction action; ! /* Preparations. */ ! #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO ! zero_fd = open ("/dev/zero", O_RDONLY, 0644); ! #endif ! /* Setup some mmaped memory. */ ! #ifdef __hpux ! /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete ! freedom about the address range. */ ! p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); ! #else ! p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); ! #endif ! if (p == (void *)(-1)) ! exit (2); ! page = (unsigned long) p; ! /* Make it read-only. */ ! if (mprotect ((void *) page, 0x10000, PROT_READ) < 0) ! exit (2); ! /* Install the SIGSEGV handler. */ ! sigemptyset(&action.sa_mask); ! action.sa_sigaction = &sigsegv_handler; ! action.sa_flags = SA_SIGINFO; ! sigaction (SIGSEGV, &action, (struct sigaction *) NULL); ! sigaction (SIGBUS, &action, (struct sigaction *) NULL); ! /* The first write access should invoke the handler and then complete. */ ! crasher (page); ! /* The second write access should not invoke the handler. */ ! crasher (page); ! /* Check that the handler was called only once. */ ! if (handler_called != 1) ! exit (1); ! /* Test passed! */ ! return 0; ! } ! _ACEOF ! rm -f conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! sv_cv_fault_posix=yes ! else ! echo "$as_me: program exited with status $ac_status" >&5 ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ( exit $ac_status ) ! sv_cv_fault_posix=no ! fi ! rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ! fi ! ! fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_posix" >&5 ! echo "${ECHO_T}$sv_cv_fault_posix" >&6 ! ! ! ! ! ! ! echo "$as_me:$LINENO: checking whether a fault handler according to Linux/i386 works" >&5 ! echo $ECHO_N "checking whether a fault handler according to Linux/i386 works... $ECHO_C" >&6 ! if test "${sv_cv_fault_linux_i386+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ! if test "$cross_compiling" = yes; then ! case "$host" in ! i?86-*-linux2.[2-9]*) sv_cv_fault_linux_i386=yes ;; ! *) ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! #include "confdefs.h" ! ! #include ! #include ! void sigsegv_handler (int sig, struct sigcontext sc) ! { ! void *fault_address = (void *) (sc.cr2); ! } ! ! int ! main () ! { ! struct sigaction action; ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! sv_cv_fault_linux_i386="guessing no" ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! sv_cv_fault_linux_i386=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! ;; ! esac ! ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! #include "confdefs.h" ! ! #include ! #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! #include ! #include ! #include ! #if HAVE_MMAP_DEVZERO ! # include ! # ifndef MAP_FILE ! # define MAP_FILE 0 ! # endif ! #endif ! #ifndef PROT_NONE ! # define PROT_NONE 0 ! #endif ! #if HAVE_MMAP_ANON ! # define zero_fd -1 ! # define map_flags MAP_ANON | MAP_PRIVATE ! #elif HAVE_MMAP_ANONYMOUS ! # define zero_fd -1 ! # define map_flags MAP_ANONYMOUS | MAP_PRIVATE ! #elif HAVE_MMAP_DEVZERO ! static int zero_fd; ! # define map_flags MAP_FILE | MAP_PRIVATE ! #endif ! unsigned long page; ! int handler_called = 0; ! void sigsegv_handler (int sig, struct sigcontext sc) ! { ! void *fault_address = (void *) (sc.cr2); ! handler_called++; ! if (fault_address != (void*)(page + 0x678)) ! exit (3); ! if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0) ! exit (2); ! } ! void crasher (unsigned long p) ! { ! *(int *) (p + 0x678) = 42; ! } ! int main () ! { ! void *p; ! struct sigaction action; ! /* Preparations. */ ! #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO ! zero_fd = open ("/dev/zero", O_RDONLY, 0644); ! #endif ! /* Setup some mmaped memory. */ ! #ifdef __hpux ! /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete ! freedom about the address range. */ ! p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); ! #else ! p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); ! #endif ! if (p == (void *)(-1)) ! exit (2); ! page = (unsigned long) p; ! /* Make it read-only. */ ! if (mprotect ((void *) page, 0x10000, PROT_READ) < 0) ! exit (2); ! /* Install the SIGSEGV handler. */ ! sigemptyset(&action.sa_mask); ! ! action.sa_handler = (void (*) (int)) &sigsegv_handler; ! action.sa_flags = 0; ! ! sigaction (SIGSEGV, &action, (struct sigaction *) NULL); ! sigaction (SIGBUS, &action, (struct sigaction *) NULL); ! /* The first write access should invoke the handler and then complete. */ ! crasher (page); ! /* The second write access should not invoke the handler. */ ! crasher (page); ! /* Check that the handler was called only once. */ ! if (handler_called != 1) ! exit (1); ! /* Test passed! */ ! return 0; ! } ! _ACEOF ! rm -f conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! sv_cv_fault_linux_i386=yes ! else ! echo "$as_me: program exited with status $ac_status" >&5 ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ( exit $ac_status ) ! sv_cv_fault_linux_i386=no ! fi ! rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ! fi ! ! fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_linux_i386" >&5 ! echo "${ECHO_T}$sv_cv_fault_linux_i386" >&6 ! ! ! ! ! ! ! echo "$as_me:$LINENO: checking whether a fault handler according to old Linux/i386 works" >&5 ! echo $ECHO_N "checking whether a fault handler according to old Linux/i386 works... $ECHO_C" >&6 ! if test "${sv_cv_fault_linux_i386_old+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ! if test "$cross_compiling" = yes; then ! case "$host" in ! i?86-*-linux2.[2-9]*) sv_cv_fault_linux_i386_old=yes ;; ! *) ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! #include "confdefs.h" ! ! #include ! ! void sigsegv_handler (int sig, unsigned int more) ! { ! void *fault_address = (void *) (((unsigned long *) &more) [21]); ! } ! ! int ! main () ! { ! struct sigaction action; ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! sv_cv_fault_linux_i386_old="guessing no" ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! sv_cv_fault_linux_i386_old=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! ;; ! esac ! ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! #include "confdefs.h" ! ! #include ! #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! ! #include ! #include ! #if HAVE_MMAP_DEVZERO ! # include ! # ifndef MAP_FILE ! # define MAP_FILE 0 ! # endif ! #endif ! #ifndef PROT_NONE ! # define PROT_NONE 0 ! #endif ! #if HAVE_MMAP_ANON ! # define zero_fd -1 ! # define map_flags MAP_ANON | MAP_PRIVATE ! #elif HAVE_MMAP_ANONYMOUS ! # define zero_fd -1 ! # define map_flags MAP_ANONYMOUS | MAP_PRIVATE ! #elif HAVE_MMAP_DEVZERO ! static int zero_fd; ! # define map_flags MAP_FILE | MAP_PRIVATE ! #endif ! unsigned long page; ! int handler_called = 0; ! void sigsegv_handler (int sig, unsigned int more) ! { ! void *fault_address = (void *) (((unsigned long *) &more) [21]); ! handler_called++; ! if (fault_address != (void*)(page + 0x678)) ! exit (3); ! if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0) ! exit (2); ! } ! void crasher (unsigned long p) ! { ! *(int *) (p + 0x678) = 42; ! } ! int main () ! { ! void *p; ! struct sigaction action; ! /* Preparations. */ ! #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO ! zero_fd = open ("/dev/zero", O_RDONLY, 0644); ! #endif ! /* Setup some mmaped memory. */ ! #ifdef __hpux ! /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete ! freedom about the address range. */ ! p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); ! #else ! p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); ! #endif ! if (p == (void *)(-1)) ! exit (2); ! page = (unsigned long) p; ! /* Make it read-only. */ ! if (mprotect ((void *) page, 0x10000, PROT_READ) < 0) ! exit (2); ! /* Install the SIGSEGV handler. */ ! sigemptyset(&action.sa_mask); ! ! action.sa_handler = (void (*) (int)) &sigsegv_handler; ! action.sa_flags = 0; ! ! sigaction (SIGSEGV, &action, (struct sigaction *) NULL); ! sigaction (SIGBUS, &action, (struct sigaction *) NULL); ! /* The first write access should invoke the handler and then complete. */ ! crasher (page); ! /* The second write access should not invoke the handler. */ ! crasher (page); ! /* Check that the handler was called only once. */ ! if (handler_called != 1) ! exit (1); ! /* Test passed! */ ! return 0; ! } ! _ACEOF ! rm -f conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && { ac_try='./conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! sv_cv_fault_linux_i386_old=yes else ! echo "$as_me: program exited with status $ac_status" >&5 ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! ( exit $ac_status ) ! sv_cv_fault_linux_i386_old=no ! fi ! rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_linux_i386_old" >&5 ! echo "${ECHO_T}$sv_cv_fault_linux_i386_old" >&6 ! ! ! ! ! ! ! echo "$as_me:$LINENO: checking whether a fault handler according to Linux/m68k works" >&5 ! echo $ECHO_N "checking whether a fault handler according to Linux/m68k works... $ECHO_C" >&6 ! if test "${sv_cv_fault_linux_m68k+set}" = set; then ! echo $ECHO_N "(cached) $ECHO_C" >&6 ! else ! ! if test "$cross_compiling" = yes; then ! case "$host" in ! ! *) ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! #include "confdefs.h" ! ! #include ! #include ! #include "$srcdir/src/fault-linux-m68k.c" ! void sigsegv_handler (int sig, int code, struct sigcontext *scp) ! { ! void *fault_address = (void *) (get_fault_addr (scp)); ! } ! ! int ! main () ! { ! struct sigaction action; ! ! ; ! return 0; ! } ! _ACEOF ! rm -f conftest.$ac_objext conftest$ac_exeext ! if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; }; then ! sv_cv_fault_linux_m68k="guessing no" ! else ! echo "$as_me: failed program was:" >&5 ! cat conftest.$ac_ext >&5 ! sv_cv_fault_linux_m68k=no ! fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ! ;; ! esac ! ! else ! cat >conftest.$ac_ext <<_ACEOF ! #line $LINENO "configure" ! #include "confdefs.h" ! ! #include ! #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! #include ! #include "$srcdir/src/fault-linux-m68k.c" ! #include ! #include ! #if HAVE_MMAP_DEVZERO ! # include ! # ifndef MAP_FILE ! # define MAP_FILE 0 ! # endif ! #endif ! #ifndef PROT_NONE ! # define PROT_NONE 0 ! #endif ! #if HAVE_MMAP_ANON ! # define zero_fd -1 ! # define map_flags MAP_ANON | MAP_PRIVATE ! #elif HAVE_MMAP_ANONYMOUS ! # define zero_fd -1 ! # define map_flags MAP_ANONYMOUS | MAP_PRIVATE ! #elif HAVE_MMAP_DEVZERO ! static int zero_fd; ! # define map_flags MAP_FILE | MAP_PRIVATE ! #endif ! unsigned long page; ! int handler_called = 0; ! void sigsegv_handler (int sig, int code, struct sigcontext *scp) ! { ! void *fault_address = (void *) (get_fault_addr (scp)); ! handler_called++; ! if (fault_address != (void*)(page + 0x678)) ! exit (3); ! if (mprotect ((void *) page, 0x10000, PROT_READ | PROT_WRITE) < 0) ! exit (2); ! } ! void crasher (unsigned long p) ! { ! *(int *) (p + 0x678) = 42; ! } ! int main () ! { ! void *p; ! struct sigaction action; ! /* Preparations. */ ! #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO ! zero_fd = open ("/dev/zero", O_RDONLY, 0644); ! #endif ! /* Setup some mmaped memory. */ ! #ifdef __hpux ! /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete ! freedom about the address range. */ ! p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); ! #else ! p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); ! #endif ! if (p == (void *)(-1)) ! exit (2); ! page = (unsigned long) p; ! /* Make it read-only. */ ! if (mprotect ((void *) page, 0x10000, PROT_READ) < 0) ! exit (2); ! /* Install the SIGSEGV handler. */ ! sigemptyset(&action.sa_mask); ! ! action.sa_handler = (void (*) (int)) &sigsegv_handler; ! action.sa_flags = 0; ! ! sigaction (SIGSEGV, &action, (struct sigaction *) NULL); ! sigaction (SIGBUS, &action, (struct sigaction *) NULL); ! /* The first write access should invoke the handler and then complete. */ ! crasher (page); ! /* The second write access should not invoke the handler. */ ! crasher (page); ! /* Check that the handler was called only once. */ ! if (handler_called != 1) ! exit (1); ! /* Test passed! */ ! return 0; ! } _ACEOF + rm -f conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + sv_cv_fault_linux_m68k=yes + else + echo "$as_me: program exited with status $ac_status" >&5 + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ( exit $ac_status ) + sv_cv_fault_linux_m68k=no + fi + rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi fi + echo "$as_me:$LINENO: result: $sv_cv_fault_linux_m68k" >&5 + echo "${ECHO_T}$sv_cv_fault_linux_m68k" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to Linux/PowerPC works" >&5 ! echo $ECHO_N "checking whether a fault handler according to Linux/PowerPC works... $ECHO_C" >&6 ! if test "${sv_cv_fault_linux_powerpc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include ! #include ! void sigsegv_handler (int sig, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->regs->dar); } int main () { struct sigaction action; ! ; return 0; } *************** *** 8423,8433 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_posix="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_posix=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 9143,9153 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_linux_powerpc="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_linux_powerpc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 8440,8449 **** #include #include ! #include ! #ifdef HAVE_SIGINFO_H ! #include ! #endif #include #include #if HAVE_MMAP_DEVZERO --- 9160,9169 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! #include #include #include #if HAVE_MMAP_DEVZERO *************** *** 8467,8475 **** #endif unsigned long page; int handler_called = 0; ! void sigsegv_handler (int sig, siginfo_t *sip, void *ucp) { ! void *fault_address = (void *) (sip->si_addr); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 9187,9195 ---- #endif unsigned long page; int handler_called = 0; ! void sigsegv_handler (int sig, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->regs->dar); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 8489,8495 **** --- 9209,9221 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 8498,8505 **** exit (2); /* Install the SIGSEGV handler. */ sigemptyset(&action.sa_mask); ! action.sa_sigaction = &sigsegv_handler; ! action.sa_flags = SA_SIGINFO; sigaction (SIGSEGV, &action, (struct sigaction *) NULL); sigaction (SIGBUS, &action, (struct sigaction *) NULL); /* The first write access should invoke the handler and then complete. */ --- 9224,9233 ---- exit (2); /* Install the SIGSEGV handler. */ sigemptyset(&action.sa_mask); ! ! action.sa_handler = (void (*) (int)) &sigsegv_handler; ! action.sa_flags = 0; ! sigaction (SIGSEGV, &action, (struct sigaction *) NULL); sigaction (SIGBUS, &action, (struct sigaction *) NULL); /* The first write access should invoke the handler and then complete. */ *************** *** 8524,8575 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_posix=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_posix=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_posix" >&5 ! echo "${ECHO_T}$sv_cv_fault_posix" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to Linux/i386 works" >&5 ! echo $ECHO_N "checking whether a fault handler according to Linux/i386 works... $ECHO_C" >&6 ! if test "${sv_cv_fault_linux_i386+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! i?86-*-linux2.[2-9]*) sv_cv_fault_linux_i386=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include ! #include ! void sigsegv_handler (int sig, struct sigcontext sc) { ! void *fault_address = (void *) (sc.cr2); } int main () { struct sigaction action; ! ; return 0; } --- 9252,9304 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_linux_powerpc=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_linux_powerpc=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_linux_powerpc" >&5 ! echo "${ECHO_T}$sv_cv_fault_linux_powerpc" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to Linux/HPPA works" >&5 ! echo $ECHO_N "checking whether a fault handler according to Linux/HPPA works... $ECHO_C" >&6 ! if test "${sv_cv_fault_linux_hppa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include ! ! void sigsegv_handler (int sig, siginfo_t *sip, void *ucp) { ! void *fault_address = (void *) (sip->si_ptr); } int main () { struct sigaction action; ! action.sa_sigaction = &sigsegv_handler; ! action.sa_flags = SA_SIGINFO; ; return 0; } *************** *** 8586,8596 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_linux_i386="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_linux_i386=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 9315,9325 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_linux_hppa="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_linux_hppa=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 8603,8610 **** #include #include ! #include ! #include #include #include #if HAVE_MMAP_DEVZERO --- 9332,9341 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! #include #include #if HAVE_MMAP_DEVZERO *************** *** 8628,8636 **** #endif unsigned long page; int handler_called = 0; ! void sigsegv_handler (int sig, struct sigcontext sc) { ! void *fault_address = (void *) (sc.cr2); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 9359,9367 ---- #endif unsigned long page; int handler_called = 0; ! void sigsegv_handler (int sig, siginfo_t *sip, void *ucp) { ! void *fault_address = (void *) (sip->si_ptr); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 8650,8656 **** --- 9381,9393 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 8659,8668 **** exit (2); /* Install the SIGSEGV handler. */ sigemptyset(&action.sa_mask); ! ! action.sa_handler = (void (*) (int)) &sigsegv_handler; ! action.sa_flags = 0; ! sigaction (SIGSEGV, &action, (struct sigaction *) NULL); sigaction (SIGBUS, &action, (struct sigaction *) NULL); /* The first write access should invoke the handler and then complete. */ --- 9396,9403 ---- exit (2); /* Install the SIGSEGV handler. */ sigemptyset(&action.sa_mask); ! action.sa_sigaction = &sigsegv_handler; ! action.sa_flags = SA_SIGINFO; sigaction (SIGSEGV, &action, (struct sigaction *) NULL); sigaction (SIGBUS, &action, (struct sigaction *) NULL); /* The first write access should invoke the handler and then complete. */ *************** *** 8687,8721 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_linux_i386=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_linux_i386=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_linux_i386" >&5 ! echo "${ECHO_T}$sv_cv_fault_linux_i386" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to old Linux/i386 works" >&5 ! echo $ECHO_N "checking whether a fault handler according to old Linux/i386 works... $ECHO_C" >&6 ! if test "${sv_cv_fault_linux_i386_old+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! i?86-*-linux2.[2-9]*) sv_cv_fault_linux_i386_old=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" --- 9422,9456 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_linux_hppa=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_linux_hppa=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_linux_hppa" >&5 ! echo "${ECHO_T}$sv_cv_fault_linux_hppa" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to BSD works" >&5 ! echo $ECHO_N "checking whether a fault handler according to BSD works... $ECHO_C" >&6 ! if test "${sv_cv_fault_bsd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! i?86-*-freebsd[4-9]*) sv_cv_fault_bsd=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" *************** *** 8723,8731 **** #include ! void sigsegv_handler (int sig, unsigned int more) { ! void *fault_address = (void *) (((unsigned long *) &more) [21]); } int --- 9458,9466 ---- #include ! void sigsegv_handler (int sig, int code, struct sigcontext *scp, void *addr) { ! void *fault_address = (void *) (addr); } int *************** *** 8749,8759 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_linux_i386_old="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_linux_i386_old=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 9484,9494 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_bsd="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_bsd=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 8766,8772 **** #include #include ! #include #include #include --- 9501,9509 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif #include #include *************** *** 8791,8799 **** #endif unsigned long page; int handler_called = 0; ! void sigsegv_handler (int sig, unsigned int more) { ! void *fault_address = (void *) (((unsigned long *) &more) [21]); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 9528,9536 ---- #endif unsigned long page; int handler_called = 0; ! void sigsegv_handler (int sig, int code, struct sigcontext *scp, void *addr) { ! void *fault_address = (void *) (addr); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 8813,8819 **** --- 9550,9562 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 8850,8884 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_linux_i386_old=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_linux_i386_old=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_linux_i386_old" >&5 ! echo "${ECHO_T}$sv_cv_fault_linux_i386_old" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to BSD works" >&5 ! echo $ECHO_N "checking whether a fault handler according to BSD works... $ECHO_C" >&6 ! if test "${sv_cv_fault_bsd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! i?86-*-freebsd[4-9]*) sv_cv_fault_bsd=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" --- 9593,9627 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_bsd=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_bsd=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_bsd" >&5 ! echo "${ECHO_T}$sv_cv_fault_bsd" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to IRIX works" >&5 ! echo $ECHO_N "checking whether a fault handler according to IRIX works... $ECHO_C" >&6 ! if test "${sv_cv_fault_irix+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! mips-sgi-irix6*) sv_cv_fault_irix=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" *************** *** 8886,8894 **** #include ! void sigsegv_handler (int sig, int code, struct sigcontext *scp, void *addr) { ! void *fault_address = (void *) (addr); } int --- 9629,9637 ---- #include ! void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) ((unsigned long) scp->sc_badvaddr); } int *************** *** 8912,8922 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_bsd="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_bsd=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 9655,9665 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_irix="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_irix=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 8929,8935 **** #include #include ! #include #include #include --- 9672,9680 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif #include #include *************** *** 8954,8962 **** #endif unsigned long page; int handler_called = 0; ! void sigsegv_handler (int sig, int code, struct sigcontext *scp, void *addr) { ! void *fault_address = (void *) (addr); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 9699,9707 ---- #endif unsigned long page; int handler_called = 0; ! void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) ((unsigned long) scp->sc_badvaddr); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 8976,8982 **** --- 9721,9733 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 9013,9047 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_bsd=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_bsd=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_bsd" >&5 ! echo "${ECHO_T}$sv_cv_fault_bsd" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to IRIX works" >&5 ! echo $ECHO_N "checking whether a fault handler according to IRIX works... $ECHO_C" >&6 ! if test "${sv_cv_fault_irix+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! mips-sgi-irix6*) sv_cv_fault_irix=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" --- 9764,9798 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_irix=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_irix=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_irix" >&5 ! echo "${ECHO_T}$sv_cv_fault_irix" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to HP-UX HPPA works" >&5 ! echo $ECHO_N "checking whether a fault handler according to HP-UX HPPA works... $ECHO_C" >&6 ! if test "${sv_cv_fault_hpux_hppa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! hppa*-*-hpux11*) sv_cv_fault_hpux_hppa=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" *************** *** 9049,9057 **** #include void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) ((unsigned long) scp->sc_badvaddr); } int --- 9800,9813 ---- #include + #define USE_64BIT_REGS(mc) \ + (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID)) + #define GET_CR21(mc) \ + (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21) + void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss)); } int *************** *** 9075,9085 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_irix="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_irix=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 9831,9841 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_hpux_hppa="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_hpux_hppa=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 9092,9098 **** #include #include ! #include #include #include --- 9848,9861 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! ! #define USE_64BIT_REGS(mc) \ ! (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID)) ! #define GET_CR21(mc) \ ! (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21) #include #include *************** *** 9119,9125 **** int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) ((unsigned long) scp->sc_badvaddr); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 9882,9888 ---- int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (GET_CR21 (scp->sc_sl.sl_ss)); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 9139,9145 **** --- 9902,9914 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 9176,9210 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_irix=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_irix=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_irix" >&5 ! echo "${ECHO_T}$sv_cv_fault_irix" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to HP-UX HPPA works" >&5 ! echo $ECHO_N "checking whether a fault handler according to HP-UX HPPA works... $ECHO_C" >&6 ! if test "${sv_cv_fault_hpux_hppa+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! hppa*-*-hpux11*) sv_cv_fault_hpux_hppa=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" --- 9945,9979 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_hpux_hppa=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_hpux_hppa=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_hpux_hppa" >&5 ! echo "${ECHO_T}$sv_cv_fault_hpux_hppa" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to OSF/1 Alpha works" >&5 ! echo $ECHO_N "checking whether a fault handler according to OSF/1 Alpha works... $ECHO_C" >&6 ! if test "${sv_cv_fault_osf_alpha+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! alpha*-*-osf[4-9]* | alpha*-*-linux2.[4-9]*) sv_cv_fault_osf_alpha=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" *************** *** 9214,9220 **** void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_sl.sl_ss.ss_narrow.ss_cr21); } int --- 9983,9989 ---- void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_traparg_a0); } int *************** *** 9238,9248 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_hpux_hppa="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_hpux_hppa=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 10007,10017 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_osf_alpha="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_osf_alpha=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 9255,9261 **** #include #include ! #include #include #include --- 10024,10032 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif #include #include *************** *** 9282,9288 **** int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_sl.sl_ss.ss_narrow.ss_cr21); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 10053,10059 ---- int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_traparg_a0); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 9302,9308 **** --- 10073,10085 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 9339,9373 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_hpux_hppa=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_hpux_hppa=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_hpux_hppa" >&5 ! echo "${ECHO_T}$sv_cv_fault_hpux_hppa" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to OSF/1 Alpha works" >&5 ! echo $ECHO_N "checking whether a fault handler according to OSF/1 Alpha works... $ECHO_C" >&6 ! if test "${sv_cv_fault_osf_alpha+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! alpha*-*-osf[4-9]* | alpha*-*-linux2.[4-9]*) sv_cv_fault_osf_alpha=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" --- 10116,10150 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_osf_alpha=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_osf_alpha=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_osf_alpha" >&5 ! echo "${ECHO_T}$sv_cv_fault_osf_alpha" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to AIX works" >&5 ! echo $ECHO_N "checking whether a fault handler according to AIX works... $ECHO_C" >&6 ! if test "${sv_cv_fault_aix+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! *-*-aix*) sv_cv_fault_aix=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" *************** *** 9377,9383 **** void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_traparg_a0); } int --- 10154,10160 ---- void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_jmpbuf.jmp_context.o_vaddr); } int *************** *** 9401,9411 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_osf_alpha="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_osf_alpha=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 10178,10188 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_aix="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_aix=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 9418,9424 **** #include #include ! #include #include #include --- 10195,10203 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif #include #include *************** *** 9445,9451 **** int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_traparg_a0); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 10224,10230 ---- int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_jmpbuf.jmp_context.o_vaddr); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 9465,9471 **** --- 10244,10256 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 9502,9546 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_osf_alpha=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_osf_alpha=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_osf_alpha" >&5 ! echo "${ECHO_T}$sv_cv_fault_osf_alpha" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to AIX works" >&5 ! echo $ECHO_N "checking whether a fault handler according to AIX works... $ECHO_C" >&6 ! if test "${sv_cv_fault_aix+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! *-*-aix*) sv_cv_fault_aix=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include ! void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_jmpbuf.jmp_context.o_vaddr); } int --- 10287,10331 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_aix=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_aix=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_aix" >&5 ! echo "${ECHO_T}$sv_cv_fault_aix" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to MacOSX PowerPC works" >&5 ! echo $ECHO_N "checking whether a fault handler according to MacOSX PowerPC works... $ECHO_C" >&6 ! if test "${sv_cv_fault_macos_ppc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! powerpc-*-macos* | powerpc-*-darwin*) sv_cv_fault_macos_ppc=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include ! #include "$srcdir/src/fault-macos-powerpc.c" void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (get_fault_addr (scp)); } int *************** *** 9564,9574 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_aix="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_aix=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 10349,10359 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_macos_ppc="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_macos_ppc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 9581,9588 **** #include #include ! #include ! #include #include #if HAVE_MMAP_DEVZERO --- 10366,10375 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! #include "$srcdir/src/fault-macos-powerpc.c" #include #include #if HAVE_MMAP_DEVZERO *************** *** 9608,9614 **** int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_jmpbuf.jmp_context.o_vaddr); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 10395,10401 ---- int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (get_fault_addr (scp)); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 9628,9634 **** --- 10415,10427 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 9665,9709 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_aix=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_aix=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_aix" >&5 ! echo "${ECHO_T}$sv_cv_fault_aix" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to Darwin PPC works" >&5 ! echo $ECHO_N "checking whether a fault handler according to Darwin PPC works... $ECHO_C" >&6 ! if test "${sv_cv_fault_darwin_ppc+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! powerpc-*-darwin*) sv_cv_fault_darwin_ppc=yes ;; *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include ! #include void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_regs ? page + 0x678 : NULL); } int --- 10458,10502 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_macos_ppc=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_macos_ppc=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_macos_ppc" >&5 ! echo "${ECHO_T}$sv_cv_fault_macos_ppc" >&6 ! echo "$as_me:$LINENO: checking whether a fault handler according to Hurd works" >&5 ! echo $ECHO_N "checking whether a fault handler according to Hurd works... $ECHO_C" >&6 ! if test "${sv_cv_fault_hurd+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else if test "$cross_compiling" = yes; then case "$host" in ! *) cat >conftest.$ac_ext <<_ACEOF #line $LINENO "configure" #include "confdefs.h" #include ! void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (code); } int *************** *** 9727,9737 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_darwin_ppc="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_darwin_ppc=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; --- 10520,10530 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_hurd="guessing no" else echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ! sv_cv_fault_hurd=no fi rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ;; *************** *** 9744,9751 **** #include #include ! #include ! #include #include #include #if HAVE_MMAP_DEVZERO --- 10537,10546 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif ! #include #include #if HAVE_MMAP_DEVZERO *************** *** 9771,9777 **** int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (scp->sc_regs ? page + 0x678 : NULL); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); --- 10566,10572 ---- int handler_called = 0; void sigsegv_handler (int sig, int code, struct sigcontext *scp) { ! void *fault_address = (void *) (code); handler_called++; if (fault_address != (void*)(page + 0x678)) exit (3); *************** *** 9791,9797 **** --- 10586,10598 ---- zero_fd = open ("/dev/zero", O_RDONLY, 0644); #endif /* Setup some mmaped memory. */ + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + p = mmap ((void *) 0, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #else p = mmap ((void *) 0x12340000, 0x10000, PROT_READ | PROT_WRITE, map_flags, zero_fd, 0); + #endif if (p == (void *)(-1)) exit (2); page = (unsigned long) p; *************** *** 9828,9847 **** ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_darwin_ppc=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_darwin_ppc=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_darwin_ppc" >&5 ! echo "${ECHO_T}$sv_cv_fault_darwin_ppc" >&6 CFG_FAULT= --- 10629,10648 ---- ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then ! sv_cv_fault_hurd=yes else echo "$as_me: program exited with status $ac_status" >&5 echo "$as_me: failed program was:" >&5 cat conftest.$ac_ext >&5 ( exit $ac_status ) ! sv_cv_fault_hurd=no fi rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi ! echo "$as_me:$LINENO: result: $sv_cv_fault_hurd" >&5 ! echo "${ECHO_T}$sv_cv_fault_hurd" >&6 CFG_FAULT= *************** *** 9887,9898 **** esac FAULT_CONTEXT='struct sigcontext' fi ! if test -z "$CFG_FAULT" && test "$sv_cv_fault_darwin_ppc" = yes; then case "$host_cpu" in ! powerpc) CFG_FAULT=fault-darwin-powerpc.h ;; esac FAULT_CONTEXT='struct sigcontext' fi if test -z "$CFG_FAULT" && test "$sv_cv_fault_bsd" = yes; then case "$host_os" in freebsd*) --- 10688,10714 ---- esac FAULT_CONTEXT='struct sigcontext' fi ! if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_powerpc" = yes; then case "$host_cpu" in ! powerpc* | rs6000) CFG_FAULT=fault-linux-powerpc.h ;; esac FAULT_CONTEXT='struct sigcontext' fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_hppa" = yes; then + case "$host_cpu" in + hppa* | parisc*) CFG_FAULT=fault-linux-hppa.h ;; + esac + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_hurd" = yes; then + case "$host_os" in + netbsd*) # A false positive. + ;; + *) + CFG_FAULT=fault-hurd.h + FAULT_CONTEXT='struct sigcontext' + ;; + esac + fi if test -z "$CFG_FAULT" && test "$sv_cv_fault_bsd" = yes; then case "$host_os" in freebsd*) *************** *** 9915,9940 **** fi if test -z "$CFG_FAULT" && test "$sv_cv_fault_posix" = yes; then case "$host_os" in ! solaris*) case "$host_cpu" in ! i?86 | x86_64) CFG_FAULT=fault-solaris-i386.h ;; ! sparc*) CFG_FAULT=fault-solaris-sparc.h ;; ! *) CFG_FAULT=fault-solaris.h ;; esac ;; ! *) ! CFG_FAULT=fault-posix.h ;; esac - FAULT_CONTEXT='ucontext_t' - FAULT_CONTEXT_INCLUDE='#include ' fi if test -z "$CFG_FAULT"; then case "$host_os" in ! mingw*|cygwin*) FAULT_CONTEXT='CONTEXT' FAULT_CONTEXT_INCLUDE='#include ' ! CFG_FAULT=fault-none.h ;; esac fi --- 10731,10791 ---- fi if test -z "$CFG_FAULT" && test "$sv_cv_fault_posix" = yes; then case "$host_os" in ! openbsd*) case "$host_cpu" in ! i?86 | x86_64) CFG_FAULT=fault-openbsd-i386.h ;; ! *) CFG_FAULT=fault-openbsd.h ;; esac + FAULT_CONTEXT='struct sigcontext' ;; ! linux*) ! case "$host_cpu" in ! ia64) ! CFG_FAULT=fault-linux-ia64.h ! FAULT_CONTEXT='struct sigcontext' ! ;; ! esac ! ;; ! esac ! if test -z "$CFG_FAULT"; then ! case "$host_os" in ! solaris*) ! case "$host_cpu" in ! i?86 | x86_64) CFG_FAULT=fault-solaris-i386.h ;; ! sparc*) CFG_FAULT=fault-solaris-sparc.h ;; ! *) CFG_FAULT=fault-solaris.h ;; ! esac ! ;; ! *) ! CFG_FAULT=fault-posix.h ! ;; ! esac ! FAULT_CONTEXT='ucontext_t' ! FAULT_CONTEXT_INCLUDE='#include ' ! fi ! fi ! if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_m68k" = yes; then ! case "$host_cpu" in ! m68*) ! CFG_FAULT=fault-linux-m68k.h ! FAULT_CONTEXT='struct sigcontext' ! ;; ! esac ! fi ! if test -z "$CFG_FAULT" && test "$sv_cv_fault_macos_ppc" = yes; then ! case "$host_cpu" in ! powerpc* | rs6000) ! CFG_FAULT=fault-macos-powerpc.h ! FAULT_CONTEXT='struct sigcontext' ;; esac fi if test -z "$CFG_FAULT"; then case "$host_os" in ! mingw* | cygwin*) FAULT_CONTEXT='CONTEXT' FAULT_CONTEXT_INCLUDE='#include ' ! CFG_FAULT=fault-win32.h # nonexistent, just a dummy ;; esac fi *************** *** 9942,9948 **** sv_cv_have_sigsegv_recovery=yes else sv_cv_have_sigsegv_recovery=no ! case "$host_os" in linux*) case "$host_cpu" in alpha*) --- 10793,10799 ---- sv_cv_have_sigsegv_recovery=yes else sv_cv_have_sigsegv_recovery=no ! case "$host_os" in linux*) case "$host_cpu" in alpha*) *************** *** 9957,9983 **** CFG_FAULT=fault-linux-cris.h FAULT_CONTEXT='struct sigcontext' ;; - hppa* | parisc*) - CFG_FAULT=fault-linux-hppa.h - FAULT_CONTEXT='ucontext_t' - FAULT_CONTEXT_INCLUDE='#include ' - ;; - ia64) - CFG_FAULT=fault-linux-ia64.h - FAULT_CONTEXT='struct sigcontext' - ;; - m68*) - CFG_FAULT=fault-linux-m68k.h - FAULT_CONTEXT='struct sigcontext' - ;; mips*) CFG_FAULT=fault-linux-mips.h FAULT_CONTEXT='struct sigcontext' ;; - powerpc* | rs6000) - CFG_FAULT=fault-linux-powerpc.h - FAULT_CONTEXT='struct sigcontext' - ;; s390*) CFG_FAULT=fault-linux-s390.h FAULT_CONTEXT='struct sigcontext' --- 10808,10817 ---- *************** *** 10003,10026 **** esac FAULT_CONTEXT='struct vregs' ;; ! darwin*) case "$host_cpu" in ! i386) CFG_FAULT=fault-darwin-i386.h ;; esac ! FAULT_CONTEXT='void' ;; esac fi echo "$as_me:$LINENO: checking for the fault handler specifics" >&5 echo $ECHO_N "checking for the fault handler specifics... $ECHO_C" >&6 if test -z "$CFG_FAULT"; then CFG_FAULT=fault-none.h fi ! sv_cv_fault_include=$CFG_FAULT ! echo "$as_me:$LINENO: result: $sv_cv_fault_include" >&5 ! echo "${ECHO_T}$sv_cv_fault_include" >&6 ! ac_config_links="$ac_config_links src/fault.h:src/$CFG_FAULT" --- 10837,10866 ---- esac FAULT_CONTEXT='struct vregs' ;; ! macos* | darwin*) case "$host_cpu" in ! i?86 | x86_64) CFG_FAULT=fault-macos-i386.h ;; esac ! FAULT_CONTEXT='struct sigcontext' ;; esac fi echo "$as_me:$LINENO: checking for the fault handler specifics" >&5 echo $ECHO_N "checking for the fault handler specifics... $ECHO_C" >&6 + if test -n "$CFG_FAULT"; then + sv_cv_fault_include=$CFG_FAULT + else + sv_cv_fault_include=none + fi + echo "$as_me:$LINENO: result: $sv_cv_fault_include" >&5 + echo "${ECHO_T}$sv_cv_fault_include" >&6 if test -z "$CFG_FAULT"; then CFG_FAULT=fault-none.h fi ! cat >>confdefs.h <<_ACEOF ! #define CFG_FAULT "$CFG_FAULT" ! _ACEOF *************** *** 10189,10210 **** CFG_STACKVMA=stackvma-procfs.c else case "$host_os" in - darwin*) CFG_STACKVMA=stackvma-mach.c ;; linux*) CFG_STACKVMA=stackvma-linux.c ;; freebsd*) CFG_STACKVMA=stackvma-freebsd.c ;; beos*) CFG_STACKVMA=stackvma-beos.c ;; esac fi ! if test -z "$CFG_STACKVMA"; then ! CFG_STACKVMA=stackvma-none.c ! else cat >>confdefs.h <<\_ACEOF #define HAVE_STACKVMA 1 _ACEOF fi ! ac_config_links="$ac_config_links src/stackvma.c:src/$CFG_STACKVMA" --- 11029,11054 ---- CFG_STACKVMA=stackvma-procfs.c else case "$host_os" in linux*) CFG_STACKVMA=stackvma-linux.c ;; freebsd*) CFG_STACKVMA=stackvma-freebsd.c ;; beos*) CFG_STACKVMA=stackvma-beos.c ;; + macos* | darwin*) CFG_STACKVMA=stackvma-mach.c ;; esac fi ! if test -n "$CFG_STACKVMA"; then cat >>confdefs.h <<\_ACEOF #define HAVE_STACKVMA 1 _ACEOF + else + CFG_STACKVMA=stackvma-none.c fi ! ! cat >>confdefs.h <<_ACEOF ! #define CFG_STACKVMA "$CFG_STACKVMA" ! _ACEOF ! *************** *** 10283,10343 **** - echo "$as_me:$LINENO: checking for stack_t" >&5 - echo $ECHO_N "checking for stack_t... $ECHO_C" >&6 - if test "${ac_cv_type_stack_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else - cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" - #include "confdefs.h" - #include - #include - - int - main () - { - if ((stack_t *) 0) - return 0; - if (sizeof (stack_t)) - return 0; - ; - return 0; - } - _ACEOF - rm -f conftest.$ac_objext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_stack_t=yes - else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_type_stack_t=no - fi - rm -f conftest.$ac_objext conftest.$ac_ext - fi - echo "$as_me:$LINENO: result: $ac_cv_type_stack_t" >&5 - echo "${ECHO_T}$ac_cv_type_stack_t" >&6 - if test $ac_cv_type_stack_t = yes; then - : - else - - cat >>confdefs.h <<\_ACEOF - #define stack_t struct sigaltstack - _ACEOF - - fi - - for ac_func in sigaltstack do --- 11127,11132 ---- *************** *** 10408,10413 **** --- 11197,11265 ---- fi done + + if test "$ac_cv_func_sigaltstack" = yes; then + echo "$as_me:$LINENO: checking for stack_t" >&5 + echo $ECHO_N "checking for stack_t... $ECHO_C" >&6 + if test "${ac_cv_type_stack_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF + #line $LINENO "configure" + #include "confdefs.h" + + #include + #if HAVE_SYS_SIGNAL_H + # include + #endif + + + int + main () + { + if ((stack_t *) 0) + return 0; + if (sizeof (stack_t)) + return 0; + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_stack_t=yes + else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_type_stack_t=no + fi + rm -f conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_type_stack_t" >&5 + echo "${ECHO_T}$ac_cv_type_stack_t" >&6 + if test $ac_cv_type_stack_t = yes; then + : + else + + cat >>confdefs.h <<\_ACEOF + #define stack_t struct sigaltstack + _ACEOF + + + fi + + fi + echo "$as_me:$LINENO: checking for working sigaltstack" >&5 echo $ECHO_N "checking for working sigaltstack... $ECHO_C" >&6 if test "${sv_cv_sigaltstack+set}" = set; then *************** *** 10460,10466 **** #include #include ! #include #if HAVE_SETRLIMIT # include # include --- 11312,11320 ---- #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif #if HAVE_SETRLIMIT # include # include *************** *** 10551,10568 **** echo $ECHO_N "(cached) $ECHO_C" >&6 else ! if test "$sv_cv_sigaltstack" != no; then ! sv_cv_have_stack_overflow_recovery=yes else case "$host_os" in ! beos*) sv_cv_have_stack_overflow_recovery=yes ;; ! mingw*|cygwin*) sv_cv_have_stack_overflow_recovery=yes ;; *) sv_cv_have_stack_overflow_recovery=no ;; esac fi ! if test "$CFG_STACKVMA" = stackvma-none.c && test $sv_cv_have_sigsegv_recovery = no; then ! sv_cv_have_stack_overflow_recovery=no fi fi --- 11405,11478 ---- echo $ECHO_N "(cached) $ECHO_C" >&6 else ! if test "$sv_cv_sigaltstack" != no; then ! sv_cv_have_stack_overflow_recovery=maybe else case "$host_os" in ! beos*) sv_cv_have_stack_overflow_recovery=maybe ;; ! mingw* | cygwin*) sv_cv_have_stack_overflow_recovery=yes ;; *) sv_cv_have_stack_overflow_recovery=no ;; esac fi + if test $sv_cv_have_stack_overflow_recovery = maybe; then + if test -n "$CFG_FAULT"; then + cat >conftest.$ac_ext <<_ACEOF + #line $LINENO "configure" + #include "confdefs.h" + + #include "$srcdir/src/$CFG_FAULT" + #ifdef SIGSEGV_FAULT_HANDLER_ARGLIST + #ifdef SIGSEGV_FAULT_ADDRESS + xyzzy + #endif + #endif + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "xyzzy" >/dev/null 2>&1; then + condA=true + else + condA=false + fi + rm -f conftest* + + else + condA=false + fi + if test -n "$CFG_FAULT"; then + cat >conftest.$ac_ext <<_ACEOF + #line $LINENO "configure" + #include "confdefs.h" + + #include "$srcdir/src/$CFG_FAULT" + #ifdef SIGSEGV_FAULT_HANDLER_ARGLIST + #ifdef SIGSEGV_FAULT_STACKPOINTER + xyzzy + #endif + #endif + + _ACEOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "xyzzy" >/dev/null 2>&1; then + condB=true + else + condB=false + fi + rm -f conftest* ! else ! condB=false ! fi ! if test "$CFG_STACKVMA" != "stackvma-none.c"; then ! condC=true ! else ! condC=false ! fi ! if { $condA && $condB; } || { $condA && $condC; } || { $condB && $condC; }; then ! sv_cv_have_stack_overflow_recovery=yes ! else ! sv_cv_have_stack_overflow_recovery=no ! fi fi fi *************** *** 10715,10720 **** --- 11625,11634 ---- #include #include + #ifndef SS_ONSTACK + #define SS_ONSTACK SA_ONSTACK + #endif + #if HAVE_SETRLIMIT # include # include *************** *** 10728,10736 **** pass++; sigprocmask (SIG_SETMASK, &mainsigset, NULL); { stack_t ss; - #ifndef SS_ONSTACK - #define SS_ONSTACK SA_ONSTACK - #endif if (sigaltstack (NULL, &ss) >= 0) { ss.ss_flags &= ~SS_ONSTACK; --- 11642,11647 ---- *************** *** 10836,10841 **** --- 11747,11756 ---- #include #include #include + #ifndef SS_ONSTACK + #define SS_ONSTACK SA_ONSTACK + #endif + #if HAVE_SETRLIMIT # include # include *************** *** 11072,11077 **** --- 11987,11996 ---- #include #include + #ifndef SS_ONSTACK + #define SS_ONSTACK SA_ONSTACK + #endif + #if HAVE_SETRLIMIT # include # include *************** *** 11188,11193 **** --- 12107,12116 ---- #include #include #include + #ifndef SS_ONSTACK + #define SS_ONSTACK SA_ONSTACK + #endif + #if HAVE_SETRLIMIT # include # include *************** *** 11303,11318 **** beos*) CFG_LEAVE=leave-nop.c ;; esac if test -z "$CFG_LEAVE"; then ! CFG_LEAVE=leave-nop.c fi ! ac_config_links="$ac_config_links src/leave.c:src/$CFG_LEAVE" case "$host_os" in ! mingw*|cygwin*) ! CFG_HANDLER=handler-win32.c ! ;; *) if test $sv_cv_have_sigsegv_recovery = no \ && test $sv_cv_have_stack_overflow_recovery = no; then --- 12226,12242 ---- beos*) CFG_LEAVE=leave-nop.c ;; esac if test -z "$CFG_LEAVE"; then ! CFG_LEAVE=leave-none.c fi ! cat >>confdefs.h <<_ACEOF ! #define CFG_LEAVE "$CFG_LEAVE" ! _ACEOF ! case "$host_os" in ! mingw* | cygwin*) CFG_HANDLER=handler-win32.c ;; *) if test $sv_cv_have_sigsegv_recovery = no \ && test $sv_cv_have_stack_overflow_recovery = no; then *************** *** 11322,11335 **** fi ;; esac - ac_config_links="$ac_config_links src/handler.c:src/$CFG_HANDLER" - { echo; echo "${term_bold}Output Substitution:${term_norm}"; } >& 6 ! ac_config_files="$ac_config_files Makefile src/Makefile src/sigsegv.h tests/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure --- 12246,12283 ---- fi ;; esac + cat >>confdefs.h <<_ACEOF + #define CFG_HANDLER "$CFG_HANDLER" + _ACEOF ! ! { echo; echo "${term_bold}Build Parameters:${term_norm}"; } >& 6 ! ! ! echo "$as_me:$LINENO: checking whether to activate relocatable installation" >&5 ! echo $ECHO_N "checking whether to activate relocatable installation... $ECHO_C" >&6 ! # Check whether --enable-relocatable or --disable-relocatable was given. ! if test "${enable_relocatable+set}" = set; then ! enableval="$enable_relocatable" ! if test "$enableval" != no; then ! RELOCATABLE=yes ! else ! RELOCATABLE=no ! fi ! ! else ! RELOCATABLE=no ! fi; ! ! echo "$as_me:$LINENO: result: $RELOCATABLE" >&5 ! echo "${ECHO_T}$RELOCATABLE" >&6 + { echo; echo "${term_bold}Output Substitution:${term_norm}"; } >& 6 + + ac_config_files="$ac_config_files Makefile src/Makefile src/sigsegv.h tests/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure *************** *** 11699,11705 **** } >&5 cat >&5 <<_CSEOF ! This file was extended by libsigsegv $as_me 2.0-gst, which was generated by GNU Autoconf 2.54. Invocation command line was CONFIG_FILES = $CONFIG_FILES --- 12647,12653 ---- } >&5 cat >&5 <<_CSEOF ! This file was extended by libsigsegv $as_me 2.1-pre, which was generated by GNU Autoconf 2.54. Invocation command line was CONFIG_FILES = $CONFIG_FILES *************** *** 11753,11761 **** Configuration headers: $config_headers - Configuration links: - $config_links - Configuration commands: $config_commands --- 12701,12706 ---- *************** *** 11764,11770 **** cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ ! libsigsegv config.status 2.0-gst configured by $0, generated by GNU Autoconf 2.54, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" --- 12709,12715 ---- cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ ! libsigsegv config.status 2.1-pre configured by $0, generated by GNU Autoconf 2.54, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" *************** *** 11851,11861 **** # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - CFG_SIGNALS="$CFG_SIGNALS" - CFG_FAULT="$CFG_FAULT" - CFG_STACKVMA="$CFG_STACKVMA" - CFG_LEAVE="$CFG_LEAVE" - CFG_HANDLER="$CFG_HANDLER" _ACEOF --- 12796,12801 ---- *************** *** 11870,11880 **** "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "src/sigsegv.h" ) CONFIG_FILES="$CONFIG_FILES src/sigsegv.h" ;; "tests/Makefile" ) CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; - "src/signals.h" ) CONFIG_LINKS="$CONFIG_LINKS src/signals.h:src/$CFG_SIGNALS" ;; - "src/fault.h" ) CONFIG_LINKS="$CONFIG_LINKS src/fault.h:src/$CFG_FAULT" ;; - "src/stackvma.c" ) CONFIG_LINKS="$CONFIG_LINKS src/stackvma.c:src/$CFG_STACKVMA" ;; - "src/leave.c" ) CONFIG_LINKS="$CONFIG_LINKS src/leave.c:src/$CFG_LEAVE" ;; - "src/handler.c" ) CONFIG_LINKS="$CONFIG_LINKS src/handler.c:src/$CFG_HANDLER" ;; "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 --- 12810,12815 ---- *************** *** 11890,11896 **** if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi --- 12825,12830 ---- *************** *** 12010,12019 **** --- 12944,12959 ---- s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@EGREP@,$EGREP,;t t s,@LIBTOOL@,$LIBTOOL,;t t + s,@CFG_SIGNALS@,$CFG_SIGNALS,;t t + s,@CFG_FAULT@,$CFG_FAULT,;t t s,@FAULT_CONTEXT@,$FAULT_CONTEXT,;t t s,@FAULT_CONTEXT_INCLUDE@,$FAULT_CONTEXT_INCLUDE,;t t s,@HAVE_SIGSEGV_RECOVERY@,$HAVE_SIGSEGV_RECOVERY,;t t + s,@CFG_STACKVMA@,$CFG_STACKVMA,;t t s,@HAVE_STACK_OVERFLOW_RECOVERY@,$HAVE_STACK_OVERFLOW_RECOVERY,;t t + s,@CFG_LEAVE@,$CFG_LEAVE,;t t + s,@CFG_HANDLER@,$CFG_HANDLER,;t t + s,@RELOCATABLE@,$RELOCATABLE,;t t s,@LIBOBJS@,$LIBOBJS,;t t s,@LTLIBOBJS@,$LTLIBOBJS,;t t CEOF *************** *** 12454,12564 **** /^X\(\/\/\)$/{ s//\1/; q; } /^X\(\/\).*/{ s//\1/; q; } s/.*/./; q'`/stamp-h$_am_stamp_count - done - _ACEOF - cat >>$CONFIG_STATUS <<\_ACEOF - - # - # CONFIG_LINKS section. - # - - for ac_file in : $CONFIG_LINKS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - - { echo "$as_me:$LINENO: linking $srcdir/$ac_source to $ac_dest" >&5 - echo "$as_me: linking $srcdir/$ac_source to $ac_dest" >&6;} - - if test ! -r $srcdir/$ac_source; then - { { echo "$as_me:$LINENO: error: $srcdir/$ac_source: file not found" >&5 - echo "$as_me: error: $srcdir/$ac_source: file not found" >&2;} - { (exit 1); exit 1; }; } - fi - rm -f $ac_dest - - # Make relative symlinks. - ac_dest_dir=`(dirname "$ac_dest") 2>/dev/null || - $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_dest" : 'X\(//\)[^/]' \| \ - X"$ac_dest" : 'X\(//\)$' \| \ - X"$ac_dest" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || - echo X"$ac_dest" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - mkdir -p "$ac_dest_dir" - else - as_dir="$ac_dest_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || - $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || - echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dest_dir\"" >&5 - echo "$as_me: error: cannot create directory \"$ac_dest_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - - if test "$ac_dest_dir" != .; then - ac_dir_suffix=/`echo "$ac_dest_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` - else - ac_dir_suffix= ac_top_builddir= - fi - - case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; - esac - # Don't blindly perform a `cd "$ac_dest_dir"/$ac_foo && pwd` since $ac_foo can be - # absolute. - ac_abs_builddir=`cd "$ac_dest_dir" && cd $ac_builddir && pwd` - ac_abs_top_builddir=`cd "$ac_dest_dir" && cd ${ac_top_builddir}. && pwd` - ac_abs_srcdir=`cd "$ac_dest_dir" && cd $ac_srcdir && pwd` - ac_abs_top_srcdir=`cd "$ac_dest_dir" && cd $ac_top_srcdir && pwd` - - - case $srcdir in - [\\/$]* | ?:[\\/]* ) ac_rel_source=$srcdir/$ac_source ;; - *) ac_rel_source=$ac_top_builddir$srcdir/$ac_source ;; - esac - - # Try a symlink, then a hard link, then a copy. - ln -s $ac_rel_source $ac_dest 2>/dev/null || - ln $srcdir/$ac_source $ac_dest 2>/dev/null || - cp -p $srcdir/$ac_source $ac_dest || - { { echo "$as_me:$LINENO: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&5 - echo "$as_me: error: cannot link or copy $srcdir/$ac_source to $ac_dest" >&2;} - { (exit 1); exit 1; }; } done _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF --- 13394,13399 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/configure.ac smalltalk-2.1.2/sigsegv/configure.ac *** smalltalk-2.1.1/sigsegv/configure.ac Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/configure.ac Fri May 9 11:52:39 2003 *************** *** 0 **** --- 1,765 ---- + dnl Autoconf configuration for libsigsegv. + dnl Process this file with autoconf to produce a configure script. + dnl + dnl Copyright (C) 2002-2003 Bruno Haible + dnl + dnl This program is free software; you can redistribute it and/or modify + dnl it under the terms of the GNU General Public License as published by + dnl the Free Software Foundation; either version 2, or (at your option) + dnl any later version. + dnl + dnl This program is distributed in the hope that it will be useful, + dnl but WITHOUT ANY WARRANTY; without even the implied warranty of + dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + dnl GNU General Public License for more details. + dnl + dnl You should have received a copy of the GNU General Public License + dnl along with this program; if not, write to the Free Software Foundation, + dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + AC_PREREQ(2.52) + AC_INIT(libsigsegv, 2.1-pre) + AC_CONFIG_HEADERS(config.h) + AC_CONFIG_SRCDIR(src/sigsegv.h.in) + AC_CONFIG_AUX_DIR(../config) + + RSE_BOLD + + { echo; echo "${term_bold}Build Tools:${term_norm}"; } >& AS_MESSAGE_FD + + AM_INIT_AUTOMAKE + AC_PROG_CC + AC_PROG_CPP + + AC_CANONICAL_HOST + AC_MSG_CHECKING([host platform]) + sv_cv_host="$host" + changequote(,)dnl Autoconf 2.52 brokenness + case "$host_os" in + linux | linux-*) + kernelversion=`uname -r | sed -e 's/^\([0-9.]*\).*/\1/'` + sv_cv_host=`echo $sv_cv_host | sed -e "s/linux/linux$kernelversion/"` + ;; + esac + changequote([,])dnl Autoconf 2.52 brokenness + cat > conftest.c << EOF + #include + #ifdef __GNU_LIBRARY__ + Version __GLIBC__ . __GLIBC_MINOR__ + #endif + EOF + glibcversion=`$CPP $CPPFLAGS conftest.c 2>/dev/null | grep Version | sed -e 's/Version//' -e 's/ //g'` + if test -n "$glibcversion"; then + sv_cv_host="$sv_cv_host-glibc$glibcversion" + fi + AC_MSG_RESULT([$sv_cv_host]) + PLATFORM="$sv_cv_host" + AC_SUBST(PLATFORM) + + AC_PROG_INSTALL + AM_PROG_LIBTOOL + + # For testing cross-compilation behaviour. + #cross_compiling=yes + + { echo; echo "${term_bold}Optional Platform Environment:${term_norm}"; + echo "If something locks up here, please reconfigure with ${term_bold}--disable-generational-gc${term_norm}" + } >& AS_MESSAGE_FD + + dnl Headers to be included with . On MacOS X (Darwin) one also + dnl needs . + AC_CHECK_HEADERS([sys/signal.h]) + + dnl List of signals that are sent when an invalid virtual memory address + dnl is accessed, or when the stack overflows. + case "$host_os" in + sunos4* | freebsd*) + CFG_SIGNALS=signals-bsd.h ;; + hpux*) + CFG_SIGNALS=signals-hpux.h ;; + macos* | darwin*) + CFG_SIGNALS=signals-macos.h ;; + gnu*) + CFG_SIGNALS=signals-hurd.h ;; + *) + CFG_SIGNALS=signals.h ;; + esac + AC_DEFINE_UNQUOTED(CFG_SIGNALS, "$CFG_SIGNALS", + [The name of the include file describing the fault signals.]) + AC_SUBST(CFG_SIGNALS) + + # How to determine the memory page size. + SV_GETPAGESIZE + + # How to allocate fresh memory using mmap. + # (We need mmap, because mprotect() doesn't work on malloc()ed memory on + # some systems.) + SV_MMAP_ANON + + # How to write a SIGSEGV handler with access to the fault address. + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([POSIX], sv_cv_fault_posix, + [*-*-solaris2.[7-9] | i?86-*-linux2.[4-9]* | i?86-*-freebsd[4-9]* | alpha*-dec-osf[4-9]* | *-*-hpux11* | mips-sgi-irix6*], + [], + [int sig, siginfo_t *sip, void *ucp], + [sip->si_addr], + [action.sa_sigaction = &sigsegv_handler; + action.sa_flags = SA_SIGINFO;]) + + SV_TRY_FAULT([Linux/i386], sv_cv_fault_linux_i386, [i?86-*-linux2.[2-9]*], + [#include ], + [int sig, struct sigcontext sc], + [sc.cr2]) + + SV_TRY_FAULT([old Linux/i386], sv_cv_fault_linux_i386_old, + [i?86-*-linux2.[2-9]*], + [], + [int sig, unsigned int more], + [((unsigned long *) &more) [21]]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([Linux/m68k], sv_cv_fault_linux_m68k, [], + [#include + #include "$srcdir/src/fault-linux-m68k.c"], + [int sig, int code, struct sigcontext *scp], + [get_fault_addr (scp)]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([Linux/PowerPC], sv_cv_fault_linux_powerpc, [], + [#include ], + [int sig, struct sigcontext *scp], + [scp->regs->dar]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([Linux/HPPA], sv_cv_fault_linux_hppa, [], + [], + [int sig, siginfo_t *sip, void *ucp], + [sip->si_ptr], + [action.sa_sigaction = &sigsegv_handler; + action.sa_flags = SA_SIGINFO;]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([BSD], sv_cv_fault_bsd, [i?86-*-freebsd[4-9]*], + [], + [int sig, int code, struct sigcontext *scp, void *addr], + [addr]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([IRIX], sv_cv_fault_irix, [mips-sgi-irix6*], + [], + [int sig, int code, struct sigcontext *scp], + [(unsigned long) scp->sc_badvaddr]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([HP-UX HPPA], sv_cv_fault_hpux_hppa, [hppa*-*-hpux11*], + [ + #define USE_64BIT_REGS(mc) \ + (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID)) + #define GET_CR21(mc) \ + (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21) + ], + [int sig, int code, struct sigcontext *scp], + [GET_CR21 (scp->sc_sl.sl_ss)]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([OSF/1 Alpha], sv_cv_fault_osf_alpha, + [alpha*-*-osf[4-9]* | alpha*-*-linux2.[4-9]*], + [], + [int sig, int code, struct sigcontext *scp], + [scp->sc_traparg_a0]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([AIX], sv_cv_fault_aix, [*-*-aix*], + [], + [int sig, int code, struct sigcontext *scp], + [scp->sc_jmpbuf.jmp_context.o_vaddr]) + + SV_TRY_FAULT([MacOSX PowerPC], sv_cv_fault_macos_ppc, + [powerpc-*-macos* | powerpc-*-darwin*], + [#include "$srcdir/src/fault-macos-powerpc.c"], + [int sig, int code, struct sigcontext *scp], + [get_fault_addr (scp)]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_FAULT([Hurd], sv_cv_fault_hurd, [], + [], + [int sig, int code, struct sigcontext *scp], + [code]) + + dnl Now determine the fault handler include file. + dnl We prefer the platform specific include files to the generic fault-posix.h + dnl because the former often defines SIGSEGV_FAULT_STACKPOINTER. + dnl Also we put the BSD test second-to-last, because the test may produce + dnl false positives. + CFG_FAULT= + FAULT_CONTEXT=void + FAULT_CONTEXT_INCLUDE= + dnl + dnl First the cases where the OS provides the fault address. + dnl + if test -z "$CFG_FAULT" && test "$sv_cv_fault_aix" = yes; then + case "$host_cpu" in + powerpc* | rs6000) CFG_FAULT=fault-aix-powerpc.h ;; + *) CFG_FAULT=fault-aix.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_irix" = yes; then + case "$host_cpu" in + mips*) CFG_FAULT=fault-irix-mips.h ;; + *) CFG_FAULT=fault-irix.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_hpux_hppa" = yes; then + case "$host_cpu" in + hppa* | parisc*) CFG_FAULT=fault-hpux-hppa.h ;; + *) CFG_FAULT=fault-hpux.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_osf_alpha" = yes; then + case "$host_cpu" in + alpha*) CFG_FAULT=fault-osf-alpha.h ;; + *) CFG_FAULT=fault-osf.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_i386" = yes; then + case "$host_cpu" in + i?86 | x86_64) CFG_FAULT=fault-linux-i386.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_i386_old" = yes; then + case "$host_cpu" in + i?86 | x86_64) CFG_FAULT=fault-linux-i386-old.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_powerpc" = yes; then + case "$host_cpu" in + powerpc* | rs6000) CFG_FAULT=fault-linux-powerpc.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_hppa" = yes; then + case "$host_cpu" in + hppa* | parisc*) CFG_FAULT=fault-linux-hppa.h ;; + esac + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_hurd" = yes; then + case "$host_os" in + netbsd*) # A false positive. + ;; + *) + CFG_FAULT=fault-hurd.h + FAULT_CONTEXT='struct sigcontext' + ;; + esac + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_bsd" = yes; then + case "$host_os" in + freebsd*) + case "$host_cpu" in + i?86 | x86_64) + CFG_FAULT=fault-freebsd-i386.h + FAULT_CONTEXT='struct sigcontext' + ;; + *) + CFG_FAULT=fault-bsd.h + FAULT_CONTEXT='void' + ;; + esac + ;; + *) + CFG_FAULT=fault-bsd.h + FAULT_CONTEXT='void' + ;; + esac + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_posix" = yes; then + case "$host_os" in + openbsd*) + case "$host_cpu" in + i?86 | x86_64) CFG_FAULT=fault-openbsd-i386.h ;; + *) CFG_FAULT=fault-openbsd.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + ;; + linux*) + case "$host_cpu" in + ia64) + CFG_FAULT=fault-linux-ia64.h + FAULT_CONTEXT='struct sigcontext' + ;; + esac + ;; + esac + if test -z "$CFG_FAULT"; then + case "$host_os" in + solaris*) + case "$host_cpu" in + i?86 | x86_64) CFG_FAULT=fault-solaris-i386.h ;; + sparc*) CFG_FAULT=fault-solaris-sparc.h ;; + *) CFG_FAULT=fault-solaris.h ;; + esac + ;; + *) + CFG_FAULT=fault-posix.h + ;; + esac + FAULT_CONTEXT='ucontext_t' + FAULT_CONTEXT_INCLUDE='#include ' + fi + fi + dnl + dnl Next, the cases where there is a hairy CPU dependent way to get the + dnl fault address. + dnl + if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_m68k" = yes; then + case "$host_cpu" in + m68*) + CFG_FAULT=fault-linux-m68k.h + FAULT_CONTEXT='struct sigcontext' + ;; + esac + fi + if test -z "$CFG_FAULT" && test "$sv_cv_fault_macos_ppc" = yes; then + case "$host_cpu" in + powerpc* | rs6000) + CFG_FAULT=fault-macos-powerpc.h + FAULT_CONTEXT='struct sigcontext' + ;; + esac + fi + if test -z "$CFG_FAULT"; then + case "$host_os" in + mingw* | cygwin*) + FAULT_CONTEXT='CONTEXT' + FAULT_CONTEXT_INCLUDE='#include ' + CFG_FAULT=fault-win32.h # nonexistent, just a dummy + ;; + esac + fi + if test -n "$CFG_FAULT"; then + sv_cv_have_sigsegv_recovery=yes + else + sv_cv_have_sigsegv_recovery=no + dnl + dnl No way to get the fault address. But other information is available. + dnl + case "$host_os" in + linux*) + case "$host_cpu" in + alpha*) + CFG_FAULT=fault-linux-alpha.h + FAULT_CONTEXT='struct sigcontext' + ;; + arm* | strongarm* | xscale*) + CFG_FAULT=fault-linux-arm.h + FAULT_CONTEXT='struct sigcontext' + ;; + cris) + CFG_FAULT=fault-linux-cris.h + FAULT_CONTEXT='struct sigcontext' + ;; + mips*) + CFG_FAULT=fault-linux-mips.h + FAULT_CONTEXT='struct sigcontext' + ;; + s390*) + CFG_FAULT=fault-linux-s390.h + FAULT_CONTEXT='struct sigcontext' + ;; + sh*) + CFG_FAULT=fault-linux-sh.h + FAULT_CONTEXT='struct sigcontext' + ;; + sparc*) + CFG_FAULT=fault-linux-sparc.h + FAULT_CONTEXT='struct sigcontext' + ;; + x86_64) + CFG_FAULT=fault-linux-x86_64.h + FAULT_CONTEXT='struct sigcontext' + ;; + esac + ;; + beos*) + case "$host_cpu" in + i?86 | x86_64) CFG_FAULT=fault-beos-i386.h ;; + *) CFG_FAULT=fault-beos.h ;; + esac + FAULT_CONTEXT='struct vregs' + ;; + macos* | darwin*) + case "$host_cpu" in + i?86 | x86_64) CFG_FAULT=fault-macos-i386.h ;; + esac + FAULT_CONTEXT='struct sigcontext' + ;; + esac + fi + AC_MSG_CHECKING([for the fault handler specifics]) + if test -n "$CFG_FAULT"; then + sv_cv_fault_include=$CFG_FAULT + else + sv_cv_fault_include=none + fi + AC_MSG_RESULT([$sv_cv_fault_include]) + if test -z "$CFG_FAULT"; then + CFG_FAULT=fault-none.h + fi + AC_DEFINE_UNQUOTED(CFG_FAULT, "$CFG_FAULT", + [The name of the include file describing the fault handler.]) + AC_SUBST(CFG_FAULT) + AC_SUBST(FAULT_CONTEXT) + AC_SUBST(FAULT_CONTEXT_INCLUDE) + + AC_MSG_CHECKING([if the system supports catching SIGSEGV]) + AC_MSG_RESULT([$sv_cv_have_sigsegv_recovery]) + if test $sv_cv_have_sigsegv_recovery != no; then + HAVE_SIGSEGV_RECOVERY=1 + else + HAVE_SIGSEGV_RECOVERY=0 + fi + AC_SUBST(HAVE_SIGSEGV_RECOVERY) + + dnl The stackoverflow_context_t type depends on the CFG_FAULT include file. + + dnl Stack direction. + AC_CACHE_CHECK([for stack direction], sv_cv_stack_direction_msg, [ + case "$host_cpu" in + dnl See the #define STACK_GROWS_DOWNWARD in gcc-3.1/gcc/config/*/*.h. + a29k | \ + alpha* | \ + arc | \ + arm* | strongarm* | xscale* | \ + avr | \ + c1 | c2 | c32 | c34 | c38 | \ + clipper | \ + cris | \ + d30v | \ + elxsi | \ + fr30 | \ + h8300 | \ + i?86 | x86_64 | \ + i860 | \ + ia64 | \ + m32r | \ + m68* | \ + m88k | \ + mcore | \ + mips* | \ + mmix | \ + mn10200 | \ + mn10300 | \ + ns32k | \ + pdp11 | \ + pj* | \ + powerpc* | rs6000 | \ + romp | \ + s390* | \ + sh* | \ + sparc* | \ + v850 | \ + vax | \ + xtensa) + sv_cv_stack_direction=-1 ;; + c4x | \ + dsp16xx | \ + i960 | \ + hppa* | parisc* | \ + stormy16 | \ + we32k) + sv_cv_stack_direction=1 ;; + *) + if test $cross_compiling = no; then + cat > conftest.c < + int + get_stack_direction () + { + auto char dummy; + static char *dummyaddr = (char *)0; + if (dummyaddr != (char *)0) + return &dummy > dummyaddr ? 1 : &dummy < dummyaddr ? -1 : 0; + else + { + dummyaddr = &dummy; + { + int result = get_stack_direction (); + /* The next assignment avoids tail recursion elimination + (IRIX 6.4 CC). */ + dummyaddr = (char *)0; + return result; + } + } + } + int + main () + { + printf ("%d\n", get_stack_direction ()); + return 0; + } + EOF + AC_TRY_EVAL(ac_link) + sv_cv_stack_direction=`./conftest` + else + sv_cv_stack_direction=0 + fi + ;; + esac + case $sv_cv_stack_direction in + 1) sv_cv_stack_direction_msg="grows up";; + -1) sv_cv_stack_direction_msg="grows down";; + *) sv_cv_stack_direction_msg="unknown";; + esac + ]) + AC_DEFINE_UNQUOTED(STACK_DIRECTION, [$sv_cv_stack_direction], + [Define as the direction of stack growth for your system. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => spaghetti stack.]) + + dnl Determination of the stack's virtual memory area. + AC_CACHE_CHECK([for PIOCMAP in sys/procfs.h], sv_cv_procfsvma, [ + AC_TRY_LINK([#include ], + [int x = PIOCNMAP + PIOCMAP; prmap_t y;], + sv_cv_procfsvma=yes, sv_cv_procfsvma=no) + ]) + CFG_STACKVMA= + if test $sv_cv_procfsvma = yes; then + CFG_STACKVMA=stackvma-procfs.c + else + case "$host_os" in + linux*) CFG_STACKVMA=stackvma-linux.c ;; + freebsd*) CFG_STACKVMA=stackvma-freebsd.c ;; + beos*) CFG_STACKVMA=stackvma-beos.c ;; + macos* | darwin*) CFG_STACKVMA=stackvma-mach.c ;; + esac + fi + if test -n "$CFG_STACKVMA"; then + AC_DEFINE(HAVE_STACKVMA, 1, + [Define if CFG_STACKVMA is set to a nontrivial source file.]) + else + CFG_STACKVMA=stackvma-none.c + fi + AC_DEFINE_UNQUOTED(CFG_STACKVMA, "$CFG_STACKVMA", + [The name of the file determining the stack virtual memory area.]) + AC_SUBST(CFG_STACKVMA) + + AC_CHECK_FUNCS([getrlimit setrlimit]) + + dnl Catching stack overflow requires an alternate signal stack. + dnl The old "install a guard page" trick would be unreliable, because + dnl we don't know where exactly to place the guard page. + SV_SIGALTSTACK + + AC_CACHE_CHECK([if the system supports catching stack overflow], + sv_cv_have_stack_overflow_recovery, + [ + dnl It requires either sigaltstack() or the BeOS set_signal_stack() function, + dnl and it requires (see src/handler-unix.c) a fault-*.h or a stackvma-*.c. + if test "$sv_cv_sigaltstack" != no; then + sv_cv_have_stack_overflow_recovery=maybe + else + case "$host_os" in + beos*) sv_cv_have_stack_overflow_recovery=maybe ;; + mingw* | cygwin*) sv_cv_have_stack_overflow_recovery=yes ;; + *) sv_cv_have_stack_overflow_recovery=no ;; + esac + fi + if test $sv_cv_have_stack_overflow_recovery = maybe; then + if test -n "$CFG_FAULT"; then + AC_EGREP_CPP([xyzzy], [ + #include "$srcdir/src/$CFG_FAULT" + #ifdef SIGSEGV_FAULT_HANDLER_ARGLIST + #ifdef SIGSEGV_FAULT_ADDRESS + xyzzy + #endif + #endif + ], [condA=true], [condA=false]) + else + condA=false + fi + if test -n "$CFG_FAULT"; then + AC_EGREP_CPP([xyzzy], [ + #include "$srcdir/src/$CFG_FAULT" + #ifdef SIGSEGV_FAULT_HANDLER_ARGLIST + #ifdef SIGSEGV_FAULT_STACKPOINTER + xyzzy + #endif + #endif + ], [condB=true], [condB=false]) + else + condB=false + fi + if test "$CFG_STACKVMA" != "stackvma-none.c"; then + condC=true + else + condC=false + fi + if { $condA && $condB; } || { $condA && $condC; } || { $condB && $condC; }; then + sv_cv_have_stack_overflow_recovery=yes + else + sv_cv_have_stack_overflow_recovery=no + fi + fi + ]) + if test $sv_cv_have_stack_overflow_recovery != no; then + HAVE_STACK_OVERFLOW_RECOVERY=1 + else + HAVE_STACK_OVERFLOW_RECOVERY=0 + fi + AC_SUBST(HAVE_STACK_OVERFLOW_RECOVERY) + + # How to longjmp out of a signal handler, in such a way that the + # alternate signal stack remains functional. + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_LEAVE_HANDLER_LONGJMP([], sv_cv_leave_handler_longjmp, + [*-*-osf[4-9]* | *-*-hpux11* | *-*-linux2.[2-9]*], + [], []) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_LEAVE_HANDLER_LONGJMP([ and sigaltstack], + sv_cv_leave_handler_longjmp_sigaltstack, + [*-*-freebsd*], + [ + #ifndef SS_ONSTACK + #define SS_ONSTACK SA_ONSTACK + #endif + ], + [stack_t ss; + if (sigaltstack (NULL, &ss) >= 0) + { + ss.ss_flags &= ~SS_ONSTACK; + sigaltstack (&ss, NULL); + } + ]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_LEAVE_HANDLER_LONGJMP([ and setcontext], + sv_cv_leave_handler_longjmp_setcontext, + [*-*-irix* | *-*-solaris*], + [#include + #ifndef SS_ONSTACK + #define SS_ONSTACK SA_ONSTACK + #endif + ], + [static int fl; + static ucontext_t uc; + fl = 0; + if (getcontext (&uc) >= 0) + if (fl == 0) + if (uc.uc_stack.ss_flags & SS_ONSTACK) + { + uc.uc_stack.ss_flags &= ~SS_ONSTACK; + fl = 1; + setcontext (&uc); + } + ]) + + # How to siglongjmp out of a signal handler, in such a way that the + # alternate signal stack remains functional. + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_LEAVE_HANDLER_SIGLONGJMP([], sv_cv_leave_handler_siglongjmp, + [*-*-osf[4-9]* | *-*-hpux11* | *-*-linux2.[2-9]* | *-*-irix* | *-*-solaris*], + [], []) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_LEAVE_HANDLER_SIGLONGJMP([ and sigaltstack], + sv_cv_leave_handler_siglongjmp_sigaltstack, + [*-*-freebsd*], + [ + #ifndef SS_ONSTACK + #define SS_ONSTACK SA_ONSTACK + #endif + ], + [stack_t ss; + if (sigaltstack (NULL, &ss) >= 0) + { + ss.ss_flags &= ~SS_ONSTACK; + sigaltstack (&ss, NULL); + } + ]) + + dnl FIXME: Put in some more known values into the third argument. + SV_TRY_LEAVE_HANDLER_SIGLONGJMP([ and setcontext], + sv_cv_leave_handler_siglongjmp_setcontext, + [], + [#include + #ifndef SS_ONSTACK + #define SS_ONSTACK SA_ONSTACK + #endif + ], + [static int fl; + static ucontext_t uc; + fl = 0; + if (getcontext(&uc) >= 0) + if (fl == 0) + if (uc.uc_stack.ss_flags & SS_ONSTACK) + { + uc.uc_stack.ss_flags &= ~SS_ONSTACK; + fl = 1; + setcontext(&uc); + } + ]) + + CFG_LEAVE= + if test "$sv_cv_leave_handler_longjmp" != no; then + CFG_LEAVE=leave-nop.c + else + if test "$sv_cv_leave_handler_longjmp_sigaltstack" != no; then + CFG_LEAVE=leave-sigaltstack.c + else + if test "$sv_cv_leave_handler_longjmp_setcontext" != no; then + CFG_LEAVE=leave-setcontext.c + fi + fi + fi + case "$host_os" in + # On BeOS, the 6 tests fail because sigaltstack() doesn't exist. + # If one uses set_signal_stack() instead of sigaltstack(), the first + # test actually works. i.e. sv_cv_leave_handler_longjmp would be 'yes'. + beos*) CFG_LEAVE=leave-nop.c ;; + esac + if test -z "$CFG_LEAVE"; then + CFG_LEAVE=leave-none.c + fi + AC_DEFINE_UNQUOTED(CFG_LEAVE, "$CFG_LEAVE", + [The name of the file implementing sigsegv_reset_onstack_flag.]) + AC_SUBST(CFG_LEAVE) + + case "$host_os" in + mingw* | cygwin*) CFG_HANDLER=handler-win32.c ;; + *) + if test $sv_cv_have_sigsegv_recovery = no \ + && test $sv_cv_have_stack_overflow_recovery = no; then + CFG_HANDLER=handler-none.c + else + CFG_HANDLER=handler-unix.c + fi + ;; + esac + AC_DEFINE_UNQUOTED(CFG_HANDLER, "$CFG_HANDLER", + [The name of the file implementing the handler functionality.]) + AC_SUBST(CFG_HANDLER) + + { echo; echo "${term_bold}Build Parameters:${term_norm}"; } >& AS_MESSAGE_FD + + dnl Relocatability is a nop for this package. + AC_RELOCATABLE_NOP + + { echo; echo "${term_bold}Output Substitution:${term_norm}"; } >& AS_MESSAGE_FD + + dnl AC_OUTPUT(Makefile) + AC_OUTPUT([Makefile + src/Makefile src/sigsegv.h + tests/Makefile]) + + { echo; echo "Now please type '${term_bold}make${term_norm}' to compile. Good luck."; echo; } >& AS_MESSAGE_FD diff -rNC3 smalltalk-2.1.1/sigsegv/configure.in smalltalk-2.1.2/sigsegv/configure.in *** smalltalk-2.1.1/sigsegv/configure.in Thu Apr 17 11:37:45 2003 --- smalltalk-2.1.2/sigsegv/configure.in Thu Jan 1 01:00:00 1970 *************** *** 1,627 **** - dnl Autoconf configuration for libsigsegv. - dnl Process this file with autoconf to produce a configure script. - dnl - dnl Copyright (C) 2002 Bruno Haible - dnl - dnl This program is free software; you can redistribute it and/or modify - dnl it under the terms of the GNU General Public License as published by - dnl the Free Software Foundation; either version 2, or (at your option) - dnl any later version. - dnl - dnl This program is distributed in the hope that it will be useful, - dnl but WITHOUT ANY WARRANTY; without even the implied warranty of - dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - dnl GNU General Public License for more details. - dnl - dnl You should have received a copy of the GNU General Public License - dnl along with this program; if not, write to the Free Software Foundation, - dnl Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - AC_PREREQ(2.52) - AC_INIT(libsigsegv, 2.0-gst) - AC_CONFIG_SRCDIR(src/sigsegv.h.in) - AC_CONFIG_AUX_DIR(../config) - - RSE_BOLD - - { echo; echo "${term_bold}Build Tools:${term_norm}"; } >& AS_MESSAGE_FD - - AM_INIT_AUTOMAKE - AM_CONFIG_HEADER(config.h) - - AC_PROG_CC - AC_PROG_CPP - - AC_CANONICAL_HOST - AC_MSG_CHECKING([host platform]) - sv_cv_host="$host" - changequote(,)dnl Autoconf 2.52 brokenness - case "$host_os" in - linux | linux-*) - kernelversion=`uname -r | sed -e 's/^\([0-9.]*\).*/\1/'` - sv_cv_host=`echo $sv_cv_host | sed -e "s/linux/linux$kernelversion/"` - ;; - esac - changequote([,])dnl Autoconf 2.52 brokenness - cat > conftest.c << EOF - #include - #ifdef __GNU_LIBRARY__ - Version __GLIBC__ . __GLIBC_MINOR__ - #endif - EOF - glibcversion=`$CPP $CPPFLAGS conftest.c 2>/dev/null | grep Version | sed -e 's/Version//' -e 's/ //g'` - if test -n "$glibcversion"; then - sv_cv_host="$sv_cv_host-glibc$glibcversion" - fi - AC_MSG_RESULT([$sv_cv_host]) - PLATFORM="$sv_cv_host" - AC_SUBST(PLATFORM) - - AC_PROG_INSTALL - - AM_DISABLE_SHARED - AM_PROG_LIBTOOL - - # For testing cross-compilation behaviour. - #cross_compiling=yes - - { echo; echo "${term_bold}Optional Platform Environment:${term_norm}"; } >& AS_MESSAGE_FD - - dnl List of signals that are sent when an invalid virtual memory address - dnl is accessed, or when the stack overflows. - case "$host_os" in - sunos4* | freebsd* | hpux* | darwin*) - CFG_SIGNALS=signals-segv-bus.h ;; - *) - CFG_SIGNALS=signals-segv.h ;; - esac - AC_CONFIG_LINKS(src/signals.h:src/$CFG_SIGNALS, , [CFG_SIGNALS="$CFG_SIGNALS"]) - - # How to determine the memory page size. - SV_GETPAGESIZE - - # How to allocate fresh memory using mmap. - # (We need mmap, because mprotect() doesn't work on malloc()ed memory on - # some systems.) - SV_MMAP_ANON - - # How to write a SIGSEGV handler with access to the fault address. - - dnl FIXME: Put in some more known values into the third argument. - AC_CHECK_HEADERS(siginfo.h ucontext.h) - SV_TRY_FAULT([POSIX], sv_cv_fault_posix, - [*-*-solaris2.[7-9] | i?86-*-linux2.[4-9]* | i?86-*-freebsd[4-9]* | alpha*-dec-osf[4-9]* | *-*-hpux11* | mips-sgi-irix6*], - [#ifdef HAVE_SIGINFO_H - #include - #endif], - [int sig, siginfo_t *sip, void *ucp], - [sip->si_addr], - [action.sa_sigaction = &sigsegv_handler; - action.sa_flags = SA_SIGINFO;]) - - SV_TRY_FAULT([Linux/i386], sv_cv_fault_linux_i386, [i?86-*-linux2.[2-9]*], - [#include ], - [int sig, struct sigcontext sc], - [sc.cr2]) - - SV_TRY_FAULT([old Linux/i386], sv_cv_fault_linux_i386_old, - [i?86-*-linux2.[2-9]*], - [], - [int sig, unsigned int more], - [((unsigned long *) &more) [21]]) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_FAULT([BSD], sv_cv_fault_bsd, [i?86-*-freebsd[4-9]*], - [], - [int sig, int code, struct sigcontext *scp, void *addr], - [addr]) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_FAULT([IRIX], sv_cv_fault_irix, [mips-sgi-irix6*], - [], - [int sig, int code, struct sigcontext *scp], - [(unsigned long) scp->sc_badvaddr]) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_FAULT([HP-UX HPPA], sv_cv_fault_hpux_hppa, [hppa*-*-hpux11*], - [], - [int sig, int code, struct sigcontext *scp], - [scp->sc_sl.sl_ss.ss_narrow.ss_cr21]) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_FAULT([OSF/1 Alpha], sv_cv_fault_osf_alpha, - [alpha*-*-osf[4-9]* | alpha*-*-linux2.[4-9]*], - [], - [int sig, int code, struct sigcontext *scp], - [scp->sc_traparg_a0]) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_FAULT([AIX], sv_cv_fault_aix, [*-*-aix*], - [], - [int sig, int code, struct sigcontext *scp], - [scp->sc_jmpbuf.jmp_context.o_vaddr]) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_FAULT([Darwin PPC], sv_cv_fault_darwin_ppc, [powerpc-*-darwin*], - [#include ], - [int sig, int code, struct sigcontext *scp], - [scp->sc_regs ? page + 0x678 : NULL]) - - dnl Now determine the fault handler include file. - dnl We prefer the platform specific include files to the generic fault-posix.h - dnl because the former often defines SIGSEGV_FAULT_STACKPOINTER. - dnl Also we put the BSD test second-to-last, because the test may produce - dnl false positives. - CFG_FAULT= - FAULT_CONTEXT=void - FAULT_CONTEXT_INCLUDE= - if test -z "$CFG_FAULT" && test "$sv_cv_fault_aix" = yes; then - case "$host_cpu" in - powerpc* | rs6000) CFG_FAULT=fault-aix-powerpc.h ;; - *) CFG_FAULT=fault-aix.h ;; - esac - FAULT_CONTEXT='struct sigcontext' - fi - if test -z "$CFG_FAULT" && test "$sv_cv_fault_irix" = yes; then - case "$host_cpu" in - mips*) CFG_FAULT=fault-irix-mips.h ;; - *) CFG_FAULT=fault-irix.h ;; - esac - FAULT_CONTEXT='struct sigcontext' - fi - if test -z "$CFG_FAULT" && test "$sv_cv_fault_hpux_hppa" = yes; then - case "$host_cpu" in - hppa* | parisc*) CFG_FAULT=fault-hpux-hppa.h ;; - *) CFG_FAULT=fault-hpux.h ;; - esac - FAULT_CONTEXT='struct sigcontext' - fi - if test -z "$CFG_FAULT" && test "$sv_cv_fault_osf_alpha" = yes; then - case "$host_cpu" in - alpha*) CFG_FAULT=fault-osf-alpha.h ;; - *) CFG_FAULT=fault-osf.h ;; - esac - FAULT_CONTEXT='struct sigcontext' - fi - if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_i386" = yes; then - case "$host_cpu" in - i?86 | x86_64) CFG_FAULT=fault-linux-i386.h ;; - esac - FAULT_CONTEXT='struct sigcontext' - fi - if test -z "$CFG_FAULT" && test "$sv_cv_fault_linux_i386_old" = yes; then - case "$host_cpu" in - i?86 | x86_64) CFG_FAULT=fault-linux-i386-old.h ;; - esac - FAULT_CONTEXT='struct sigcontext' - fi - if test -z "$CFG_FAULT" && test "$sv_cv_fault_darwin_ppc" = yes; then - case "$host_cpu" in - powerpc) CFG_FAULT=fault-darwin-powerpc.h ;; - esac - FAULT_CONTEXT='struct sigcontext' - fi - if test -z "$CFG_FAULT" && test "$sv_cv_fault_bsd" = yes; then - case "$host_os" in - freebsd*) - case "$host_cpu" in - i?86 | x86_64) - CFG_FAULT=fault-freebsd-i386.h - FAULT_CONTEXT='struct sigcontext' - ;; - *) - CFG_FAULT=fault-bsd.h - FAULT_CONTEXT='void' - ;; - esac - ;; - *) - CFG_FAULT=fault-bsd.h - FAULT_CONTEXT='void' - ;; - esac - fi - if test -z "$CFG_FAULT" && test "$sv_cv_fault_posix" = yes; then - case "$host_os" in - solaris*) - case "$host_cpu" in - i?86 | x86_64) CFG_FAULT=fault-solaris-i386.h ;; - sparc*) CFG_FAULT=fault-solaris-sparc.h ;; - *) CFG_FAULT=fault-solaris.h ;; - esac - ;; - *) - CFG_FAULT=fault-posix.h - ;; - esac - FAULT_CONTEXT='ucontext_t' - FAULT_CONTEXT_INCLUDE='#include ' - fi - if test -z "$CFG_FAULT"; then - case "$host_os" in - mingw*|cygwin*) - FAULT_CONTEXT='CONTEXT' - FAULT_CONTEXT_INCLUDE='#include ' - CFG_FAULT=fault-none.h - ;; - esac - fi - if test -n "$CFG_FAULT"; then - sv_cv_have_sigsegv_recovery=yes - else - sv_cv_have_sigsegv_recovery=no - dnl No way to get the fault address. But other information is available. - case "$host_os" in - linux*) - case "$host_cpu" in - alpha*) - CFG_FAULT=fault-linux-alpha.h - FAULT_CONTEXT='struct sigcontext' - ;; - arm* | strongarm* | xscale*) - CFG_FAULT=fault-linux-arm.h - FAULT_CONTEXT='struct sigcontext' - ;; - cris) - CFG_FAULT=fault-linux-cris.h - FAULT_CONTEXT='struct sigcontext' - ;; - hppa* | parisc*) - CFG_FAULT=fault-linux-hppa.h - FAULT_CONTEXT='ucontext_t' - FAULT_CONTEXT_INCLUDE='#include ' - ;; - ia64) - CFG_FAULT=fault-linux-ia64.h - FAULT_CONTEXT='struct sigcontext' - ;; - m68*) - CFG_FAULT=fault-linux-m68k.h - FAULT_CONTEXT='struct sigcontext' - ;; - mips*) - CFG_FAULT=fault-linux-mips.h - FAULT_CONTEXT='struct sigcontext' - ;; - powerpc* | rs6000) - CFG_FAULT=fault-linux-powerpc.h - FAULT_CONTEXT='struct sigcontext' - ;; - s390*) - CFG_FAULT=fault-linux-s390.h - FAULT_CONTEXT='struct sigcontext' - ;; - sh*) - CFG_FAULT=fault-linux-sh.h - FAULT_CONTEXT='struct sigcontext' - ;; - sparc*) - CFG_FAULT=fault-linux-sparc.h - FAULT_CONTEXT='struct sigcontext' - ;; - x86_64) - CFG_FAULT=fault-linux-x86_64.h - FAULT_CONTEXT='struct sigcontext' - ;; - esac - ;; - beos*) - case "$host_cpu" in - i?86 | x86_64) CFG_FAULT=fault-beos-i386.h ;; - *) CFG_FAULT=fault-beos.h ;; - esac - FAULT_CONTEXT='struct vregs' - ;; - darwin*) - case "$host_cpu" in - i386) CFG_FAULT=fault-darwin-i386.h ;; - esac - FAULT_CONTEXT='void' - ;; - esac - fi - AC_MSG_CHECKING([for the fault handler specifics]) - if test -z "$CFG_FAULT"; then - CFG_FAULT=fault-none.h - fi - - sv_cv_fault_include=$CFG_FAULT - AC_MSG_RESULT([$sv_cv_fault_include]) - AC_CONFIG_LINKS(src/fault.h:src/$CFG_FAULT, , [CFG_FAULT="$CFG_FAULT"]) - - AC_SUBST(FAULT_CONTEXT) - AC_SUBST(FAULT_CONTEXT_INCLUDE) - - AC_MSG_CHECKING([if the system supports catching SIGSEGV]) - AC_MSG_RESULT([$sv_cv_have_sigsegv_recovery]) - if test $sv_cv_have_sigsegv_recovery != no; then - HAVE_SIGSEGV_RECOVERY=1 - else - HAVE_SIGSEGV_RECOVERY=0 - fi - AC_SUBST(HAVE_SIGSEGV_RECOVERY) - - dnl The stackoverflow_context_t type depends on the CFG_FAULT include file. - - dnl Stack direction. - AC_CACHE_CHECK([for stack direction], sv_cv_stack_direction_msg, [ - case "$host_cpu" in - dnl See the #define STACK_GROWS_DOWNWARD in gcc-3.1/gcc/config/*/*.h. - a29k | \ - alpha* | \ - arc | \ - arm* | strongarm* | xscale* | \ - avr | \ - c1 | c2 | c32 | c34 | c38 | \ - clipper | \ - cris | \ - d30v | \ - elxsi | \ - fr30 | \ - h8300 | \ - i?86 | x86_64 | \ - i860 | \ - ia64 | \ - m32r | \ - m68* | \ - m88k | \ - mcore | \ - mips* | \ - mmix | \ - mn10200 | \ - mn10300 | \ - ns32k | \ - pdp11 | \ - pj* | \ - powerpc* | rs6000 | \ - romp | \ - s390* | \ - sh* | \ - sparc* | \ - v850 | \ - vax | \ - xtensa) - sv_cv_stack_direction=-1 ;; - c4x | \ - dsp16xx | \ - i960 | \ - hppa* | parisc* | \ - stormy16 | \ - we32k) - sv_cv_stack_direction=1 ;; - *) - if test $cross_compiling = no; then - cat > conftest.c < - int - get_stack_direction () - { - auto char dummy; - static char *dummyaddr = (char *)0; - if (dummyaddr != (char *)0) - return &dummy > dummyaddr ? 1 : &dummy < dummyaddr ? -1 : 0; - else - { - dummyaddr = &dummy; - { - int result = get_stack_direction (); - /* The next assignment avoids tail recursion elimination - (IRIX 6.4 CC). */ - dummyaddr = (char *)0; - return result; - } - } - } - int - main () - { - printf ("%d\n", get_stack_direction ()); - return 0; - } - EOF - AC_TRY_EVAL(ac_link) - sv_cv_stack_direction=`./conftest` - else - sv_cv_stack_direction=0 - fi - ;; - esac - case $sv_cv_stack_direction in - 1) sv_cv_stack_direction_msg="grows up";; - -1) sv_cv_stack_direction_msg="grows down";; - *) sv_cv_stack_direction_msg="unknown";; - esac - ]) - AC_DEFINE_UNQUOTED(STACK_DIRECTION, [$sv_cv_stack_direction], - [Define as the direction of stack growth for your system. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => spaghetti stack.]) - - dnl Determination of the stack's virtual memory area. - AC_CACHE_CHECK([for PIOCMAP in sys/procfs.h], sv_cv_procfsvma, [ - AC_TRY_LINK([#include ], - [int x = PIOCNMAP + PIOCMAP; prmap_t y;], - sv_cv_procfsvma=yes, sv_cv_procfsvma=no) - ]) - CFG_STACKVMA= - if test $sv_cv_procfsvma = yes; then - CFG_STACKVMA=stackvma-procfs.c - else - case "$host_os" in - darwin*) CFG_STACKVMA=stackvma-mach.c ;; - linux*) CFG_STACKVMA=stackvma-linux.c ;; - freebsd*) CFG_STACKVMA=stackvma-freebsd.c ;; - beos*) CFG_STACKVMA=stackvma-beos.c ;; - esac - fi - if test -z "$CFG_STACKVMA"; then - CFG_STACKVMA=stackvma-none.c - else - AC_DEFINE(HAVE_STACKVMA, 1, - [Define if we are able to determine the virtual memory area of a given address.]) - fi - AC_CONFIG_LINKS(src/stackvma.c:src/$CFG_STACKVMA, , [CFG_STACKVMA="$CFG_STACKVMA"]) - - AC_CHECK_FUNCS([getrlimit setrlimit]) - - dnl Catching stack overflow requires an alternate signal stack. - dnl The old "install a guard page" trick would be unreliable, because - dnl we don't know where exactly to place the guard page. - SV_SIGALTSTACK - - AC_CACHE_CHECK([if the system supports catching stack overflow], - sv_cv_have_stack_overflow_recovery, - [ - dnl It requires either sigaltstack() or the BeOS set_signal_stack() function. - if test "$sv_cv_sigaltstack" != no; then - sv_cv_have_stack_overflow_recovery=yes - else - case "$host_os" in - beos*) sv_cv_have_stack_overflow_recovery=yes ;; - mingw*|cygwin*) sv_cv_have_stack_overflow_recovery=yes ;; - *) sv_cv_have_stack_overflow_recovery=no ;; - esac - fi - - dnl And it requires either stackvma or SIGSEGV catching - if test "$CFG_STACKVMA" = stackvma-none.c && test $sv_cv_have_sigsegv_recovery = no; then - sv_cv_have_stack_overflow_recovery=no - fi - ]) - if test $sv_cv_have_stack_overflow_recovery != no; then - HAVE_STACK_OVERFLOW_RECOVERY=1 - else - HAVE_STACK_OVERFLOW_RECOVERY=0 - fi - AC_SUBST(HAVE_STACK_OVERFLOW_RECOVERY) - - # How to longjmp out of a signal handler, in such a way that the - # alternate signal stack remains functional. - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_LEAVE_HANDLER_LONGJMP([], sv_cv_leave_handler_longjmp, - [*-*-osf[4-9]* | *-*-hpux11* | *-*-linux2.[2-9]*], - [], []) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_LEAVE_HANDLER_LONGJMP([ and sigaltstack], - sv_cv_leave_handler_longjmp_sigaltstack, - [*-*-freebsd*], - [], - [stack_t ss; - #ifndef SS_ONSTACK - #define SS_ONSTACK SA_ONSTACK - #endif - if (sigaltstack (NULL, &ss) >= 0) - { - ss.ss_flags &= ~SS_ONSTACK; - sigaltstack (&ss, NULL); - } - ]) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_LEAVE_HANDLER_LONGJMP([ and setcontext], - sv_cv_leave_handler_longjmp_setcontext, - [*-*-irix* | *-*-solaris*], - [#include ], - [static int fl; - static ucontext_t uc; - fl = 0; - if (getcontext (&uc) >= 0) - if (fl == 0) - if (uc.uc_stack.ss_flags & SS_ONSTACK) - { - uc.uc_stack.ss_flags &= ~SS_ONSTACK; - fl = 1; - setcontext (&uc); - } - ]) - - # How to siglongjmp out of a signal handler, in such a way that the - # alternate signal stack remains functional. - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_LEAVE_HANDLER_SIGLONGJMP([], sv_cv_leave_handler_siglongjmp, - [*-*-osf[4-9]* | *-*-hpux11* | *-*-linux2.[2-9]* | *-*-irix* | *-*-solaris*], - [], []) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_LEAVE_HANDLER_SIGLONGJMP([ and sigaltstack], - sv_cv_leave_handler_siglongjmp_sigaltstack, - [*-*-freebsd*], - [], - [stack_t ss; - if (sigaltstack (NULL, &ss) >= 0) - { - ss.ss_flags &= ~SS_ONSTACK; - sigaltstack (&ss, NULL); - } - ]) - - dnl FIXME: Put in some more known values into the third argument. - SV_TRY_LEAVE_HANDLER_SIGLONGJMP([ and setcontext], - sv_cv_leave_handler_siglongjmp_setcontext, - [], - [#include ], - [static int fl; - static ucontext_t uc; - fl = 0; - if (getcontext(&uc) >= 0) - if (fl == 0) - if (uc.uc_stack.ss_flags & SS_ONSTACK) - { - uc.uc_stack.ss_flags &= ~SS_ONSTACK; - fl = 1; - setcontext(&uc); - } - ]) - - CFG_LEAVE= - if test "$sv_cv_leave_handler_longjmp" != no; then - CFG_LEAVE=leave-nop.c - else - if test "$sv_cv_leave_handler_longjmp_sigaltstack" != no; then - CFG_LEAVE=leave-sigaltstack.c - else - if test "$sv_cv_leave_handler_longjmp_setcontext" != no; then - CFG_LEAVE=leave-setcontext.c - fi - fi - fi - case "$host_os" in - # On BeOS, the 6 tests fail because sigaltstack() doesn't exist. - # If one uses set_signal_stack() instead of sigaltstack(), the first - # test actually works. i.e. sv_cv_leave_handler_longjmp would be 'yes'. - beos*) CFG_LEAVE=leave-nop.c ;; - esac - if test -z "$CFG_LEAVE"; then - CFG_LEAVE=leave-nop.c - fi - - AC_CONFIG_LINKS(src/leave.c:src/$CFG_LEAVE, , [CFG_LEAVE="$CFG_LEAVE"]) - - case "$host_os" in - mingw*|cygwin*) - CFG_HANDLER=handler-win32.c - ;; - *) - if test $sv_cv_have_sigsegv_recovery = no \ - && test $sv_cv_have_stack_overflow_recovery = no; then - CFG_HANDLER=handler-none.c - else - CFG_HANDLER=handler-unix.c - fi - ;; - esac - AC_CONFIG_LINKS(src/handler.c:src/$CFG_HANDLER, , [CFG_HANDLER="$CFG_HANDLER"]) - - { echo; echo "${term_bold}Output Substitution:${term_norm}"; } >& AS_MESSAGE_FD - - AC_CONFIG_FILES([Makefile - src/Makefile src/sigsegv.h - tests/Makefile]) - - AC_OUTPUT - - { echo; echo "Now please type '${term_bold}make${term_norm}' to compile. Good luck."; echo; } >& AS_MESSAGE_FD --- 0 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/Makefile.am smalltalk-2.1.2/sigsegv/src/Makefile.am *** smalltalk-2.1.1/sigsegv/src/Makefile.am Thu Apr 17 11:53:20 2003 --- smalltalk-2.1.2/sigsegv/src/Makefile.am Fri May 9 11:26:41 2003 *************** *** 1,5 **** ## Makefile for libsigsegv/src. ! ## Copyright (C) 2002 Bruno Haible ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by --- 1,5 ---- ## Makefile for libsigsegv/src. ! ## Copyright (C) 2002-2003 Bruno Haible ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by *************** *** 21,40 **** RM = rm -f ! lib_LTLIBRARIES = libsigsegv.la noinst_HEADERS = \ ! fault-aix.h fault-aix-powerpc.h fault-beos.h fault-beos-i386.h \ ! fault-bsd.h fault-freebsd-i386.h fault-darwin-i386.h fault-darwin-powerpc.h \ ! fault-hpux.h fault-hpux-hppa.h fault-irix.h fault-irix-mips.h \ fault-linux.h fault-linux-alpha.h fault-linux-arm.h fault-linux-cris.h \ fault-linux-hppa.h fault-linux-i386.h fault-linux-i386-old.h \ ! fault-linux-ia64.h fault-linux-m68k.h fault-linux-mips.h \ fault-linux-powerpc.h fault-linux-s390.h fault-linux-sh.h \ fault-linux-sparc.h fault-linux-x86_64.h \ ! fault-osf.h fault-osf-alpha.h fault-none.h \ fault-posix.h fault-solaris.h fault-solaris-i386.h fault-solaris-sparc.h \ ! signals-segv.h signals-segv-bus.h \ leave.h \ stackvma.h --- 21,43 ---- RM = rm -f ! noinst_LTLIBRARIES = libsigsegv.la noinst_HEADERS = \ ! fault.h fault-aix.h fault-aix-powerpc.h fault-beos.h fault-beos-i386.h \ ! fault-bsd.h fault-freebsd-i386.h \ ! fault-hpux.h fault-hpux-hppa.h fault-hurd.h fault-irix.h fault-irix-mips.h \ fault-linux.h fault-linux-alpha.h fault-linux-arm.h fault-linux-cris.h \ fault-linux-hppa.h fault-linux-i386.h fault-linux-i386-old.h \ ! fault-linux-ia64.h fault-linux-m68k.h fault-linux-m68k.c fault-linux-mips.h \ fault-linux-powerpc.h fault-linux-s390.h fault-linux-sh.h \ fault-linux-sparc.h fault-linux-x86_64.h \ ! fault-macos-i386.h fault-macos-powerpc.h fault-macos-powerpc.c \ ! fault-none.h \ ! fault-openbsd.h fault-openbsd-i386.h \ ! fault-osf.h fault-osf-alpha.h \ fault-posix.h fault-solaris.h fault-solaris-i386.h fault-solaris-sparc.h \ ! signals.h signals-bsd.h signals-hpux.h signals-hurd.h signals-macos.h \ leave.h \ stackvma.h *************** *** 42,57 **** handler-none.c handler-unix.c handler-win32.c \ stackvma-none.c stackvma-linux.c stackvma-freebsd.c stackvma-procfs.c \ stackvma-beos.c stackvma-mach.c \ ! leave-nop.c leave-sigaltstack.c leave-setcontext.c INCLUDES = -I. -I$(srcdir) DEFS = @DEFS@ ! dist_libsigsegv_la_SOURCES = dispatcher.c ! nodist_libsigsegv_la_SOURCES = handler.c stackvma.c leave.c ! ! DISTCLEANFILES = $(nodist_libsigsegv_la_SOURCES) signals.h fault.h sigsegv.h ! libsigsegv_la_LDFLAGS = -lc -no-undefined --- 45,57 ---- handler-none.c handler-unix.c handler-win32.c \ stackvma-none.c stackvma-linux.c stackvma-freebsd.c stackvma-procfs.c \ stackvma-beos.c stackvma-mach.c \ ! leave-none.c leave-nop.c leave-sigaltstack.c leave-setcontext.c \ ! sigsegv.h.msvc INCLUDES = -I. -I$(srcdir) DEFS = @DEFS@ ! libsigsegv_la_SOURCES = handler.c stackvma.c leave.c dispatcher.c libsigsegv_la_LDFLAGS = -lc -no-undefined *************** *** 68,72 **** --- 68,91 ---- $(RM) $(DESTDIR)$(includedir)/sigsegv.h + DISTCLEANFILES = sigsegv.h + + + # Rules for "make dist". + + sigsegv.h.msvc : sigsegv.h.in + sed -e 's/@''FAULT_CONTEXT_INCLUDE''@/#include /' \ + -e 's/@''FAULT_CONTEXT''@/CONTEXT/' \ + -e 's/@''HAVE_SIGSEGV_RECOVERY''@/1/' \ + -e 's/@''HAVE_STACK_OVERFLOW_RECOVERY''@/1/' \ + < $(srcdir)/sigsegv.h.in > $@ + + # One more automake bug. installdirs: installdirs-local + + # Special dependencies. + handler.$(OBJEXT): $(CFG_SIGNALS) $(CFG_FAULT) $(CFG_HANDLER) + leave.$(OBJEXT): $(CFG_LEAVE) + stackvma.$(OBJEXT): $(CFG_STACKVMA) + diff -rNC3 smalltalk-2.1.1/sigsegv/src/Makefile.in smalltalk-2.1.2/sigsegv/src/Makefile.in *** smalltalk-2.1.1/sigsegv/src/Makefile.in Thu Apr 17 14:40:49 2003 --- smalltalk-2.1.2/sigsegv/src/Makefile.in Fri May 9 11:58:34 2003 *************** *** 46,51 **** --- 46,56 ---- AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ + CFG_FAULT = @CFG_FAULT@ + CFG_HANDLER = @CFG_HANDLER@ + CFG_LEAVE = @CFG_LEAVE@ + CFG_SIGNALS = @CFG_SIGNALS@ + CFG_STACKVMA = @CFG_STACKVMA@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ *************** *** 82,87 **** --- 87,93 ---- PATH_SEPARATOR = @PATH_SEPARATOR@ PLATFORM = @PLATFORM@ RANLIB = @RANLIB@ + RELOCATABLE = @RELOCATABLE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ *************** *** 125,144 **** RM = rm -f ! lib_LTLIBRARIES = libsigsegv.la noinst_HEADERS = \ ! fault-aix.h fault-aix-powerpc.h fault-beos.h fault-beos-i386.h \ ! fault-bsd.h fault-freebsd-i386.h fault-darwin-i386.h fault-darwin-powerpc.h \ ! fault-hpux.h fault-hpux-hppa.h fault-irix.h fault-irix-mips.h \ fault-linux.h fault-linux-alpha.h fault-linux-arm.h fault-linux-cris.h \ fault-linux-hppa.h fault-linux-i386.h fault-linux-i386-old.h \ ! fault-linux-ia64.h fault-linux-m68k.h fault-linux-mips.h \ fault-linux-powerpc.h fault-linux-s390.h fault-linux-sh.h \ fault-linux-sparc.h fault-linux-x86_64.h \ ! fault-osf.h fault-osf-alpha.h fault-none.h \ fault-posix.h fault-solaris.h fault-solaris-i386.h fault-solaris-sparc.h \ ! signals-segv.h signals-segv-bus.h \ leave.h \ stackvma.h --- 131,153 ---- RM = rm -f ! noinst_LTLIBRARIES = libsigsegv.la noinst_HEADERS = \ ! fault.h fault-aix.h fault-aix-powerpc.h fault-beos.h fault-beos-i386.h \ ! fault-bsd.h fault-freebsd-i386.h \ ! fault-hpux.h fault-hpux-hppa.h fault-hurd.h fault-irix.h fault-irix-mips.h \ fault-linux.h fault-linux-alpha.h fault-linux-arm.h fault-linux-cris.h \ fault-linux-hppa.h fault-linux-i386.h fault-linux-i386-old.h \ ! fault-linux-ia64.h fault-linux-m68k.h fault-linux-m68k.c fault-linux-mips.h \ fault-linux-powerpc.h fault-linux-s390.h fault-linux-sh.h \ fault-linux-sparc.h fault-linux-x86_64.h \ ! fault-macos-i386.h fault-macos-powerpc.h fault-macos-powerpc.c \ ! fault-none.h \ ! fault-openbsd.h fault-openbsd-i386.h \ ! fault-osf.h fault-osf-alpha.h \ fault-posix.h fault-solaris.h fault-solaris-i386.h fault-solaris-sparc.h \ ! signals.h signals-bsd.h signals-hpux.h signals-hurd.h signals-macos.h \ leave.h \ stackvma.h *************** *** 147,174 **** handler-none.c handler-unix.c handler-win32.c \ stackvma-none.c stackvma-linux.c stackvma-freebsd.c stackvma-procfs.c \ stackvma-beos.c stackvma-mach.c \ ! leave-nop.c leave-sigaltstack.c leave-setcontext.c INCLUDES = -I. -I$(srcdir) ! dist_libsigsegv_la_SOURCES = dispatcher.c ! nodist_libsigsegv_la_SOURCES = handler.c stackvma.c leave.c ! ! DISTCLEANFILES = $(nodist_libsigsegv_la_SOURCES) signals.h fault.h sigsegv.h ! libsigsegv_la_LDFLAGS = -lc -no-undefined subdir = src mkinstalldirs = $(SHELL) $(top_srcdir)/../config/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = sigsegv.h ! LTLIBRARIES = $(lib_LTLIBRARIES) libsigsegv_la_LIBADD = ! dist_libsigsegv_la_OBJECTS = dispatcher.lo ! nodist_libsigsegv_la_OBJECTS = handler.lo stackvma.lo leave.lo ! libsigsegv_la_OBJECTS = $(dist_libsigsegv_la_OBJECTS) \ ! $(nodist_libsigsegv_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = --- 156,180 ---- handler-none.c handler-unix.c handler-win32.c \ stackvma-none.c stackvma-linux.c stackvma-freebsd.c stackvma-procfs.c \ stackvma-beos.c stackvma-mach.c \ ! leave-none.c leave-nop.c leave-sigaltstack.c leave-setcontext.c \ ! sigsegv.h.msvc INCLUDES = -I. -I$(srcdir) ! libsigsegv_la_SOURCES = handler.c stackvma.c leave.c dispatcher.c libsigsegv_la_LDFLAGS = -lc -no-undefined + + DISTCLEANFILES = sigsegv.h subdir = src mkinstalldirs = $(SHELL) $(top_srcdir)/../config/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = sigsegv.h ! LTLIBRARIES = $(noinst_LTLIBRARIES) libsigsegv_la_LIBADD = ! am_libsigsegv_la_OBJECTS = handler.lo stackvma.lo leave.lo dispatcher.lo ! libsigsegv_la_OBJECTS = $(am_libsigsegv_la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = *************** *** 180,232 **** CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(dist_libsigsegv_la_SOURCES) HEADERS = $(noinst_HEADERS) DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in sigsegv.h.in ! SOURCES = $(dist_libsigsegv_la_SOURCES) $(nodist_libsigsegv_la_SOURCES) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnits src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) sigsegv.h: $(top_builddir)/config.status sigsegv.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ - libLTLIBRARIES_INSTALL = $(INSTALL) - install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(libdir) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - if test -f $$p; then \ - f="`echo $$p | sed -e 's|^.*/||'`"; \ - echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ - $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \ - else :; fi; \ - done ! uninstall-libLTLIBRARIES: ! @$(NORMAL_UNINSTALL) ! @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ ! p="`echo $$p | sed -e 's|^.*/||'`"; \ ! echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ ! $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ ! done ! ! clean-libLTLIBRARIES: ! -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) ! @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" = "$$p" && dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libsigsegv.la: $(libsigsegv_la_OBJECTS) $(libsigsegv_la_DEPENDENCIES) ! $(LINK) -rpath $(libdir) $(libsigsegv_la_LDFLAGS) $(libsigsegv_la_OBJECTS) $(libsigsegv_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core --- 186,219 ---- CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = $(libsigsegv_la_SOURCES) HEADERS = $(noinst_HEADERS) DIST_COMMON = $(noinst_HEADERS) Makefile.am Makefile.in sigsegv.h.in ! SOURCES = $(libsigsegv_la_SOURCES) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnits src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) sigsegv.h: $(top_builddir)/config.status sigsegv.h.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ ! clean-noinstLTLIBRARIES: ! -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ! @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" = "$$p" && dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libsigsegv.la: $(libsigsegv_la_OBJECTS) $(libsigsegv_la_DEPENDENCIES) ! $(LINK) $(libsigsegv_la_LDFLAGS) $(libsigsegv_la_OBJECTS) $(libsigsegv_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core *************** *** 367,373 **** @echo "it deletes files that may require special tools to rebuild." clean: clean-am ! clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am --- 354,360 ---- @echo "it deletes files that may require special tools to rebuild." clean: clean-am ! clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am *************** *** 385,391 **** install-data-am: install-data-local ! install-exec-am: install-libLTLIBRARIES install-info: install-info-am --- 372,378 ---- install-data-am: install-data-local ! install-exec-am: install-info: install-info-am *************** *** 410,429 **** ps-am: ! uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES uninstall-local .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ! clean-libLTLIBRARIES clean-libtool ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am info info-am install \ install-am install-data install-data-am install-data-local \ install-exec install-exec-am install-info install-info-am \ ! install-libLTLIBRARIES install-man install-strip installcheck \ ! installcheck-am installdirs maintainer-clean \ ! maintainer-clean-generic mostlyclean mostlyclean-compile \ ! mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ! tags uninstall uninstall-am uninstall-info-am \ ! uninstall-libLTLIBRARIES uninstall-local # Special rules for installing sigsegv.h. --- 397,415 ---- ps-am: ! uninstall-am: uninstall-info-am uninstall-local .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ! clean-libtool clean-noinstLTLIBRARIES ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am info info-am install \ install-am install-data install-data-am install-data-local \ install-exec install-exec-am install-info install-info-am \ ! install-man install-strip installcheck installcheck-am \ ! installdirs maintainer-clean maintainer-clean-generic \ ! mostlyclean mostlyclean-compile mostlyclean-generic \ ! mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ ! uninstall-am uninstall-info-am uninstall-local # Special rules for installing sigsegv.h. *************** *** 438,445 **** --- 424,445 ---- uninstall-local: $(RM) $(DESTDIR)$(includedir)/sigsegv.h + # Rules for "make dist". + + sigsegv.h.msvc : sigsegv.h.in + sed -e 's/@''FAULT_CONTEXT_INCLUDE''@/#include /' \ + -e 's/@''FAULT_CONTEXT''@/CONTEXT/' \ + -e 's/@''HAVE_SIGSEGV_RECOVERY''@/1/' \ + -e 's/@''HAVE_STACK_OVERFLOW_RECOVERY''@/1/' \ + < $(srcdir)/sigsegv.h.in > $@ + # One more automake bug. installdirs: installdirs-local + + # Special dependencies. + handler.$(OBJEXT): $(CFG_SIGNALS) $(CFG_FAULT) $(CFG_HANDLER) + leave.$(OBJEXT): $(CFG_LEAVE) + stackvma.$(OBJEXT): $(CFG_STACKVMA) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-darwin-i386.h smalltalk-2.1.2/sigsegv/src/fault-darwin-i386.h *** smalltalk-2.1.1/sigsegv/src/fault-darwin-i386.h Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/sigsegv/src/fault-darwin-i386.h Thu Jan 1 01:00:00 1970 *************** *** 1,22 **** - /* Fault handler information. Darwin PPC version. - Copyright (C) 2003 Paolo Bonzini - - This program 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. - - This program 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 this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp - #define SIGSEGV_FAULT_STACKPOINTER (scp->sc_esp) - #define SIGSEGV_FAULT_CONTEXT (NULL) - - #define SS_DISABLE SA_DISABLE --- 0 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-darwin-powerpc.h smalltalk-2.1.2/sigsegv/src/fault-darwin-powerpc.h *** smalltalk-2.1.1/sigsegv/src/fault-darwin-powerpc.h Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/sigsegv/src/fault-darwin-powerpc.h Thu Jan 1 01:00:00 1970 *************** *** 1,130 **** - /* Fault handler information. Darwin PPC version. - Copyright (C) 2003 Paolo Bonzini - - This program 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. - - This program 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 this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp - #define SIGSEGV_FAULT_ADDRESS get_fault_address (scp) - #define SIGSEGV_FAULT_STACKPOINTER (scp->sc_regs ? ((unsigned *)scp->sc_regs)[3] : scp->sc_sp) - - #define SIGSEGV_FAULT_CONTEXT (NULL) - - #define SS_DISABLE SA_DISABLE - - - /* Decodes the machine instruction which was responsible for the sending of the - SIGBUS signal. Sadly this is the only way to find the faulting address because - the signal handler doesn't get it directly from the kernel (although it is - available on the Mach level, but droppped by the BSD personality before it - calls our signal handler...) - This code should be able to deal correctly with all PPCs starting from the - 601 up to and including the G4s (including Velocity Engine). */ - #define EXTRACT_OP1(iw) (((iw) & 0xFC000000) >> 26) - #define EXTRACT_OP2(iw) (((iw) & 0x000007FE) >> 1) - #define EXTRACT_REGA(iw) (((iw) & 0x001F0000) >> 16) - #define EXTRACT_REGB(iw) (((iw) & 0x03E00000) >> 21) - #define EXTRACT_REGC(iw) (((iw) & 0x0000F800) >> 11) - #define EXTRACT_DISP(iw) ((short *) &(iw))[1] - - static char *get_fault_address(struct sigcontext *scp) - { - unsigned int instr = *((unsigned int *) scp->sc_ir); - unsigned int * regs = &((unsigned int *) scp->sc_regs)[2]; - int disp = 0, tmp; - unsigned int baseA = 0, baseB = 0; - unsigned int addr, alignmask = 0xFFFFFFFF; - - switch(EXTRACT_OP1(instr)) { - case 38: /* stb */ - case 39: /* stbu */ - case 54: /* stfd */ - case 55: /* stfdu */ - case 52: /* stfs */ - case 53: /* stfsu */ - case 44: /* sth */ - case 45: /* sthu */ - case 47: /* stmw */ - case 36: /* stw */ - case 37: /* stwu */ - tmp = EXTRACT_REGA(instr); - if(tmp > 0) - baseA = regs[tmp]; - disp = EXTRACT_DISP(instr); - break; - case 31: - switch(EXTRACT_OP2(instr)) { - case 86: /* dcbf */ - case 54: /* dcbst */ - case 1014: /* dcbz */ - case 247: /* stbux */ - case 215: /* stbx */ - case 759: /* stfdux */ - case 727: /* stfdx */ - case 983: /* stfiwx */ - case 695: /* stfsux */ - case 663: /* stfsx */ - case 918: /* sthbrx */ - case 439: /* sthux */ - case 407: /* sthx */ - case 661: /* stswx */ - case 662: /* stwbrx */ - case 150: /* stwcx. */ - case 183: /* stwux */ - case 151: /* stwx */ - case 135: /* stvebx */ - case 167: /* stvehx */ - case 199: /* stvewx */ - case 231: /* stvx */ - case 487: /* stvxl */ - tmp = EXTRACT_REGA(instr); - if(tmp > 0) - baseA = regs[tmp]; - baseB = regs[EXTRACT_REGC(instr)]; - /* determine Altivec alignment mask */ - switch(EXTRACT_OP2(instr)) { - case 167: /* stvehx */ - alignmask = 0xFFFFFFFE; - break; - case 199: /* stvewx */ - alignmask = 0xFFFFFFFC; - break; - case 231: /* stvx */ - alignmask = 0xFFFFFFF0; - break; - case 487: /* stvxl */ - alignmask = 0xFFFFFFF0; - break; - } - break; - case 725: /* stswi */ - tmp = EXTRACT_REGA(instr); - if(tmp > 0) - baseA = regs[tmp]; - break; - default: /* ignore instruction */ - return NULL; - break; - } - break; - default: /* ignore instruction */ - return NULL; - break; - } - - addr = (baseA + baseB) + disp; - addr &= alignmask; - return (char *)addr; - } - --- 0 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-hpux-hppa.h smalltalk-2.1.2/sigsegv/src/fault-hpux-hppa.h *** smalltalk-2.1.1/sigsegv/src/fault-hpux-hppa.h Mon Jul 29 23:23:04 2002 --- smalltalk-2.1.2/sigsegv/src/fault-hpux-hppa.h Thu May 1 14:31:19 2003 *************** *** 1,6 **** /* Fault handler information. HP-UX HPPA version. Copyright (C) 2002 Paolo Bonzini ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,6 ---- /* Fault handler information. HP-UX HPPA version. Copyright (C) 2002 Paolo Bonzini ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 16,22 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "fault-hpux.h" ! #define SIGSEGV_FAULT_ADDRESS scp->sc_sl.sl_ss.ss_narrow.ss_cr21 ! #define SIGSEGV_FAULT_STACKPOINTER scp->sc_ctxt.sl.sl_ss.ss_narrow.ss_sp --- 16,46 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + #define USE_64BIT_REGS(mc) \ + (((mc).ss_flags & SS_WIDEREGS) && ((mc).ss_flags & SS_NARROWISINVALID)) + + /* Extract the cr21 register from an mcontext_t. + See the comments in /usr/include/machine/save_state.h. */ + #define GET_CR21(mc) \ + (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_cr21 : (mc).ss_narrow.ss_cr21) + + /* Extract the stack pointer from an mcontext_t. + See the comments in /usr/include/machine/save_state.h. */ + #define GET_SP(mc) \ + (USE_64BIT_REGS(mc) ? (mc).ss_wide.ss_64.ss_sp : (mc).ss_narrow.ss_sp) + + /* Both of these alternatives work on HP-UX 10.20 and HP-UX 11.00. */ + #if 1 + #include "fault-hpux.h" ! #define SIGSEGV_FAULT_ADDRESS GET_CR21 (scp->sc_sl.sl_ss) ! #define SIGSEGV_FAULT_STACKPOINTER GET_SP (scp->sc_ctxt.sl.sl_ss) ! ! #else ! ! #include "fault-posix.h" ! ! #define SIGSEGV_FAULT_STACKPOINTER GET_SP (((ucontext_t *) ucp)->uc_mcontext) ! ! #endif diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-hurd.h smalltalk-2.1.2/sigsegv/src/fault-hurd.h *** smalltalk-2.1.1/sigsegv/src/fault-hurd.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/fault-hurd.h Mon Sep 30 17:59:37 2002 *************** *** 0 **** --- 1,20 ---- + /* Fault handler information. Hurd version. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp + #define SIGSEGV_FAULT_ADDRESS (unsigned long) code + #define SIGSEGV_FAULT_CONTEXT scp diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-linux-hppa.h smalltalk-2.1.2/sigsegv/src/fault-linux-hppa.h *** smalltalk-2.1.1/sigsegv/src/fault-linux-hppa.h Tue Jul 30 02:51:13 2002 --- smalltalk-2.1.2/sigsegv/src/fault-linux-hppa.h Thu May 1 17:37:49 2003 *************** *** 1,5 **** /* Fault handler information. Linux/HPPA version. ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Fault handler information. Linux/HPPA version. ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 15,34 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include #include #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, void *ucp ! #define SIGSEGV_FAULT_ADDRESS sip->si_addr ! #define SIGSEGV_FAULT_CONTEXT ((ucontext_t *) ucp) ! #define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gregs.g_regs[30] #if 0 ! ! #include ! ! #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, ... scp ! #define SIGSEGV_FAULT_CONTEXT scp ! #define SIGSEGV_FAULT_STACKPOINTER scp->sc_gr[30] ! #endif --- 15,27 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, void *ucp ! #define SIGSEGV_FAULT_ADDRESS sip->si_ptr ! #define SIGSEGV_FAULT_ADDRESS_FROM_SIGINFO #if 0 ! #define SIGSEGV_FAULT_CONTEXT ((ucontext_t *) ucp) ! #define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gregs.g_regs[30] #endif diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-linux-ia64.h smalltalk-2.1.2/sigsegv/src/fault-linux-ia64.h *** smalltalk-2.1.1/sigsegv/src/fault-linux-ia64.h Tue Jul 30 01:43:38 2002 --- smalltalk-2.1.2/sigsegv/src/fault-linux-ia64.h Sat May 3 08:54:00 2003 *************** *** 1,5 **** /* Fault handler information. Linux/IA-64 version. ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Fault handler information. Linux/IA-64 version. ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 15,22 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ! #include ! ! #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp /* FIXME */ #define SIGSEGV_FAULT_CONTEXT scp #define SIGSEGV_FAULT_STACKPOINTER scp->sc_gr[12] --- 15,29 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ ! #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, struct sigcontext *scp ! #define SIGSEGV_FAULT_ADDRESS sip->si_addr #define SIGSEGV_FAULT_CONTEXT scp + + /* IA-64 has two stack pointers, one that grows down, called $r12, and one + that grows up, called $bsp/$bspstore. */ #define SIGSEGV_FAULT_STACKPOINTER scp->sc_gr[12] + + /* It would be better to access $bspstore instead of $bsp but I don't know + where to find it in 'struct sigcontext'. Anyway, it doesn't matter + because $bsp and $bspstore never differ by more than ca. 1 KB. */ + #define SIGSEGV_FAULT_BSP_POINTER scp->sc_ar_bsp diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-linux-m68k.c smalltalk-2.1.2/sigsegv/src/fault-linux-m68k.c *** smalltalk-2.1.1/sigsegv/src/fault-linux-m68k.c Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/fault-linux-m68k.c Mon Sep 30 18:06:13 2002 *************** *** 0 **** --- 1,44 ---- + /* Fault handler information subroutine. Linux/m68k version. + * Taken from gcc-3.2/boehm-gc/os_dep.c. + * + * Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers + * Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved. + * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. + * Copyright (c) 1999 by Hewlett-Packard Company. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ + + static void * + get_fault_addr (struct sigcontext *scp) + { + int format = (scp->sc_formatvec >> 12) & 0xf; + unsigned long *framedata = (unsigned long *) (scp + 1); + unsigned long ea; + + switch (format) + { + case 10: case 11: /* 68020/030 */ + ea = framedata[2]; + return (void *) ea; + case 7: /* 68040 */ + ea = framedata[3]; + break; + case 4: /* 68060 */ + ea = framedata[0]; + break; + default: + return (void *) 0; + } + if (framedata[1] & 0x08000000) + /* Correct addr on misaligned access. */ + ea = (ea + 4095) & ~4095; + return (void *) ea; + } diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-linux-m68k.h smalltalk-2.1.2/sigsegv/src/fault-linux-m68k.h *** smalltalk-2.1.1/sigsegv/src/fault-linux-m68k.h Sat Jul 27 22:58:30 2002 --- smalltalk-2.1.2/sigsegv/src/fault-linux-m68k.h Mon Sep 30 18:06:13 2002 *************** *** 16,22 **** --- 16,24 ---- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include + #include "fault-linux-m68k.c" #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp + #define SIGSEGV_FAULT_ADDRESS (unsigned long) get_fault_addr (scp) #define SIGSEGV_FAULT_CONTEXT scp #define SIGSEGV_FAULT_STACKPOINTER scp->sc_usp diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-linux-powerpc.h smalltalk-2.1.2/sigsegv/src/fault-linux-powerpc.h *** smalltalk-2.1.1/sigsegv/src/fault-linux-powerpc.h Tue Jul 30 01:09:32 2002 --- smalltalk-2.1.2/sigsegv/src/fault-linux-powerpc.h Mon Sep 30 18:38:05 2002 *************** *** 18,22 **** --- 18,23 ---- #include #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, struct sigcontext *scp + #define SIGSEGV_FAULT_ADDRESS scp->regs->dar #define SIGSEGV_FAULT_CONTEXT scp #define SIGSEGV_FAULT_STACKPOINTER scp->regs->gpr[1] diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-macos-i386.h smalltalk-2.1.2/sigsegv/src/fault-macos-i386.h *** smalltalk-2.1.1/sigsegv/src/fault-macos-i386.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/fault-macos-i386.h Thu Apr 3 22:32:55 2003 *************** *** 0 **** --- 1,20 ---- + /* Fault handler information. MacOSX/i386 version. + Copyright (C) 2003 Paolo Bonzini + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp + #define SIGSEGV_FAULT_CONTEXT scp + #define SIGSEGV_FAULT_STACKPOINTER scp->sc_esp diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-macos-powerpc.c smalltalk-2.1.2/sigsegv/src/fault-macos-powerpc.c *** smalltalk-2.1.1/sigsegv/src/fault-macos-powerpc.c Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/fault-macos-powerpc.c Mon Sep 30 17:51:04 2002 *************** *** 0 **** --- 1,124 ---- + /* Fault handler information subroutine. MacOSX/PowerPC version. + * Taken from gcc-3.2/boehm-gc/os_dep.c. + * + * Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers + * Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved. + * Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved. + * Copyright (c) 1999 by Hewlett-Packard Company. All rights reserved. + * + * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED + * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * + * Permission is hereby granted to use or copy this program + * for any purpose, provided the above notices are retained on all copies. + * Permission to modify the code and to distribute modified code is granted, + * provided the above notices are retained, and a notice that the code was + * modified is included with the above copyright notice. + */ + + /* Decodes the machine instruction which was responsible for the sending of the + SIGBUS signal. Sadly this is the only way to find the faulting address + because the signal handler doesn't get it directly from the kernel (although + it is available on the Mach level, but dropped by the BSD personality before + it calls our signal handler...) + This code should be able to deal correctly with all PPCs starting from the + 601 up to and including the G4s (including Velocity Engine). */ + #define EXTRACT_OP1(iw) (((iw) & 0xFC000000) >> 26) + #define EXTRACT_OP2(iw) (((iw) & 0x000007FE) >> 1) + #define EXTRACT_REGA(iw) (((iw) & 0x001F0000) >> 16) + #define EXTRACT_REGB(iw) (((iw) & 0x03E00000) >> 21) + #define EXTRACT_REGC(iw) (((iw) & 0x0000F800) >> 11) + #define EXTRACT_DISP(iw) ((short *) &(iw))[1] + + static void * + get_fault_addr (struct sigcontext *scp) + { + unsigned int instr = *((unsigned int *) scp->sc_ir); + unsigned int *regs = &((unsigned int *) scp->sc_regs)[2]; + int disp = 0; + int tmp; + unsigned int baseA = 0; + unsigned int baseB = 0; + unsigned int addr; + unsigned int alignmask = 0xFFFFFFFF; + + switch (EXTRACT_OP1 (instr)) + { + case 38: /* stb */ + case 39: /* stbu */ + case 54: /* stfd */ + case 55: /* stfdu */ + case 52: /* stfs */ + case 53: /* stfsu */ + case 44: /* sth */ + case 45: /* sthu */ + case 47: /* stmw */ + case 36: /* stw */ + case 37: /* stwu */ + tmp = EXTRACT_REGA (instr); + if (tmp > 0) + baseA = regs[tmp]; + disp = EXTRACT_DISP (instr); + break; + case 31: + switch (EXTRACT_OP2 (instr)) + { + case 86: /* dcbf */ + case 54: /* dcbst */ + case 1014: /* dcbz */ + case 247: /* stbux */ + case 215: /* stbx */ + case 759: /* stfdux */ + case 727: /* stfdx */ + case 983: /* stfiwx */ + case 695: /* stfsux */ + case 663: /* stfsx */ + case 918: /* sthbrx */ + case 439: /* sthux */ + case 407: /* sthx */ + case 661: /* stswx */ + case 662: /* stwbrx */ + case 150: /* stwcx. */ + case 183: /* stwux */ + case 151: /* stwx */ + case 135: /* stvebx */ + case 167: /* stvehx */ + case 199: /* stvewx */ + case 231: /* stvx */ + case 487: /* stvxl */ + tmp = EXTRACT_REGA (instr); + if (tmp > 0) + baseA = regs[tmp]; + baseB = regs[EXTRACT_REGC (instr)]; + /* Determine Altivec alignment mask. */ + switch (EXTRACT_OP2 (instr)) + { + case 167: /* stvehx */ + alignmask = 0xFFFFFFFE; + break; + case 199: /* stvewx */ + alignmask = 0xFFFFFFFC; + break; + case 231: /* stvx */ + case 487: /* stvxl */ + alignmask = 0xFFFFFFF0; + break; + } + break; + case 725: /* stswi */ + tmp = EXTRACT_REGA (instr); + if (tmp > 0) + baseA = regs[tmp]; + break; + default: /* ignore instruction */ + return (void *) 0; + } + break; + default: /* ignore instruction */ + return (void *) 0; + } + + addr = (baseA + baseB) + disp; + addr &= alignmask; + return (void *) addr; + } diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-macos-powerpc.h smalltalk-2.1.2/sigsegv/src/fault-macos-powerpc.h *** smalltalk-2.1.1/sigsegv/src/fault-macos-powerpc.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/fault-macos-powerpc.h Thu Apr 3 22:32:57 2003 *************** *** 0 **** --- 1,26 ---- + /* Fault handler information. MacOSX/PowerPC version. + Copyright (C) 2002-2003 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #include "fault-macos-powerpc.c" + + #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, int code, struct sigcontext *scp + #define SIGSEGV_FAULT_ADDRESS (unsigned long) get_fault_addr (scp) + #define SIGSEGV_FAULT_CONTEXT scp + #if 0 + #define SIGSEGV_FAULT_STACKPOINTER (&((unsigned int *) scp->sc_regs)[2])[1] + #endif + #define SIGSEGV_FAULT_STACKPOINTER (scp->sc_regs ? ((unsigned int *) scp->sc_regs)[3] : scp->sc_sp) diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-none.h smalltalk-2.1.2/sigsegv/src/fault-none.h *** smalltalk-2.1.1/sigsegv/src/fault-none.h Sat Oct 12 11:27:11 2002 --- smalltalk-2.1.2/sigsegv/src/fault-none.h Mon Oct 14 14:24:34 2002 *************** *** 1,4 **** ! /* Fault handler information. Empty version. Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify --- 1,4 ---- ! /* Fault handler information. Version for platforms lacking support. Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify *************** *** 14,17 **** You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - --- 14,16 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-openbsd-i386.h smalltalk-2.1.2/sigsegv/src/fault-openbsd-i386.h *** smalltalk-2.1.1/sigsegv/src/fault-openbsd-i386.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/fault-openbsd-i386.h Thu May 1 15:16:49 2003 *************** *** 0 **** --- 1,20 ---- + /* Fault handler information. OpenBSD/i386 version. + Copyright (C) 2003 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #include "fault-openbsd.h" + + #define SIGSEGV_FAULT_STACKPOINTER scp->sc_esp diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-openbsd.h smalltalk-2.1.2/sigsegv/src/fault-openbsd.h *** smalltalk-2.1.1/sigsegv/src/fault-openbsd.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/fault-openbsd.h Thu May 1 15:16:31 2003 *************** *** 0 **** --- 1,21 ---- + /* Fault handler information. OpenBSD version. + Copyright (C) 2003 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, struct sigcontext *scp + #define SIGSEGV_FAULT_ADDRESS sip->si_addr + #define SIGSEGV_FAULT_CONTEXT scp + #define SIGSEGV_FAULT_ADDRESS_FROM_SIGINFO diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault-posix.h smalltalk-2.1.2/sigsegv/src/fault-posix.h *** smalltalk-2.1.1/sigsegv/src/fault-posix.h Wed Apr 9 22:18:11 2003 --- smalltalk-2.1.2/sigsegv/src/fault-posix.h Mon Sep 16 20:30:44 2002 *************** *** 15,30 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #ifdef HAVE_SIGINFO_H - #include - #endif - #ifdef HAVE_UCONTEXT_H #include - #endif #define SIGSEGV_FAULT_HANDLER_ARGLIST int sig, siginfo_t *sip, void *ucp #define SIGSEGV_FAULT_ADDRESS sip->si_addr - #ifdef HAVE_UCONTEXT_H #define SIGSEGV_FAULT_CONTEXT ((ucontext_t *) ucp) - #endif #define SIGSEGV_FAULT_ADDRESS_FROM_SIGINFO --- 15,23 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/fault.h smalltalk-2.1.2/sigsegv/src/fault.h *** smalltalk-2.1.1/sigsegv/src/fault.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/fault.h Wed Apr 2 22:07:50 2003 *************** *** 0 **** --- 1,37 ---- + /* Fault handler information. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + /* The included file defines: + + SIGSEGV_FAULT_HANDLER_ARGLIST + is the argument list for the actual fault handler. + + SIGSEGV_FAULT_ADDRESS + is a macro for fetching the fault address. + + and if available (optional): + + SIGSEGV_FAULT_CONTEXT + is a macro giving a pointer to the entire fault context (i.e. + the register set etc.). + + SIGSEGV_FAULT_STACKPOINTER + is a macro for fetching the stackpointer at the moment the fault + occurred. + */ + + #include CFG_FAULT diff -rNC3 smalltalk-2.1.1/sigsegv/src/handler-none.c smalltalk-2.1.2/sigsegv/src/handler-none.c *** smalltalk-2.1.1/sigsegv/src/handler-none.c Sat Oct 12 11:30:42 2002 --- smalltalk-2.1.2/sigsegv/src/handler-none.c Thu Aug 29 20:26:39 2002 *************** *** 15,21 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "sigsegv.h" int --- 15,20 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/handler-unix.c smalltalk-2.1.2/sigsegv/src/handler-unix.c *** smalltalk-2.1.1/sigsegv/src/handler-unix.c Mon Mar 31 18:25:24 2003 --- smalltalk-2.1.2/sigsegv/src/handler-unix.c Sat May 3 08:54:01 2003 *************** *** 1,5 **** /* Fault handler information. Unix version. ! Copyright (C) 1993-1999, 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Fault handler information. Unix version. ! Copyright (C) 1993-1999, 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 15,21 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "sigsegv.h" /* On the average Unix platform, we define --- 15,20 ---- *************** *** 55,88 **** #include /* needed for NULL on SunOS4 */ #include #include ! #include #include ! /* The included file defines: ! ! SIGSEGV_FAULT_HANDLER_ARGLIST ! is the argument list for the actual fault handler. ! ! SIGSEGV_FAULT_ADDRESS ! is a macro for fetching the fault address. ! ! and if available (optional): ! ! SIGSEGV_FAULT_CONTEXT ! is a macro giving a pointer to the entire fault context (i.e. ! the register set etc.). ! ! SIGSEGV_FAULT_STACKPOINTER ! is a macro for fetching the stackpointer at the moment the fault ! occurred. ! */ #include "fault.h" ! ! /* List of signals that are sent when an invalid virtual memory address ! is accessed, or when the stack overflows. */ ! ! #include "signals.h" #if HAVE_STACK_OVERFLOW_RECOVERY --- 54,71 ---- #include /* needed for NULL on SunOS4 */ #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif #include ! /* For MacOSX. */ ! #ifndef SS_DISABLE ! #define SS_DISABLE SA_DISABLE ! #endif #include "fault.h" ! #include CFG_SIGNALS #if HAVE_STACK_OVERFLOW_RECOVERY *************** *** 102,108 **** Leaving a signal handler executing on the alternate stack. */ #include "leave.h" ! #ifdef HAVE_STACKVMA /* Address of the last byte belonging to the stack vma. */ static unsigned long stack_top = 0; --- 85,91 ---- Leaving a signal handler executing on the alternate stack. */ #include "leave.h" ! #if HAVE_STACKVMA /* Address of the last byte belonging to the stack vma. */ static unsigned long stack_top = 0; *************** *** 143,150 **** void *address = (void *) (SIGSEGV_FAULT_ADDRESS); #if HAVE_STACK_OVERFLOW_RECOVERY ! #if !(defined HAVE_STACKVMA || defined SIGSEGV_FAULT_STACKPOINTER) ! #error "Insufficient heuristics for detecting a stack overflow. Either define HAVE_STACKVMA and create stackvma.c, or define SIGSEGV_FAULT_STACKPOINTER correctly, or undefine HAVE_STACK_OVERFLOW_RECOVERY!" #endif /* Call user's handler. */ --- 126,133 ---- void *address = (void *) (SIGSEGV_FAULT_ADDRESS); #if HAVE_STACK_OVERFLOW_RECOVERY ! #if !(HAVE_STACKVMA || defined SIGSEGV_FAULT_STACKPOINTER) ! #error "Insufficient heuristics for detecting a stack overflow. Either define CFG_STACKVMA and HAVE_STACKVMA correctly, or define SIGSEGV_FAULT_STACKPOINTER correctly, or undefine HAVE_STACK_OVERFLOW_RECOVERY!" #endif /* Call user's handler. */ *************** *** 162,170 **** /* See whether it was a stack overflow. If so, longjump away. */ #ifdef SIGSEGV_FAULT_STACKPOINTER unsigned long old_sp = (unsigned long) (SIGSEGV_FAULT_STACKPOINTER); #endif ! #ifdef HAVE_STACKVMA /* Were we able to determine the stack top? */ if (stack_top) { --- 145,156 ---- /* See whether it was a stack overflow. If so, longjump away. */ #ifdef SIGSEGV_FAULT_STACKPOINTER unsigned long old_sp = (unsigned long) (SIGSEGV_FAULT_STACKPOINTER); + #ifdef __ia64 + unsigned long old_bsp = (unsigned long) (SIGSEGV_FAULT_BSP_POINTER); + #endif #endif ! #if HAVE_STACKVMA /* Were we able to determine the stack top? */ if (stack_top) { *************** *** 175,183 **** { /* Heuristic AC: If the fault_address is nearer to the stack segment's [start,end] than to the previous segment, we ! consider it a stack overflow. */ unsigned long addr = (unsigned long) address; #if STACK_DIRECTION < 0 if (addr >= vma.start ? (addr <= vma.end - 1) --- 161,175 ---- { /* Heuristic AC: If the fault_address is nearer to the stack segment's [start,end] than to the previous segment, we ! consider it a stack overflow. ! In the case of IA-64, we know that the previous segment ! is the up-growing bsp segment, and either of the two ! stacks can overflow. */ unsigned long addr = (unsigned long) address; + #ifdef __ia64 + if (addr >= vma.prev_end && addr <= vma.end - 1) + #else #if STACK_DIRECTION < 0 if (addr >= vma.start ? (addr <= vma.end - 1) *************** *** 187,198 **** ? (addr >= vma.start) : (addr - vma.end < (vma.next_start - vma.end) / 2)) #endif #else /* Heuristic AB: If the fault address is near the stack pointer, it's a stack overflow. */ unsigned long addr = (unsigned long) address; ! if (addr <= old_sp + 4096 && old_sp <= addr + 4096) { { #endif --- 179,195 ---- ? (addr >= vma.start) : (addr - vma.end < (vma.next_start - vma.end) / 2)) #endif + #endif #else /* Heuristic AB: If the fault address is near the stack pointer, it's a stack overflow. */ unsigned long addr = (unsigned long) address; ! if ((addr <= old_sp + 4096 && old_sp <= addr + 4096) ! #ifdef __ia64 ! || (addr <= old_bsp + 4096 && old_bsp <= addr + 4096) ! #endif ! ) { { #endif *************** *** 460,466 **** void *extra_stack, unsigned long extra_stack_size) { #if HAVE_STACK_OVERFLOW_RECOVERY ! #ifdef HAVE_STACKVMA if (!stack_top) { int dummy; --- 457,463 ---- void *extra_stack, unsigned long extra_stack_size) { #if HAVE_STACK_OVERFLOW_RECOVERY ! #if HAVE_STACKVMA if (!stack_top) { int dummy; diff -rNC3 smalltalk-2.1.1/sigsegv/src/handler-win32.c smalltalk-2.1.2/sigsegv/src/handler-win32.c *** smalltalk-2.1.1/sigsegv/src/handler-win32.c Thu Apr 17 11:41:40 2003 --- smalltalk-2.1.2/sigsegv/src/handler-win32.c Mon Apr 28 13:03:22 2003 *************** *** 1,5 **** /* Fault handler information. Woe32 version. ! Copyright (C) 1993-1999, 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,6 ---- /* Fault handler information. Woe32 version. ! Copyright (C) 1993-1999, 2002-2003 Bruno Haible ! Copyright (C) 2003 Paolo Bonzini This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 15,21 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "sigsegv.h" #define WIN32_LEAN_AND_MEAN /* avoid including junk */ --- 16,21 ---- *************** *** 28,48 **** * extern DWORD GetLastError (void); */ - #ifdef __CYGWIN__ - /* Data structures for the current thread's exception handler chain. - On the x86 Windows uses register fs, offset 0 to point to the current - exception handler; Cygwin mucks with it, so we must do the same... :-/ */ - - __asm__ (".equ __except_list,0"); - - typedef struct exception_list { - struct exception_list *prev; - int (*handler) (EXCEPTION_RECORD *, void *, CONTEXT *, void *); - } exception_list; - - extern exception_list *_except_list __asm__ ("%fs:__except_list"); - #endif - /* User's SIGSEGV handler. */ static sigsegv_handler_t user_handler = (sigsegv_handler_t) NULL; --- 28,33 ---- *************** *** 202,247 **** return EXCEPTION_CONTINUE_SEARCH; } ! /* Emulate Windows' unhandled exception filters. Cygwin places its own global ! exception handler, so our exceptions do not pass through the unhandled ! exception filter. We manually daisy-chain our handler to Cygwin's, ! because exception registrations must lie on the stack. */ ! #ifdef __CYGWIN__ ! static int (*cygwin_exception_handler) (EXCEPTION_RECORD *, void *, CONTEXT *, void *); static exception_list * ! debug_get_except_list() { ! return _except_list; /* it is not otherwise accessible from gdb */ } static int ! handle_exceptions (EXCEPTION_RECORD *exc, void *unused1, CONTEXT *ctx, void *unused2) { EXCEPTION_POINTERS ExceptionInfo; ! int result; ! ExceptionInfo.ExceptionRecord = exc; ! ExceptionInfo.ContextRecord = ctx; ! result = main_exception_filter (&ExceptionInfo); ! ! return result == EXCEPTION_CONTINUE_SEARCH ! ? cygwin_exception_handler (exc, unused1, ctx, unused2) ! : 0; } ! #endif /* __CYGWIN__ */ static void install_main_exception_filter () { static int main_exception_filter_installed = 0; if (!main_exception_filter_installed) { ! #ifdef __CYGWIN__ ! cygwin_exception_handler = _except_list->handler; ! _except_list->handler = handle_exceptions; ! #else /* __CYGWIN__ */ ! SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) &main_exception_filter); ! #endif /* __CYGWIN__ */ main_exception_filter_installed = 1; } } --- 187,268 ---- return EXCEPTION_CONTINUE_SEARCH; } ! #if defined __CYGWIN__ && defined __i386__ ! ! /* In Cygwin programs, SetUnhandledExceptionFilter has no effect because Cygwin ! installs a global exception handler. We have to dig deep in order to install ! our main_exception_filter. */ ! ! /* Data structures for the current thread's exception handler chain. ! On the x86 Windows uses register fs, offset 0 to point to the current ! exception handler; Cygwin mucks with it, so we must do the same... :-/ */ ! ! /* Magic taken from winsup/cygwin/include/exceptions.h. */ ! ! struct exception_list ! { ! struct exception_list *prev; ! int (*handler) (EXCEPTION_RECORD *, void *, CONTEXT *, void *); ! }; ! typedef struct exception_list exception_list; ! ! /* Magic taken from winsup/cygwin/exceptions.cc. */ + __asm__ (".equ __except_list,0"); + + extern exception_list *_except_list __asm__ ("%fs:__except_list"); + + /* For debugging. _except_list is not otherwise accessible from gdb. */ static exception_list * ! debug_get_except_list () { ! return _except_list; } + /* Cygwin's original exception handler. */ + static int (*cygwin_exception_handler) (EXCEPTION_RECORD *, void *, CONTEXT *, void *); + + /* Our exception handler. */ static int ! libsigsegv_exception_handler (EXCEPTION_RECORD *exception, void *frame, CONTEXT *context, void *dispatch) { EXCEPTION_POINTERS ExceptionInfo; ! ExceptionInfo.ExceptionRecord = exception; ! ExceptionInfo.ContextRecord = context; ! if (main_exception_filter (&ExceptionInfo) == EXCEPTION_CONTINUE_SEARCH) ! return cygwin_exception_handler (exception, frame, context, dispatch); ! else ! return 0; ! } ! ! static void ! do_install_main_exception_filter () ! { ! /* We cannot insert any handler into the chain, because such handlers ! must lie on the stack (?). Instead, we have to replace(!) Cygwin's ! global exception handler. */ ! cygwin_exception_handler = _except_list->handler; ! _except_list->handler = libsigsegv_exception_handler; } ! ! #else ! ! static void ! do_install_main_exception_filter () ! { ! SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) &main_exception_filter); ! } ! ! #endif static void install_main_exception_filter () { static int main_exception_filter_installed = 0; + if (!main_exception_filter_installed) { ! do_install_main_exception_filter (); main_exception_filter_installed = 1; } } diff -rNC3 smalltalk-2.1.1/sigsegv/src/handler.c smalltalk-2.1.2/sigsegv/src/handler.c *** smalltalk-2.1.1/sigsegv/src/handler.c Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/handler.c Thu Aug 29 20:26:39 2002 *************** *** 0 **** --- 1,20 ---- + /* Fault handler information. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #include "config.h" + + #include CFG_HANDLER diff -rNC3 smalltalk-2.1.1/sigsegv/src/leave-none.c smalltalk-2.1.2/sigsegv/src/leave-none.c *** smalltalk-2.1.1/sigsegv/src/leave-none.c Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/leave-none.c Mon Oct 14 14:13:25 2002 *************** *** 0 **** --- 1,18 ---- + /* Leaving a signal handler executing on the alternate stack. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + /* No need to define sigsegv_reset_onstack_flag() on this platform. */ diff -rNC3 smalltalk-2.1.1/sigsegv/src/leave-nop.c smalltalk-2.1.2/sigsegv/src/leave-nop.c *** smalltalk-2.1.1/sigsegv/src/leave-nop.c Sat Oct 12 11:32:39 2002 --- smalltalk-2.1.2/sigsegv/src/leave-nop.c Thu Aug 29 20:26:40 2002 *************** *** 15,22 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" - void sigsegv_reset_onstack_flag (void) { --- 15,20 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/leave-setcontext.c smalltalk-2.1.2/sigsegv/src/leave-setcontext.c *** smalltalk-2.1.1/sigsegv/src/leave-setcontext.c Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/sigsegv/src/leave-setcontext.c Thu Aug 29 20:26:40 2002 *************** *** 15,24 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" - #include - #include #include void --- 15,21 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/leave-sigaltstack.c smalltalk-2.1.2/sigsegv/src/leave-sigaltstack.c *** smalltalk-2.1.1/sigsegv/src/leave-sigaltstack.c Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/sigsegv/src/leave-sigaltstack.c Thu Apr 3 22:32:57 2003 *************** *** 1,5 **** /* Leaving a signal handler executing on the alternate stack. ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Leaving a signal handler executing on the alternate stack. ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 15,28 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" - #include #include ! #include #ifndef SS_ONSTACK ! #define SS_ONSTACK SA_ONSTACK /* needed for Darwin */ #endif void --- 15,29 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include ! #if HAVE_SYS_SIGNAL_H ! # include ! #endif + /* For MacOSX. */ #ifndef SS_ONSTACK ! #define SS_ONSTACK SA_ONSTACK #endif void diff -rNC3 smalltalk-2.1.1/sigsegv/src/leave.c smalltalk-2.1.2/sigsegv/src/leave.c *** smalltalk-2.1.1/sigsegv/src/leave.c Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/leave.c Mon Oct 14 14:13:25 2002 *************** *** 0 **** --- 1,20 ---- + /* Leaving a signal handler executing on the alternate stack. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #include "config.h" + + #include CFG_LEAVE diff -rNC3 smalltalk-2.1.1/sigsegv/src/signals-bsd.h smalltalk-2.1.2/sigsegv/src/signals-bsd.h *** smalltalk-2.1.1/sigsegv/src/signals-bsd.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/signals-bsd.h Thu Aug 29 20:26:38 2002 *************** *** 0 **** --- 1,21 ---- + /* List of signals. BSD version. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + /* List of signals that are sent when an invalid virtual memory address + is accessed, or when the stack overflows. */ + #define SIGSEGV_FOR_ALL_SIGNALS(var,body) \ + { int var; var = SIGSEGV; { body } var = SIGBUS; { body } } diff -rNC3 smalltalk-2.1.1/sigsegv/src/signals-hpux.h smalltalk-2.1.2/sigsegv/src/signals-hpux.h *** smalltalk-2.1.1/sigsegv/src/signals-hpux.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/signals-hpux.h Thu Aug 29 20:26:38 2002 *************** *** 0 **** --- 1,21 ---- + /* List of signals. HP-UX version. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + /* List of signals that are sent when an invalid virtual memory address + is accessed, or when the stack overflows. */ + #define SIGSEGV_FOR_ALL_SIGNALS(var,body) \ + { int var; var = SIGSEGV; { body } var = SIGBUS; { body } } diff -rNC3 smalltalk-2.1.1/sigsegv/src/signals-hurd.h smalltalk-2.1.2/sigsegv/src/signals-hurd.h *** smalltalk-2.1.1/sigsegv/src/signals-hurd.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/signals-hurd.h Mon Sep 30 17:59:37 2002 *************** *** 0 **** --- 1,21 ---- + /* List of signals. Hurd version. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + /* List of signals that are sent when an invalid virtual memory address + is accessed, or when the stack overflows. */ + #define SIGSEGV_FOR_ALL_SIGNALS(var,body) \ + { int var; var = SIGSEGV; { body } var = SIGBUS; { body } } diff -rNC3 smalltalk-2.1.1/sigsegv/src/signals-macos.h smalltalk-2.1.2/sigsegv/src/signals-macos.h *** smalltalk-2.1.1/sigsegv/src/signals-macos.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/signals-macos.h Thu May 8 10:07:09 2003 *************** *** 0 **** --- 1,21 ---- + /* List of signals. MacOSX version. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + /* List of signals that are sent when an invalid virtual memory address + is accessed, or when the stack overflows. */ + #define SIGSEGV_FOR_ALL_SIGNALS(var,body) \ + { int var; var = SIGSEGV; { body } var = SIGBUS; { body } } diff -rNC3 smalltalk-2.1.1/sigsegv/src/signals-segv-bus.h smalltalk-2.1.2/sigsegv/src/signals-segv-bus.h *** smalltalk-2.1.1/sigsegv/src/signals-segv-bus.h Sat Oct 12 11:25:18 2002 --- smalltalk-2.1.2/sigsegv/src/signals-segv-bus.h Thu Jan 1 01:00:00 1970 *************** *** 1,21 **** - /* List of signals. HP-UX version. - Copyright (C) 2002 Bruno Haible - - This program 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. - - This program 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 this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - /* List of signals that are sent when an invalid virtual memory address - is accessed, or when the stack overflows. */ - #define SIGSEGV_FOR_ALL_SIGNALS(var,body) \ - { int var; var = SIGSEGV; { body } var = SIGBUS; { body } } --- 0 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/signals-segv.h smalltalk-2.1.2/sigsegv/src/signals-segv.h *** smalltalk-2.1.1/sigsegv/src/signals-segv.h Sun Jul 28 19:05:48 2002 --- smalltalk-2.1.2/sigsegv/src/signals-segv.h Thu Jan 1 01:00:00 1970 *************** *** 1,21 **** - /* List of signals. Generic Unix version. - Copyright (C) 2002 Bruno Haible - - This program 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. - - This program 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 this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - /* List of signals that are sent when an invalid virtual memory address - is accessed, or when the stack overflows. */ - #define SIGSEGV_FOR_ALL_SIGNALS(var,body) \ - { int var; var = SIGSEGV; { body } } --- 0 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/signals.h smalltalk-2.1.2/sigsegv/src/signals.h *** smalltalk-2.1.1/sigsegv/src/signals.h Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/signals.h Thu Aug 29 20:26:38 2002 *************** *** 0 **** --- 1,21 ---- + /* List of signals. Generic Unix version. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + /* List of signals that are sent when an invalid virtual memory address + is accessed, or when the stack overflows. */ + #define SIGSEGV_FOR_ALL_SIGNALS(var,body) \ + { int var; var = SIGSEGV; { body } } diff -rNC3 smalltalk-2.1.1/sigsegv/src/sigsegv.h.msvc smalltalk-2.1.2/sigsegv/src/sigsegv.h.msvc *** smalltalk-2.1.1/sigsegv/src/sigsegv.h.msvc Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/sigsegv.h.msvc Thu Aug 29 20:26:40 2002 *************** *** 0 **** --- 1,167 ---- + /* Page fault handling library. + Copyright (C) 1998-1999, 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #ifndef _SIGSEGV_H + #define _SIGSEGV_H + + #include + + /* HAVE_SIGSEGV_RECOVERY + is defined if the system supports catching SIGSEGV. */ + #if 1 + # define HAVE_SIGSEGV_RECOVERY 1 + #endif + + /* HAVE_STACK_OVERFLOW_RECOVERY + is defined if stack overflow can be caught. */ + #if 1 + # define HAVE_STACK_OVERFLOW_RECOVERY 1 + #endif + + + #ifdef __cplusplus + extern "C" { + #endif + + /* -------------------------------------------------------------------------- */ + + /* + * The type of a global SIGSEGV handler. + * The fault address is passed as argument. + * The access type (read access or write access) is not passed; your handler + * has to know itself how to distinguish these two cases. + * The second argument is 0, meaning it could also be a stack overflow, or 1, + * meaning the handler should seriously try to fix the fault. + * The return value should be nonzero if the handler has done its job + * and no other handler should be called, or 0 if the handler declines + * responsibility for the given address. + */ + typedef int (*sigsegv_handler_t) (void* fault_address, int serious); + + /* + * Installs a global SIGSEGV handler. + * This should be called once only, and it ignores any previously installed + * SIGSEGV handler. + * Returns 0 on success, or -1 if the system doesn't support catching SIGSEGV. + */ + extern int sigsegv_install_handler (sigsegv_handler_t handler); + + /* + * Deinstalls the global SIGSEGV handler. + * This goes back to the state where no SIGSEGV handler is installed. + */ + extern void sigsegv_deinstall_handler (void); + + /* + * Prepares leaving a SIGSEGV handler (through longjmp or similar means). + */ + extern void sigsegv_leave_handler (void); + + /* + * The type of a context passed to a stack overflow handler. + * This type is system dependent; on some platforms it is an 'ucontext_t *', + * on some platforms it is a 'struct sigcontext *', on others merely an + * opaque 'void *'. + */ + typedef CONTEXT *stackoverflow_context_t; + + /* + * The type of a stack overflow handler. + * Such a handler should perform a longjmp call in order to reduce the amount + * of stack needed. It must not return. + * The emergency argument is 0 when the stack could be repared, or 1 if the + * application should better save its state and exit now. + */ + typedef void (*stackoverflow_handler_t) (int emergency, stackoverflow_context_t scp); + + /* + * Installs a stack overflow handler. + * The extra_stack argument is a pointer to a pre-allocated area used as a + * stack for executing the handler. It is typically allocated by use of + * `alloca' during `main'. Its size should be sufficiently large (typically + * 16 KB). + * Returns 0 on success, or -1 if the system doesn't support catching stack + * overflow. + */ + extern int stackoverflow_install_handler (stackoverflow_handler_t handler, + void* extra_stack, unsigned long extra_stack_size); + + /* + * Deinstalls the stack overflow handler. + */ + extern void stackoverflow_deinstall_handler (void); + + /* -------------------------------------------------------------------------- */ + + /* + * The following structure and functions permit to define different SIGSEGV + * policies on different address ranges. + */ + + /* + * The type of a local SIGSEGV handler. + * The fault address is passed as argument. + * The second argument is fixed arbitrary user data. + * The return value should be nonzero if the handler has done its job + * and no other handler should be called, or 0 if the handler declines + * responsibility for the given address. + */ + typedef int (*sigsegv_area_handler_t) (void* fault_address, void* user_arg); + + /* + * This structure represents a table of memory areas (address range intervals), + * with an local SIGSEGV handler for each. + */ + typedef + struct sigsegv_dispatcher { + void* tree; + } + sigsegv_dispatcher; + + /* + * Initializes a sigsegv_dispatcher structure. + */ + extern void sigsegv_init (sigsegv_dispatcher* dispatcher); + + /* + * Adds a local SIGSEGV handler to a sigsegv_dispatcher structure. + * It will cover the interval [address..address+len-1]. + * Returns a "ticket" that can be used to remove the handler later. + */ + extern void* sigsegv_register (sigsegv_dispatcher* dispatcher, + void* address, unsigned long len, + sigsegv_area_handler_t handler, void* handler_arg); + + /* + * Removes a local SIGSEGV handler. + */ + extern void sigsegv_unregister (sigsegv_dispatcher* dispatcher, void* ticket); + + /* + * Call the local SIGSEGV handler responsible for the given fault address. + * Return the handler's return value. 0 means that no handler has been found, + * or that a handler was found but declined responsibility. + */ + extern int sigsegv_dispatch (sigsegv_dispatcher* dispatcher, void* fault_address); + + /* -------------------------------------------------------------------------- */ + + #ifdef __cplusplus + } + #endif + + #endif /* _SIGSEGV_H */ diff -rNC3 smalltalk-2.1.1/sigsegv/src/stackvma-beos.c smalltalk-2.1.2/sigsegv/src/stackvma-beos.c *** smalltalk-2.1.1/sigsegv/src/stackvma-beos.c Sat Oct 12 11:47:49 2002 --- smalltalk-2.1.2/sigsegv/src/stackvma-beos.c Thu Aug 29 20:26:40 2002 *************** *** 15,21 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "stackvma.h" #include --- 15,20 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/stackvma-freebsd.c smalltalk-2.1.2/sigsegv/src/stackvma-freebsd.c *** smalltalk-2.1.1/sigsegv/src/stackvma-freebsd.c Sat Oct 12 11:47:52 2002 --- smalltalk-2.1.2/sigsegv/src/stackvma-freebsd.c Tue Apr 29 17:44:46 2003 *************** *** 1,5 **** /* Determine the virtual memory area of a given address. FreeBSD version. ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Determine the virtual memory area of a given address. FreeBSD version. ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 15,21 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "stackvma.h" #include --- 15,20 ---- *************** *** 52,58 **** } else { ! if (address >= curr_start && address <= curr_end-1) goto found; #if STACK_DIRECTION < 0 prev_end = curr_end; --- 51,58 ---- } else { ! if (curr_start < curr_end ! && address >= curr_start && address <= curr_end-1) goto found; #if STACK_DIRECTION < 0 prev_end = curr_end; diff -rNC3 smalltalk-2.1.1/sigsegv/src/stackvma-linux.c smalltalk-2.1.2/sigsegv/src/stackvma-linux.c *** smalltalk-2.1.1/sigsegv/src/stackvma-linux.c Sat Oct 12 11:47:54 2002 --- smalltalk-2.1.2/sigsegv/src/stackvma-linux.c Thu Aug 29 20:26:40 2002 *************** *** 15,21 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "stackvma.h" #include --- 15,20 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/stackvma-mach.c smalltalk-2.1.2/sigsegv/src/stackvma-mach.c *** smalltalk-2.1.1/sigsegv/src/stackvma-mach.c Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/sigsegv/src/stackvma-mach.c Thu Apr 3 22:32:56 2003 *************** *** 15,26 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "stackvma.h" #include - #ifdef HAVE_UNISTD_H ! #include #endif #include #include --- 15,24 ---- along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "stackvma.h" #include #ifdef HAVE_UNISTD_H ! # include #endif #include #include *************** *** 39,49 **** vm_size_t size; mach_port_t object_name; #ifdef VM_REGION_BASIC_INFO ! task_t task = mach_task_self(); struct vm_region_basic_info info; mach_msg_type_number_t info_count = VM_REGION_BASIC_INFO_COUNT; #else ! task_t task = task_self(); vm_prot_t protection, max_protection; vm_inherit_t inheritance; boolean_t shared; --- 37,47 ---- vm_size_t size; mach_port_t object_name; #ifdef VM_REGION_BASIC_INFO ! task_t task = mach_task_self (); struct vm_region_basic_info info; mach_msg_type_number_t info_count = VM_REGION_BASIC_INFO_COUNT; #else ! task_t task = task_self (); vm_prot_t protection, max_protection; vm_inherit_t inheritance; boolean_t shared; *************** *** 53,111 **** for (address = VM_MIN_ADDRESS; more; address += size) { #ifdef VM_REGION_BASIC_INFO ! more = vm_region(task, &address, &size, VM_REGION_BASIC_INFO, ! (vm_region_info_t)&info, &info_count, &object_name) == KERN_SUCCESS; #else ! more = vm_region(task, &address, &size, &protection, &max_protection, ! &inheritance, &shared, &object_name, &offset) == KERN_SUCCESS; #endif if (!more) ! { ! address = join_address + join_size; ! size = 0; ! } if ((unsigned long) address == join_address + join_size) ! join_size += size; else ! { ! prev_address = join_address; ! prev_size = join_size; ! join_address = (unsigned long) address; ! join_size = size; ! } #ifdef VM_REGION_BASIC_INFO if (object_name != MACH_PORT_NULL) ! mach_port_deallocate(mach_task_self(), object_name); info_count = VM_REGION_BASIC_INFO_COUNT; #endif #if STACK_DIRECTION < 0 ! if (join_address < req_address && join_address + join_size > req_address) ! { ! vma->start = join_address; ! vma->end = join_address + join_size; ! vma->prev_end = prev_address; ! return 0; ! } #else ! if (prev_address < req_address && prev_address + prev_size > req_address) ! { ! vma->start = prev_address; ! vma->end = prev_address + prev_size; ! vma->next_start = join_address; ! return 0; ! } #endif } #if STACK_DIRECTION > 0 ! if (join_address < req_address && join_address + size > req_address) { vma->start = prev_address; vma->end = prev_address + prev_size; ! vma->next_start = ~0; return 0; } #endif --- 51,111 ---- for (address = VM_MIN_ADDRESS; more; address += size) { #ifdef VM_REGION_BASIC_INFO ! more = (vm_region (task, &address, &size, VM_REGION_BASIC_INFO, ! (vm_region_info_t)&info, &info_count, &object_name) ! == KERN_SUCCESS); #else ! more = (vm_region (task, &address, &size, &protection, &max_protection, ! &inheritance, &shared, &object_name, &offset) ! == KERN_SUCCESS); #endif if (!more) ! { ! address = join_address + join_size; ! size = 0; ! } if ((unsigned long) address == join_address + join_size) ! join_size += size; else ! { ! prev_address = join_address; ! prev_size = join_size; ! join_address = (unsigned long) address; ! join_size = size; ! } #ifdef VM_REGION_BASIC_INFO if (object_name != MACH_PORT_NULL) ! mach_port_deallocate (mach_task_self (), object_name); info_count = VM_REGION_BASIC_INFO_COUNT; #endif #if STACK_DIRECTION < 0 ! if (join_address <= req_address && join_address + join_size > req_address) ! { ! vma->start = join_address; ! vma->end = join_address + join_size; ! vma->prev_end = prev_address + prev_size; ! return 0; ! } #else ! if (prev_address <= req_address && prev_address + prev_size > req_address) ! { ! vma->start = prev_address; ! vma->end = prev_address + prev_size; ! vma->next_start = join_address; ! return 0; ! } #endif } #if STACK_DIRECTION > 0 ! if (join_address <= req_address && join_address + size > req_address) { vma->start = prev_address; vma->end = prev_address + prev_size; ! vma->next_start = ~0UL; return 0; } #endif diff -rNC3 smalltalk-2.1.1/sigsegv/src/stackvma-none.c smalltalk-2.1.2/sigsegv/src/stackvma-none.c *** smalltalk-2.1.1/sigsegv/src/stackvma-none.c Sat Oct 12 11:47:56 2002 --- smalltalk-2.1.2/sigsegv/src/stackvma-none.c Thu Aug 29 20:26:40 2002 *************** *** 15,21 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "stackvma.h" int --- 15,20 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/stackvma-procfs.c smalltalk-2.1.2/sigsegv/src/stackvma-procfs.c *** smalltalk-2.1.1/sigsegv/src/stackvma-procfs.c Sat Oct 12 11:48:01 2002 --- smalltalk-2.1.2/sigsegv/src/stackvma-procfs.c Thu Aug 29 20:26:40 2002 *************** *** 15,21 **** along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #include "config.h" #include "stackvma.h" #include /* sprintf */ #include /* open, close */ --- 15,20 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/src/stackvma.c smalltalk-2.1.2/sigsegv/src/stackvma.c *** smalltalk-2.1.1/sigsegv/src/stackvma.c Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/src/stackvma.c Mon Oct 14 14:13:25 2002 *************** *** 0 **** --- 1,20 ---- + /* Determine the virtual memory area of a given address. + Copyright (C) 2002 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #include "config.h" + + #include CFG_STACKVMA diff -rNC3 smalltalk-2.1.1/sigsegv/tests/Makefile.am smalltalk-2.1.2/sigsegv/tests/Makefile.am *** smalltalk-2.1.1/sigsegv/tests/Makefile.am Sun Jul 28 21:35:38 2002 --- smalltalk-2.1.2/sigsegv/tests/Makefile.am Thu Apr 3 22:32:54 2003 *************** *** 1,5 **** ## Makefile for libsigsegv/tests. ! ## Copyright (C) 2002 Bruno Haible ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by --- 1,5 ---- ## Makefile for libsigsegv/tests. ! ## Copyright (C) 2002-2003 Bruno Haible ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by *************** *** 19,29 **** AUTOMAKE_OPTIONS = 1.5 gnits no-dependencies ! TESTS = sigsegv1 sigsegv2 stackoverflow1 EXTRA_DIST = mmaputil.h INCLUDES = -I../src DEFS = @DEFS@ LDADD = ../src/libsigsegv.la ! noinst_PROGRAMS = sigsegv1 sigsegv2 stackoverflow1 --- 19,29 ---- AUTOMAKE_OPTIONS = 1.5 gnits no-dependencies ! TESTS = sigsegv1 sigsegv2 stackoverflow1 stackoverflow2 EXTRA_DIST = mmaputil.h INCLUDES = -I../src DEFS = @DEFS@ LDADD = ../src/libsigsegv.la ! noinst_PROGRAMS = sigsegv1 sigsegv2 stackoverflow1 stackoverflow2 diff -rNC3 smalltalk-2.1.1/sigsegv/tests/Makefile.in smalltalk-2.1.2/sigsegv/tests/Makefile.in *** smalltalk-2.1.1/sigsegv/tests/Makefile.in Thu Apr 17 11:43:05 2003 --- smalltalk-2.1.2/sigsegv/tests/Makefile.in Fri May 9 11:58:40 2003 *************** *** 46,51 **** --- 46,56 ---- AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ + CFG_FAULT = @CFG_FAULT@ + CFG_HANDLER = @CFG_HANDLER@ + CFG_LEAVE = @CFG_LEAVE@ + CFG_SIGNALS = @CFG_SIGNALS@ + CFG_STACKVMA = @CFG_STACKVMA@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ *************** *** 82,87 **** --- 87,93 ---- PATH_SEPARATOR = @PATH_SEPARATOR@ PLATFORM = @PLATFORM@ RANLIB = @RANLIB@ + RELOCATABLE = @RELOCATABLE@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ *************** *** 123,141 **** AUTOMAKE_OPTIONS = 1.5 gnits no-dependencies ! TESTS = sigsegv1 sigsegv2 stackoverflow1 EXTRA_DIST = mmaputil.h INCLUDES = -I../src LDADD = ../src/libsigsegv.la ! noinst_PROGRAMS = sigsegv1 sigsegv2 stackoverflow1 subdir = tests mkinstalldirs = $(SHELL) $(top_srcdir)/../config/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = noinst_PROGRAMS = sigsegv1$(EXEEXT) sigsegv2$(EXEEXT) \ ! stackoverflow1$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) sigsegv1_SOURCES = sigsegv1.c --- 129,147 ---- AUTOMAKE_OPTIONS = 1.5 gnits no-dependencies ! TESTS = sigsegv1 sigsegv2 stackoverflow1 stackoverflow2 EXTRA_DIST = mmaputil.h INCLUDES = -I../src LDADD = ../src/libsigsegv.la ! noinst_PROGRAMS = sigsegv1 sigsegv2 stackoverflow1 stackoverflow2 subdir = tests mkinstalldirs = $(SHELL) $(top_srcdir)/../config/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = noinst_PROGRAMS = sigsegv1$(EXEEXT) sigsegv2$(EXEEXT) \ ! stackoverflow1$(EXEEXT) stackoverflow2$(EXEEXT) PROGRAMS = $(noinst_PROGRAMS) sigsegv1_SOURCES = sigsegv1.c *************** *** 153,158 **** --- 159,169 ---- stackoverflow1_LDADD = $(LDADD) stackoverflow1_DEPENDENCIES = ../src/libsigsegv.la stackoverflow1_LDFLAGS = + stackoverflow2_SOURCES = stackoverflow2.c + stackoverflow2_OBJECTS = stackoverflow2.$(OBJEXT) + stackoverflow2_LDADD = $(LDADD) + stackoverflow2_DEPENDENCIES = ../src/libsigsegv.la + stackoverflow2_LDFLAGS = DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = *************** *** 164,178 **** CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = sigsegv1.c sigsegv2.c stackoverflow1.c DIST_COMMON = Makefile.am Makefile.in ! SOURCES = sigsegv1.c sigsegv2.c stackoverflow1.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnits tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status --- 175,189 ---- CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ ! DIST_SOURCES = sigsegv1.c sigsegv2.c stackoverflow1.c stackoverflow2.c DIST_COMMON = Makefile.am Makefile.in ! SOURCES = sigsegv1.c sigsegv2.c stackoverflow1.c stackoverflow2.c all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj ! $(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) cd $(top_srcdir) && \ $(AUTOMAKE) --gnits tests/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status *************** *** 193,198 **** --- 204,212 ---- stackoverflow1$(EXEEXT): $(stackoverflow1_OBJECTS) $(stackoverflow1_DEPENDENCIES) @rm -f stackoverflow1$(EXEEXT) $(LINK) $(stackoverflow1_LDFLAGS) $(stackoverflow1_OBJECTS) $(stackoverflow1_LDADD) $(LIBS) + stackoverflow2$(EXEEXT): $(stackoverflow2_OBJECTS) $(stackoverflow2_DEPENDENCIES) + @rm -f stackoverflow2$(EXEEXT) + $(LINK) $(stackoverflow2_LDFLAGS) $(stackoverflow2_OBJECTS) $(stackoverflow2_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) core *.core diff -rNC3 smalltalk-2.1.1/sigsegv/tests/mmaputil.h smalltalk-2.1.2/sigsegv/tests/mmaputil.h *** smalltalk-2.1.1/sigsegv/tests/mmaputil.h Sat Oct 12 13:02:42 2002 --- smalltalk-2.1.2/sigsegv/tests/mmaputil.h Tue Apr 29 22:46:03 2003 *************** *** 1,5 **** /* Some auxiliary stuff for using mmap & friends. ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Some auxiliary stuff for using mmap & friends. ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 93,99 **** --- 93,105 ---- static void * mmap_zeromap (void *map_addr_hint, unsigned long map_len) { + #ifdef __hpux + /* HP-UX 10 mmap() often fails when given a hint. So give the OS complete + freedom about the address range. */ + return (void *) mmap ((void *) 0, map_len, PROT_READ_WRITE, map_flags, zero_fd, 0); + #else return (void *) mmap (map_addr_hint, map_len, PROT_READ_WRITE, map_flags, zero_fd, 0); + #endif } #endif diff -rNC3 smalltalk-2.1.1/sigsegv/tests/sigsegv1.c smalltalk-2.1.2/sigsegv/tests/sigsegv1.c *** smalltalk-2.1.1/sigsegv/tests/sigsegv1.c Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/sigsegv/tests/sigsegv1.c Sat May 3 09:35:45 2003 *************** *** 1,5 **** /* Test that the handler is called, with the right fault address. ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Test that the handler is called, with the right fault address. ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 31,37 **** handler (void *fault_address, int serious) { handler_called++; ! if (fault_address != (void *)(page + 0x678) || handler_called > 100) abort (); if (mprotect ((void *) page, 0x4000, PROT_READ_WRITE) == 0) return 1; --- 31,39 ---- handler (void *fault_address, int serious) { handler_called++; ! if (handler_called > 10) ! abort (); ! if (fault_address != (void *)(page + 0x678)) abort (); if (mprotect ((void *) page, 0x4000, PROT_READ_WRITE) == 0) return 1; *************** *** 81,87 **** /* Check that the handler was called only once. */ if (handler_called != 1) exit (1); - /* Test passed! */ return 0; } --- 83,88 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/tests/sigsegv2.c smalltalk-2.1.2/sigsegv/tests/sigsegv2.c *** smalltalk-2.1.1/sigsegv/tests/sigsegv2.c Mon Mar 31 18:21:00 2003 --- smalltalk-2.1.2/sigsegv/tests/sigsegv2.c Sat May 3 09:35:47 2003 *************** *** 1,5 **** /* Test the dispatcher. ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Test the dispatcher. ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 26,41 **** static sigsegv_dispatcher dispatcher; static unsigned int logcount = 0; ! static unsigned long logdata[20]; static int area_handler (void *fault_address, void *user_arg) { unsigned long area = *(unsigned long *)user_arg; - if (logcount > 10) - abort (); - logdata[logcount++] = area; if (!((unsigned long)fault_address >= area && (unsigned long)fault_address - area < 0x4000)) abort (); --- 26,40 ---- static sigsegv_dispatcher dispatcher; static unsigned int logcount = 0; ! static unsigned long logdata[10]; static int area_handler (void *fault_address, void *user_arg) { unsigned long area = *(unsigned long *)user_arg; logdata[logcount++] = area; + if (logcount >= sizeof (logdata) / sizeof (logdata[0])) + abort (); if (!((unsigned long)fault_address >= area && (unsigned long)fault_address - area < 0x4000)) abort (); *************** *** 118,124 **** exit (1); if (!(logdata[0] == area2 && logdata[1] == area3 && logdata[2] == area1)) exit (1); - return 0; } --- 117,122 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/tests/stackoverflow1.c smalltalk-2.1.2/sigsegv/tests/stackoverflow1.c *** smalltalk-2.1.1/sigsegv/tests/stackoverflow1.c Sun Mar 30 21:11:30 2003 --- smalltalk-2.1.2/sigsegv/tests/stackoverflow1.c Sat May 3 09:36:23 2003 *************** *** 1,5 **** /* Test the stack overflow handler. ! Copyright (C) 2002 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by --- 1,5 ---- /* Test the stack overflow handler. ! Copyright (C) 2002-2003 Bruno Haible This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by *************** *** 45,76 **** int pass = 0; - int - sigsegv_handler (void *address, int emergency) - { - if (!emergency) - return 0; - - pass++; - if (pass <= 2) - printf ("Stack overflow %d missed.\n", pass); - else - printf ("Segmentation violation correctly detected.\n", pass); - - sigprocmask (SIG_SETMASK, &mainsigset, NULL); - sigsegv_leave_handler (); - longjmp (mainloop, pass); - } - void stackoverflow_handler (int emergency, stackoverflow_context_t scp) { pass++; ! if (pass <= 2) ! printf ("Stack overflow %d caught.\n", pass); ! else ! printf ("Segmentation violation misdetected as stack overflow.\n", pass); ! sigprocmask (SIG_SETMASK, &mainsigset, NULL); sigsegv_leave_handler (); longjmp (mainloop, emergency ? -1 : pass); --- 45,55 ---- int pass = 0; void stackoverflow_handler (int emergency, stackoverflow_context_t scp) { pass++; ! printf ("stack overflow %d caught.\n", pass); sigprocmask (SIG_SETMASK, &mainsigset, NULL); sigsegv_leave_handler (); longjmp (mainloop, emergency ? -1 : pass); *************** *** 89,95 **** main () { char mystack[16384]; - char do_sigsegv; sigset_t emptyset; #if HAVE_SETRLIMIT && defined RLIMIT_STACK --- 68,73 ---- *************** *** 103,114 **** /* Install the stack overflow handler. */ if (stackoverflow_install_handler (&stackoverflow_handler, ! mystack, sizeof (mystack)) < 0) exit (2); - /* Install the stack overflow handler. */ - do_sigsegv = sigsegv_install_handler (&sigsegv_handler) >= 0; - /* Save the current signal mask. */ sigemptyset (&emptyset); sigprocmask (SIG_BLOCK, &emptyset, &mainsigset); --- 81,90 ---- /* Install the stack overflow handler. */ if (stackoverflow_install_handler (&stackoverflow_handler, ! mystack, sizeof (mystack)) ! < 0) exit (2); /* Save the current signal mask. */ sigemptyset (&emptyset); sigprocmask (SIG_BLOCK, &emptyset, &mainsigset); *************** *** 123,132 **** recurse (0); printf ("no endless recursion?!\n"); exit (1); case 2: - if (do_sigsegv) - *(char *)NULL = 1; - break; - case 3: break; default: abort (); --- 99,104 ---- diff -rNC3 smalltalk-2.1.1/sigsegv/tests/stackoverflow2.c smalltalk-2.1.2/sigsegv/tests/stackoverflow2.c *** smalltalk-2.1.1/sigsegv/tests/stackoverflow2.c Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/sigsegv/tests/stackoverflow2.c Sat May 3 09:36:42 2003 *************** *** 0 **** --- 1,175 ---- + /* Test that stack overflow and SIGSEGV are correctly distinguished. + Copyright (C) 2002-2003 Bruno Haible + + This program 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. + + This program 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 this program; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + + #include "sigsegv.h" + #include + + #if HAVE_STACK_OVERFLOW_RECOVERY && HAVE_SIGSEGV_RECOVERY + + #if defined _WIN32 && !defined __CYGWIN__ + /* Windows doesn't have sigset_t. */ + typedef int sigset_t; + # define sigemptyset(set) + # define sigprocmask(how,set,oldset) + #else + /* Unix */ + # include "config.h" + #endif + + #include "mmaputil.h" + #include /* needed for NULL on SunOS4 */ + #include /* for abort, exit */ + #include + #include + #if HAVE_SETRLIMIT + # include + # include + # include + #endif + + jmp_buf mainloop; + sigset_t mainsigset; + + int pass = 0; + unsigned long page; + + void + stackoverflow_handler (int emergency, stackoverflow_context_t scp) + { + pass++; + if (pass <= 2) + printf ("stack overflow %d caught.\n", pass); + else + { + printf ("Segmentation violation misdetected as stack overflow.\n"); + exit (1); + } + sigprocmask (SIG_SETMASK, &mainsigset, NULL); + sigsegv_leave_handler (); + longjmp (mainloop, emergency ? -1 : pass); + } + + int + sigsegv_handler (void *address, int emergency) + { + /* This test is necessary to distinguish stack overflow and SIGSEGV. */ + if (!emergency) + return 0; + + pass++; + if (pass <= 2) + { + printf ("stack overflow %d missed.\n", pass); + exit (1); + } + else + printf ("Segmentation violation correctly detected.\n"); + sigprocmask (SIG_SETMASK, &mainsigset, NULL); + sigsegv_leave_handler (); + longjmp (mainloop, pass); + } + + int + recurse (int n) + { + if (n >= 0) + return n + recurse (n + 1); + else + return 0; + } + + int + main () + { + char mystack[16384]; + sigset_t emptyset; + void *p; + + #if HAVE_SETRLIMIT && defined RLIMIT_STACK + /* Before starting the endless recursion, try to be friendly to the user's + machine. On some Linux 2.2.x systems, there is no stack limit for user + processes at all. We don't want to kill such systems. */ + struct rlimit rl; + rl.rlim_cur = rl.rlim_max = 0x100000; /* 1 MB */ + setrlimit (RLIMIT_STACK, &rl); + #endif + + /* Install the stack overflow handler. */ + if (stackoverflow_install_handler (&stackoverflow_handler, + mystack, sizeof (mystack)) + < 0) + exit (2); + + /* Preparations. */ + #if !HAVE_MMAP_ANON && !HAVE_MMAP_ANONYMOUS && HAVE_MMAP_DEVZERO + zero_fd = open ("/dev/zero", O_RDONLY, 0644); + #endif + + /* Setup some mmaped memory. */ + p = mmap_zeromap ((void *) 0x12340000, 0x4000); + if (p == (void *)(-1)) + { + fprintf (stderr, "mmap_zeromap failed.\n"); + exit (2); + } + page = (unsigned long) p; + + /* Make it read-only. */ + if (mprotect ((void *) page, 0x4000, PROT_READ) < 0) + { + fprintf (stderr, "mprotect failed.\n"); + exit (2); + } + + /* Install the SIGSEGV handler. */ + if (sigsegv_install_handler (&sigsegv_handler) < 0) + exit (2); + + /* Save the current signal mask. */ + sigemptyset (&emptyset); + sigprocmask (SIG_BLOCK, &emptyset, &mainsigset); + + /* Provoke two stack overflows in a row. */ + switch (setjmp (mainloop)) + { + case -1: + printf ("emergency exit\n"); exit (1); + case 0: case 1: + printf ("Starting recursion pass %d... ", pass + 1); + recurse (0); + printf ("no endless recursion?!\n"); exit (1); + case 2: + *(int *) (page + 0x678) = 42; + break; + case 3: + break; + default: + abort (); + } + + exit (0); + } + + #else + + int + main () + { + return 77; + } + + #endif diff -rNC3 smalltalk-2.1.1/snprintfv/snprintfv/compat.in smalltalk-2.1.2/snprintfv/snprintfv/compat.in *** smalltalk-2.1.1/snprintfv/snprintfv/compat.in Tue Apr 8 18:21:04 2003 --- smalltalk-2.1.2/snprintfv/snprintfv/compat.in Tue Apr 29 16:18:33 2003 *************** *** 119,125 **** # define SNV_SCOPE extern __declspec(dllimport) # endif # endif ! #endif #ifndef SNV_SCOPE # define SNV_SCOPE extern #endif --- 119,125 ---- # define SNV_SCOPE extern __declspec(dllimport) # endif # endif ! #endif #ifndef SNV_SCOPE # define SNV_SCOPE extern #endif diff -rNC3 smalltalk-2.1.1/tcp/ChangeLog smalltalk-2.1.2/tcp/ChangeLog *** smalltalk-2.1.1/tcp/ChangeLog Thu Apr 17 14:44:33 2003 --- smalltalk-2.1.2/tcp/ChangeLog Fri May 9 09:26:27 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,14 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! * tcp/Sockets.st: define AbstractSocket>>#isExternalStream. ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/tcp/Makefile.in smalltalk-2.1.2/tcp/Makefile.in *** smalltalk-2.1.1/tcp/Makefile.in Thu Apr 17 11:43:39 2003 --- smalltalk-2.1.2/tcp/Makefile.in Fri May 9 11:59:11 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ diff -rNC3 smalltalk-2.1.1/tcp/Sockets.st smalltalk-2.1.2/tcp/Sockets.st *** smalltalk-2.1.1/tcp/Sockets.st Sat Mar 15 13:13:00 2003 --- smalltalk-2.1.2/tcp/Sockets.st Thu May 8 10:12:26 2003 *************** *** 273,278 **** --- 273,285 ---- ^self implementation nextPut: char ! ! + !AbstractSocket methodsFor: 'testing'! + + isExternalStream + "Answer whether the receiver streams on a file or socket." + ^true + ! ! + !DatagramSocket class methodsFor: 'accessing'! defaultImplementationClass diff -rNC3 smalltalk-2.1.1/tcp/tcp.c smalltalk-2.1.2/tcp/tcp.c *** smalltalk-2.1.1/tcp/tcp.c Tue Mar 4 20:36:49 2003 --- smalltalk-2.1.2/tcp/tcp.c Tue Apr 29 16:18:42 2003 *************** *** 87,93 **** if (!(oldflags & O_NONBLOCK)) fcntl (fd, F_SETFL, oldflags | O_NONBLOCK); ! #endif connect (fd, sockaddr, len); if (is_socket_error (EINPROGRESS)) --- 87,93 ---- if (!(oldflags & O_NONBLOCK)) fcntl (fd, F_SETFL, oldflags | O_NONBLOCK); ! #endif connect (fd, sockaddr, len); if (is_socket_error (EINPROGRESS)) *************** *** 198,215 **** constantFunction (ipprotoUdp, IPPROTO_UDP); constantFunction (ipprotoTcp, IPPROTO_TCP); constantFunction (ipprotoIp, IPPROTO_IP); ! ! #ifdef IP_MULTICAST_TTL constantFunction (ipMulticastTtl, IP_MULTICAST_TTL); constantFunction (ipMulticastIf, IP_MULTICAST_IF); constantFunction (ipAddMembership, IP_ADD_MEMBERSHIP); constantFunction (ipDropMembership, IP_DROP_MEMBERSHIP); ! #else constantFunction (ipMulticastTtl, -1); constantFunction (ipMulticastIf, -1); constantFunction (ipAddMembership, -1); constantFunction (ipDropMembership, -1); ! #endif void gst_initModule (VMProxy * proxy) --- 198,215 ---- constantFunction (ipprotoUdp, IPPROTO_UDP); constantFunction (ipprotoTcp, IPPROTO_TCP); constantFunction (ipprotoIp, IPPROTO_IP); ! ! #ifdef IP_MULTICAST_TTL constantFunction (ipMulticastTtl, IP_MULTICAST_TTL); constantFunction (ipMulticastIf, IP_MULTICAST_IF); constantFunction (ipAddMembership, IP_ADD_MEMBERSHIP); constantFunction (ipDropMembership, IP_DROP_MEMBERSHIP); ! #else constantFunction (ipMulticastTtl, -1); constantFunction (ipMulticastIf, -1); constantFunction (ipAddMembership, -1); constantFunction (ipDropMembership, -1); ! #endif void gst_initModule (VMProxy * proxy) diff -rNC3 smalltalk-2.1.1/tests/Makefile.am smalltalk-2.1.2/tests/Makefile.am *** smalltalk-2.1.1/tests/Makefile.am Thu Jan 16 13:38:24 2003 --- smalltalk-2.1.2/tests/Makefile.am Fri May 9 13:10:50 2003 *************** *** 4,10 **** sets.st processes.st exceptions.st \ intmath.st floatmath.st dates.st \ objects.st strings.st chars.st objdump.st \ ! delays.st geometry.st cobjects.st compiler.st ansi_tests = \ ArrayANSITest \ --- 4,11 ---- sets.st processes.st exceptions.st \ intmath.st floatmath.st dates.st \ objects.st strings.st chars.st objdump.st \ ! delays.st geometry.st cobjects.st compiler.st \ ! fileext.st mutate.st ansi_tests = \ ArrayANSITest \ *************** *** 89,96 **** objects.st classes.ok delays.st \ geometry.st processes.ok cobjects.ok \ compiler.ok compiler.st objdump.ok \ ! objdump.st AnsiRun.st AnsiLoad.st \ ! AnsiDB.st Ansi.st AnsiInit.st CLEANFILES = *.log *.diff gst.im --- 90,99 ---- objects.st classes.ok delays.st \ geometry.st processes.ok cobjects.ok \ compiler.ok compiler.st objdump.ok \ ! objdump.st fileext.st fileext.ok \ ! mutate.st mutate.ok AnsiDB.st \ ! Ansi.st AnsiInit.st AnsiRun.st \ ! AnsiLoad.st CLEANFILES = *.log *.diff gst.im diff -rNC3 smalltalk-2.1.1/tests/Makefile.in smalltalk-2.1.2/tests/Makefile.in *** smalltalk-2.1.1/tests/Makefile.in Thu Apr 17 11:44:22 2003 --- smalltalk-2.1.2/tests/Makefile.in Fri May 9 13:10:58 2003 *************** *** 74,79 **** --- 74,81 ---- GTK_LIBS = @GTK_LIBS@ HAVE_GTK_FALSE = @HAVE_GTK_FALSE@ HAVE_GTK_TRUE = @HAVE_GTK_TRUE@ + HAVE_SIGSEGV_FALSE = @HAVE_SIGSEGV_FALSE@ + HAVE_SIGSEGV_TRUE = @HAVE_SIGSEGV_TRUE@ I18N_DISABLED = @I18N_DISABLED@ ICON = @ICON@ INCLTDL = @INCLTDL@ *************** *** 176,182 **** sets.st processes.st exceptions.st \ intmath.st floatmath.st dates.st \ objects.st strings.st chars.st objdump.st \ ! delays.st geometry.st cobjects.st compiler.st ansi_tests = \ --- 178,185 ---- sets.st processes.st exceptions.st \ intmath.st floatmath.st dates.st \ objects.st strings.st chars.st objdump.st \ ! delays.st geometry.st cobjects.st compiler.st \ ! fileext.st mutate.st ansi_tests = \ *************** *** 263,270 **** objects.st classes.ok delays.st \ geometry.st processes.ok cobjects.ok \ compiler.ok compiler.st objdump.ok \ ! objdump.st AnsiRun.st AnsiLoad.st \ ! AnsiDB.st Ansi.st AnsiInit.st CLEANFILES = *.log *.diff gst.im --- 266,275 ---- objects.st classes.ok delays.st \ geometry.st processes.ok cobjects.ok \ compiler.ok compiler.st objdump.ok \ ! objdump.st fileext.st fileext.ok \ ! mutate.st mutate.ok AnsiDB.st \ ! Ansi.st AnsiInit.st AnsiRun.st \ ! AnsiLoad.st CLEANFILES = *.log *.diff gst.im diff -rNC3 smalltalk-2.1.1/tests/cobjects.st smalltalk-2.1.2/tests/cobjects.st *** smalltalk-2.1.1/tests/cobjects.st Wed Aug 7 13:36:44 2002 --- smalltalk-2.1.2/tests/cobjects.st Tue Apr 29 16:17:04 2003 *************** *** 1,78 **** ! "====================================================================== ! | ! | Test CObject operations ! | ! | ! ======================================================================" ! ! ! "====================================================================== ! | ! | Copyright (C) 2002 Free Software Foundation. ! | Written by Paolo Bonzini ! | ! | This file is part of GNU Smalltalk. ! | ! | GNU Smalltalk 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. ! | ! | GNU Smalltalk 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 ! | GNU Smalltalk; see the file COPYING. If not, write to the Free Software ! | Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! | ! ======================================================================" ! ! | ca buf | ! ca := (CStringType arrayType: 1) new. ! buf := (CCharType arrayType: 10) new. ! buf at: 0 put: $a. ! buf at: 1 put: $s. ! buf at: 2 put: $d. ! buf at: 3 put: 0 asCharacter. ! ca at: 0 put: buf. ! ^ca at: 0! ! ! | ca | ! ca := (CStringType arrayType: 1) new. ! ca at: 0 put: (CString value: 'asd'). ! ^ca at: 0! ! ! Smalltalk at: #CA put: nil! ! ! CA := (CStringType arrayType: 2) new. ! CA at: 0 put: (CString value: 'asd'). ! CA at: 1 put: (CString value: 'dsa')! ! ! ^CA at: 0! ! ^CA at: 1! ! ^(CA addressAt: 0) class! ! ^(CA addressAt: 0) value! ! ^(CA addressAt: 1) value! ! ^(CA + 1) class! ! ^(CA + 1) at: -1! ! ^(CA + 1) at: 0! ! ^(CA + 1) - CA! ! ! Smalltalk at: #CP put: nil! ! ! CP := CStringType ptrType new. ! CP value: CA. ! ! ^CP value at: 0! ! ^CP value at: 1! ! ^(CP value addressAt: 0) class! ! ^(CP value addressAt: 0) value! ! ^(CP value addressAt: 1) value! ! ^(CP value + 1) class! ! ^(CP value + 1) at: -1! ! ^(CP value + 1) at: 0! ! ^(CP value + 1) - CA! ! ! " ### need a lot more!" ! --- 1,78 ---- ! "====================================================================== ! | ! | Test CObject operations ! | ! | ! ======================================================================" ! ! ! "====================================================================== ! | ! | Copyright (C) 2002 Free Software Foundation. ! | Written by Paolo Bonzini ! | ! | This file is part of GNU Smalltalk. ! | ! | GNU Smalltalk 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. ! | ! | GNU Smalltalk 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 ! | GNU Smalltalk; see the file COPYING. If not, write to the Free Software ! | Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! | ! ======================================================================" ! ! | ca buf | ! ca := (CStringType arrayType: 1) new. ! buf := (CCharType arrayType: 10) new. ! buf at: 0 put: $a. ! buf at: 1 put: $s. ! buf at: 2 put: $d. ! buf at: 3 put: 0 asCharacter. ! ca at: 0 put: buf. ! ^ca at: 0! ! ! | ca | ! ca := (CStringType arrayType: 1) new. ! ca at: 0 put: (CString value: 'asd'). ! ^ca at: 0! ! ! Smalltalk at: #CA put: nil! ! ! CA := (CStringType arrayType: 2) new. ! CA at: 0 put: (CString value: 'asd'). ! CA at: 1 put: (CString value: 'dsa')! ! ! ^CA at: 0! ! ^CA at: 1! ! ^(CA addressAt: 0) class! ! ^(CA addressAt: 0) value! ! ^(CA addressAt: 1) value! ! ^(CA + 1) class! ! ^(CA + 1) at: -1! ! ^(CA + 1) at: 0! ! ^(CA + 1) - CA! ! ! Smalltalk at: #CP put: nil! ! ! CP := CStringType ptrType new. ! CP value: CA. ! ! ^CP value at: 0! ! ^CP value at: 1! ! ^(CP value addressAt: 0) class! ! ^(CP value addressAt: 0) value! ! ^(CP value addressAt: 1) value! ! ^(CP value + 1) class! ! ^(CP value + 1) at: -1! ! ^(CP value + 1) at: 0! ! ^(CP value + 1) - CA! ! ! " ### need a lot more!" ! diff -rNC3 smalltalk-2.1.1/tests/fileext.ok smalltalk-2.1.2/tests/fileext.ok *** smalltalk-2.1.1/tests/fileext.ok Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/tests/fileext.ok Sun Apr 27 00:32:35 2003 *************** *** 0 **** --- 1,50 ---- + + Execution begins... + returned value is Object + + Execution begins... + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + true + returned value is Object new "<0>" diff -rNC3 smalltalk-2.1.1/tests/fileext.st smalltalk-2.1.2/tests/fileext.st *** smalltalk-2.1.1/tests/fileext.st Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/tests/fileext.st Fri May 9 11:56:21 2003 *************** *** 0 **** --- 1,75 ---- + "====================================================================== + | + | Regression tests for File + | + | + ======================================================================" + + + "====================================================================== + | + | Copyright (C) 2003 Free Software Foundation. + | Written by Paolo Bonzini, based on test vectors by Nicolas Pelletier. + | This file is part of GNU Smalltalk. + | + | GNU Smalltalk 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. + | + | GNU Smalltalk 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 + | GNU Smalltalk; see the file COPYING. If not, write to the Free Software + | Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + | + ======================================================================" + + !Object methodsFor: 'testing' ! + + testCaseData + | extensions | + extensions := OrderedCollection new. + extensions + add: '' -> ''; + add: '.' -> ''; + add: '/' -> ''; + add: 'text' -> ''; + add: 'text.' -> '.'; + add: '.text' -> ''; + add: 'text/' -> ''; + add: '/text' -> ''; + add: '/.' -> ''; + add: './' -> ''; + add: 'file.ext' -> '.ext'; + add: 'file.ext.' -> '.'; + add: '.file.ext' -> '.ext'; + add: 'file.ext/' -> ''; + add: '/file.ext' -> '.ext'; + add: '/.file.ext' -> '.ext'; + add: './file.ext' -> '.ext'; + add: 'dir/file' -> ''; + add: 'dir/file.' -> '.'; + add: 'dir/.file' -> ''; + add: 'dir/file.ext' -> '.ext'; + add: 'dir/file.ext.' -> '.'. + + ^extensions! + + testExtensionFor + + self testCaseData do: [:each | + [(File extensionFor: each key) = each value] value printNl ]! + + testStripExtensionFrom + + "(File stripExtensionFrom: aString), + (File extensionFor: aString) = aString" + + self testCaseData do: [:each | + [(File stripExtensionFrom: each key), + (File extensionFor: each key) = each key] value printNl ]! ! + + Object new testExtensionFor; testStripExtensionFrom! diff -rNC3 smalltalk-2.1.1/tests/mutate.ok smalltalk-2.1.2/tests/mutate.ok *** smalltalk-2.1.1/tests/mutate.ok Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/tests/mutate.ok Tue Apr 29 17:27:24 2003 *************** *** 0 **** --- 1,32 ---- + + Execution begins... + returned value is A + + Execution begins... + returned value is B + + Execution begins... + returned value is A class + + Execution begins... + returned value is A class + + Execution begins... + returned value is A + + Execution begins... + returned value is A + + Execution begins... + returned value is B + + Execution begins... + A(var1:1 ) + B(var1:0 var2:2 ) + nil + B(var1:0 var2:nil var2:2 ) + 2 + B(var1:0 var2:2 ) + nil + B(var1:0 var2:nil ) + returned value is B new "<0>" diff -rNC3 smalltalk-2.1.1/tests/mutate.st smalltalk-2.1.2/tests/mutate.st *** smalltalk-2.1.1/tests/mutate.st Thu Jan 1 01:00:00 1970 --- smalltalk-2.1.2/tests/mutate.st Tue Apr 29 16:08:46 2003 *************** *** 0 **** --- 1,103 ---- + "====================================================================== + | + | Regression tests for class mutation + | + | + ======================================================================" + + + "====================================================================== + | + | Copyright (C) 2003 Free Software Foundation. + | Written by Paolo Bonzini. + | + | This file is part of GNU Smalltalk. + | + | GNU Smalltalk 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. + | + | GNU Smalltalk 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 + | GNU Smalltalk; see the file COPYING. If not, write to the Free Software + | Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + | + ======================================================================" + + Object subclass: #A + instanceVariableNames: 'var1' + classVariableNames: '' + poolDictionaries: '' + category: ''! + + A subclass: #B + instanceVariableNames: 'var2' + classVariableNames: '' + poolDictionaries: '' + category: ''! + + A class instanceVariableNames: 'instance'! + + !A class methodsFor: 'testing'! + + instance + instance isNil ifTrue: [ instance := self new ]. + ^instance! ! + + !A methodsFor: 'testing'! + + printOn: aStream + aStream + nextPutAll: self class name; + nextPut: $(. + + self class allInstVarNames keysAndValuesDo: [ :i :each | + aStream + nextPutAll: each; + nextPut: $: ; + print: (self instVarAt: i); + space + ]. + + aStream nextPut: $)! ! + + !A methodsFor: 'testing'! + + var1 + ^var1! + + var1: a + var1 := a! ! + + !B methodsFor: 'testing'! + + var2 + ^var2! + + var2: a + var2 := a! ! + + A instance var1: 1. + A instance printNl. + + B instance var1: 0. + B instance var2: 2. + B instance printNl. + + A addInstVarName: #var2. + B instance var2 printNl. + B instance printNl. + + A removeInstVarName: #var2. + B instance var2 printNl. + B instance printNl. + + "Now make B's var2 point to A's" + A addInstVarName: #var2. + B removeInstVarName: #var2. + B instance var2 printNl. + B instance printNl! diff -rNC3 smalltalk-2.1.1/tests/objdump.st smalltalk-2.1.2/tests/objdump.st *** smalltalk-2.1.1/tests/objdump.st Wed Aug 14 10:53:06 2002 --- smalltalk-2.1.2/tests/objdump.st Tue Apr 29 16:17:05 2003 *************** *** 1,71 **** ! "====================================================================== ! | ! | Test ObjectDumper operations ! | ! | ! ======================================================================" ! ! ! "====================================================================== ! | ! | Copyright (C) 2002 Free Software Foundation. ! | Written by Paolo Bonzini and Markus Fritsche ! | ! | This file is part of GNU Smalltalk. ! | ! | GNU Smalltalk 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. ! | ! | GNU Smalltalk 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 ! | GNU Smalltalk; see the file COPYING. If not, write to the Free Software ! | Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! | ! ======================================================================" ! ! | stream | ! stream := ByteStream on: (ByteArray new: 1024). ! (ObjectDumper on: stream) dump: Array. ! stream reset. ! ^(ObjectDumper on: stream) load == Array! ! ! | stream | ! stream := ByteStream on: (ByteArray new: 1024). ! (ObjectDumper on: stream) dump: #('asdf' 1 2 $a). ! stream reset. ! ^(ObjectDumper on: stream) load = #('asdf' 1 2 $a)! ! ! | method stream | ! stream := ByteStream on: (ByteArray new: 1024). ! method := Object >> #yourself. ! (ObjectDumper on: stream) dump: method. ! stream reset. ! ^(ObjectDumper on: stream) load == method! ! ! | array secondArray stream | ! stream := ByteStream on: (ByteArray new: 1024). ! array := Array new: 1. ! array at: 1 put: array. ! (ObjectDumper on: stream) dump: array. ! stream reset. ! secondArray := (ObjectDumper on: stream) load. ! ^secondArray == (secondArray at: 1)! ! ! | stream | ! stream := ByteStream on: (ByteArray new: 1024). ! (ObjectDumper on: stream) dump: Processor. ! stream reset. ! ^(ObjectDumper on: stream) load == Processor! ! ! | stream | ! stream := ByteStream on: (ByteArray new: 1024). ! (ObjectDumper on: stream) dump: 'asdf'. ! stream reset. ! ^(ObjectDumper on: stream) load = 'asdf'! ! ! --- 1,71 ---- ! "====================================================================== ! | ! | Test ObjectDumper operations ! | ! | ! ======================================================================" ! ! ! "====================================================================== ! | ! | Copyright (C) 2002 Free Software Foundation. ! | Written by Paolo Bonzini and Markus Fritsche ! | ! | This file is part of GNU Smalltalk. ! | ! | GNU Smalltalk 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. ! | ! | GNU Smalltalk 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 ! | GNU Smalltalk; see the file COPYING. If not, write to the Free Software ! | Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ! | ! ======================================================================" ! ! | stream | ! stream := ByteStream on: (ByteArray new: 1024). ! (ObjectDumper on: stream) dump: Array. ! stream reset. ! ^(ObjectDumper on: stream) load == Array! ! ! | stream | ! stream := ByteStream on: (ByteArray new: 1024). ! (ObjectDumper on: stream) dump: #('asdf' 1 2 $a). ! stream reset. ! ^(ObjectDumper on: stream) load = #('asdf' 1 2 $a)! ! ! | method stream | ! stream := ByteStream on: (ByteArray new: 1024). ! method := Object >> #yourself. ! (ObjectDumper on: stream) dump: method. ! stream reset. ! ^(ObjectDumper on: stream) load == method! ! ! | array secondArray stream | ! stream := ByteStream on: (ByteArray new: 1024). ! array := Array new: 1. ! array at: 1 put: array. ! (ObjectDumper on: stream) dump: array. ! stream reset. ! secondArray := (ObjectDumper on: stream) load. ! ^secondArray == (secondArray at: 1)! ! ! | stream | ! stream := ByteStream on: (ByteArray new: 1024). ! (ObjectDumper on: stream) dump: Processor. ! stream reset. ! ^(ObjectDumper on: stream) load == Processor! ! ! | stream | ! stream := ByteStream on: (ByteArray new: 1024). ! (ObjectDumper on: stream) dump: 'asdf'. ! stream reset. ! ^(ObjectDumper on: stream) load = 'asdf'! ! ! diff -rNC3 smalltalk-2.1.1/xml/ChangeLog smalltalk-2.1.2/xml/ChangeLog *** smalltalk-2.1.1/xml/ChangeLog Thu Apr 17 14:44:42 2003 --- smalltalk-2.1.2/xml/ChangeLog Fri May 9 09:27:02 2003 *************** *** 1,8 **** ! 2002-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2002-04-12 Paolo Bonzini *** Version 2.1 (stable) released. --- 1,15 ---- ! 2003-05-09 Paolo Bonzini ! ! *** Version 2.1.2 released. ! ! * xml/XML.st: removed VW vestiges ! * xml/XSL.st: removed VW vestiges ! ! 2003-04-17 Paolo Bonzini *** Version 2.1.1 (stable) released. ! 2003-04-12 Paolo Bonzini *** Version 2.1 (stable) released. diff -rNC3 smalltalk-2.1.1/xml/XML.st smalltalk-2.1.2/xml/XML.st *** smalltalk-2.1.1/xml/XML.st Wed Sep 18 16:39:14 2002 --- smalltalk-2.1.2/xml/XML.st Thu May 8 10:15:02 2003 *************** *** 3473,3491 **** sax setDocumentLocator: (Locator new parser: self)! wrapDataSource: aDataSource ! | resource | resource := (aDataSource isKindOf: Stream) ifTrue: ! [[aDataSource lineEndTransparent] on: Error do: [:ex | ]. ! aDataSource isExternalStream ! ifTrue: [InputSource ! uri: (NetClients.URL fromString: aDataSource) ! encoding: nil ! stream: aDataSource] ! ifFalse: [InputSource ! uri: nil ! encoding: nil ! stream: aDataSource]] ifFalse: [InputSource for: aDataSource]. ^(StreamWrapper --- 3473,3485 ---- sax setDocumentLocator: (Locator new parser: self)! wrapDataSource: aDataSource ! | resource uri | resource := (aDataSource isKindOf: Stream) ifTrue: ! [uri := [NetClients.URL fromString: aDataSource name ] ! on: Error do: [ :ex | ex return: nil ]. ! ! InputSource uri: uri encoding: nil stream: aDataSource] ifFalse: [InputSource for: aDataSource]. ^(StreamWrapper *************** *** 5522,5529 **** processDocumentInFilename: aFilename beforeScanDo: aBlock | stream p | ! stream := (aFilename asFilename withEncoding: #UTF_8) readStream. ! stream lineEndTransparent. p := self on: stream. aBlock value: p. ^p scanDocument! --- 5516,5522 ---- processDocumentInFilename: aFilename beforeScanDo: aBlock | stream p | ! stream := FileStream open: aFilename mode: FileStream read. p := self on: stream. aBlock value: p. ^p scanDocument! diff -rNC3 smalltalk-2.1.1/xml/XSL.st smalltalk-2.1.2/xml/XSL.st *** smalltalk-2.1.1/xml/XSL.st Wed Sep 18 16:40:46 2002 --- smalltalk-2.1.2/xml/XSL.st Thu May 8 10:09:11 2003 *************** *** 1114,1121 **** ^Directory append: 'xml' to: Directory image! store: document on: filename ! (filename asFilename ! withEncoding: #UTF_8) writeStream print: document; close! --- 1114,1120 ---- ^Directory append: 'xml' to: Directory image! store: document on: filename ! (FileStream open: filename mode: FileStream write) print: document; close!