From 30cc6497724b295c50e69e564e3821204fafb47e Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 10 Jun 2013 15:43:02 +0200 Subject: open_issues/gcc: 2a3496bebfe9d89f11d0b7a591afac55e11d5263 (2013-06-06; 3a930d3fc68785662f5f3f4af02474cb21a62056 (2013-06-06)) --- open_issues/gcc.mdwn | 698 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 627 insertions(+), 71 deletions(-) (limited to 'open_issues/gcc.mdwn') diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn index 3aa7b63b..d8a8cd5f 100644 --- a/open_issues/gcc.mdwn +++ b/open_issues/gcc.mdwn @@ -37,8 +37,8 @@ git diff --patience --stat=$COLUMNS,$COLUMNS --patch --src-prefix=./ --dst-prefi --> -Last reviewed up to the [[Git mirror's 0479dc77cf50ee78769b55563051cf72d39b3d60 -(2013-05-27) sources|source_repositories/gcc]]. +Last reviewed up to the [[Git mirror's 3a930d3fc68785662f5f3f4af02474cb21a62056 +(2013-06-06) sources|source_repositories/gcc]]. has documentation for the `configure` switches. @@ -48,20 +48,247 @@ Last reviewed up to the [[Git mirror's 0479dc77cf50ee78769b55563051cf72d39b3d60 * `configure.ac` - * `libgomp/configure.tgt` + * `libstdc++-v3` - * `libstdc++-v3/configure.host` + * `configure.host` - `abi_baseline_pair` etc. setting. + `abi_baseline_pair` etc. setting. `config/abi/post/*-linux-gnu`. + TODO. - * `libstdc++-v3/config/os/gnu-linux/*` + * `config/os/gnu-linux` - Is used for all GNU systems, as per `libstdc++-v3/configure.host`. - Should rename to `gnu-user` to reflect this? + Is used for all GNU systems, as per `configure.host`. Should + rename to `gnu-user` to reflect this? TODO. * `gcc/acinclude.m4`:`gcc_GAS_FLAGS`: always pass `--32` to assembler for x86 Linux. (Why?) + * `lib-prefix.m4` (present twice in GCC sources) contains one remaining + `linux`-only case. + + * `libjava` + + TODO: + + classpath/include/jni_md-x86-linux-gnu.h + + See below (`log_build`). + + Makefile.am:## _GNU_SOURCE defined for some Linux builds. It doesn't hurt to + Makefile.am:## always define it. Some systems, including Linux, need + Makefile.am:# certain linuxthread functions get linked: + Makefile.am:## This is specific to Linux/{Free,Net,Open}BSD/Hurd and perhaps few others. + Makefile.am: $(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/linux; \ + Makefile.am: $(DESTDIR)$(SDK_INCLUDE_DIR)/linux); \ + Makefile.am: $(DESTDIR)$(SDK_INCLUDE_DIR)/linux/$$headername.h; \ + classpath/NEWS: the epoll notification mechanism on Linux 2.6. + classpath/config.rpath: linux* | k*bsd*-gnu) + classpath/config.rpath: gnu* | linux* | k*bsd*-gnu) + classpath/config.rpath: linux*oldld* | linux*aout* | linux*coff*) + classpath/config.rpath: linux* | k*bsd*-gnu) + classpath/configure.ac: *linux*) + classpath/configure.ac: target_os=linux-gnu + classpath/configure.ac: AC_MSG_WARN(no, using x86-linux-gnu) + classpath/doc/cp-vmintegration.texinfo:has been primarily tested against Linux and lacks garbage collections, a + classpath/doc/cp-vmintegration.texinfo:Linux and Windows 2000. As of June, 2004, it does not appear that ORP + classpath/doc/cp-vmintegration.texinfo:This is a free Java Virtual Machine that is being developed on GNU/Linux + classpath/doc/cp-vmintegration.texinfo:Runs on the x86 and PowerPC architectures, on the AIX, Linux, and Mac + classpath/gnu/classpath/SystemProperties.java: && "Linux".equals(defaultProperties.get("os.name"))) + classpath/gnu/java/nio/EpollSelectorImpl.java: * notification mechanism on GNU/Linux. + classpath/java/io/File.java: * Implementation note: Unlike the RI, on Linux and UNIX + classpath/java/net/MimeTypeMapper.java: // On Linux this usually means /etc/mime.types. + classpath/ltcf-cxx.sh: linux*) + classpath/ltcf-cxx.sh: linux*) + classpath/ltconfig:# Transform linux* to *-*-linux-gnu*, to support old configure scripts. + classpath/ltconfig:linux-gnu*) ;; + classpath/ltconfig:linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig:# No shared lib support for Linux oldld, aout, or coff. + classpath/ltconfig:linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + classpath/ltconfig:# This must be Linux ELF. + classpath/ltconfig:linux-gnu*) + classpath/ltconfig: version_type=linux + classpath/ltconfig: # powerpc, because MkLinux only supported shared libraries with the + classpath/ltconfig: # most powerpc-linux boxes support dynamic linking these days and + classpath/ltconfig: # assume the GNU/Linux dynamic linker is in use. + classpath/ltconfig: dynamic_linker='GNU/Linux ld.so' + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig: dynamic_linker='GNU/Linux ld.so' + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltconfig: version_type=linux + classpath/ltmain.sh:# compiler flags: $LTCFLAGS + classpath/ltmain.sh: *-*-linux*) + classpath/ltmain.sh: darwin|linux|osf|windows|none) + classpath/ltmain.sh: # Like Linux, but with the current version available in + classpath/ltmain.sh: linux) + classpath/m4/lib-link.m4: dnl 2. if it's /usr/local/include and we are using GCC on Linux, + classpath/m4/lib-link.m4: linux* | gnu* | k*bsd*-gnu) haveit=yes;; + classpath/m4/lib-link.m4: dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + classpath/m4/lib-link.m4: linux* | gnu* | k*bsd*-gnu) haveit=yes;; + classpath/m4/lib-prefix.m4: dnl 3. if it's /usr/local/include and we are using GCC on Linux, + classpath/m4/lib-prefix.m4: linux* | gnu* | k*bsd*-gnu) haveit=yes;; + classpath/m4/lib-prefix.m4: CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + classpath/m4/lib-prefix.m4: dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + classpath/m4/lib-prefix.m4: linux*) haveit=yes;; + classpath/m4/lib-prefix.m4: LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + classpath/m4/lib-prefix.m4: dnl On glibc systems, the current practice is that on a system supporting + classpath/native/jni/java-net/javanet.c: /* Not writable on Linux */ + classpath/native/jni/java-nio/gnu_java_nio_VMChannel.c: * vector based read call (currently readv on Linux). + classpath/native/jni/java-nio/gnu_java_nio_VMChannel.c: * vector based read call (currently readv on Linux). + classpath/vm/reference/java/lang/VMProcess.java: // Linux use a process-per-thread model, which means the same thread + + configure.ac: *-*-linux*) + configure.ac: AC_DEFINE(LINUX_THREADS, 1, [Define if using POSIX threads on Linux.]) + include/config.h.in:/* Define if using POSIX threads on Linux. */ + include/config.h.in:#undef LINUX_THREADS + include/posix-threads.h:# ifdef LOCK_DEBUG /* Assumes Linuxthreads */ + include/posix-threads.h:#ifndef LINUX_THREADS + include/posix-threads.h:// pthread_mutex_destroy does nothing on Linux and it is a win to avoid + include/posix-threads.h:#endif /* LINUX_THREADS */ + include/posix-threads.h: // For linux_threads this is really a pointer to its thread data + include/posix-threads.h:// E.g. on X86 Linux, pthread_self() is too slow for our purpose. + include/posix-threads.h:// This code should probably go away when Linux/X86 starts using a + posix-threads.cc:#if defined(LINUX_THREADS) || defined(FREEBSD_THREADS) + posix-threads.cc: // LinuxThreads (prior to glibc 2.1) usurps both SIGUSR1 and SIGUSR2. + posix-threads.cc:#else /* LINUX_THREADS */ + posix-threads.cc:#endif /* LINUX_THREADS */ + posix-threads.cc: // In older glibc's (prior to 2.1.3), the cond_wait functions may + posix-threads.cc: // glibc 2.1.3 doesn't set the value of `thread' until after start_routine + + configure.ac: # We can save a little space at runtime if the mutex has m_count + configure.ac: # or __m_count. This is a nice hack for Linux. + configure.ac: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[ + configure.ac: extern pthread_mutex_t *mutex; int q = mutex->m_count; + + Makes sense to implement in our [[/libpthread]] ([[!taglink + open_issue_libpthread]])? + + configure.ac: i?86-*-linux*) + configure.ac: SIGNAL_HANDLER=include/i386-signal.h + configure.ac: SIGNAL_HANDLER_AUX=include/x86_64-signal.h + include/i386-signal.h:// on an i386 based Linux system. + include/i386-signal.h: directly rather than via glibc. The sigaction structure that the + include/i386-signal.h: * called _directly_ by the kernel, because linuxthreads wraps signal + include/i386-signal.h: * handler to a linuxthreads wrapper, we will lose the PC adjustment + include/i386-signal.h: * Also, there may not be any unwind info in the linuxthreads + + configure.ac: *-linux*) + configure.ac: host_os=linux;; + + configure.host: i[34567]86*-linux* | \ + configure.host: can_unwind_signal=yes + configure.host: libgcj_ld_symbolic='-Wl,-Bsymbolic' + configure.host: if test x$slow_pthread_self = xyes \ + configure.host: [...] + configure.host: i[34567]86*-kfreebsd*-gnu | x86_64*-kfreebsd*-gnu) + configure.host: libgcj_ld_symbolic='-Wl,-Bsymbolic' + configure.host: slow_pthread_self= + + java/lang/natObject.cc:// What follows currenly assumes a Linux-like platform. + java/lang/natObject.cc:// Some of it specifically assumes X86 or IA64 Linux, though that + java/lang/natObject.cc:# define INVALID_THREAD_ID 0 // Works for Linux? + java/lang/natObject.cc: const unsigned MIN_SLEEP_USECS = 2001; // Shorter times spin under Linux. + java/lang/natVMClassLoader.cc: // a module named (eg, on Linux) `lib-gnu-pkg-quux.so', followed + + libltdl/acinclude.m4:x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) + libltdl/acinclude.m4: x86_64-*linux*) + libltdl/acinclude.m4: ppc64-*linux*|powerpc64-*linux*) + libltdl/acinclude.m4: LD="${LD-ld} -m elf32ppclinux" + libltdl/acinclude.m4: s390x-*linux*) + libltdl/acinclude.m4: sparc64-*linux*) + libltdl/acinclude.m4: x86_64-*linux*) + libltdl/acinclude.m4: ppc*-*linux*|powerpc*-*linux*) + libltdl/acinclude.m4: s390*-*linux*) + libltdl/acinclude.m4: sparc*-*linux*) + libltdl/acinclude.m4: # Under GNU Hurd, this test is not required because there is + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4:# No shared lib support for Linux oldld, aout, or coff. + libltdl/acinclude.m4:linux*oldld* | linux*aout* | linux*coff*) + libltdl/acinclude.m4:# This must be Linux ELF. + libltdl/acinclude.m4:linux*) + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: # powerpc, because MkLinux only supported shared libraries with the + libltdl/acinclude.m4: # most powerpc-linux boxes support dynamic linking these days and + libltdl/acinclude.m4: # assume the GNU/Linux dynamic linker is in use. + libltdl/acinclude.m4: dynamic_linker='GNU/Linux ld.so' + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4: version_type=linux + libltdl/acinclude.m4:# This must be Linux ELF. + libltdl/acinclude.m4:linux*) + libltdl/acinclude.m4: linux*) + libltdl/acinclude.m4:linux*) + libltdl/acinclude.m4: linux*) + libltdl/acinclude.m4: # Linux and Compaq Tru64 Unix objects are PIC. + libltdl/acinclude.m4: # Linux and Compaq Tru64 Unix objects are PIC. + libltdl/acinclude.m4: linux*) + libltdl/acinclude.m4: linux*) + libltdl/acinclude.m4: gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu) + libltdl/acinclude.m4: # GNU and its variants, using gnu ld.so (Glibc) + libltdl/ltmain.sh: darwin|linux|osf|windows) + libltdl/ltmain.sh: # Like Linux, but with the current version available in + libltdl/ltmain.sh: linux) + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4:# No shared lib support for Linux oldld, aout, or coff. + shlibpath.m4:linux*oldld* | linux*aout* | linux*coff*) + shlibpath.m4:# This must be Linux ELF. + shlibpath.m4:linux*|k*bsd*-gnu) + shlibpath.m4: version_type=linux + shlibpath.m4: # powerpc, because MkLinux only supported shared libraries with the + shlibpath.m4: # most powerpc-linux boxes support dynamic linking these days and + shlibpath.m4: # assume the GNU/Linux dynamic linker is in use. + shlibpath.m4: dynamic_linker='GNU/Linux ld.so' + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + shlibpath.m4: version_type=linux + + testsuite/lib/libjava.exp: if { [regexp "linux" $target_triplet] } { + + Adds `-specs=libgcj-test.spec`, which is created by `configure`. *This + spec file is read by gcj when linking. It is only used by the testing + harnesses (in libjava and gdb).* TODO. [[!taglink open_issue_gdb]]. + + * `libgcc` + + TODO: + + * `config/t-linux` + * `config/i386/t-linux` + * `config/i386/linux-unwind.h` + + * `libitm` + + TODO: + + * `libitm/config/linux` + * `hurd/usr` `NATIVE_SYSTEM_HEADER_DIR`, `638454a19c1c08f01c10517bc72a114250fc4f33`, @@ -94,10 +321,13 @@ Last reviewed up to the [[Git mirror's 0479dc77cf50ee78769b55563051cf72d39b3d60 * Might `-fsplit-stack` be useful for us with respect to our [[multithreaded|multithreading]] libraries? - * `--enable-languages=[...]` + * `gcc/ada`, `gcc/testsuite/ada`, `gcc/testsuite/gnat.dg`, `gnattools`, + `libada` (not reviewed) * [[Ada (GNAT)|GNAT]] support is work in progress. + * `gcc/go`, `gcc/testsuite/go.test`, `libgo` (not reviewed) + * The [[Google Go's libgo|gccgo]] (introduced in e440a3286bc89368b8d3a8fd6accd47191790bf2 (2010-12-03)) needs OS configuration / support. @@ -153,8 +383,6 @@ Last reviewed up to the [[Git mirror's 0479dc77cf50ee78769b55563051cf72d39b3d60 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: @@ -303,40 +531,18 @@ Last reviewed up to the [[Git mirror's 0479dc77cf50ee78769b55563051cf72d39b3d60 "20110609002620.GA16719@const.famille.thibault.fr"]]. commit 026e608ecebcb2a6193971006a85276307d79b00. - * 549e2197b118efb2d947aaa15d445b05c1b5ed62 `Import the asan runtime library - into GCC tree`. Linux-specific things: - `ASAN_USE_ALIAS_ATTRIBUTE_FOR_INDEX`, `ASAN_LINUX`, `ASAN_POSIX`, - `libsanitizer/asan/asan_linux.cc`, - `libsanitizer/asan/asan_malloc_linux.cc`, - `libsanitizer/asan/asan_posix.cc`, - `libsanitizer/interception/interception.h`, - `libsanitizer/interception/interception_linux.cc`, - `libsanitizer/interception/interception_linux.h`, - `libsanitizer/sanitizer_common/sanitizer_allocator.cc`, - `libsanitizer/sanitizer_common/sanitizer_linux.cc`, - `libsanitizer/sanitizer_common/sanitizer_posix.cc`, - `libsanitizer/sanitizer_common/sanitizer_procmaps.h`, - `libsanitizer/sanitizer_common/sanitizer_symbolizer_linux.cc`. - 4afab99bf0fe2d6905a9fa9d6ab886ca102312df `Enable libsanitizer just on x86 - linux for now`. 492e75a7336b4dbfe38207ea3abf8d5bd72376a9 `Move - libsanitizer configure logic to subdirectory`. - 6aea389d84c2172668af5f108e2b17e131120d0b `Add STATIC_LIBASAN_LIBS for - -static-libasan`. Further commits later on. - - * 9cf754572854d9d9cd43c277eb7afb12e4911358 `Import tsan runtime from - llvm`. Linux-specific things: `libsanitizer/tsan/tsan_platform.h`, - `libsanitizer/tsan/tsan_platform_linux.cc`, - `libsanitizer/tsan/tsan_symbolize_addr2line_linux.cc`. - a96132f29aa3dfe94141a87537f62ea73ce0fc19 `Set TSAN_SUPPORTED=yes for - x86_64/i686-linux for 64-bit multilib`. Further commits later on. + * [[`libsanitizer`|_san]] (not reviewed) + + A lot of Linux-specific things. + + # Build Here's a log of a GCC build run; this is from our [[Git repository's -dcdba5abca23716daa6aeb5c92f367e0978e4539 (2013-05-27; -0479dc77cf50ee78769b55563051cf72d39b3d60 (2013-05-27)), plus -`id:"87txlnlg0z.fsf@kepler.schwinge.homeip.net"` +2a3496bebfe9d89f11d0b7a591afac55e11d5263 (2013-06-06; +3a930d3fc68785662f5f3f4af02474cb21a62056 (2013-06-06)) sources|source_repositories/gcc]], run on kepler.SCHWINGE and coulomb.SCHWINGE. $ export LC_ALL=C @@ -349,10 +555,11 @@ sources|source_repositories/gcc]], run on kepler.SCHWINGE and coulomb.SCHWINGE. Different hosts may default to different shells and compiler versions; thus harmonized. -We're stuck with GCC 4.6 until there are Debian *gnat-4.7* packages avaible. +We're stuck with GCC 4.6 until there are Debian *gnat-4.7*/*gnat-4.8* packages +avaible. -This takes up around 3.5 GiB, and needs roughly 3.5 h on kepler.SCHWINGE and 15 -h on coulomb.SCHWINGE. +This takes up around 3.5 GiB, and needs roughly 3.5 h on kepler.SCHWINGE and +15.25 h on coulomb.SCHWINGE.