[Mono-devel-list] mono-1.0b2, Solaris x86

Guenter Feldmann fld at informatik.uni-bremen.de
Fri Jun 11 13:28:45 EDT 2004


Hi Paolo,

again thanks for your help. I think I'm very close now:

	->mono.make test
	Testing array-init.exe... pass.
	[ ... ]
	Testing even-odd.exe... pass.
	174 test(s) passed. 2 test(s) failed.

	Failed tests:

	appdomain-unload.exe
	delegate1.exe

	->

I tested it with Solaris9 on a Pentium III computer and with 
Solaris10 on an AMD Athlon-64 machine. The results are the same
on both systems. 

'make rcheck' in mono/mini hangs at the following position:

	[ ... ]
	Test run: image=/home/src/unix/mono/beta2/mono-0.95/mono/mini/iltests.exe, 		
opts=peephole,branch,inline,consprop,copyprop,deadce,linears,intrins,loop,abcrem
	Results: total tests: 17, failed: 0, cfailed: 0 (pass: 100.00%)
	Elapsed time: 0.007355 secs (0.000545, 0.006810), Code size: 564

	Test run: image=/home/src/unix/mono/beta2/mono-0.95/mono/mini/exceptions.exe, 
opts=

	Unhandled Exception: System.OverflowException: Number overflow.
	in (unmanaged) (wrapper managed-to-native) 	
System.Object:__icall_wrapper___emul_fconv_to_ovf_i8 (double)
	in <0x00004> (wrapper managed-to-native) 	
System.Object:__icall_wrapper___emul_fconv_to_ovf_i8 (double)
	in <0x00457> Tests:test_0_int_cast ()

Any further hints?


The current diffs look as follows:

*** mini-x86.h.orig     Wed Jun  2 21:35:16 2004
--- mini-x86.h  Fri Jun 11 17:41:51 2004
***************
*** 43,48 ****
--- 43,76 ----

  #endif /* PLATFORM_WIN32 */

+ #ifdef sun    // Solaris x86
+ #  undef SIGSEGV_ON_ALTSTACK
+ #  define MONO_ARCH_USE_SIGACTION 1
+ struct sigcontext {
+         unsigned short gs, __gsh;
+         unsigned short fs, __fsh;
+         unsigned short es, __esh;
+         unsigned short ds, __dsh;
+         unsigned long edi;
+         unsigned long esi;
+         unsigned long ebp;
+         unsigned long esp;
+         unsigned long ebx;
+         unsigned long edx;
+         unsigned long ecx;
+         unsigned long eax;
+         unsigned long trapno;
+         unsigned long err;
+         unsigned long eip;
+         unsigned short cs, __csh;
+         unsigned long eflags;
+         unsigned long esp_at_signal;
+         unsigned short ss, __ssh;
+         unsigned long fpstate[95];
+       unsigned long filler[5];
+ };
+ #endif  // sun, Solaris x86
+
  /* Enables OP_LSHL, OP_LSHL_IMM, OP_LSHR, OP_LSHR_IMM, OP_LSHR_UN, 
OP_LSHR_UN_IMM */
  #define MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS

*** mini-x86.c.orig     Thu Jun  3 12:07:25 2004
--- mini-x86.c  Wed Jun  9 14:47:31 2004
***************
*** 3733,3743 ****
--- 3733,3748 ----
  #else
  #ifdef HAVE_PTHREAD_ATTR_GET_NP
                pthread_attr_get_np( self, &attr );
+ #elif defined(sun)
+               pthread_attr_init( &attr );
+               pthread_attr_getstacksize( &attr, &stsize );
  #else
  #error "Not implemented"
  #endif
  #endif
+ #ifndef sun
                pthread_attr_getstack( &attr, &staddr, &stsize );
+ #endif
        }

        /*
*** mini.c.orig Wed Jun  2 21:28:36 2004
--- mini.c      Fri Jun 11 18:12:04 2004
***************
*** 12,17 ****
--- 12,21 ----
  #include <signal.h>
  #include <unistd.h>
  #include <math.h>
+ #ifdef sun    // Solaris x86
+ # include <sys/types.h>
+ # include <sys/ucontext.h>
+ #endif

  #ifdef HAVE_VALGRIND_MEMCHECK_H
  #include <valgrind/memcheck.h>
***************
*** 8080,8085 ****
--- 8084,8093 ----
  #ifdef __sparc
  #define GET_CONTEXT \
      void *ctx = context;
+ #elif defined(sun)    // Solaris x86
+ #define GET_CONTEXT \
+     ucontext_t *uctx = context; \
+     struct sigcontext *ctx = (struct sigcontext *)&(uctx->uc_mcontext);
  #elif defined(__ppc__) || defined (__powerpc__) || defined (__s390__)
  #define GET_CONTEXT \
      void *ctx = context;


-- Guenter



More information about the Mono-devel-list mailing list