summaryrefslogtreecommitdiff
path: root/open_issues/gcc.mdwn
blob: f393c0f7550d12074337f5d50e5f592a71564513 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
[[!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:
<http://gcc.gnu.org/wiki/Garbage_collection_tuning>.)

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-11-17, based on 5be7963446247204245c954641290f0e5ce238c6 (2010-10-28) of
[[source_repositories/GCC]] and for [[source_repositories/Boehm_GC]] CVS HEAD
sources from 2010-11-16, converted to Git:
9abb37b2e581b415bb1f482085891a289c2c0be1.

[[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 against 2f78a7ce0a8d0ccd0b3142ec45da79a32fbd601d (2010-11-27).

<http://gcc.gnu.org/install/configure.html> 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.

      * `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`

  * [[`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?

  * `--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)