[[!meta copyright="Copyright © 2007, 2008, 2009, 2010 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled [[GNU Free Documentation License|/fdl]]."]]"""]] [[!tag open_issue_gcc]] Here's what's to be done for maintaining GCC. Apart from the target-specific configuration machinery, there shouldn't be any major differences within GCC between the GNU/Hurd and GNU/Linux ports, for example. Especially all the compiler magic is all the same. # [[General information|/gcc]] # [[Sources|source_repositories/gcc]] ## Boehm GC GCC includes an own variant of [[/Boehm_GC]] that is based on an upstream version, but with own patches, etc. This is used for Java. (There are patches (apparently not committed) that GCC itself can use it, too: .) Patches to GCC's fork should be contributed back to upstream [[/Boehm_GC]]. [[tschwinge]] reviewed (but only briefly for large parts) the differences on 2010-12-08, based on the [[GCC Git mirror's 8e79e9d43f32c8852f068da91d655297d92ac0f4 (2010-11-29) sources|source_repositories/GCC]] and Boehm GC's CVS HEAD sources from 2010-12-02, converted to [[Git, correspondingly 1c2455988a8f59a5f83b986b9156f03be395b3b6|source_repositories/boehm_gc]]. On 2010-11-17, [[tschwinge]] reviewed the Debian GCC Boehm GC changes, compared them to the upstream code, and put it into the local *hurd/boehm-gc/config_backport* branch, planning to submit it to gcc-patches after testing with the GCC [[testsuite]]. # Configuration Last reviewed up to the [[Git mirror's 3457702eb6f8ee22acaee881dc7f783c3aa2fa91 (2010-12-08) sources|source_repositories/gcc]]. has documentation for the `configure` switches. * Configure fragments that have `*linux*` cases might/should often contain those for us (and GNU/k*BSD) as well. * `configure.ac` * `libgcc/configure.ac` [might need](http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00315.html) to be aligned for us to the `*linux*` cases. As well as at the end of `libgcc/config.host`. Check. checking whether decimal floating point is supported... no checking whether fixed-point is supported... no * `libgomp/configure.tgt` * Etc. * [[`libmudflap`|libmudflap]]. * Might [`-fsplit-stack`](http://nickclifton.livejournal.com/6889.html) be worthwhile w.r.t. our multithreaded libraries? * , * `--enable-languages=[...]` * GNAT is not yet ported / bootstrapped? * The Google Go's libgo (introduced in e440a3286bc89368b8d3a8fd6accd47191790bf2 (2010-12-03)) apparently needs OS configuration / support. * `--enable-frame-pointer` `gcc/configure.ac`: `enable_frame_pointer=no` * `--with-dwarf2`? * `--enable-werror` * `--enable-checking` * `--enable-build-with-cxx` * `--enable-decimal-float`, `--enable-fixed-point`, `--with-long-double-128` `configure: WARNING: decimal float is not supported for this target, ignored` * `--enable-linker-build-id` * `--enable-gnu-unique-object` * `--enable-lto`, `--enable-gold` [[binutils_gold]] * `--enable-indirect-function` [[IFUNC]] # [[Testsuite]] # TODO Debian's GCC package has Hurd-specific patches. Some have been forwarded upstream (and have been ignored). [[Thomas_Schwinge|tschwinge]] is working on getting them integrated. * [\[meta-bug\] bootstrap bugs for \*-gnu\*](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21824) * [build system: gcc\_cv\_libc\_provides\_ssp and NATIVE\_SYSTEM\_HEADER\_DIR](http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html) * [-fstack-protector shouldn't use TLS in freestanding mode](http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29838) * [Tool chain configuration: GNU/\* sharing stuff with GNU/Linux](http://gcc.gnu.org/ml/gcc/2007-11/msg00289.html)