From d59f76e8e7149dbcf8c77e537f09b2387b49f89a Mon Sep 17 00:00:00 2001 From: ivmai Date: Mon, 14 Sep 2009 06:25:02 +0000 Subject: [PATCH] 2009-09-14 Ivan Maidanski (ivmai136v2.diff) * Makefile.direct: Copy missing information for -DSHORT_DBG_HDRS from Makefile. * Makefile: Remove the information about "define arguments" (which is incomplete and outdated compared to that in Makefile.direct); add help reference to Makefile.direct. * Makefile.dj: Ditto. --- ChangeLog | 10 ++ Makefile | 239 +----------------------------------------------- Makefile.direct | 2 + Makefile.dj | 123 +------------------------ 4 files changed, 16 insertions(+), 358 deletions(-) diff --git a/ChangeLog b/ChangeLog index c84f773b..45a86065 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,14 @@ +2009-09-14 Ivan Maidanski + (ivmai136v2.diff) + + * Makefile.direct: Copy missing information for -DSHORT_DBG_HDRS + from Makefile. + * Makefile: Remove the information about "define arguments" (which + is incomplete and outdated compared to that in Makefile.direct); + add help reference to Makefile.direct. + * Makefile.dj: Ditto. + 2009-09-14 Ivan Maidanski (ivmai135.diff) diff --git a/Makefile b/Makefile index b7f99fd1..bdde3b37 100644 --- a/Makefile +++ b/Makefile @@ -62,243 +62,8 @@ HOSTCFLAGS=$(CFLAGS) # Setjmp_test may yield overly optimistic results when compiled # without optimization. -# These define arguments influence the collector configuration: -# -DFIND_LEAK causes GC_find_leak to be initially set. -# This causes the collector to assume that all inaccessible -# objects should have been explicitly deallocated, and reports exceptions. -# Finalization and the test program are not usable in this mode. -# -DGC_SOLARIS_THREADS enables support for Solaris pthreads. -# Must also define -D_REENTRANT. -# -DGC_IRIX_THREADS enables support for Irix pthreads. See README.irix. -# -DGC_HPUX_THREADS enables support for HP/UX 11 pthreads. -# Also requires -D_REENTRANT or -D_POSIX_C_SOURCE=199506L. See README.hp. -# -DGC_LINUX_THREADS enables support for Xavier Leroy's Linux threads. -# see README.linux. -D_REENTRANT may also be required. -# -DGC_OSF1_THREADS enables support for Tru64 pthreads. -# -DGC_FREEBSD_THREADS enables support for FreeBSD pthreads. -# Appeared to run into some underlying thread problems. -# -DGC_DARWIN_THREADS enables support for Mac OS X pthreads. -# -DGC_AIX_THREADS enables support for IBM AIX threads. -# -DGC_DGUX386_THREADS enables support for DB/UX on I386 threads. -# See README.DGUX386. -# -DGC_WIN32_THREADS enables support for win32 threads. That makes sense -# for this Makefile only under Cygwin. -# -DGC_THREADS should set the appropriate one of the above macros. -# It assumes pthreads for Solaris. -# -DALL_INTERIOR_POINTERS allows all pointers to the interior -# of objects to be recognized. (See gc_priv.h for consequences.) -# Alternatively, GC_all_interior_pointers can be set at process -# initialization time. -# -DSMALL_CONFIG tries to tune the collector for small heap sizes, -# usually causing it to use less space in such situations. -# Incremental collection no longer works in this case. -# -DLARGE_CONFIG tunes the collector for unusually large heaps. -# Necessary for heaps larger than about 500 MB on most machines. -# Recommended for heaps larger than about 64 MB. -# -DDONT_ADD_BYTE_AT_END is meaningful only with -DALL_INTERIOR_POINTERS or -# GC_all_interior_pointers = 1. Normally -DALL_INTERIOR_POINTERS -# causes all objects to be padded so that pointers just past the end of -# an object can be recognized. This can be expensive. (The padding -# is normally more than one byte due to alignment constraints.) -# -DDONT_ADD_BYTE_AT_END disables the padding. -# -DNO_EXECUTE_PERMISSION may cause some or all of the heap to not -# have execute permission, i.e. it may be impossible to execute -# code from the heap. Currently this only affects the incremental -# collector on UNIX machines. It may greatly improve its performance, -# since this may avoid some expensive cache synchronization. -# -DGC_NO_OPERATOR_NEW_ARRAY declares that the C++ compiler does not support -# the new syntax "operator new[]" for allocating and deleting arrays. -# See gc_cpp.h for details. No effect on the C part of the collector. -# This is defined implicitly in a few environments. Must also be defined -# by clients that use gc_cpp.h. -# -DREDIRECT_MALLOC=X causes malloc to be defined as alias for X. -# Unless the following macros are defined, realloc is also redirected -# to GC_realloc, and free is redirected to GC_free. -# Calloc and strdup are redefined in terms of the new malloc. X should -# be either GC_malloc or GC_malloc_uncollectable, or -# GC_debug_malloc_replacement. (The latter invokes GC_debug_malloc -# with dummy source location information, but still results in -# properly remembered call stacks on Linux/X86 and Solaris/SPARC. -# It requires that the following two macros also be used.) -# The former is occasionally useful for working around leaks in code -# you don't want to (or can't) look at. It may not work for -# existing code, but it often does. Neither works on all platforms, -# since some ports use malloc or calloc to obtain system memory. -# (Probably works for UNIX, and win32.) If you build with DBG_HDRS_ALL, -# you should only use GC_debug_malloc_replacement as a malloc -# replacement. -# -DREDIRECT_REALLOC=X causes GC_realloc to be redirected to X. -# The canonical use is -DREDIRECT_REALLOC=GC_debug_realloc_replacement, -# together with -DREDIRECT_MALLOC=GC_debug_malloc_replacement to -# generate leak reports with call stacks for both malloc and realloc. -# This also requires the following: -# -DREDIRECT_FREE=X causes free to be redirected to X. The -# canonical use is -DREDIRECT_FREE=GC_debug_free. -# -DIGNORE_FREE turns calls to free into a noop. Only useful with -# -DREDIRECT_MALLOC. -# -DNO_DEBUGGING removes GC_dump and the debugging routines it calls. -# Reduces code size slightly at the expense of debuggability. -# -DJAVA_FINALIZATION makes it somewhat safer to finalize objects out of -# order by specifying a nonstandard finalization mark procedure (see -# finalize.c). Objects reachable from finalizable objects will be marked -# in a separate postpass, and hence their memory won't be reclaimed. -# Not recommended unless you are implementing a language that specifies -# these semantics. Since 5.0, determines only the initial value -# of GC_java_finalization variable. -# -DFINALIZE_ON_DEMAND causes finalizers to be run only in response -# to explicit GC_invoke_finalizers() calls. -# In 5.0 this became runtime adjustable, and this only determines the -# initial value of GC_finalize_on_demand. -# -DATOMIC_UNCOLLECTABLE includes code for GC_malloc_atomic_uncollectable. -# This is useful if either the vendor malloc implementation is poor, -# or if REDIRECT_MALLOC is used. -# -DMARK_BIT_PER_GRANULE requests that a mark bit (or often byte) -# be allocated for each allocation granule, as opposed to each object. -# This often improves speed, possibly at some cost in space and/or -# cache footprint. Normally it is best to let this decision be -# made automatically depending on platform. -# -DMARK_BIT_PER_OBJ requests that a mark bit be allocated for each -# object instead of allocation granule. The opposiet of -# MARK_BIT_PER_GRANULE. -# -DHBLKSIZE=ddd, where ddd is a power of 2 between 512 and 16384, explicitly -# sets the heap block size. Each heap block is devoted to a single size and -# kind of object. For the incremental collector it makes sense to match -# the most likely page size. Otherwise large values result in more -# fragmentation, but generally better performance for large heaps. -# -DUSE_MMAP use MMAP instead of sbrk to get new memory. -# Works for Solaris and Irix. -# -DUSE_MUNMAP causes memory to be returned to the OS under the right -# circumstances. This currently disables VM-based incremental collection. -# This is currently experimental, and works only under some Unix, -# Linux and Windows versions. -# -DMMAP_STACKS (for Solaris threads) Use mmap from /dev/zero rather than -# GC_scratch_alloc() to get stack memory. -# -DPRINT_BLACK_LIST Whenever a black list entry is added, i.e. whenever -# the garbage collector detects a value that looks almost, but not quite, -# like a pointer, print both the address containing the value, and the -# value of the near-bogus-pointer. Can be used to identifiy regions of -# memory that are likely to contribute misidentified pointers. -# -DKEEP_BACK_PTRS Add code to save back pointers in debugging headers -# for objects allocated with the debugging allocator. If all objects -# through GC_MALLOC with GC_DEBUG defined, this allows the client -# to determine how particular or randomly chosen objects are reachable -# for debugging/profiling purposes. The gc_backptr.h interface is -# implemented only if this is defined. -# -DGC_ASSERTIONS Enable some internal GC assertion checking. Currently -# this facility is only used in a few places. It is intended primarily -# for debugging of the garbage collector itself, but could also -# -DDBG_HDRS_ALL Make sure that all objects have debug headers. Increases -# the reliability (from 99.9999% to 100% mod. bugs) of some of the debugging -# code (especially KEEP_BACK_PTRS). Makes -DSHORT_DBG_HDRS possible. -# Assumes that all client allocation is done through debugging -# allocators. -# -DSHORT_DBG_HDRS Assume that all objects have debug headers. Shorten -# the headers to minimize object size, at the expense of checking for -# writes past the end of an object. This is intended for environments -# in which most client code is written in a "safe" language, such as -# Scheme or Java. Assumes that all client allocation is done using -# the GC_debug_ functions, or through the macros that expand to these, -# or by redirecting malloc to GC_debug_malloc_replacement. -# (Also eliminates the field for the requested object size.) -# occasionally be useful for debugging of client code. Slows down the -# collector somewhat, but not drastically. -# -DSAVE_CALL_COUNT= Set the number of call frames saved with objects -# allocated through the debugging interface. Affects the amount of -# information generated in leak reports. Only matters on platforms -# on which we can quickly generate call stacks, currently Linux/(X86 & SPARC) -# and Solaris/SPARC and platforms that provide execinfo.h. -# Default is zero. On X86, client -# code should NOT be compiled with -fomit-frame-pointer. -# -DSAVE_CALL_NARGS= Set the number of functions arguments to be -# saved with each call frame. Default is zero. Ignored if we -# don't know how to retrieve arguments on the platform. -# -DCHECKSUMS reports on erroneously clear dirty bits, and unexpectedly -# altered stubborn objects, at substantial performance cost. -# Use only for debugging of the incremental collector. -# -DGC_GCJ_SUPPORT includes support for gcj (and possibly other systems -# that include a pointer to a type descriptor in each allocated object). -# Building this way requires an ANSI C compiler. -# -DUSE_I686_PREFETCH causes the collector to issue Pentium III style -# prefetch instructions. No effect except on X86 Linux platforms. -# Assumes a very recent gcc-compatible compiler and assembler. -# (Gas prefetcht0 support was added around May 1999.) -# Empirically the code appears to still run correctly on Pentium II -# processors, though with no performance benefit. May not run on other -# X86 processors? In some cases this improves performance by -# 15% or so. -# -DUSE_3DNOW_PREFETCH causes the collector to issue AMD 3DNow style -# prefetch instructions. Same restrictions as USE_I686_PREFETCH. -# Minimally tested. Didn't appear to be an obvious win on a K6-2/500. -# -DUSE_PPC_PREFETCH causes the collector to issue PowerPC style -# prefetch instructions. No effect except on PowerPC OS X platforms. -# Performance impact untested. -# -DGC_USE_LD_WRAP in combination with the old flags listed in README.linux -# causes the collector some system and pthread calls in a more transparent -# fashion than the usual macro-based approach. Requires GNU ld, and -# currently probably works only with Linux. -# -DGC_USE_DLOPEN_WRAP causes the collector to redefine malloc and intercepted -# pthread routines with their real names, and causes it to use dlopen -# and dlsym to refer to the original versions. This makes it possible to -# build an LD_PRELOADable malloc replacement library. -# -DTHREAD_LOCAL_ALLOC defines GC_malloc(), GC_malloc_atomic() -# and GC_gcj_malloc() to use a per-thread set of free-lists. -# These then allocate in a way that usually does not involve -# acquisition of a global lock. Currently supported only on platforms -# such as Linux that use pthread_support.c. Recommended for multiprocessors. -# Requires explicit GC_INIT() call. -# -DUSE_COMPILER_TLS causes thread local allocation to use compiler-supported -# "__thread" thread-local variables. This is the default in HP/UX. It -# may help performance on recent Linux installations. (It failed for -# me on RedHat 8, but appears to work on RedHat 9.) -# -DPARALLEL_MARK allows the marker to run in multiple threads. Recommended -# for multiprocessors. Currently requires Linux on X86 or IA64, though -# support for other Posix platforms should be fairly easy to add, -# if the thread implementation is otherwise supported. -# -DNO_GETENV prevents the collector from looking at environment variables. -# These may otherwise alter its configuration, or turn off GC altogether. -# I don't know of a reason to disable this, except possibly if the -# resulting process runs as a privileged user? -# -DUSE_GLOBAL_ALLOC. Win32 only. Use GlobalAlloc instead of -# VirtualAlloc to allocate the heap. May be needed to work around -# a Windows NT/2000 issue. Incompatible with USE_MUNMAP. -# See README.win32 for details. -# -DMAKE_BACK_GRAPH. Enable GC_PRINT_BACK_HEIGHT environment variable. -# See README.environment for details. Experimental. Limited platform -# support. Implies DBG_HDRS_ALL. All allocation should be done using -# the debug interface. -# -DSTUBBORN_ALLOC allows allocation of "hard to change" objects, and thus -# makes incremental collection easier. Was enabled by default until 6.0. -# Rarely used, to my knowledge. -# -DHANDLE_FORK attempts to make GC_malloc() work in a child process fork()ed -# from a multithreaded parent. Currently only supported by pthread_support.c. -# (Similar code should work on Solaris or Irix, but it hasn't been tried.) -# -DTEST_WITH_SYSTEM_MALLOC causes gctest to allocate (and leak) large chunks -# of memory with the standard system malloc. This will cause the root -# set and collected heap to grow significantly if malloced memory is -# somehow getting traced by the collector. This has no impact on the -# generated library; it only affects the test. -# -DNO_INCREMENTAL cases the gctest program to not invoke the incremental -# collector. This has no impact on the generated library, only on the -# test program. (This is often useful for debugging failures unrelated -# to incremental GC.) -# -DPOINTER_MASK=0x... causes candidate pointers to be ANDed with the -# given mask before being considered. If either this or the following -# macro is defined, it will be assumed that all pointers stored in -# the heap need to be processed this way. Stack and register pointers -# will be considered both with and without processing. -# These macros are normally needed only to support systems that use -# high-order pointer tags. EXPERIMENTAL. -# -DPOINTER_SHIFT=n causes the collector to left shift candidate pointers -# by the indicated amount before trying to interpret them. Applied -# after POINTER_MASK. EXPERIMENTAL. See also the preceding macro. -# -DENABLE_TRACE enables the GC_TRACE=addr environment setting to do its -# job. By default this is not supported in order to keep the marker as fast -# as possible. -# -DDARWIN_DONT_PARSE_STACK Causes the Darwin port to discover thread -# stack bounds in the same way as other pthread ports, without trying to -# walk the frames onthe stack. This is recommended only as a fallback -# for applications that don't support proper stack unwinding. -# +# Look into Makefile.direct for the description of the "define arguments" +# influencing the collector configuration. CXXFLAGS= $(CFLAGS) AR= ar diff --git a/Makefile.direct b/Makefile.direct index ecdb065f..6d63e32a 100644 --- a/Makefile.direct +++ b/Makefile.direct @@ -214,6 +214,8 @@ HOSTCFLAGS=$(CFLAGS) # the GC_debug_ functions, or through the macros that expand to these, # or by redirecting malloc to GC_debug_malloc_replacement. # (Also eliminates the field for the requested object size.) +# Occasionally could be useful for debugging of client code. Slows down the +# collector somewhat, but not drastically. # -DSAVE_CALL_COUNT= Set the number of call frames saved with objects # allocated through the debugging interface. Affects the amount of # information generated in leak reports. Only matters on platforms diff --git a/Makefile.dj b/Makefile.dj index 94f6e839..e9b24380 100644 --- a/Makefile.dj +++ b/Makefile.dj @@ -19,8 +19,6 @@ CXX=gxx $(ABI_FLAG) AS=gcc -c -x assembler-with-cpp $(ABI_FLAG) # The above doesn't work with gas, which doesn't run cpp. # Define AS as `gcc -c -x assembler-with-cpp' instead. -# Under Irix 6, you will have to specify the ABI (-o32, -n32, or -64) -# if you use something other than the default ABI on your machine. # special defines for DJGPP CXXLD=gxx $(ABI_FLAG) @@ -31,125 +29,8 @@ VPATH= $(srcdir) CFLAGS= -gstabs+ -O2 -I$(srcdir)/include -DATOMIC_UNCOLLECTABLE -DALL_INTERIOR_POINTERS -DNO_EXECUTE_PERMISSION -# Setjmp_test may yield overly optimistic results when compiled -# without optimization. -# -DFIND_LEAK causes GC_find_leak to be initially set. -# This causes the collector to assume that all inaccessible -# objects should have been explicitly deallocated, and reports exceptions. -# Finalization and the test program are not usable in this mode. -# -DALL_INTERIOR_POINTERS allows all pointers to the interior -# of objects to be recognized. (See gc_priv.h for consequences.) -# -DSMALL_CONFIG tries to tune the collector for small heap sizes, -# usually causing it to use less space in such situations. -# Incremental collection no longer works in this case. -# -DLARGE_CONFIG tunes the collector for unusually large heaps. -# Necessary for heaps larger than about 500 MB on most machines. -# Recommended for heaps larger than about 64 MB. -# -DDONT_ADD_BYTE_AT_END is meaningful only with -# -DALL_INTERIOR_POINTERS. Normally -DALL_INTERIOR_POINTERS -# causes all objects to be padded so that pointers just past the end of -# an object can be recognized. This can be expensive. (The padding -# is normally more than one byte due to alignment constraints.) -# -DDONT_ADD_BYTE_AT_END disables the padding. -# -DNO_SIGNALS does not disable signals during critical parts of -# the GC process. This is no less correct than many malloc -# implementations, and it sometimes has a significant performance -# impact. However, it is dangerous for many not-quite-ANSI C -# programs that call things like printf in asynchronous signal handlers. -# This is on by default. Turning it off has not been extensively tested with -# compilers that reorder stores. It should have been. -# -DNO_EXECUTE_PERMISSION may cause some or all of the heap to not -# have execute permission, i.e. it may be impossible to execute -# code from the heap. Currently this only affects the incremental -# collector on UNIX machines. It may greatly improve its performance, -# since this may avoid some expensive cache synchronization. -# -DGC_NO_OPERATOR_NEW_ARRAY declares that the C++ compiler does not support -# the new syntax "operator new[]" for allocating and deleting arrays. -# See gc_cpp.h for details. No effect on the C part of the collector. -# This is defined implicitly in a few environments. Must also be defined -# by clients that use gc_cpp.h. -# -DREDIRECT_MALLOC=X causes malloc, realloc, and free to be defined -# as aliases for X, GC_realloc, and GC_free, respectively. -# Calloc is redefined in terms of the new malloc. X should -# be either GC_malloc or GC_malloc_uncollectable. -# The former is occasionally useful for working around leaks in code -# you don't want to (or can't) look at. It may not work for -# existing code, but it often does. Neither works on all platforms, -# since some ports use malloc or calloc to obtain system memory. -# (Probably works for UNIX, and win32.) -# -DIGNORE_FREE turns calls to free into a noop. Only useful with -# -DREDIRECT_MALLOC. -# -DNO_DEBUGGING removes GC_dump and the debugging routines it calls. -# Reduces code size slightly at the expense of debuggability. -# -DJAVA_FINALIZATION makes it somewhat safer to finalize objects out of -# order by specifying a nonstandard finalization mark procedure (see -# finalize.c). Objects reachable from finalizable objects will be marked -# in a separate postpass, and hence their memory won't be reclaimed. -# Not recommended unless you are implementing a language that specifies -# these semantics. Since 5.0, determines only the initial value -# of GC_java_finalization variable. -# -DFINALIZE_ON_DEMAND causes finalizers to be run only in response -# to explicit GC_invoke_finalizers() calls. -# In 5.0 this became runtime adjustable, and this only determines the -# initial value of GC_finalize_on_demand. -# -DATOMIC_UNCOLLECTABLE includes code for GC_malloc_atomic_uncollectable. -# This is useful if either the vendor malloc implementation is poor, -# or if REDIRECT_MALLOC is used. -# -DHBLKSIZE=ddd, where ddd is a power of 2 between 512 and 16384, explicitly -# sets the heap block size. Each heap block is devoted to a single size and -# kind of object. For the incremental collector it makes sense to match -# the most likely page size. Otherwise large values result in more -# fragmentation, but generally better performance for large heaps. -# -DPRINT_BLACK_LIST Whenever a black list entry is added, i.e. whenever -# the garbage collector detects a value that looks almost, but not quite, -# like a pointer, print both the address containing the value, and the -# value of the near-bogus-pointer. Can be used to identifiy regions of -# memory that are likely to contribute misidentified pointers. -# -DKEEP_BACK_PTRS Add code to save back pointers in debugging headers -# for objects allocated with the debugging allocator. If all objects -# through GC_MALLOC with GC_DEBUG defined, this allows the client -# to determine how particular or randomly chosen objects are reachable -# for debugging/profiling purposes. The gc_backptr.h interface is -# implemented only if this is defined. -# -DGC_ASSERTIONS Enable some internal GC assertion checking. Currently -# this facility is only used in a few places. It is intended primarily -# for debugging of the garbage collector itself, but could also -# -DDBG_HDRS_ALL Make sure that all objects have debug headers. Increases -# the reliability (from 99.9999% to 100%) of some of the debugging -# code (especially KEEP_BACK_PTRS). Makes -DSHORT_DBG_HDRS possible. -# Assumes that all client allocation is done through debugging -# allocators. -# -DSHORT_DBG_HDRS Assume that all objects have debug headers. Shorten -# the headers to minimize object size, at the expense of checking for -# writes past the end of an object. This is intended for environments -# in which most client code is written in a "safe" language, such as -# Scheme or Java. Assumes that all client allocation is done using -# the GC_debug_ functions (or through the macros that expand to these. -# (Also eliminates the field for the requested object size.) -# occasionally be useful for debugging of client code. Slows down the -# collector somewhat, but not drastically. -# -DCHECKSUMS reports on erroneously clear dirty bits, and unexpectedly -# altered stubborn objects, at substantial performance cost. -# Use only for debugging of the incremental collector. -# -DGC_GCJ_SUPPORT includes support for gcj (and possibly other systems -# that include a pointer to a type descriptor in each allocated object). -# Building this way requires an ANSI C compiler. -# -DUSE_I686_PREFETCH causes the collector to issue Pentium III style -# prefetch instructions. No effect except on X86 Linux platforms. -# Assumes a very recent gcc-compatible compiler and assembler. -# (Gas prefetcht0 support was added around May 1999.) -# Empirically the code appears to still run correctly on Pentium II -# processors, though with no performance benefit. May not run on other -# X86 processors? In some cases this improves performance by -# 15% or so. -# -DUSE_3DNOW_PREFETCH causes the collector to issue AMD 3DNow style -# prefetch instructions. Same restrictions as USE_I686_PREFETCH. -# UNTESTED!! -# -DGC_USE_LD_WRAP in combination with the gld flags listed in README.linux -# causes the collector some system and pthread calls in a more transparent -# fashion than the usual macro-based approach. Requires GNU ld, and -# currently probably works only with Linux. - +# Look into Makefile.direct for the description of the "define arguments" +# influencing the collector configuration. CXXFLAGS= $(CFLAGS) -DGC_OPERATOR_NEW_ARRAY AR= ar -- 2.40.0