diff options
author | Thomas Schwinge <thomas@codesourcery.com> | 2012-05-24 23:08:09 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@codesourcery.com> | 2012-05-24 23:08:09 +0200 |
commit | 2910b7c5b1d55bc304344b584a25ea571a9075fb (patch) | |
tree | bfbfbc98d4c0e205d2726fa44170a16e8421855e /open_issues/gcc.mdwn | |
parent | 35b719f54c96778f571984065579625bc9f15bf5 (diff) |
Prepare toolchain/logs/master branch.
Diffstat (limited to 'open_issues/gcc.mdwn')
-rw-r--r-- | open_issues/gcc.mdwn | 484 |
1 files changed, 0 insertions, 484 deletions
diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn deleted file mode 100644 index 04d399f0..00000000 --- a/open_issues/gcc.mdwn +++ /dev/null @@ -1,484 +0,0 @@ -[[!meta copyright="Copyright © 2007, 2008, 2009, 2010, 2011, 2012 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. - -[[!toc levels=2]] - - -# [[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-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. - - * Check - - * 02e191ba495b4ec87aeb961ff9afdb666287104a - - * ce062771587f6637ce09f79c36e24de691032919 - - * a9cc177ef514d6eb39db72c82911fcea2cd70dba - - * 7b8d306d18986cd98808c9ed5d3a696a186dc213 - - Looks generally OK. - - * a3a3fd06ae58af9591a95c94245809b0359289ff - - Looks OK. - - * fe5ef4a01870545d0344e670cd528ad096ebab1d - - OK. - - -# Configuration - -<!-- - -git checkout reviewed -git log --reverse --pretty=fuller --stat=$COLUMNS,$COLUMNS -p -C --cc ..upstream/master --i -/^commit |^---$|hurd|linux - ---> - -Last reviewed up to the [[Git mirror's 9aa4b6a8046270a9dbdf47827f1ea873217d7aa5 -(2011-11-28) sources|source_repositories/gcc]]. - -<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. - - * `configure.ac` - - * `libgomp/configure.tgt` - - * `libstdc++-v3/configure.host` - - `abi_baseline_pair` etc. setting. - - * `libstdc++-v3/config/os/gnu-linux/*` - - 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?) - - * `hurd/usr` - - `NATIVE_SYSTEM_HEADER_DIR`, `638454a19c1c08f01c10517bc72a114250fc4f33`, - [[!message-id "mcrzkhcbftp.fsf@coign.corp.google.com"]]. - - Debian. - - * Eventually: get rid of this special-casing. [[!message-id - "gckk1s$e0b$1@ger.gmane.org"]]. - - * [[`libmudflap`|libmudflap]]. - - * Might [`-fsplit-stack`](http://nickclifton.livejournal.com/6889.html) be - worthwhile w.r.t. our [[multithreaded|multithreading]] libraries? - - * 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)) needs - OS configuration / support. - - * `--enable-frame-pointer` - - `gcc/configure.ac`: `enable_frame_pointer=no` - - * `--with-dwarf2`? - - * `--enable-werror` - - * `--enable-checking` - - * `--enable-linker-build-id` - - * `--enable-gnu-unique-object` - - * `--enable-lto`, `--enable-gold` - - [[binutils_gold]] - - * `--enable-indirect-function` - - [[IFUNC]] - - * <http://gcc.gnu.org/ml/gcc/2007-11/msg00289.html>, - <http://gcc.gnu.org/ml/gcc-patches/2010-12/msg00672.html> - - * `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. - - * [\[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) - - * 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. - - * Various testsuite bits should include `*-*-gnu*`, too. - - * [low] [[toolchain/cross-gnu]] toolchain bootstrap vs. `fenv.h` in libgcc's - libbid: - - [...]/xgcc [...] -DIN_LIBGCC2 -fbuilding-libgcc [...] -Dinhibit_libc [...] -o bid_decimal_globals.o [...] -c [...]/libgcc/config/libbid/bid_decimal_globals.c - [...]/libgcc/config/libbid/bid_decimal_globals.c:47:18: fatal error: fenv.h: No such file or directory - compilation terminated. - make[1]: *** [bid_decimal_globals.o] Error 1 - make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj/i686-pc-gnu/libgcc' - make: *** [all-target-libgcc] Error 2 - - See threads at [[!message-id - "AANLkTinY1Cd4_qO_9euYJN8zev4hdr7_ANpjNG+yGRMn@mail.gmail.com"]], - [[!message-id "20110328225532.GE5293@synopsys.com"]], [[!message-id - "4D52D522.1040804@gmail.com"]]. Can simply configure the first GCC with - `--disable-decimal-float`. - - Alternatively, can we use `#ifndef inhibit_libc` for this (these?) file(s)? - See `generic-nonstrack.c`, for example. The latter (and also - `generic-morestack-thread.c`) also has a nice explanation of `inhibit_libc` - which could be centralized at one place, for example definition of - `inhibit_libc`. - - * [low] [[toolchain/cross-gnu]] - - The directory that should contain system headers does not exist: - /media/boole-data/thomas/tmp/gnu-0/sys_root/usr/include - make[2]: *** [stmp-fixinc] Error 1 - make[2]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj/gcc' - make[1]: *** [all-gcc] Error 2 - make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj' - - `mkdir` the directory for now, but what is really going on? GCC has *use - `/usr/include` patch*, but glibc still installs into `/include/`? - - * `__GLIBC__` - - IRC, freenode, #hurd, 2012-01-05: - - <civodul> on GNU/kFreeBSD, it's GCC that defines __GLIBC__, funny - <youpi> ?? - <youpi> not from features.h ? - <civodul> in gcc/config/kfreebsd-gnu.h - <civodul> :-) - <pinotree> correct, it's enabled in gcc's config - <pinotree> i discovered that after banging my head on the wall trying - to find out why some stuff wasn't compiling even after kfreebsd - porting patches adding preprocessors checks for __GLIBC__ - - * [low] Does `-mcpu=native` etc. work? (For example, - 2ae1f0cc764e998bfc684d662aba0497e8723e52.) - - * transactional memory, 4c0315d05fa0f707875686abc4f91f7a979a7c7b - - * `config/mmap.m4` - - * In `libitm/config/`, is the generic stuff (`tls.h`, etc.) enough for - us? - - * f29a2041f32773464e226a83f41762c2e9cf658e - (e53a96c2136f7cdff4699475fea41afeed9dece3) - - -# Build - -Here's a log of a GCC build run; this is from our [[Git repository's -74a56c71c55f667824eb2ef1d62d408e9c000d5e (2011-10-23) -sources|source_repositories/gcc]], run on kepler.SCHWINGE and coulomb.SCHWINGE. - - $ export LC_ALL=C - $ (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 2>&1 | tee log_build_ - [...] - -Different hosts may default to different shells and compiler versions; thus -harmonized. - -This takes up around 2.9 GiB, and needs roughly 2.75 h on kepler.SCHWINGE and -13.25 h on coulomb.SCHWINGE. - - -## Analysis - - $ 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]]. - - * [[`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: - - -checking for decimal floating point... bid - +checking for decimal floating point... configure: WARNING: decimal float is not supported for this target, ignored - +dpd - - ... and later on: - - -checking whether decimal floating point is supported... yes - +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 - - * malloc? - - -cat ../../hurd/gcc/config/i386/pmm_malloc.h > mm_malloc.h - +cat ../../hurd/gcc/config/i386/gmm_malloc.h > mm_malloc.h - - Comes from `gcc/config.gcc`: `i386/t-pmm_malloc` vs. `i386/t-gmm_malloc` - for `i[34567]86-*-linux*` vs. `i[34567]86-*-*`. - - * *libgomp* - - * `libgomp/config/linux/`, `libgomp/config/linux/x86` - - * `-ftls-model=initial-exec -march=i486 -mtune=i686` - - * Missing `EOWNERDEAD`, `ENOTRECOVERABLE`. What're they used for? - - * `RLIMIT_VMEM`. Usage kosher? - - * `basic_file.cc` - - +basic_file.cc: In member function 'std::streamsize std::__basic_file<char>::showmanyc()': - +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? TODO - - * `libobjc/encoding.c`: - - 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/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:389: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 - - * 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 - - * 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/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` - - Just different order of files, or another problem? - - * `libjava/gnu/gcj/util/natGCInfo.cc` - - 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] - - * `libgcj.la` - - Just different order of object files, or another problem? - - Is there a pattern that GNU/Hurd hands out the files alphabetically sorted - where it wouldn't need to ([[!taglink open_issue_hurd]])? - - * `libjvm.la`, `.libs/libjvm.so`, `libgij.la`, `.libs/libgij.so.12.0.0` - - `-Wl,-Bsymbolic` vs. `-Wl,-Bsymbolic-functions` - - -# Install - - $ make install 2>&1 | tee log_install - [...] - -This takes up around 630 MiB, and needs roughly 4 min on kepler.SCHWINGE and 35 -min on coulomb.SCHWINGE. - - -## Analysis - - $ 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]]. - - * `libtool: finish`: `ldconfig` is not run for the Hurd. - - [[libtool]]. - - * `libjvm.la`, `.libs/libjvm.so`, `libgij.la`, `.libs/libgij.so.12.0.0` - - `-Wl,-Bsymbolic` vs. `-Wl,-Bsymbolic-functions` (as above) - - -# Testsuite - -<http://gcc.gnu.org/install/test.html> - -Testing on GNU/Hurd is blocked on -[[fork_mach_port_mod_refs_ekern_urefs_owerflow]]. - -TODO. Can use parallel testing, see [[!message-id -"20110331070322.GI11563@sunsite.ms.mff.cuni.cz"]]. - - $ make -k check 2>&1 | tee log_check - [...] - -This needs roughly TODO min on kepler.SCHWINGE and TODO min on -coulomb.SCHWINGE. - - $ ssh kepler.SCHWINGE 'cd tmp/source/gcc/ && sed < hurd/master.build/gcc/TODO -e "s%\(/media/data\)\?${PWD}%[...]%g"' > open_issues/gcc/sum_linux - $ ssh coulomb.SCHWINGE 'cd tmp/gcc/ && sed < hurd/master.build/gcc/TODO -e "s%\(/media/erich\)\?${PWD}%[...]%g"' > open_issues/gcc/sum_hurd - -Comparing the results files, [[sum_linux]] to [[sum_hurd]]: - - $ diff -u -F ^Running open_issues/gcc/sum_linux open_issues/gcc/sum_hurd > open_issues/gcc/sum.diff - -[[open_issues/gcc/sum.diff]]. - - -## Analysis - -TODO. - - -# Specific Languages - - * [[GNAT]] - - * [[gccgo]] |