|
@@ -6,9 +6,14 @@
|
|
#endif
|
|
#endif
|
|
|
|
|
|
#ifdef _WIN32
|
|
#ifdef _WIN32
|
|
|
|
+#ifdef __x86_64__
|
|
|
|
+extern void *__bss_end__;
|
|
|
|
+extern void *__data_start__;
|
|
|
|
+#else
|
|
extern void *_bss_end__;
|
|
extern void *_bss_end__;
|
|
extern void *_data_start__;
|
|
extern void *_data_start__;
|
|
#endif
|
|
#endif
|
|
|
|
+#endif
|
|
|
|
|
|
#ifdef __linux
|
|
#ifdef __linux
|
|
extern void *__data_start;
|
|
extern void *__data_start;
|
|
@@ -27,8 +32,12 @@ void bbGCStartup( void *spTop ){
|
|
GC_set_no_dls(1);
|
|
GC_set_no_dls(1);
|
|
GC_clear_roots();
|
|
GC_clear_roots();
|
|
#ifdef _WIN32
|
|
#ifdef _WIN32
|
|
|
|
+#ifdef __x86_64__
|
|
|
|
+ GC_add_roots(&__data_start__, &__bss_end__);
|
|
|
|
+#else
|
|
GC_add_roots(&_data_start__, &_bss_end__);
|
|
GC_add_roots(&_data_start__, &_bss_end__);
|
|
#endif
|
|
#endif
|
|
|
|
+#endif
|
|
|
|
|
|
#ifdef __APPLE__
|
|
#ifdef __APPLE__
|
|
#ifndef __LP64__
|
|
#ifndef __LP64__
|