<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.E-MailFormatvorlage17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.E-MailFormatvorlage18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='color:#1F497D'>Hi all,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'>I found out that the default optimization level –O2 which is set if CFLAGS is not used breaks Mono (in my configuration), which results in the behavior below.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'>Without, at least my first hello world test works on my device, I will continue with more tests.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'>Currently I do not know the reason, maybe it is some ARM related code that did not work for ARMv4 (arm920t), misconfiguration on my side or the old vendor toolchain (gcc version 3.4.1).<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'>I will keep you informed and thanks for your answers. Would be great to get some more tips about this issue.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'>Best regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'>Dennis Krzyzaniak<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:DE'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif";mso-fareast-language:DE'> mono-devel-list-bounces@lists.ximian.com [mailto:mono-devel-list-bounces@lists.ximian.com] <b>Im Auftrag von </b>Dennis Krzyzaniak<br><b>Gesendet:</b> Freitag, 1. Juni 2012 12:30<br><b>An:</b> mono-devel-list@lists.ximian.com<br><b>Betreff:</b> [Mono-dev] Mono runtime on ARM920t with many assertions<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span lang=EN-US>Hi all,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I am trying to get Mono running on a spider III device including an ARM920t processor with Linux as OS.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>/host $ uname -a<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Linux Spider-III 2.6.17.3-axo-s07.2 #1425 Fri Jul 25 10:59:30 CEST 2008 armv4tl unknown<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>When I try to invoke a simple hello_world.exe I get 399 assertions in eglib (always the same asserts):<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>/host $ ./mono hello_world.exe<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>…<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The ‘Hello World’ is also displayed:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>../../../../eglib/src/ghashtable.c:236: assertion 'hash != NULL' failed<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>Hello World../../../../eglib/src/ghashtable.c:293: assertion 'hash != NULL' failed<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>…<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>The hello world code:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>using System;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>namespace foobar {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   public class foo {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>      public static void Main(string[] args) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>         Console.WriteLine("Hello World");<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>      }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   }<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I am absolutely new to Mono and completely lost with this behavior. Maybe someone knows the reason or can point me to a direction to find the issue?<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>I attached a trace (./mono –trace hello_world.exe), maybe this helps? The trace is cut to fit into this mail, please let me know if a full trace is needed.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>I am using the debian source package of Mono 2_10_8.1-1 because in the official release a unittest fails.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>To get Mono build with the ‘old’ ARM  toolchain provided by the vendor I made a few changes in the project please see below. <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>I am calling configure with the following parameters:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>configure  --build=i686-pc-linux-gnu --host=arm-axotec-linux-gnu LD=arm-axotec-linux-gnu-ld OBJDUMP=arm-axotec-linux-gnu-objdump --prefix=/host --disable-mcs-build --srcdir=../..<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>configure.in:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl BEGIN Conworx Spider III ARMv4t settings<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl there are already arm-*-linux* settings below but the place is to late, checks which<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl tested before fails. So I added my specific stuff here without changing the old<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl settings.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+if test "x$host" = "xarm-axotec-linux-gnu"; then<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl looks like this are all needed settings, the rest is redundant.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  TARGET=ARM;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  cross_compiling=yes<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl which defines are needed? just copied some<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -D_GNU_SOURCE -D_REENTRANT -DARM_FPU_NONE -D__ARM_EABI__"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT -DARM_FPU_NONE -mcpu=arm920t -D__ARM_ARCH_4__"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  CPPFLAGS="$CPPFLAGS -DNO_THUMB2_INSTRUCTIONS"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  arch_target=arm;<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  ACCESS_UNALIGNED="no"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  JIT_SUPPORTED=yes<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  jit_wanted=true<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  sgen_supported=true<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl Can't use tls, since it depends on the runtime detection of tls offsets<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl  in mono-compiler.h<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  libgc_threads=pthreads<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  with_tls=pthread<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  use_sigposix=yes<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl Enable support for using sigaltstack for SIGSEGV and<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl stack overflow handling (TODO not sure if it works on my arm)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  with_sigaltstack=no<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl to bypass the underscore linker check, can't work when cross-compiling<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  mono_cv_uscore=yes<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl support ahead of time compilation<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  AOT_SUPPORTED="yes"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  libdl="-ldl"<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  dnl I need some define to enable my hacks oO<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+  AC_DEFINE(PLATFORM_AXOTEC_LINUX,1,[Targeting axotec linux on arm920t])<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+fi<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>+# Added LT_OUTPUT to generate libtool script by config.lt before calling it.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+LT_OUTPUT<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>export_ldflags=`(./libtool --config; echo eval echo <a href="file:///\\$export_dynamic_flag_spec">\\$export_dynamic_flag_spec</a>) | sh`<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>AC_SUBST(export_ldflags)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl the check for cross compiling is included in the mono release but removed<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl in the debian source package because for the debian distribution no cross<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+dnl compiling is used.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+if test ${TARGET} = ARM  && test x$cross_compiling = xno; then<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   dnl ******************************************<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   dnl *** Check to see what FPU is available ***<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   dnl ******************************************<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>mono/metadata/sgen-archdep.h:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>/* We dont store ip, sp */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#define ARCH_NUM_REGS 14<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+/* arm920t does not support thumb2 instructions */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+#if !defined (NO_THUMB2_INSTRUCTIONS)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+/* THUMB2 instuctions */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>#define ARCH_STORE_REGS(ptr)    \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   __asm__ __volatile__(         \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>      "push {lr}\n"           \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>@@ -145,6 +148,17 @@<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>      :                    \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>      : "r" (ptr)             \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   )<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+#else /* NO_THUMB2_INSTRUCTIONS */<o:p></o:p></span></p><p class=MsoNormal>+/* ARM instuctions */<o:p></o:p></p><p class=MsoNormal><span lang=EN-US>+#define ARCH_STORE_REGS(ptr) \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   __asm__ __volatile__( \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+         "stmfd sp!, {lr}\n" \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+         "mov lr, %0\n" \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+         "stmia lr!, {r0-r12}\n" \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+         "ldmfd sp!, {lr}\n" \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+         : \<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+         : "r" (ptr))<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+#endif /* NO_THUMB2_INSTRUCTIONS */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>mono/mini/jit-icalls.c:<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>#if defined(__arm__) && MONO_ARCH_SOFT_FLOAT<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+#if defined (PLATFORM_AXOTEC_LINUX)<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+   /* ULLONG_MAX is not defined, just define here the max size of an unsigend<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+    * long long int. */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+#ifndef ULLONG_MAX<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+#define ULLONG_MAX   18446744073709551615ULL<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+#endif /* !ULLONG_MAX */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>+#endif /* PLATFORM_AXOTEC_LINUX */<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>   if (isnan (v) || !(v >= -0.5 && v <= ULLONG_MAX+0.5)) {<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US>      mono_raise_exception (mono_get_exception_overflow ());<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Would be great to get some help!<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal>Best regards,<o:p></o:p></p><p class=MsoNormal>Dennis Krzyzaniak<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>