[Gc] GC7.0

jim marshall jim.marshall at wbemsolutions.com
Tue Jul 3 09:30:15 PDT 2007


I could not get GC 7.0 to compile with VC 6. With the help of a 
co-worker we came up with the following changes to 3 files

include/gc.h
msvc_dbg.c
libatomic_ops-1.2/src/atomic_ops/sysdeps/msftc/x86.h

This allowed us to compile the gc (gctest would not compile due to an 
unresolved external) and cords compiled fine.

I have not tested the resulting dll, so I do not know if it works or not 
- sorry

Hope this helps someone else.
Jim

p.s.
 Here is the error with gctest with VC6

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

        link.exe @C:\DOCUME~1\jmars\LOCALS~1\Temp\nma07064.
test.obj : error LNK2001: unresolved external symbol _GC_lock_holder
Debug/gctest.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link.exe' : return code '0x460'
Stop.

Boehm, Hans wrote:
> I finally made gc version 7.0 available as
>
> http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc-7.0.tar.gz
>
> (Note the hyphen; the naming convention changed slightly.)
>
> The CVS tree is now labelled as 7.1alpha1.
>
> I tested this on some of the most common platforms (various Linux,
> Windows versions, Solaris, HP/UX, MacOS X).  I did not get a chance to
> test on AIX or Irix.
>
> There has been a report that this does not build on MacOS 10.3.9, but it
> seems to work on most other MacOS X versions.
>
> The Cygwin port does not support dynamic libraries.  (Neither did 6.8,
> but the documentation is now more clear about that.  I suspect this
> actually isn't hard to fix.)
>
> Changes relative to 6.8 include, in no particular order:
>
>  - Change C code to require at least C89.  Clean up code in various
> outher
>    respects.
>  - Win64 port.
>  - Always count how much live data there is in the heap.  Add more
>    robust heap expansion heuristic which relies on this.
>  - Remove old-style Solaris threads support and some other obsolete
>    platform support.
>  - Restructure mark code, hopefull resulting in some performance
> improvements.
>  - Change the GC code to traffic mostly in either bytes or allocation
>    granules, not words, internally.
>  - Provide for fast inline allocation that requires less frequent client
>    recompilations.  (Needs more testing.)
>  - Removed SILENT configuration macro and PRINTSTATS and GATHERSTATS
>    macros.  Control is now via GC_PRINT_STATS and GC_PRINT_VERBOSE_STATS
>    encironment variables.
>  - Thread local allocation is now performed without needing to call
>    special allocation functions.  The configuration macro
> THREAD_LOCAL_ALLOC
>    continues to determine whether this is supported.
>  - Thread local allocation is supported on more platforms.
>  - Win32 threads code was rewritten and is hopefully more sane.
>  - Allocation routines now decide whether to lock dynamically, based on
>    whether a second thread has been created.
>  - Mostly untested support for a compiler write barrier.
>  - Use libatomic_ops for atomic operations.
>  - Limited support for malloc redirection with Linux threads (& NPTL ).
>  - Various bug fixes and some new platform support.
>
> Hans
>
> _______________________________________________
> Gc mailing list
> Gc at linux.hpl.hp.com
> http://www.hpl.hp.com/hosted/linux/mail-archives/gc/
>
>
>
>   

-- 
Jim Marshall
Sr. Staff Engineer
WBEM Solutions, Inc.
978-947-3607

-------------- next part --------------
1039a1040,1042
> #if defined(_MSC_VER) && _MSC_VER >= 1200 && !defined(_UINTPTR_T_DEFINED)
>     typedef unsigned long uintptr_t;
> #endif 
-------------- next part --------------
47a48
> #define _InterlockedExchangeAdd     InterlockedExchangeAdd
-------------- next part --------------
79a80,83
> #if defined(_MSC_VER) && _MSC_VER == 1200
> 		/* use strcat for VC6 */
> 		strcat(exePath, "\\..");
> #else
80a85
> #endif /* _MSC_VER >= 1200 */


More information about the Gc mailing list