diff options
Diffstat (limited to 'graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp')
-rw-r--r-- | graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp b/graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp new file mode 100644 index 0000000000..89163c1f78 --- /dev/null +++ b/graphics/asymptote/gc/extra/symbian/init_global_static_roots.cpp @@ -0,0 +1,28 @@ +// Symbian-specific file. + +// INCLUDE FILES +#include <e32def.h> + +#include "private/gcconfig.h" +#include "gc.h" + +extern "C" { + +void GC_init_global_static_roots() +{ + ptr_t dataStart; + ptr_t dataEnd; +# if defined (__WINS__) + extern int winscw_data_start, winscw_data_end; + dataStart = ((ptr_t)&winscw_data_start); + dataEnd = ((ptr_t)&winscw_data_end); +# else + extern int Image$$RW$$Limit[], Image$$RW$$Base[]; + dataStart = ((ptr_t)Image$$RW$$Base); + dataEnd = ((ptr_t)Image$$RW$$Limit); +# endif + + GC_add_roots(dataStart, dataEnd); +} + +} /* extern "C" */ |