[Mono-list] Adding Solaris/amd64 support

Andreas Färber andreas.faerber at web.de
Fri Mar 9 20:19:42 EST 2007


Hi Paolo and Miguel:

> I just checked and
> you could try to add:
> #define MONO_ARCH_NOMAP32BIT 1
> to the top of mono/mini/mini-amd64.c or in mini-amd64.h.
> This will make the code emit the slower call sequence and hopefully  
> work
> on solaris (try without the _MAP_LOW32 hack): it seems the same is  
> done
> on freebsd.

This was a great hint! I added #define MONO_ARCH_NOMAP32BIT within  
the #ifdef sun section, as done for FreeBSD. This fixes the assertion  
failure.


If configured --with-gc=none everything is fine now, however --with- 
gc=included I get a segmentation fault:

GC Warning: Large stack limit(10485760): only scanning 8 MB
Segmentierungsfehler - Speicherabbild 'core' geschrieben

gdb refers to libgc's GC_SysVGetDataStart:

GNU gdb 6.6
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and  
you are
welcome to change it and/or distribute copies of it under certain  
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for  
details.
This GDB was configured as "i386-pc-solaris2.10"...
(gdb) run ../../Documents/Test.exe
Starting program: /export/home/andreas/Mono/mono/mono/mini/mono ../../ 
Documents/Test.exe
warning: Temporarily disabling breakpoints for unloaded shared  
library "/usr/lib/amd64/ld.so.1"
warning: Lowest section in /lib/amd64/libpthread.so.1 is .dynamic at  
00000000000000b0
[New LWP 1]
[New LWP 2]

Program received signal SIGSEGV, Segmentation fault.
0x000000000054e33e in GC_SysVGetDataStart ()

I checked the code against CVS, and the only difference I spotted was  
the signature - (int, int*) vs. (size_t, ptr_t) - but changing this  
did not make a difference. Any ideas?

Andreas


More information about the Mono-list mailing list