Mercurial > projects > ldc
comparison tango/lib/compiler/llvmdc/memory.d @ 406:94394be61589
Attempt to fix win32/mingw linking related to unresolved data segment start/end symbols.
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Sun, 27 Jul 2008 14:11:31 +0200 |
parents | d9d5d59873d8 |
children |
comparison
equal
deleted
inserted
replaced
405:c39813438df7 | 406:94394be61589 |
---|---|
121 { | 121 { |
122 version( Win32 ) | 122 version( Win32 ) |
123 { | 123 { |
124 extern (C) | 124 extern (C) |
125 { | 125 { |
126 extern int _xi_a; // &_xi_a just happens to be start of data segment | 126 extern int _data_start__; |
127 extern int _edata; // &_edata is start of BSS segment | 127 extern int _bss_end__; |
128 extern int _end; // &_end is past end of BSS | 128 |
129 alias _data_start__ Data_Start; | |
130 alias _bss_end__ Data_End; | |
129 } | 131 } |
130 } | 132 } |
131 else version( linux ) | 133 else version( linux ) |
132 { | 134 { |
133 extern (C) | 135 extern (C) |
155 */ | 157 */ |
156 extern (C) void rt_scanStaticData( scanFn scan ) | 158 extern (C) void rt_scanStaticData( scanFn scan ) |
157 { | 159 { |
158 version( Win32 ) | 160 version( Win32 ) |
159 { | 161 { |
160 scan( &_xi_a, &_end ); | 162 scan( &Data_Start, &Data_End ); |
161 } | 163 } |
162 else version( linux ) | 164 else version( linux ) |
163 { | 165 { |
164 //printf("scanning static data from %p to %p\n", &__data_start, &_end); | 166 //printf("scanning static data from %p to %p\n", &Data_Start, &Data_End); |
165 scan( &__data_start, &_end ); | 167 scan( &Data_Start, &Data_End ); |
166 } | 168 } |
167 else | 169 else |
168 { | 170 { |
169 static assert( false, "Operating system not supported." ); | 171 static assert( false, "Operating system not supported." ); |
170 } | 172 } |