[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