[Mono-dev] Building from Source Fails with mcs: Command not found (Mono-devel-list Digest, Vol 121, Issue 19) (Mono-devel-list Digest, Vol 121, Issue 20)

Cyd Haselton chaselton at gmail.com
Fri May 22 21:02:50 UTC 2015



On May 22, 2015 2:54:07 PM CDT, Cyd Haselton <chaselton at gmail.com> wrote:
>
>
>On May 22, 2015 8:35:15 AM CDT, Dan Liew <dan at su-root.co.uk> wrote:
>>On 22 May 2015 at 14:21, Cyd Haselton <chaselton at gmail.com> wrote:
>>>
>>>
>>> On May 22, 2015 7:34:16 AM CDT, Jo Shields <directhex at apebox.org>
>>wrote:
>>>>
>>>>
>>>>On 22/05/15 01:16, cyd wrote:
>>>>> Let me back up a few steps before I start troublehooting this.
>>>>>
>>>>> Does the monolite build of mono 4.0 support ARM...specifically
>>ARMv7?
>>>> If
>>>>> so, are there any modifications I need to make before running
>'make
>>>>&& make
>>>>> install?'
>>>>
>>>>Monolite is CPU-agnostic. It's just bytecode. Mono 4 supports ARMv7,
>>so
>>>>the question is what instructions are triggering SIGILL
>>>>_______________________________________________
>>>>Mono-devel-list mailing list
>>>>Mono-devel-list at lists.ximian.com
>>>>http://lists.ximian.com/mailman/listinfo/mono-devel-list
>>>
>>> Running 'strace -v -o mono.log make check', then 'cat mono.log |
>grep
>>-B 12 SIGILL' yields:
>>>
>>> mprotect(0x40085000, 4096, PROT_READ)   = 0
>>> getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024,
>rlim_max=RLIM_INFINITY})
>>= 0
>>> gettid()                                = 10243
>>> syscall_983045(0x40086f24, 0xffffffb8, 0, 0x40086f24, 0x40087154, 0,
>>0xbeaec0d0, 0xf0005, 0x4008715c, 0xbe2ed000, 0, 0, 0, 0xbeaec070,
>>0x4007e254, 0x4007eaa4, 0x60000010, 0x40086f24, 0, 0, 0xc764, 0, 0, 0,
>>0, 0, 0, 0, 0, 0, 0, 0) = 0
>>> mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
>0,
>>0) = 0x40089000madvise(0x40089000, 8192, 0xc /* MADV_??? */) = -1
>>EINVAL (Invalid argument)
>>> sigaltstack({ss_sp=0x40089000, ss_flags=0, ss_size=8192}, NULL) = 0
>>> sigaction(SIGABRT, {0x40076a71, [], SA_STACK|SA_RESTART|SA_SIGINFO},
>>NULL, 0x1dd9028) = 0
>>> sigaction(SIGBUS, {0x40076a71, [], SA_STACK|SA_RESTART|SA_SIGINFO},
>>NULL, 0x1dd9028) = 0
>>> sigaction(SIGFPE, {0x40076a71, [], SA_STACK|SA_RESTART|SA_SIGINFO},
>>NULL, 0x1dd9028) = 0
>>> sigaction(SIGILL, {0x40076a71, [], SA_STACK|SA_RESTART|SA_SIGINFO},
>>NULL, 0x1dd9028) = 0
>>>
>>> I have zero experience reading straces but if I had to guess it
>looks
>>like a function is making an invalid memory call.
>>
>>Isn't the sigaction there setting up the signal handler for SIGILL? If
>>so this is probably the wrong part to be looking at. I'm slightly
>>confused by the sigaction written here because it's taking four
>>arguments but sigaction only takes three (I'm not great at reading the
>>output of strace either).
>>
>>Another way to debug this is run the program under gdb and make sure
>>you set it up to intercept SIGILL. When gdb catches SIGILL you can
>>walk through the stack and also examine the assembly to see if
>>anything looks suspect to you.
>
>Hopefully this helps clarify the problem...it's the portion of logcat
>during the illegal instruction.
>
>I'd really rather not have to port gdb
>
>I(  317)     #00  pc 001756e4 
>/data/data/jackpal.androidterm/kbox2/bld/mono/mono-4.0.0/mono/mini/mono-sgen
>(method_commands_internal+5588)  (DEBUG)
>
>I(  317)          bee727ac  00392ebc 
>/data/data/jackpal.androidterm/kbox2/bld/mono/mono-4.0.0/mono/mini/mono-sgen
>(do_rehash+336)  (DEBUG)
>
>I(  317)          bee727dc  0019f0e4 
>/data/data/jackpal.androidterm/kbox2/bld/mono/mono-4.0.0/mono/mini/mono-sgen
>(mono_arch_emit_prolog+2632)  (DEBUG)
>
>I(  317)     00008000-00451000 r-x
>/data/data/jackpal.androidterm/kbox2/bld/mono/mono-4.0.0/mono/mini/mono-sgen
> (DEBUG)
>
>I(  317)     00458000-0045f000 rwx
>/data/data/jackpal.androidterm/kbox2/bld/mono/mono-4.0.0/mono/mini/mono-sgen
> (DEBUG)

UPDATE:

Based on the above, I tried building with --with-sgen=no.  Unfortunately make fails early with the following errors:

dyn_load.c: In function 'GC_FirstDLOpenedLinkMap':
dyn_load.c:527:63: error: dereferencing pointer to incomplete type
                         = ((struct r_debug *)(dp->d_un.d_ptr))->r_map;
                                                               ^
dyn_load.c:528:48: error: dereferencing pointer to incomplete type
                 if( lm != 0 ) cachedResult = lm->l_next; /* might be NIL */
                                                ^
dyn_load.c: In function 'GC_register_dynamic_libraries':
dyn_load.c:549:45: error: dereferencing pointer to incomplete type
        lm != (struct link_map *) 0;  lm = lm->l_next)
                                             ^
dyn_load.c:557:30: error: dereferencing pointer to incomplete type
         e = (ElfW(Ehdr) *) lm->l_addr;
                              ^
dyn_load.c:562:37: error: dereferencing pointer to incomplete type
         offset = ((unsigned long)(lm->l_addr));
                                     ^
-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.


More information about the Mono-devel-list mailing list