From 1d60500ac7c08e61c2b58a843fd0cfb9e1ec927b Mon Sep 17 00:00:00 2001 From: hboehm Date: Tue, 1 May 2007 20:45:14 +0000 Subject: [PATCH] 2007-05-01 Hans Boehm (and Manuel Serrano, Craig McDaniel) * configure.ac: Comment out redundant AC_DEFINE(NO_EXECUTE_PERMISSION). * configure: Regenerate. * sparc_mach_dep.S: Remove single quote in comment. * include/private/gcconfig.h: Fix DATAEND for NONSTOP. * win32_threads.c: Include stdint.h for Mingw. Add GC_API for DllMain. (GC_use_DllMain): Fix assertion. --- ChangeLog | 11 +++++++++ configure | 56 +++++++++++++++++++++------------------------- configure.ac | 6 +++-- include/private/gcconfig.h | 4 ++-- sparc_mach_dep.S | 2 +- win32_threads.c | 25 +++++++++++++-------- 6 files changed, 60 insertions(+), 44 deletions(-) diff --git a/ChangeLog b/ChangeLog index e1fc871..c724473 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2007-05-01 Hans Boehm + (and Manuel Serrano, Craig McDaniel) + + * configure.ac: Comment out redundant + AC_DEFINE(NO_EXECUTE_PERMISSION). + * configure: Regenerate. + * sparc_mach_dep.S: Remove single quote in comment. + * include/private/gcconfig.h: Fix DATAEND for NONSTOP. + * win32_threads.c: Include stdint.h for Mingw. Add GC_API for DllMain. + (GC_use_DllMain): Fix assertion. + 2007-02-14 Andreas Tobler * configure.ac: Introduce extra_ldflags_libgc. Use it for Darwin. diff --git a/configure b/configure index 38c8472..0244999 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac Revision: 1.20 . +# From configure.ac Revision: 1.21 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for gc 7.0alpha8. # @@ -6000,7 +6000,7 @@ esac # extra LD Flags which are required for targets case "${host}" in -*-*-darwin*) + *-*-darwin*) extra_ldflags_libgc=-Wl,-single_module ;; esac @@ -6135,11 +6135,7 @@ _ACEOF ;; mips-*-*) machdep="mach_dep.lo" - cat >>confdefs.h <<\_ACEOF -#define NO_EXECUTE_PERMISSION 1 -_ACEOF - - ;; + ;; sparc-*-netbsd*) machdep="mach_dep.lo sparc_netbsd_mach_dep.lo" ;; @@ -6854,7 +6850,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 6857 "configure"' > conftest.$ac_ext + echo '#line 6853 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -9117,11 +9113,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9120: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9116: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9124: \$? = $ac_status" >&5 + echo "$as_me:9120: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9385,11 +9381,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9388: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9384: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:9392: \$? = $ac_status" >&5 + echo "$as_me:9388: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -9489,11 +9485,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:9492: $lt_compile\"" >&5) + (eval echo "\"\$as_me:9488: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:9496: \$? = $ac_status" >&5 + echo "$as_me:9492: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -11797,7 +11793,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext < conftest.$ac_ext <&5) + (eval echo "\"\$as_me:14236: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:14244: \$? = $ac_status" >&5 + echo "$as_me:14240: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -14341,11 +14337,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:14344: $lt_compile\"" >&5) + (eval echo "\"\$as_me:14340: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:14348: \$? = $ac_status" >&5 + echo "$as_me:14344: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -15911,11 +15907,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15914: $lt_compile\"" >&5) + (eval echo "\"\$as_me:15910: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:15918: \$? = $ac_status" >&5 + echo "$as_me:15914: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -16015,11 +16011,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:16018: $lt_compile\"" >&5) + (eval echo "\"\$as_me:16014: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:16022: \$? = $ac_status" >&5 + echo "$as_me:16018: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -18217,11 +18213,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18220: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18216: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18224: \$? = $ac_status" >&5 + echo "$as_me:18220: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18485,11 +18481,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18488: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18484: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:18492: \$? = $ac_status" >&5 + echo "$as_me:18488: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -18589,11 +18585,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:18592: $lt_compile\"" >&5) + (eval echo "\"\$as_me:18588: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:18596: \$? = $ac_status" >&5 + echo "$as_me:18592: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized diff --git a/configure.ac b/configure.ac index f7d9828..6855e7e 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_INIT(gc,7.0alpha8,Hans.Boehm@hp.com) AC_CONFIG_SRCDIR(gcj_mlc.c) AC_CANONICAL_TARGET AC_PREREQ(2.53) -AC_REVISION($Revision: 1.21 $) +AC_REVISION($Revision: 1.22 $) GC_SET_VERSION AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects nostdinc]) AM_MAINTAINER_MODE @@ -387,7 +387,9 @@ case "$host" in ;; mips-*-*) machdep="mach_dep.lo" - AC_DEFINE(NO_EXECUTE_PERMISSION) + dnl AC_DEFINE(NO_EXECUTE_PERMISSION) + dnl This is now redundant, but it is also important for incremental GC + dnl performance under Irix. ;; sparc-*-netbsd*) machdep="mach_dep.lo sparc_netbsd_mach_dep.lo" diff --git a/include/private/gcconfig.h b/include/private/gcconfig.h index 191c991..e8c0322 100644 --- a/include/private/gcconfig.h +++ b/include/private/gcconfig.h @@ -1405,8 +1405,8 @@ # define OS_TYPE "NONSTOP" # define ALIGNMENT 4 # define DATASTART ((ptr_t) 0x08000000) - extern int _end[]; -# define DATAEND (_end) + extern char **environ; +# define DATAEND ((ptr_t)(environ - 0x10)) # define STACKBOTTOM ((ptr_t) 0x4fffffff) # endif # endif diff --git a/sparc_mach_dep.S b/sparc_mach_dep.S index 431caa2..e8ad655 100644 --- a/sparc_mach_dep.S +++ b/sparc_mach_dep.S @@ -25,7 +25,7 @@ GC_save_regs_in_stack: ! GC_clear_stack_inner(arg, limit) clears stack area up to limit and ! returns arg. Stack clearing is crucial on SPARC, so we supply -! an assembly version that's more careful. Assumes limit is hotter +! an assembly version that s more careful. Assumes limit is hotter ! than sp, and limit is 8 byte aligned. .globl GC_clear_stack_inner GC_clear_stack_inner: diff --git a/win32_threads.c b/win32_threads.c index 4fbfca5..1215f91 100644 --- a/win32_threads.c +++ b/win32_threads.c @@ -2,6 +2,13 @@ #if defined(GC_WIN32_THREADS) +#if defined( _MINGW_VER ) +# include + /* We mention uintptr_t. */ + /* Perhaps this should be included in pure msft environments */ + /* as well? */ +#endif + #include #ifdef THREAD_LOCAL_ALLOC @@ -83,6 +90,13 @@ # define GC_win32_dll_threads FALSE #endif +/* We have two versions of the thread table. Which one */ +/* we us depends on whether or not GC_win32_dll_threads */ +/* is set. The one complication is that at process */ +/* startup, we use both, since the client hasn't yet */ +/* had a chance to tell us which one (s)he wants. */ +static GC_bool client_has_run = FALSE; + /* The type of the first argument to InterlockedExchange. */ /* Documented to be LONG volatile *, but at least gcc likes */ /* this better. */ @@ -108,7 +122,7 @@ void GC_init_parallel(void); # endif GC_need_to_lock = TRUE; /* Cannot intercept thread creation. */ - GC_ASSERT(GC_gc_no == 0); + GC_ASSERT(!client_has_run); GC_win32_dll_threads = TRUE; } #else @@ -167,13 +181,6 @@ typedef volatile struct GC_Thread_Rep * GC_vthread; volatile GC_bool GC_please_stop = FALSE; -/* We have two versions of the thread table. Which one */ -/* we us depends on whether or not GC_win32_dll_threads */ -/* is set. The one complication is that at process */ -/* startup, we use both, since the client hasn't yet */ -/* had a chance to tell us which one (s)he wants. */ -static GC_bool client_has_run = FALSE; - /* Thread table used if GC_win32_dll_threads is set. */ /* This is a fixed size array. */ /* Since we use runtime conditionals, both versions */ @@ -1284,7 +1291,7 @@ int GC_pthread_detach(pthread_t thread) * we do in other places. */ #ifdef GC_DLL -BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved) +GC_API BOOL WINAPI DllMain(HINSTANCE inst, ULONG reason, LPVOID reserved) { struct GC_stack_base sb; DWORD thread_id; -- 2.7.4