Commit Graph

72 Commits

Author SHA1 Message Date
James E Wilson
75389255ac Fix FreeBSD fopen instrumentation.
* mf-hooks2.c (MF_REGISTER_fopen): Define to __MF_TYPE_STATIC when
__FreeBSD__ is defined.

From-SVN: r103368
2005-08-22 17:12:18 -07:00
James E Wilson
2483ad581a Fix FreeBSD failure with recursive malloc call.
* mf-hooks1.c (malloc, calloc, realloc, free,
__mf_wrap_alloca_indirect): Call BEGIN_MALLOC_PROTECT before calling
the real routines, and END_MALLOC_PROTECT afterwards.
* mf-impl.h (enum __mf_state_enum): Expand comment.  Add in_malloc.
(BEGIN_PROTECT): Handle in_malloc state.
(BEGIN_MALLOC_PROTECT, END_MALLOC_PROTECT): New.
* testsuite/libmudflap.c/hook2-allocstuff.c: New.

From-SVN: r103256
2005-08-18 13:01:54 -07:00
Kelley Cook
f9d09c4359 All files: Update FSF address.
2005-08-17  Kelley Cook  <kcook@gcc.gnu.org>

	* All files: Update FSF address.

From-SVN: r103197
2005-08-17 03:21:42 +00:00
Ulrich Weigand
be53afcf39 mf-hooks3.c (main_seen_p): Remove.
* mf-hooks3.c (main_seen_p): Remove.
	(__mf_get_state): Remove attempt to recognize the main thread.

From-SVN: r103119
2005-08-15 20:26:46 +00:00
Maciej W. Rozycki
7741b4512d configure.ac: Test for the name of the symbol used for the entry point...
* configure.ac: Test for the name of the symbol used for the entry
point; define ENTRY_POINT to the result.
* configure: Regenerate.
* config.h.in: Regenerate.
* mf-heuristics.c: Replace _start with ENTRY_POINT throughout.

From-SVN: r103113
2005-08-15 16:15:16 +00:00
Ulrich Weigand
22f99b8212 mf-runtime.c (__mf_state_1): Initialize to reentrant.
* mf-runtime.c (__mf_state_1): Initialize to reentrant.
	(__mf_init): Set thread state active.
	* mf-hooks3.c (__mf_pthread_spawner): Always set thread
	state active.
	(pthread_create wrapper): Always use thread spawner.

	* testsuite/libmudflap.cth/pass37-frag.c: Increase timeout.
	* testsuite/libmudflap.cth/pass39-frag.c: Likewise.

From-SVN: r103084
2005-08-14 19:38:34 +00:00
Richard Henderson
7544a87f13 gcc.c (MFWRAP_SPEC): Don't wrap pthread_join or pthread_exit.
* gcc.c (MFWRAP_SPEC): Don't wrap pthread_join or pthread_exit.

        * acinclude.m4: New file.
        * configure.ac: Invoke LIBMUDFLAP_CHECK_TLS.
        * configure, config.h.in, Makefile.in, testsuite/Makefile.in: Rebuild.
        * mf-hooks1.c (__mf_0fn_malloc): Move body from ...
        (__mf_0fn_calloc): ... here.
        * mf-hooks3.c (struct pthread_info): Remove.
        (__mf_pthread_info, __mf_pthread_info_idx): Remove.
        (LIBMUDFLAPTH_THREADS_MAX): Set to 1021.
        (struct mf_thread_data): New.
        (mf_thread_data, mf_thread_data_lock): New.
        (__mf_allocate_blank_threadinfo): Remove.
        (__mf_find_threadinfo): Rewrite and simplify.  Only use if TLS is
        not available.
        (__mf_state_perthread): Remove.
        (__mf_get_state, __mf_set_state): New.
        (__mf_pthread_cleanup): Use &errno, rather than saved pointer.
        Update mf_thread_data killing procedure.
        (__mf_pthread_spawner): Similarly.
        (__mf_0fn_pthread_create): Only use wrapper if necessary.  Remove
        code to allocate thread stack space.
        (__mf_0fn_pthread_join, pthread_join): Remove.
        (__mf_0fn_pthread_exit, pthread_exit): Remove.
        * mf-impl.h (dyn_pthread_join, dyn_pthread_exit): Remove.
        (__mf_state_1): Rename from __mf_state; use TLS when available.
        (__mf_get_state, __mf_set_state): New.  Update all users.
        * mf-runtime.c (begin_recursion_protect1): New.
        (BEGIN_RECURSION_PROTECT): Use it.
        (__mf_state_1): Rename from __mf_state; use TLS when available.
        (threads_active_p): Remove.
        (__mf_usage): Compute it directly.

From-SVN: r102108
2005-07-16 19:29:00 -07:00
Ulrich Weigand
ad0a0295b5 * testsuite/libmudflap.c/externs-1.c (main): Add return statement.
From-SVN: r101184
2005-06-19 16:01:03 +00:00
Frank Ch. Eigler
e1f4adc93b Fix for uncaching bug reported by Herman ten Brugge.
2005-06-15  Frank Ch. Eigler  <fche@redhat.com>

	Fix for uncaching bug reported by Herman ten Brugge.
	* mf-runtime.c (__mf_uncache_object): Search whole cache.
	* testsuite/libmudflap.c/fail40-frag.c: New test.

From-SVN: r100985
2005-06-15 16:15:40 +00:00
Alfred M. Szmidt
581fb421b9 re PR libmudflap/21724 (libmudflap/Makefile.am, refusing to install mf-runtime.h in includedir)
2005-05-23  Alfred M. Szmidt  <ams@gnu.org>

	PR libmudflap/21724
	* Makefile.am (AM_MAKEFLAGS): Pass includedir.
	* Makefile.in: Amend.

From-SVN: r100951
2005-06-14 19:18:16 +00:00
Frank Ch. Eigler
0ea49890a8 re PR libmudflap/21023 (mudflap reports errors for external array variable with no size specified)
2005-06-14  Frank Ch. Eigler  <fche@redhat.com>

	PR mudflap/21023
	* tree-mudflap.c (mudflap_finish_file): Exclude non-public
	rather than static objects (!) from libmudflap registration.

	* testsuite/libmudflap.c/externs.exp, externs-{1,2}.c: New test files.
	* testsuite/libmudflap.c/cfrags.exp: Bypass new sources.

From-SVN: r100950
2005-06-14 19:12:24 +00:00
Frank Ch. Eigler
0bddd9360b re PR testsuite/21094 (libmudflap C++ tests run even when C++ not configured)
2005-06-14  Frank Ch. Eigler  <fche@redhat.com>

	PR libmudflap/21094
	* testsuite/libmudflap.c++/*.exp: Assert build tree g++.

From-SVN: r100946
2005-06-14 18:37:20 +00:00
Frank Ch. Eigler
665dff26ac re PR libmudflap/22064 (libmudflap contains possible alias violations)
2005-06-14  Frank Ch. Eigler  <fche@redhat.com>

	PR mudflap/22064
	* mf-impl.h (mudflap_mode, violation_mode): Make these ordinary
	unsigned vars with #defines instead of enums.

From-SVN: r100945
2005-06-14 18:36:50 +00:00
Mike Stump
f4c767fdc2 * configure: Regenerate.
From-SVN: r99498
2005-05-10 01:43:00 +00:00
Mike Stump
6dab073ba7 * configure: Regenerate.
From-SVN: r98065
2005-04-13 01:41:26 +00:00
Frank Ch. Eigler
a08a479fec re PR other/19266 ([mudflap] ICE when compiling with -fmudflap -O)
2005-04-12  Frank Ch. Eigler  <fche@redhat.com>

	PR mudflap/19266
	From Richard Henderson <rth@redhat.com>:
	* tree-mudflap.c (mf_build_check_statement_for): Correct block
	splitting logic.

2005-04-12  Frank Ch. Eigler  <fche@redhat.com>

	PR mudflap/19266
	* testsuite/libmudflap.c++/c++frags.exp: Also test -O permutation.
	* testsuite/libmudflap.c++/pass57-frag.cxx: New test.

From-SVN: r98028
2005-04-12 18:09:09 +00:00
Mike Stump
085e30b7b0 * mf-runtime.h: Add libmudflap copyright clause.
From-SVN: r97807
2005-04-07 22:51:01 +00:00
Alan Modra
58dc8547f2 * mf-runtime.c (__mfu_unregister): Warning fix for char unsigned.
From-SVN: r97532
2005-04-04 19:39:46 +09:30
Mike Stump
fb925a5148 mf-heuristics.c: Fix whitespace at end of line.
* mf-heuristics.c: Fix whitespace at end of line.
        * mf-hooks1.c: Likewise.
        * mf-hooks2.c: Likewise.
        * mf-hooks3.c: Likewise.
        * mf-impl.h: Likewise.
        * mf-runtime.c: Likewise.
        * mf-runtime.h: Likewise.

From-SVN: r96850
2005-03-22 02:14:33 +00:00
Zack Weinberg
fd0811ef5d configure.ac: Do not invoke TL_AC_GCC_VERSION.
* configure.ac: Do not invoke TL_AC_GCC_VERSION.
	In all substitutions, expand gcc_version in Makefile.
	* aclocal.m4, configure: Regenerate.
	* Makefile.am: Set gcc_version.
	* Makefile.in, testsuite/Makefile.in: Regenerate.

From-SVN: r96817
2005-03-21 17:44:38 +00:00
Frank Ch. Eigler
0ee4e76d11 mf-runtime.c (__mfu_check): Respect ignore_reads configuration.
2005-03-17  Frank Ch. Eigler  <fche@redhat.com>

	* mf-runtime.c (__mfu_check): Respect ignore_reads configuration.
	* testsuite/libmudflap.c/{pass56,fail39}-frag.c: New tests.

From-SVN: r96620
2005-03-17 17:20:49 +00:00
Frank Ch. Eigler
81d8d0fa90 * typo fix
From-SVN: r94984
2005-02-13 12:58:28 +00:00
Frank Ch. Eigler
478cc36ff6 re PR libmudflap/19319 (Mudflap produce many violations on simple, correct c++ program)
2005-02-13  Frank Ch. Eigler  <fche@redhat.com>

	PR mudflap/19319
	* testsuite/libmudflap.c++/pass55-frag.c: New test.

From-SVN: r94983
2005-02-13 12:49:34 +00:00
Richard Henderson
130e4a02c2 * testsuite/libmudflap.c/pass32-frag.c: Fix typo.
From-SVN: r92930
2005-01-05 01:27:50 -08:00
Greg McGary
1330529e58 mf-impl.h (uintptr_t): Get typedef via stdint.h or define explicitly.
* mf-impl.h (uintptr_t): Get typedef via stdint.h or define explicitly.
	* mf-runtime.h: New file, replaces mf-runtime.h.in.
	* configure.ac (AC_CONFIG_FILES): mf-runtime.h is no longer generated.
	* Makefile.in: Ditto.
	* testsuite/lib/libmudflap.exp: Add -I${srcdir}/.. to get mf-runtime.h
	* testsuite/libmudflap.c/pass32-frag.c: s/uintptr_t/__mf_uintptr_t/
	* testsuite/libmudflap.c/fail36-frag.c: New test.
	* testsuite/libmudflap.c/fail37-frag.c: New test.
	* testsuite/libmudflap.c/fail38-frag.c: New test.

From-SVN: r92815
2005-01-02 22:24:50 +00:00
Kelley Cook
901713f134 Makefile.am: Add ../config to ACLOCAL_AMFLAGS.
2004-12-08  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Add ../config to ACLOCAL_AMFLAGS.
	* aclocal.m4, Makefile.in, testsuite/Makefile.in: Regenerate.

From-SVN: r91926
2004-12-09 01:27:29 +00:00
Richard Sandiford
afabd8e62c Introduce and use config/gcc-version.m4.
From-SVN: r91625
2004-12-02 11:05:13 +00:00
Kelley Cook
68c8f6ab4b Makefile.am: Define ACLOCAL_AMFLAGS.
2004-11-29  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Define ACLOCAL_AMFLAGS.
	* acinclude.m4: Remove.
	* stamp-h.in: Remove superfluous stamp file.
	* aclocal.m4, configure, Makefile.in: Regenerate.
	* testsuite/Makefile.in: Likewise.

From-SVN: r91499
2004-11-30 00:07:44 +00:00
Kelley Cook
b269c22bbb Makefile.am: Revert previous.
2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Revert previous.
	* acinclude.m4: Restore.
	* aclocal.m4, configure, Makefile.in: Regenerate.
	* testsuite/Makefile.in: Likewise.

From-SVN: r91292
2004-11-25 13:35:35 +00:00
Kelley Cook
b7392506fd Makefile.am: Define ACLOCAL_AMFLAGS.
2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.am: Define ACLOCAL_AMFLAGS.
	* acinclude.m4: Remove.
	* aclocal.m4, configure, Makefile.in: Regenerate.
	* testsuite/Makefile.in: Likewise.

From-SVN: r91209
2004-11-24 22:13:19 +00:00
John David Anglin
1df8e83465 target-libpath.exp: New file defining set_ld_library_path_env_vars and restore_ld_library_path_env_vars.
* lib/target-libpath.exp: New file defining set_ld_library_path_env_vars
	and restore_ld_library_path_env_vars.
	* g++.dg/compat/compat.exp, lib/g++.exp, lib/gcc-dg.exp,
	lib/gfortran.exp, lib/objc.exp, lib/treelang.exp: Use new procs.
	* ada/acats/run_acats (LD_LIBRARY_PATH): Add previous LD_LIBRARY_PATH
	to LD_LIBRARY_PATH.  Export LD_LIBRARY_PATH.

	* testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.

	* testsuite/lib/libjava.exp,
	testsuite/libjava.jacks/jacks.exp: Use new procs in target-libpath.exp.

	* testsuite/lib/libmudflap.exp: Use new procs in target-libpath.exp.

	* testsuite/lib/libstdc++.exp: Use new procs in target-libpath.exp.

From-SVN: r91137
2004-11-24 04:39:41 +00:00
Kelley Cook
4e55a16271 Makefile.in, [...]: Regenerate with automake 1.9.3.
2004-11-23  Kelley Cook  <kcook@gcc.gnu.org>

	* Makefile.in, configure, aclocal.m4: Regenerate with automake 1.9.3.
	* testsuite/Makefile.in: Likewise.

From-SVN: r91125
2004-11-24 00:08:16 +00:00
Andreas Schwab
124e22d446 configure.ac: (target_alias): Default to $host_alias, not $target.
* configure.ac: (target_alias): Default to $host_alias, not
	$target.
	* configure: Regenerated.

From-SVN: r89959
2004-11-01 21:27:26 +00:00
Frank Ch. Eigler
306ae32b68 fail35-,pass53-,pass54-frag.c: New tests.
2004-10-28  Frank Ch. Eigler  <fche@redhat.com>

	* testsuite/libmudflap.c/fail35-,pass53-,pass54-frag.c: New tests.
	* testsuite/libmudflap.c/pass35-frag.c: Correct embedded warning
	message.

From-SVN: r89783
2004-10-28 21:21:59 +00:00
Eric Botcazou
1e02510f05 re PR other/18138 (libgcc_s.so.1 not found by 64-bit testsuite)
gcc/testsuite:
	PR other/18138
	* lib/g++.exp: Accept more than one multilib libgcc.
	* lib/gcc-dg.exp: Likewise.
	* lib/objc.exp: Likewise.
	* lib/treelang.exp: Likewise.
	* lib/gfortran.exp: Likewise.

libffi:
	PR other/18138
	* testsuite/lib/libffi-dg.exp: Accept more than one multilib
	libgcc.

libjava:
	PR other/18138
	* testsuite/lib/libjava.exp: Accept more than one multilib
	libgcc.

libmudflap!:
	PR other/18138
	* testsuite/lib/libmudflap.exp: Accept more than one multilib
	libgcc.

libstdc++-v3:
	PR other/18138
	* testsuite/lib/libstdc++.exp: Accept more than one multilib
	libgcc.

From-SVN: r89528
2004-10-25 09:01:15 +00:00
Frank Ch. Eigler
ddfabf89bb configure.ac: Check for more headers, functions.
2004-10-12  Frank Ch. Eigler  <fche@redhat.com>

	* configure.ac: Check for more headers, functions.
	* mf-hooks2.c (mkbuffer, unmkbuffer): New helper functions for
	tracking overridden FILE buffers.
	(fopen, setvbuf): New/revised hook functions for buffer overriding.
	(setbuf,setlinebuf,fdopen,freopen,fopen64,freopen64,fclose): Ditto.
	(fflush): Accept given NULL stream (means "all streams").
	* mf-runtime.h.in:
	* mf-runtime.c (__mfu_check): Accept accesses that span adjacent
	HEAP/GUESS objects.
	(LOOKUP_CACHE_SIZE_MAX): Raise to 64K entries tentatively.
	(__mf_adapt_cache): Use them all.
	* testsuite/libmudflap.c/pass35-frag.c: Update warning message.
	* testsuite/libmudflap.c++/ctors.exp: Ditto.
	* testsuite/libmudflap.c/{pass51,pass52}-frag.c: New tests.
	* configure, config.h.in: Regenerated.

From-SVN: r88996
2004-10-13 18:27:16 +00:00
Frank Ch. Eigler
73407061a1 * thanks kcook
2004-10-05  Frank Ch. Eigler  <fche@redhat.com>

	* configure.ac: Checking for sys/socket.h once is enough.
	* configure: Regenerated.

From-SVN: r88559
2004-10-05 16:15:55 +00:00
Frank Ch. Eigler
07c2f075fc configure.ac: Look for more headers & functions.
2004-10-04  Frank Ch. Eigler  <fche@redhat.com>

	* configure.ac: Look for more headers & functions.
	* mf-hooks2.c (getmntent, inet_ntoa, getproto*): New wrapper functions.
	* mf-runtime.h.in: Add new "#pragma redefine_extname"s for them.
	* mf-runtime.c (options): Clean up integer signedness warnings.
	(main): Add a declaration to fix a warning.
	* mf-hooks3.c (pthread_exit): Add not-reached exit() to wrapper.
	* configure, config.h.in: Regenerated.

From-SVN: r88517
2004-10-04 17:33:54 +00:00
Frank Ch. Eigler
bf50d091ca * fixing typos in accidental checkin
From-SVN: r88463
2004-10-03 21:17:29 +00:00
Frank Ch. Eigler
fefbfa2166 tree-mudflap.c (mf_build_check_statement_for): Reorganize to take check-base and -limit arguments.
2004-10-02  Frank Ch. Eigler  <fche@redhat.com>

	* tree-mudflap.c (mf_build_check_statement_for): Reorganize to
	take check-base and -limit arguments.
	(mf_xform_derefs_1): Reorganize slightly to pass proper base/limit
	check ranges for ARRAY_REF and COMPONENT_REF.
	(execute_mudflap_fnction_ops, ..._decls): Limit unnecessary
	instrumentation.

2004-10-02  Frank Ch. Eigler  <fche@redhat.com>

	* testsuite/libmudflap.c/pass50-frag.c, fail33-frag.c, fail34-frag.c:
	New tests for proper base/limit checking for aggregates.

From-SVN: r88432
2004-10-02 23:12:49 +00:00
Joseph Myers
971801fff6 attribs.c, [...]: Use %<, %> and %q for quoting in diagnostics going through pretty-print.c.
gcc:
	* attribs.c, builtins.c, c-format.c, c-pch.c, coverage.c,
	except.c, fold-const.c, function.c, langhooks.c, params.c,
	reload.c, reload1.c, stmt.c, stor-layout.c, toplev.c, tree-cfg.c,
	tree-dump.c, tree-mudflap.c, tree.c, varasm.c: Use %<, %> and %q
	for quoting in diagnostics going through pretty-print.c.  Use ''
	for quoting in other diagnostic text.
	* langhooks.c: Include intl.h.  Mark text locating diagnostics for
	translation.
	* Makefile.in (langhooks.o): Update dependencies.
	* pretty-print.h (pp_printf): Mark as accepting GCC diagnostic
	formats.

gcc/testsuite:
	* g++.dg/ext/member-attr.C, g++.dg/warn/deprecated.C,
	gcc.dg/deprecated.c, gcc.dg/noreturn-1.c, gcc.dg/noreturn-4.c:
	Update expected messages.

libmudflap:
	* testsuite/libmudflap.c/pass35-frag.c: Update expected message.

From-SVN: r87563
2004-09-15 21:48:10 +01:00
Frank Ch. Eigler
66a5d3b1c1 configure.ac: Look for pwd.h, grp.h, netdb.h headers and functions.
2004-09-07  Frank Ch. Eigler  <fche@redhat.com>

	* configure.ac: Look for pwd.h, grp.h, netdb.h headers and functions.
	* mf-hooks2.c (strerror): Unregister previous string returned by
	previous strerror.
	(getlogin,cuserid,getpwnam,getpwuid,getgrnam,getgrgid): New wrappers.
	(getservent,getservbyname,getservbyport,gai_strerror): Ditto.
	* mf-runtime.h.in: Add redefine_extname pragmas for them all.
	* mf-runtime.c (__mf_describe_object): Clarify object life status.
	* testsuite/libmudflap.c/pass48-frag.c, pass49-frag.c, fail32-frag.c:
	New tests.
	* configure, config.h.in: Regenerated.

From-SVN: r87160
2004-09-07 21:52:52 +00:00
Dale Johannesen
029277b7c7 mf-runtime.c: Conditionalize POSIX_SOURCE for Darwin.
2004-08-03  Dale Johannesen  <dalej@apple.com>

         * mf-runtime.c: Conditionalize POSIX_SOURCE for Darwin.

From-SVN: r85478
2004-08-03 14:19:26 +00:00
Frank Ch. Eigler
73c3d5687f mf-runtime.c (compare_uintptr_t): Remove function.
2004-08-03  Frank Ch. Eigler  <fche@redhat.com>

	* mf-runtime.c (compare_uintptr_t): Remove function.  Inline
	simplified contents in all former callers.

From-SVN: r85475
2004-08-03 13:40:21 +00:00
Ulrich Weigand
6687a26359 mf-runtime.c (__mf_fini): Set mudflap_mode to mode_nop in the statically linked case.
2004-07-27  Ulrich Weigand  <weigand@informatik.uni-erlangen.de>

	* mf-runtime.c (__mf_fini): Set mudflap_mode to mode_nop in
	the statically linked case.

From-SVN: r85229
2004-07-27 19:41:20 +00:00
Frank Ch. Eigler
fc5515a8a0 splay-tree.[ch]: Remove.
2004-07-27  Frank Ch. Eigler  <fche@redhat.com>

	* splay-tree.[ch]: Remove.  Merge contents into ...
	* mf-runtime.c: ... here, renaming symbols and making all functions
	static.  Remove unused min/max functions.
	* Makefile.am: Forget about splay-tree.[ch].
	* Makefile.in, testsuite/Makefile.in: Regenerated.

From-SVN: r85224
2004-07-27 18:03:18 +00:00
Frank Ch. Eigler
d942072cb0 * whitespace tweak
From-SVN: r85018
2004-07-21 19:14:28 +00:00
Frank Ch. Eigler
54419590e8 mf-runtime.c (__mfu_check): Remove mistaken mode-nop handling.
2004-07-21  Frank Ch. Eigler  <fche@redhat.com>

	* mf-runtime.c (__mfu_check): Remove mistaken mode-nop
	handling.
	(__mfu_usage): Include (C) 2004.
	* mf-hooks3.c (__mf_find_threadinfo): Don't call tracing functions
	here.  Include a comment explaining why.

From-SVN: r85014
2004-07-21 18:50:14 +00:00
Frank Ch. Eigler
a082fc7afc mf-impl.h (__mf_options): Add ignore_reads and timestamps fields.
2004-07-20  Frank Ch. Eigler  <fche@redhat.com>

	* mf-impl.h (__mf_options): Add ignore_reads and timestamps fields.
	* mf-runtime.c (options): Give them a name.
	(__mf_set_default_options): Set them.
	(__mf_insert_new_object, __mfu_unregister): Optionalize timestamps.
	(__mf_violation): Warning cleanup.
	* mf-impl.h (MF_VALIDATE_EXTENT): Support ignore_reads option.
	* splay-tree.c (splay_tree_delete_helper): Remove obsolete decl.

From-SVN: r84971
2004-07-20 20:00:56 +00:00
Frank Ch. Eigler
429b4470bd * Fix for g++/15861
2004-07-15  Frank Ch. Eigler  <fche@redhat.com>

	g++/15861
	* mf-runtime.c (__mf_init): Make it non-static.  Tolerate
	repeated invocation.

From-SVN: r84761
2004-07-15 17:33:23 +00:00