Port-amiga archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: GCC8 v.s. amiga



Hi Rin!

Thanks for your detailed answer.

On 6/8/20 2:52 AM, Rin Okuyama wrote:
> Hi. Sorry for the late reply. Some updates:
> 
> On 2020/06/04 19:06, Rin Okuyama wrote:
>> For my Amiga A1200 with 68060, kernel built by GCC8 does not work.
>> It randomly crashes, and I could not enter DDB nor even obtain
>> backtrace; it suddenly freezes.
> 
> I forgot to note an important information: ``randomly'' here means when
> kernel freezes is almost unpredictable. Some time, it crashes just after
> exec /sbin/init, but other time, it freezes after survival of 12 hours in
> multiuser with heavy load!
> 
> When kern_tc.o is built by GCC7, I've never observed such a freeze.
> Uptime exceeds few days at least.
> 
> This is why everything takes a loooong time ;).

OK.

> On 2020/06/04 19:11, John Paul Adrian Glaubitz wrote:
>> Do you have the possibility to test GCC 10? The m68k backend has been
>> partially rewritten for version 10 which has fixed some bugs in the
>> code generation.
> 
> Yeah, I donated that campaign a little :).

Thanks.

>> At least on Debian, the kernel built with GCC 10 boots fine on my
>> Amiga 4000 and qemu-m68k.
> 
> Unfortunately, GCC10 (and also 9 and 8) crashes by ICE when building our
> kernel:
> 
> | #   compile  A1200/kern_tc.o
> | ...
> | during RTL pass: expand
> | In file included from ../../../../sys/param.h:145,
> |                  from ../../../../kern/kern_tc.c:49:
> | ../../../../sys/time.h: In function 'tc_windup':
> | ../../../../sys/time.h:113:11: internal compiler error: Segmentation fault
> |   113 |  bt->frac += x;
> |       |           ^~
> | 0xe76208 crash_signal
> |         /build/work/gcc-10.1.0/gcc/toplev.c:328
> | Please submit a full bug report,
> | ...
> 
> cf.: https://nxr.netbsd.org/xref/src/sys/sys/time.h#113
> 
> I guess why Linux builds and ours does not is:
> 
> (1) Linux #undef STRICT_ALIGNMENT and friends, but we do not
> (2) We #define BIGGEST_ALIGNMENT 64, but Linux does not
> 
> For GCC in our local tree, we worked around for this:
> 
> http://cvsweb.netbsd.org/bsdweb.cgi/src/external/gpl3/gcc/dist/gcc/expr.c#rev1.2
> 
> | Module Name:    src
> | Committed By:    chs
> | Date:        Sun Oct  9 21:17:34 UTC 2011
> |
> | Modified Files:
> |     src/external/gpl3/gcc/dist/gcc: expr.c
> |
> | Log Message:
> | in emit_push_insn(), ignore alignment if we don't have a type.
> | works around a gcc ICE on m68k.  from mrg.
> |
> | To generate a diff of this commit:
> | cvs rdiff -u -r1.1.1.1 -r1.2 src/external/gpl3/gcc/dist/gcc/expr.c
> 
> If this patch applied, GCC10 does build our kernel, but
> 
> (a) Kernel built by GCC8 with kern_tc.o replaced by that with GCC10
> ---> eventually crashes as before
> 
> (b) Entire kernel built by GCC10
> ---> does not boot singleuser

Could you please report these issues upstream?

Thanks,
Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz%debian.org@localhost
`. `'   Freie Universitaet Berlin - glaubitz%physik.fu-berlin.de@localhost
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913


Home | Main Index | Thread Index | Old Index