diff options
Diffstat (limited to 'open_issues/gcc.mdwn')
-rw-r--r-- | open_issues/gcc.mdwn | 204 |
1 files changed, 137 insertions, 67 deletions
diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn index 245bf305..a66a4ad9 100644 --- a/open_issues/gcc.mdwn +++ b/open_issues/gcc.mdwn @@ -48,11 +48,27 @@ 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. + * Check + + * 02e191ba495b4ec87aeb961ff9afdb666287104a + + * ce062771587f6637ce09f79c36e24de691032919 + + * a9cc177ef514d6eb39db72c82911fcea2cd70dba + + * 7b8d306d18986cd98808c9ed5d3a696a186dc213 + + Looks generally OK. + + * a3a3fd06ae58af9591a95c94245809b0359289ff + + Looks OK. + # Configuration -Last reviewed up to the [[Git mirror's 3457702eb6f8ee22acaee881dc7f783c3aa2fa91 -(2010-12-08) sources|source_repositories/gcc]]. +Last reviewed up to the [[Git mirror's 6aed13f1c173ef4a398e10e6dc09866dbde6b324 +(2011-07-15) sources|source_repositories/gcc]]. <http://gcc.gnu.org/install/configure.html> has documentation for the `configure` switches. @@ -62,32 +78,41 @@ Last reviewed up to the [[Git mirror's 3457702eb6f8ee22acaee881dc7f783c3aa2fa91 * `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. + * `libgomp/configure.tgt` - checking whether decimal floating point is supported... no - checking whether fixed-point is supported... no + * `libstdc++-v3/configure.host` - * `libgomp/configure.tgt` + `abi_baseline_pair` etc. setting. + + * `libstdc++-v3/config/os/gnu-linux/*` - * Etc. + Is used for all GNU systems, as per `libstdc++-v3/configure.host`. + Should rename to `gnu` to reflect this? + + * `gcc/acinclude.m4`:`gcc_GAS_FLAGS`: always pass `--32` to assembler for + x86 Linux. (Why?) * [[`libmudflap`|libmudflap]]. * Might [`-fsplit-stack`](http://nickclifton.livejournal.com/6889.html) be worthwhile w.r.t. our multithreaded libraries? - * <http://gcc.gnu.org/ml/gcc/2007-11/msg00289.html>, - <http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00672.html> + * Also see `libgcc/config/i386/morestack.S`: comments w.r.t + `TARGET_THREAD_SPLIT_STACK_OFFSET`; likely needs porting. + + As per `libgcc/config/i386/t-stack-i386`, the former file is only used for + `-fsplit-stack` support -- which is currently enabled for us in + `libgcc/config.host`, but not usable via GCC proper. + + * `gcc/config/gnu-user.h` defines `*SPLIT_STACK*` macros -- which aren't + valid for us (yet), I think. * `--enable-languages=[...]` * GNAT is not yet ported / bootstrapped? * The Google Go's libgo (introduced in - e440a3286bc89368b8d3a8fd6accd47191790bf2 (2010-12-03)) apparently needs + e440a3286bc89368b8d3a8fd6accd47191790bf2 (2010-12-03)) needs OS configuration / support. * `--enable-frame-pointer` @@ -102,11 +127,6 @@ Last reviewed up to the [[Git mirror's 3457702eb6f8ee22acaee881dc7f783c3aa2fa91 * `--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` @@ -119,12 +139,15 @@ Last reviewed up to the [[Git mirror's 3457702eb6f8ee22acaee881dc7f783c3aa2fa91 [[IFUNC]] + * <http://gcc.gnu.org/ml/gcc/2007-11/msg00289.html>, + <http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00672.html> -# TODO + * `gcc/config/t-linux` should be named `gcc/config/t-gnu-user` or + similar. Likewise for `gcc/config/i386/t-linux`. -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. + * 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) @@ -135,39 +158,60 @@ getting them integrated. * [-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) + * Check before/after Joseph changes. (Should be fine.) + + * 34618b3190c110b8926cc2b1db4b4eac95451995 + + What's this used for? (Check ML.) Ask to include i686-pc-gnu (once it is + buildable out of the box)? See also + 73905b5de0d9a086f22ded7638bb1c0ae1b91326. + + * [low, testsuite] 5c7992866145620ffd0bc75b4f23298162b2c17f + + `check_effective_target_pie` should include `*-*-gnu*`, too. + + * [high] 9b0fef97f18ed5c9f2f9a361262fbb450f2b0b53 + + Very likely needed for us, too. Patch on gcc-patches. # Build Here's a log of a GCC build run; this is from our [[Git repository's -5ac39af7792ba0dc363cc199060faf53dfa9dc1a (2010-12-08) -sources|source_repositories/gcc]], run on kepler.SCHWINGE and grubber. +726414af2443a89ffbbce3a884ac6da71dae6992 (2011-07-13) +sources|source_repositories/gcc]], run on kepler.SCHWINGE and coulomb.SCHWINGE. $ export LC_ALL=C - $ ../master/configure --prefix="$PWD".install 2>&1 | tee log_build + $ (cd ../master/ && contrib/gcc_update --touch) + $ ../master/configure --prefix="$PWD".install SHELL=/bin/dash CC=gcc-4.6 CXX=g++-4.6 2>&1 | tee log_build [...] - $ make SHELL=/bin/bash 2>&1 | tee log_build_ + $ LIBRARY_PATH=$(echo /usr/lib/i386*-gnu) make 2>&1 | tee log_build_ [...] -(kepler.SCHWINGE defaults to using /bin/sh, grubber to /bin/bash; thus -harmonized.) +Different hosts may default to different shells and compiler versions; thus +harmonized. + +Setting `LIBRARY_PATH` is needed until [[!debbug 629819]] is resolved. -On grubber, this needs roughly 24 hours, and takes up around 2.5 GiB. +This takes up around 2.6 GiB, and needs roughly 3 h on kepler.SCHWINGE, and 13 +h on coulomb.SCHWINGE. ## Analysis - $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gcc/ && cat hurd/master.build/log_build* | sed -e "s%${PWD}%[...]%g"' | sed -f open_issues/gcc/log_build-linux.sed) <(ssh grubber 'cd tmp/gcc/ && cat hurd/master.build/log_build* | sed "s%${PWD}%[...]%g"' | sed -f open_issues/gcc/log_build-hurd.sed) > open_issues/gcc/log_build-diff + $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gcc/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gcc/log_build-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gcc/ && cat hurd/master.build/log_build* | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gcc/log_build-hurd.sed) > open_issues/gcc/log_build.diff -[[log_build-diff]]. +[[log_build.diff]]. * [[`checking if gcc static flag -static works... no`|glibc_madvise_vs_static_linking]] + Addressed in Debian glibc. + * DFP + Addressed in hurd/decimal_floating_point branch. + +configure: WARNING: decimal float is not supported for this target, ignored ... and later on: @@ -182,6 +226,24 @@ On grubber, this needs roughly 24 hours, and takes up around 2.5 GiB. +checking whether decimal floating point is supported... no +configure: WARNING: decimal float is not supported for this target, ignored + * `libstdc++-v3/acinclude.m4`: ISO/IEC TR 24733 + + -checking for ISO/IEC TR 24733 ... yes + +checking for ISO/IEC TR 24733 ... no + + * `--enable-decimal-float`, `--enable-fixed-point`, `--with-long-double-128` + + `configure: WARNING: decimal float is not supported for this target, + ignored` + + * `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 + * `host-linux.c` vs. `host-default.c` * *fixincludes* stuff @@ -197,48 +259,55 @@ On grubber, this needs roughly 24 hours, and takes up around 2.5 GiB. * `-ftls-model=initial-exec -march=i486 -mtune=i686` - * `-static` vs. `dlopen` - - -checking whether a statically linked program can dlopen itself... no - +checking whether a statically linked program can dlopen itself... yes + * Missing `EOWNERDEAD`, `ENOTRECOVERABLE`. What're they used for? - * ISO/IEC TR 24733 - - -checking for ISO/IEC TR 24733 ... yes - +checking for ISO/IEC TR 24733 ... no + * `RLIMIT_VMEM`. Usage kosher? * `basic_file.cc` +basic_file.cc: In member function 'std::streamsize std::__basic_file<char>::showmanyc()': - +basic_file.cc:344:33: warning: enumeral and non-enumeral type in conditional expression [enabled by default] + +basic_file.cc:347:33: warning: enumeral and non-enumeral type in conditional expression [enabled by default] * `libtool: link: ar rc .libs/libstdc++.a [...]` - Just different order of object files, or another problem? + Just different order of object files, or another problem? TODO + + * `libobjc/encoding.c`: - * `gcc/gthr-posix.h` + libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] [...]/hurd/master/libobjc/encoding.c -c [...] + +[...]/hurd/master/libobjc/encoding.c:128:1: warning: '_darwin_rs6000_special_round_type_align' defined but not used [-Wunused-function] + * `libobjc/thr.c`: `gcc/gthr-posix.h` + + libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] [...]/hurd/master/libobjc/thr.c -c [...] +In file included from ../.././gcc/gthr-default.h:1:0, - + from [...]/hurd/libobjc/../gcc/gthr.h:162, - + from [...]/hurd/libobjc/thr.c:43: - +[...]/hurd/libobjc/../gcc/gthr-posix.h: In function '__gthread_objc_thread_set_priority': - +[...]/hurd/libobjc/../gcc/gthr-posix.h:384:41: warning: unused parameter 'priority' [-Wunused-parameter] + + from [...]/hurd/master/libobjc/../gcc/gthr.h:160, + + from [...]/hurd/master/libobjc/thr.c:45: + +[...]/hurd/master/libobjc/../gcc/gthr-posix.h: In function '__gthread_objc_thread_set_priority': + +[...]/hurd/master/libobjc/../gcc/gthr-posix.h:384:41: warning: unused parameter 'priority' [-Wunused-parameter] + + * `/proc/self/*` + + -checking for /proc/self/exe... yes + -checking for /proc/self/maps... yes + +checking for /proc/self/exe... no + +checking for /proc/self/maps... no - * `java-signal.h`, `java-signal-aux.h` + * GCJ: `java-signal.h`, `java-signal-aux.h` -config.status: linking ../../../hurd/libjava/include/i386-signal.h to include/java-signal.h -config.status: linking ../../../hurd/libjava/include/i386-signal.h to include/java-signal-aux.h +config.status: linking ../../../hurd/libjava/include/default-signal.h to include/java-signal.h +config.status: linking ../../../hurd/libjava/include/default-signal.h to include/java-signal-aux.h - * `jni_md.h` + * GCJ: `jni_md.h` -checking jni_md.h support... yes +checking jni_md.h support... configure: WARNING: no * *default library search path* - -checking for the default library search path... /lib /usr/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/local/lib + -checking for the default library search path... /lib /usr/lib /lib/i386-linux-gnu /usr/lib/i386-linux-gnu /lib/i486-linux-gnu /usr/lib/i486-linux-gnu /usr/local/lib /lib64 /usr/lib64 +checking for the default library search path... /lib /usr/lib * `./classpath/[...]/*.properties` @@ -247,17 +316,20 @@ On grubber, this needs roughly 24 hours, and takes up around 2.5 GiB. * `libjava/gnu/gcj/util/natGCInfo.cc` - +../../../hurd/libjava/gnu/gcj/util/natGCInfo.cc:440:1: warning: unused parameter 'name' [-Wunused-parameter] - +../../../hurd/libjava/gnu/gcj/util/natGCInfo.cc:446:1: warning: unused parameter 'name' [-Wunused-parameter] - +../../../hurd/libjava/gnu/gcj/util/natGCInfo.cc:452:1: warning: unused parameter 'name' [-Wunused-parameter] + libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] -c ../../../master/libjava/gnu/gcj/util/natGCInfo.cc [...] + +../../../master/libjava/gnu/gcj/util/natGCInfo.cc:440:1: warning: unused parameter 'name' [-Wunused-parameter] + +../../../master/libjava/gnu/gcj/util/natGCInfo.cc:446:1: warning: unused parameter 'name' [-Wunused-parameter] + +../../../master/libjava/gnu/gcj/util/natGCInfo.cc:452:1: warning: unused parameter 'name' [-Wunused-parameter] * `gnu/java/net/natPlainSocketImpl.cc` + libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] -c gnu/java/net/natPlainSocketImpl.cc [...] +gnu/java/net/natPlainSocketImpl.cc: In member function 'virtual jint gnu::java::net::PlainSocketImpl::available()': +gnu/java/net/natPlainSocketImpl.cc:515:27: warning: enumeral and non-enumeral type in conditional expression [enabled by default] * `gnu/java/nio/channels/natFileChannelImpl.cc` + libtool: compile: [...]/hurd/master.build/./gcc/xgcc [...] -c gnu/java/nio/channels/natFileChannelImpl.cc [...] +gnu/java/nio/channels/natFileChannelImpl.cc: In member function 'jint gnu::java::nio::channels::FileChannelImpl::available()': +gnu/java/nio/channels/natFileChannelImpl.cc:388:20: warning: enumeral and non-enumeral type in conditional expression [enabled by default] @@ -268,11 +340,6 @@ On grubber, this needs roughly 24 hours, and takes up around 2.5 GiB. Is there a pattern that GNU/Hurd hands out the files alphabetically sorted where it wouldn't need to ([[!taglink open_issue_hurd]])? - Why does the GNU Hurd's `lib_build_` repeatedly contain a long series - (several KiB) of NUL (0) characters after the 5319th column in the - `/bin/bash ./libtool --tag=CXX --mode=link [...] -o libgcj.la [...]` - command line? Is that only in the log? - * `libjvm.la`, `.libs/libjvm.so`, `libgij.la`, `.libs/libgij.so.12.0.0` `-Wl,-Bsymbolic` vs. `-Wl,-Bsymbolic-functions` @@ -280,20 +347,20 @@ On grubber, this needs roughly 24 hours, and takes up around 2.5 GiB. # Install - $ make SHELL=/bin/bash install 2>&1 | tee log_install + $ LIBRARY_PATH=$(echo /usr/lib/i386*-gnu) make install 2>&1 | tee log_install [...] -(kepler.SCHWINGE defaults to using /bin/sh, grubber to /bin/bash; thus -harmonized.) +Setting `LIBRARY_PATH` is needed until [[!debbug 629819]] is resolved. -On grubber, this needs roughly 15 minutes, and takes up around 0.7 GiB. +This takes up around 0.8 GiB, and needs roughly 5 min on kepler.SCHWINGE, and +50 min on coulomb.SCHWINGE. ## Analysis - $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gcc/ && cat hurd/master.build/log_install | sed -e "s%${PWD}%[...]%g" -e "s%i686-pc-linux-gnu%[ARCH]%g"') <(ssh grubber 'cd tmp/gcc/ && cat hurd/master.build/log_install | sed -e "s%${PWD}%[...]%g" -e "s%i686-unknown-gnu0\.3%[ARCH]%g"') > open_issues/gcc/log_install-diff + $ diff -wu <(ssh kepler.SCHWINGE 'cd tmp/source/gcc/ && cat hurd/master.build/log_install | sed -e "s%\(/media/data\)\?${PWD}%[...]%g"' | sed -f open_issues/gcc/log_install-linux.sed) <(ssh coulomb.SCHWINGE 'cd tmp/gcc/ && cat hurd/master.build/log_install | sed -e "s%\(/media/erich\)\?${PWD}%[...]%g"' | sed -f open_issues/gcc/log_install-hurd.sed) > open_issues/gcc/log_install.diff -[[log_install-diff]]. +[[log_install.diff]]. * `libtool: finish`: `ldconfig` is not run for the Hurd. @@ -306,10 +373,13 @@ On grubber, this needs roughly 15 minutes, and takes up around 0.7 GiB. <http://gcc.gnu.org/install/test.html> - $ make SHELL=/bin/bash -k check 2>&1 | tee log_check + $ LIBRARY_PATH=$(echo /usr/lib/i386*-gnu) make -k check 2>&1 | tee log_check [...] -Blocked on [[fork_mach_port_mod_refs_ekern_urefs_owerflow]]. +Setting `LIBRARY_PATH` is needed until [[!debbug 629819]] is resolved. + +Testing on GNU/Hurd is blocked on +[[fork_mach_port_mod_refs_ekern_urefs_owerflow]]. ## Analysis |