Package: mono
Version: 1.2.4-4
Severity: normal
Tags: patch
User: [EMAIL PROTECTED]
Usertags: eabi

Hi,

Thanks for adding armel to arches of mono. However, mono
configure scripts picked up errenously VFP[1]:

        checking which FPU to use... VFP

This causes any mono application using floats to SIGILL, which
appears to include even HelloWorld.exe. The configure check
is broken in principle, it assumes that if binutils can compile
VFP instructions, they will run as well.

The attached patch makes fpu configurable, and uses the option
for armel arch. The patch requires running autoconf to regenerate
./configure.

The correct fix would be to default to build both softfloat and
VFP into armel build, and runtime select which one to use, but
that is above my mono current foo level.

Cheers,
Riku

[1] 
http://experimental.ftbfs.de/fetch.php?&pkg=mono&ver=1.2.4-4&arch=armel&stamp=1182425340&file=log&as=raw

-- 
"rm -rf" only sounds scary if you don't have backups
--- orig/mono-1.2.4/configure.in        2007-04-25 18:48:44.000000000 +0000
+++ mono-1.2.4/configure.in     2007-06-25 17:25:39.000000000 +0000
@@ -1880,19 +1880,24 @@
        ])
 fi
 
+AC_ARG_WITH(fpu, [ --with-fpu=FPA,VFP,NONE     Select fpu to use on 
arm],[fpu=$withval])
+
 if test ${TARGET} = ARM; then
        dnl ******************************************
        dnl *** Check to see what FPU is available ***
        dnl ******************************************
        AC_MSG_CHECKING(which FPU to use)
 
-       AC_TRY_COMPILE([], [
-               __asm__ ("ldfd f0, [r0]");
-               ], fpu=FPA, [
-                       AC_TRY_COMPILE([], [
-                               __asm__ ("fldd d0, [r0]");
-                       ], fpu=VFP, fpu=NONE)
-               ])
+       if test "x$fpu" = "x"; then
+
+               AC_TRY_COMPILE([], [
+                       __asm__ ("ldfd f0, [r0]");
+                       ], fpu=FPA, [
+                               AC_TRY_COMPILE([], [
+                                       __asm__ ("fldd d0, [r0]");
+                               ], fpu=VFP, fpu=NONE)
+                       ])
+       fi
 
        AC_MSG_RESULT($fpu)
        CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
diff -ur orig/mono-1.2.4/debian/changelog mono-1.2.4/debian/changelog
--- orig/mono-1.2.4/debian/changelog    2007-06-25 13:01:40.000000000 +0000
+++ mono-1.2.4/debian/changelog 2007-06-25 13:42:57.000000000 +0000
@@ -1,3 +1,9 @@
+mono (1.2.4-4+armel) unreleased; urgency=low
+
+  * use softfloat as default on armel
+
+ -- Riku Voipio <[EMAIL PROTECTED]>  Sun, 24 Jun 2007 21:28:18 +0000
+
 mono (1.2.4-4) unstable; urgency=low
 
   * Mirco 'meebey' Bauer:
diff -ur orig/mono-1.2.4/debian/rules mono-1.2.4/debian/rules
--- orig/mono-1.2.4/debian/rules        2007-06-25 13:01:40.000000000 +0000
+++ mono-1.2.4/debian/rules     2007-06-25 13:20:20.000000000 +0000
@@ -39,7 +39,7 @@
 else ifeq ($(DEB_BUILD_ARCH), armeb)
        CONF_FLAGS += --with-tls=pthread
 else ifeq ($(DEB_BUILD_ARCH), armel)
-       CONF_FLAGS += --with-tls=pthread
+       CONF_FLAGS += --with-tls=pthread --with-fpu=NONE
 else
        CONF_FLAGS += --with-tls=__thread
 endif

Reply via email to