Differences between revisions 135 and 136
Revision 135 as of 2011-05-26 19:30:16
Size: 10297
Comment:
Revision 136 as of 2013-05-24 14:38:32
Size: 10130
Comment: partial update
Deletions are marked like this. Additions are marked like this.
Line 22: Line 22:
  * [optional] build a sid chroot
  * add the following to {{{/etc/apt/sources.list}}}: {{{deb http://people.debian.org/~smarenka/m68k/cross-compilers ./}}}
  * {{{apt-get update && apt-get install gcc-4.3-m68k-linux-gnu}}}
  * … or …
  * build a sid chroot for amd64 (or request from ThorstenGlaser to add binaries for your architecture)
  * build a wheezy chroot for amd64 (or request from ThorstenGlaser to add binaries for your architecture)
Line 28: Line 24:
  * the package is called {{{gcc-4.4-m68k-linux-gnu}}} here; I try to keep the entire toolchain the exact same versions we use natively (i.e. from sid)   * the package is called {{{gcc-4.6-m68k-linux-gnu}}} here; I try to keep the entire toolchain the exact same versions we use natively (i.e. from sid)
  * A metapackage {{{gcc-m68k-linux-gnu}}} (also cpp, g++) is available

This page tracks current issues with GCC for M68k/Porting. User support and buildd admins can be found at debian-68k@lists.debian.org .

  • gcc-4.4 with TLS backport is now the default
  • works rather well
  • builds from unmodified Debian unstable sources (thanks doko!)
  • TLS capable eglibc in Debian unstable (thanks Aurélien!)
  • next version will be gcc-4.6 (we will skip gcc-4.5 and it will not be released with wheezy according to doko)
  • gcc-4.3 (and older) have been removed from Debian unstable already (by April 2011)

m68k usertags

binNMUs

Cross-Compilers

  • build a wheezy chroot for amd64 (or request from ThorstenGlaser to add binaries for your architecture)

  • deb https://www.freewrt.org/~tg/debs68k/ cross main (use http or install apt-transport-https package)

  • the package is called gcc-4.6-m68k-linux-gnu here; I try to keep the entire toolchain the exact same versions we use natively (i.e. from sid)

  • A metapackage gcc-m68k-linux-gnu (also cpp, g++) is available

  • overview of packages in that repo

  • These are built according to BuildingCrossCompilers

Building Cross-Compilers

obsolete?

The information below is probably mostly obsolete

Bugs

Gathering the bugs in gcc-4.3_4.3.1-8.

ice in find_reloads

  • hdf5
    • found in gcc 4.3.1-8
    • found in cross compiler
    • confirmed in 4.3.4-10+m68k from unreleased (tg@)
    • hit in kernel compile (btrfs) XXX why do we not use CONFIG_FRAME_POINTER?
    • test case

    • gnu pr 37052

    • bug #

testreloads.c:207: error: unable to generate reloads for:
(insn:QI 631 629 632 41 testreloads.c:94 (parallel [
            (set (cc0)
                (compare (reg/v:DI 0 %d0 [orig:117 j ] [117])
                    (reg:DI 4 %d4 [orig:115 pretmp.69 ] [115])))
            (clobber (reg:DI 273))
        ]) 12 {*m68k.md:521} (expr_list:REG_UNUSED (reg:DI 273)
        (nil)))
testreloads.c:207: internal compiler error: in find_reloads, at reload.c:3744

related?

  • ffmpeg-debian
    • found in gcc-4.3_4.3.1-2

avidec.c:606: error: unable to generate reloads for:
(insn:QI 1388 1785 1389 174 /build/buildd/ffmpeg-debian-0.svn20080206/libavformat/avidec.c:211 (parallel [
            (set (cc0)
                (compare (reg:DI 10 %a2 [orig:62 pretmp.702 ] [62])
                    (reg:DI 4 %d4 [430])))
            (clobber (reg:DI 431))
        ]) 12 {*m68k.md:521} (expr_list:REG_UNUSED (reg:DI 431)
        (nil)))
avidec.c:606: internal compiler error: in find_reloads, at reload.c:3744
  • ffmpeg-free
    • found in gcc-4.3_4.3.0-3

avidec.c:606: error: unable to generate reloads for:
(insn:QI 1388 1785 1389 174 avidec.c:211 (parallel [
            (set (cc0)
                (compare (reg:DI 10 %a2 [orig:62 pretmp.702 ] [62])
                    (reg:DI 4 %d4 [430])))
            (clobber (reg:DI 431))
        ]) 12 {*m68k.md:521} (expr_list:REG_UNUSED (reg:DI 431)
        (nil)))
avidec.c:606: internal compiler error: in find_reloads, at reload.c:3744
  • llvm
    • found in gcc-4.3_4.3.0-3
    • different than above, although same area

InstructionCombining.cpp:9187: error: unable to generate reloads for:
(insn:QI 1193 1192 1194 210 InstructionCombining.cpp:8939 (parallel [
            (set (cc0)
                (compare (reg:DI 0 %d0)
                    (reg:DI 4 %d4 [499])))
            (clobber (reg:DI 501))
        ]) 12 {*m68k.md:521} (expr_list:REG_DEAD (reg:DI 0 %d0)
        (expr_list:REG_UNUSED (reg:DI 501)
            (nil))))
InstructionCombining.cpp:9187: internal compiler error: in find_reloads, at reload.c:3744

ice in reload_cse_simplify_operands

  • r-base
    • found in gcc-4.3_4.3.1-8
    • found in cross-compiler
    • test case

    • gnu pr 37053

    • bug #

postreload.c:886: error: insn does not satisfy its constraints:
(insn 309 2675 2677 36 postreload.c:446 (set (reg:SI 0 %d0)
        (plus:SI (mem/f:SI (reg:SI 8 %a0) [0 S4 A16])
            (reg:SI 0 %d0))) 132 {*addsi3_internal} (nil))
postreload.c:886: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395
  • pymol
    • found in gcc-4.3_4.3.1-8

Selector.c:3225: error: insn does not satisfy its constraints:
(insn 276 502 504 38 layer3/Selector.c:3213 (set (reg:SI 0 %d0)
        (plus:SI (mem/f:SI (reg:SI 8 %a0) [0 S4 A16])
            (reg:SI 0 %d0))) 132 {*addsi3_internal} (nil))
layer3/Selector.c:3225: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395

related?

  • gnudatalanguage
    • found in gcc-4.3_4.3.1-8

{{{convol.cpp:127: error: insn does not satisfy its constraints: (insn 1771 4339 1772 331 convol_inc1.cpp:355 (set (reg:HI 0 %d0 [orig:675+2 ] [675])

  • (mult:HI (mem:HI (reg:SI 9 %a1) [304 S2 A16])
    • (reg:HI 0 %d0 [orig:673+2 ] [673]))) 178 {mulhi3} (nil))

convol.cpp:127: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395 }}}

  • meep
    • found in gcc-4.3_4.3.1-8

{{{../../../src/boundaries.cpp:441: error: insn does not satisfy its constraints: (insn 1749 3315 3317 237 ../../../src/boundaries.cpp:427 (set (reg:SI 6 %d6)

  • (plus:SI (mem/s/f:SI (reg:SI 9 %a1) [68 <variable>.P S4 A8])

    • (reg:SI 6 %d6))) 132 {*addsi3_internal} (nil))

../../../src/boundaries.cpp:441: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395 Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.3/README.Bugs> for instructions. }}}

  • courier
    • found in gcc-4.3_4.3.0-3
    • utf7.c:229: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395

  • gnome-keyring
    • found in gcc-4.3_4.3.1-2
    • gkr-crypto.c:151: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395

  • insighttoolkit
    • found in gcc-4.3_4.3.1-8
    • jdsample.c:141: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395

  • osptoolkit
    • sptransapi.c:121: internal compiler error: in reload_cse_simplify_operands, at postreload.c:395

ice Segmentation fault: Reconfirm with -8

  • gnome-settings-daemon
    • found in gcc-4.3_4.3.0-3
    • gsd-xmodmap.c:397: internal compiler error: Segmentation fault

  • oolite
    • found in gcc-4.3_4.3.1-2
    • PlayerEntity Additions.m:1882: internal compiler error: Segmentation fault

  • opencv
    • found in gcc-4.3_4.3.1-2
    • cvfundam.cpp:311: internal compiler error: Segmentation fault

  • gmfsk
    • internal compiler error: Segmentation fault

  • gpc-4.1
    • rtsc.pas:430: internal compiler error: Segmentation fault

Other

  • simutrans
    • found in gcc-4.3_4.3.1-8
    • route.cc:520: internal compiler error: in subreg_get_info, at rtlanal.c:3185

Reconfirm w/ -8

  • compiz
    • found in gcc-4.3_4.3.0-3
    • decorator.moc.cpp:130: internal compiler error: in value_format, at dwarf2out.c:7015

  • iceowl
    • found in gcc-4.3_4.3.0-3
    • error: asm-specifier for variable ¿result¿ conflicts with asm clobber list

  • linux-2.6
    • found in gcc-4.3
  • genesis
    • found in gcc-4.3_4.3.0-3
    • hines_chip.c:595: internal compiler error: in reg_overlap_mentioned_for_reload_p, at reload.c:6525

  • gforth
    • ./engine.c:340: error: unable to find a register to spill in class ADDR_REGS

  • libgnupdf
    • ccZe2Dva.s:1523: Error: operands mismatch -- statement `rol.w #0,%d2' ignored

  • openvrml
    • Internal error: Killed (program cc1plus)

  • washngo_2.12-1
    • Internal error: Killed (program cc1)

Old glibc vs. gcc-4.3

Per http://lists.debian.org/debian-68k/2008/04/msg00033.html

The glibc support for the C99 inline semantics was added in glibc 2.6 and all the non-TLS support was removed. GCC 4.3 and later use C99 inline semantics in -std=gnu99 mode

This was resolved with -5 (although the first GCC we managed to build was -8). -std=gnu99 mode can now be used without any issue.

gcc-4.x bugs

upstream

Compiler status

  • We don't have an Ada or D compiler at the moment since both compilers require special bootstrapping which has never been done. Michael Casadevall has been been able to build the Ada cross-compiler, but hasn't successfully bootstrapped the native compiler; Thorsten Glaser has discovered that the System'Address type must be coerced into %a0 instead of %d0 by GCC, so the ball is now in the hands of the GCC/GNAT developers
  • D will probably require similar work done for it.