Hello,

I am trying to add support for Solaris on amd64. So far I have needed to patch both libgc's gcconfig.h and Mono's configure script.

By default, Solaris' gcc compiles to 32-bit unless overwritten by - m64. I have therefore patched configure.in to infer the x86/amd64 architecture from the pointer size (as seen for another platform).

libgc was patched as detailed here:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21942


With or without this patch, compiled 32-bit or 64-bit, on the amd64 system I get the following warning in mono at runtime:

GC Warning: Large stack limit(10485760): only scanning 8 MB

Whereas I was not getting this warning on two non-amd64 Solaris boxes (which had 512MB RAM + 1GB swap; the AMD now has 1GB RAM + 2GB swap). Compiled 32-bit, mono appeared to work despite the warning. But just in case I have subsequently configured Mono --with-gc=none to rule out the GC.

During compilation for amd64, mono (r73669, with and without GC) then outputs the following:


TYPE: 1

** ERROR **: file mini-amd64.c: line 180 (amd64_patch): assertion failed: (amd64_is_imm32 (disp))
aborting...
Stacktrace:

Abbrechen - Speicherabbild 'core' geschrieben


This is also reproducible by executing mono/mini/mono with a hello world assembly - it happens instantly and the text varies only in the last line ("Abbrechen (core dumped)"). I've checked with "file" that mono is actually ELF 64-bit and with "ldd" that it's linked to 64-bit libraries only. To me it looks like a JIT issue?

According to bug #79271 the above assertion failure was supposed to be fixed:
http://bugzilla.ximian.com/show_bug.cgi?id=79271

Might I need to patch anything else for Solaris/amd64? Or should I reopen that bug?

Andreas

Attachment: sol_amd64.diff
Description: Binary data

_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to