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