Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Oct 2015 14:26:17 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Mattia Rossi <mattia.rossi.mailinglists@gmail.com>
Cc:        Ian Lepore <ian@freebsd.org>, freebsd-arm <freebsd-arm@freebsd.org>
Subject:   Re: CC core dumping with CLANG 3.7 on armv5 - DREAMPLUG
Message-ID:  <20151026122617.GR2257@kib.kiev.ua>
In-Reply-To: <562DF1DD.5040408@gmail.com>
References:  <5626144F.9060003@gmail.com> <5628873F.7050509@gmail.com> <20151022081551.GB2257@kib.kiev.ua> <5628B0B0.8040804@gmail.com> <20151022111407.GD2257@kib.kiev.ua> <5628D958.4060904@gmail.com> <5628D9F8.8040206@gmail.com> <1445625017.91534.31.camel@freebsd.org> <562DF1DD.5040408@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Oct 26, 2015 at 10:26:53AM +0100, Mattia Rossi wrote:
> 
> 
> Am 23.10.2015 um 20:30 schrieb Ian Lepore:
> > On Thu, 2015-10-22 at 14:43 +0200, Mattia Rossi wrote:
> >> Am 22.10.2015 um 14:40 schrieb Mattia Rossi:
> >>>
> >>> Am 22.10.2015 um 13:14 schrieb Konstantin Belousov:
> >>>> On Thu, Oct 22, 2015 at 11:47:28AM +0200, Mattia Rossi wrote:
> >>>>>> You may disassemble the instruction at the address, and print
> >>>>>> the
> >>>>>> content
> >>>>>> of registers:
> >>>>>> (gdb) disassemble *0x01eb0868-8,0x01eb0868+8
> >>>>>> (gdb) info registers
> >>>>>>
> >>>>>> If the cause of your issue is weird codegeneration on ARMv5,
> >>>>>> it
> >>>>>> might be
> >>>>>> seen from the data above.  On the other hand, this would not
> >>>>>> help
> >>>>>> if the
> >>>>>> issue is algorithmic.  I am afraid there is not much more to
> >>>>>> suggest.
> >>>>> (gdb) disassemble *0x01eb0868-8,0x01eb0868+8
> >>>>> No function contains specified address.
> >>>> Apparently correct syntax is
> >>>> disassemble 0x01eb0868-8 0x01eb0868+8
> >>> (gdb) bt
> >>> #0  0x01eb0868 in ?? ()
> >>> (gdb) disassemble 0x01eb0868-8 0x01eb0868+8
> >>> Dump of assembler code from 0x1eb0860 to 0x1eb0870:
> >>> 0x01eb0860:     add     r12, r12, #1    ; 0x1
> >>> 0x01eb0864:     and     r7, r0, r3
> >>> 0x01eb0868:     ldr     r1, [r10, r7, lsl #2]
> >>> 0x01eb086c:     cmp     r1, #0  ; 0x0
> >>> End of assembler dump.
> >>> (gdb) info registers
> >>> r0             0x1e53b  124219
> >>> r1             0x6a     106
> >>> r2             0xc3c3c3c6       -1010580538
> >>> r3             0x5a5a5a59       1515870809
> >>> r4             0x3      3
> >>> r5             0x1fd9f83        33398659
> >>> r6             0x1e53b  124219
> >>> r7             0x4019   16409
> >>> r8             0x22a1708c       581005452
> >>> r9             0xffffffff       -1
> >>> r10            0x5a5a5a5a       1515870810
> >>> r11            0xbfbfeb70       -1077941392
> >>> r12            0x1      1
> >>> sp             0xbfbfeb48       -1077941432
> >>> lr             0x8f5c   36700
> >>> pc             0x1eb0868        32180328
> >>> fps            0x0      0
> >>> cpsr           0x60000010       1610612752
> >>> (gdb)
> >>>
> >>> Still I can't tell anything from that :-/ - way too low level for
> >>> me
> >> Btw. I'm currently using a helloworld program for testing:
> >>
> >> root@dreamplug:~ # cat helloworld.c
> >> /* Hello World program */
> >>
> >> #include<stdio.h>
> >>
> >> main()
> >> {
> >>       printf("Hello World");
> >>
> >>
> >> }
> >>
> > I think the degenerate testcase for this is just typing 'cpp', and the
> > first line of output when you do might be a clue...
> >
> > root@dpnand:/root # cpp
> > error: no handler registered for module format 'raw'
> > fatal error: error in backend: unknown module format
> > cpp: error: clang frontend command failed with exit code 70 (use -v to see invocation)
> > FreeBSD clang version 3.7.0 (tags/RELEASE_370/final 246257) 20150906
> > Target: arm--freebsd11.0-gnueabi
> > Thread model: posix
> > cpp: note: diagnostic msg: PLEASE submit a bug report to https://bugs.freebsd.org/submit/ and include the crash backtrace, preprocessed source, and associated run script.
> > cpp: note: diagnostic msg: Error generating preprocessed source(s) - ignoring input from stdin.
> > cpp: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
> >
> > With a quick glance at the code involved, that "no handler" message
> > happens when it can't find the requested module type in a container of
> > module handlers.  But the default constructor for the container
> > automatically adds the handler for 'raw' so not finding it seems
> > insane.  I don't know how to proceed from here in debugging.
> >   Unfortunately, we have no functional arm emulator (only armv6 and the
> > problem doesn't happen there) so this has to be debugged on real
> > hardware I guess.
> I'd love to do some more debugging to get this fixed. Is there a quick 
> way to just get debugging symbols in CLANG instead of having to compile 
> world with it (and running out of swap space?)

Probably something like
cd /usr/src
(cd lib/clang && make clean all DEBUG_FLAGS=-g)
(cd usr.bin/clang && make clean all DEBUG_FLAGS=-g && make install DEBUG_FLAGS=-g)

Might be, also build libc and libm with the debugging info, since clang
is linked statically, and if the problem is in base and not due to a
clang code, you would have to rebuild otherwise.

But you should not see much difference comparing with the full world
rebuild, since buildworld time is mostly the clang build time. I am not
sure that the native build is a reasonable adventure, unless you want to
stress-test the native v5 pmap.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20151026122617.GR2257>