Note: a description of why each patch is needed is embedded *inside* the patch file at the top, so read the patch file for more info. 0.43: gcc: * add gcc-4.1.1 final * add gcc-4.1-20060811, snapshot on 20060811 * add gcc-4.2-20061024, snapshot on 20061024 * add libmudflap to runtimes rpms so users can do things like "-fmudflap". * add libssp to runtimes rpms so users can do things like "-fstack-protector" and "-lssp" * enabled tls for 2.4.18 and up, since somebody may need tls support from such kernel. * fixed a bug in toolchain.dat and cpu.dat, append to GLIBC_EXTRA_CONFIG rather than overwrite it. It might be defined both in toolchain.dat and cpu.dat, or it might be defined by a crosstool user, who added a definition to GLIBC_EXTRA_CONFIG. Before this buf fix, whichever came first would have been overwritten. * add gcc-4.1.1-glibc-2.3.5-nptl.dat as Ian's first cut at simple way of enabling NPTL. gdb: * add gdb-6.5 final fix-embedded-paths.c: * fixed a bug in fix-embedded-paths.c. Simon Baldwin tracked a gdb crash down to a bug in the crosstool build scripts (they ran fix-embedded-paths.c on libstdc++.so, which wasn't strictly neccessary). His proposed workaround is to modify fix-embedded-paths.c to use slash padding rather than space or null padding, and run it again on the affected libraries. crosstool.spec.in: buildsrpms.sh: * add __PKGPREFIX__ to allow users to specify the name prefix of the rpms. * change the version number to 0.43 buildlogs: * add gcc-4.1.1 build results and update build matrix. regtest-report.sh: * add nptl to build matrix 0.42: gcc: * add gcc-4.1.0 final, remove snapshots glibc: * Remove old snapshots binutils: * tweak default size of hash tables upwards; helps a few large apps. binutils-2.15/bfd-hash-tweak.patch binutils-2.16.1/bfd-hash-tweak.patch regtest-run.sh: * lower priority of ssh with 'nice'. This really reduces the CPU load. demo-CPU.sh: * add generate-demo.pl to generate demo-CPU.sh from buildlogs/all.dats.txt. doc: * updated mac os x section of crosstool-howto.html to include tips on wrapping ld and as * add "Target Platform Notes" to crosstool-howto.html to include the target platform specific notes for building crosstool using demo-CPU.sh. 0.41: crosstool.sh: * brought back mkoverride.sh, so installed toolchain has easy place to get just libgcc_s.so and libstdc++.so for use with ldconfig or -Wl,-rpath. getandpatch.sh: * Added missing .gz filename after .bz2 for getting gcc-?.?-200* (Martin Guy) all.sh: * Remove old PREFIX dir in background for speed (Martin Guy) general: * updated from linux-2.6.11.3 to linux-2.6.15.4 * removed -hdrs-2.6.11.2 suffix from .dat file names * updated from linux-libc-headers-2.6.11.2 to linux-libc-headers-2.6.12.0 * updated from gdb-6.3 to gdb-6.4 * added ppc603 and tls to build matrix glibc: * removed glibc-20040822 * in glibc-2.3.[456], replaced glibc-20040822-s390-sysdep_inc.patch with fix-pr398.patch * users can now change the --enable-kernel, --with[out]-tls, --with[out]-__thread config options by putting them in GLIBC_EXTRA_CONFIG; default is same as before, --enable-kernel=2.4.3 --without-tls --without-__thread * added *-tls.dat files showing how to turn on tls support (but you might need to use --without-__thread on i686 with glibc-2.3.2, see http://sources.redhat.com/bugzilla/show_bug.cgi?id=236 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=317) gcc: * added gcc-4.1.0-20060223 aka rc2 binutils: * Added Nick Clifton's link time performance patch, backported to 2.15 and 2.16.1 binutils-2.15/ld-2.15-stabs-tweak.patch binutils-2.16.1/stabs-tweak.patch See http://sourceware.org/ml/binutils/2005-12/msg00270.html * Added Robert O'Callahan's link time performance patch, backported to 2.15 and 2.16.1 binutils-2.15/ld-2.15-callahan.patch binutils-2.16.1/callahan.patch See http://weblogs.mozillazine.org/roc/archives/2005/02/optimizing_gnu.html 0.40: crosstool.sh: * check for flex and bison (some distros don't install them by default) * undo bits/syscall.h gcj-4.0.0 change from Tim Hayman since it breaks arm, see http://sourceware.org/ml/crossgcc/2006-01/msg00091.html * Obey GLIBCTHREADS_FILENAME if set (from martinwguy@yahoo.it) all.sh: * If build dir exists, remove it in the background not foreground getandpatch.sh: * handle gcc-3.3.6, gcc-4.1-2006* snapshots * Recognise glibc-200* snapshots and get them from the snapshots directory first before falling back to cvs. (from martinwguy@yahoo.it) * Add mirror site for sanitised linux-libc-headers (from martinwguy@yahoo.it) gcc-2.95.3: * added patches/gcc-2.95.3/deque-leak-fix.patch to fix leak in deque::erase gcc-3.3.x: * carried patches/gcc-3.3.[56]/gcc-3.3.4-arm-bigendian.patch forward gcc-3.4.5: * carried patches/gcc-3.4.4/* forward gcc-4.0.2: * added patches/gcc-4.0.2/pr21623-workaround.patch * carried fix-fixincl.patch and pr20815-fix.patch forward gcc-4.1: * added 4.1.0-20060219 glibc-2.3.5: * added patches/glibc-2.3.5/glibc-2.3.5-sh-memset.patch glibc-2.3.6: * use patches updated by RPJ Day but left out two powerpc ones for moment, attrib probs? 0.39 (not officially released): glibc: * added patches/glibc-2.2.2/glibc-2.2.2-syslog-bugfix.patch to fix a problem with syslog crosstool.sh: * handle pentium3 target (that's what comes after i386...i686) * libc.so fixup now unconditional; see http://sources.redhat.com/ml/crossgcc/2005-08/msg00149.html arm: * added gcc-3.3.[456]/gcc-3.3.4-arm-pr22528.patch (thanks to Lennert and Richard Earnshaw) 0.38: crosstool.sh: * crosstool.sh now removes symlink before creating it to avoid problem on 2nd run (as suggested by Khem Raj) buildsrpms.sh: * now correctly aborts if no CPUs supported testhello.sh: * now checks to make sure PATH_MAX is defined (see PR22541) fix-embedded-paths.c: * now lets you lengthen embedded paths, to handle the odd case where the paths were long but you shortened them already once. regtest-report.sh: * all-dats.txt now has build results in it again, d'oh gcc: * added patches/gcc-4.0.1/fix-fixincl.patch, patches/gcc-gcc-4.1-200507{02,09,16}/fix-fixincl.patch to fix PATH_MAX problem. See http://gcc.gnu.org/PR22541 * gcc-4.0.1/pr21951-fix2.patch is nicer fix for problem with -fno-exceptions binutils: * updated gcc-4.*.dat to binutils-2.16.1, carried forward the three patches from patches/binutils-2.15 that still apply contrib: * Added contrib/crosstool-0.37-nptl.patch update from Khem Raj and crosstool-0.37-001-silent.patch from Yann E. MORIN 0.37: License: * formally relicensing patches/glibc* under LGPL for obvious reasons; they were always under LGPL, since otherwise they couldn't have been submitted upstream. Added COPYING.LIB to reflect this. * Updated address in COPYING per FSF request crosstool.sh: * Now always install bootstrap gcc in its own temporary prefix to keep it from installing files that conflict with the final gcc. * fixed bug in GCC_CORE_DIR; it was using local ar, as, and ld :-( * make bits/syscall.h available earlier; fixes building gcj-4.0.0 (thanks Tim Hayman) * output $PRFIX/$TARGET-crosstoolconfig.txt listing all environment variables we care about, as documentation for how toolchain was produced all.sh: * add --gdb option to build gdb and gdbserver crosstool.spec.in: * don't strip executables; let fedora's buildrpm do that (it splits the debug info off into separate debug info rpms) * fix install scriptlet bug for ppc and x86_64 (thanks Akio Idehara) buildsrpms.sh: * fix buglet for ppc gcc: * note: gcc-4.0.[01]/pr20815-fix.patch is possible fix for annoying problem when using profile-driven optimization; see http://gcc.gnu.org/PR20815 * added dat files for gcc-4.0.1, gcc-4.1-2005070[29] * gcc-4.0.0/pr21951.patch fixes problem with -fno-exceptions * copied applicable patches from patches/gcc-3.4.3 to patches/gcc-3.4.4 (tested by Alice Corbin on Arm) glibc: * added {i686,x86_64}-static.dat to demo --enable-static-nss * added glibc-2.3.5-fix-pr631.patch to fix problem building glibc-2.3.5 with --enable-static-nss See http://sources.redhat.com/bugzilla/show_bug.cgi?id=631 clean.sh: * config.guess was not properly marked executable, which caused strange configure failures. * outputs list of files containing the current version number. Since clean.sh is used when preparing a release, this is a cheap way to remind the maintainer to update embedded version numbers. doc: * updated crosstool-howto.html to reflect new rpm build and new regression test build Build matrix: * regtest-run.sh saves all variables from $TARGET-crosstoolconfig.txt, and whether gdb and gdbserver built properly, in .dat file * regtest-report.sh handles gdb * regtest-kill.sh faster - it scp's script instead of ssh'ing each cmd powerpc: * replaced glibc-2.3.2/glibc-2.3.2-powerpc-procfs.patch with glibc-2.3.2/glibc-2.3.3-allow-gcc-4.0-powerpc-procfs.patch to fix gcc-4.0 problem mips: * added pr758.patch from http://sources.redhat.com/bugzilla/show_bug.cgi?id=758 to fix problems like error: `SYS_read' undeclared (first use in this function) * added glibc-mips-bootstrap-gcc-header-install.patch from Steven J. Hill to fix glibc-2.3.5 install-headers for MIPS arm: * known issue: gcc-3.3.x ICEs on build; see http://gcc.gnu.org/PR15068. (gcc-3.4.[134] are ok because of pr15068-fix.patch.) cygwin: * glibc-2.3.4-cygwin.patch ported by steve@digidescorp.com 0.36: crosstool.sh: * Now works when GCC_CORE_DIR is a gcc-3 variant. gcc-4.1 support: * added gcc-4.1-20050522-glibc-2.3.5-hdrs-2.6.11.2.dat 0.35: crosstool.sh: * Added GCC_CORE_DIR environment variable; this lets you build glibc with an older gcc than the final gcc you're building. This required a new gcc patch, gcc-{3.4.3,4.0.0}/fix-fixincl.patch. * Modified gcc-{3.4.3,4.0.0}-glibc-2.2.2.dat to use gcc-2.95.3 to compile glibc. This fixes an obvious crash bug in static apps built by gcc-3.4.3-glibc-2.2.2, and lets you build gcc-4.0.0-glibc-2.2.2 toolchains, which didn't build at all without this. Note: the build matrix shows the improvement, but doesn't give you a clue that the older gcc was used; for that you have to peek at buildlogs/*.dat.txt file or all-dats.txt. nptl support: * not merged yet, but updated patches for nptl support in contrib/crosstool-0.34-nptl.patch from ftp://ftp.realitydiluted.com/crosstools/crosstool-0.34/ thanks to Steven Hill. 0.34: all.sh: * Reverse directory order so all outputs of one toolcombo are under same directory, e.g. /usr/crosstool/gcc-4.0.0-glibc-2.3.5/arm-unknown-linux-gnu instead of /usr/crosstool/arm-unknown-linux-gnu/gcc-4.0.0-glibc-2.3.5 RPM support: * no need to have build machine type in path, since nobody mounts same /usr on multiple arches so remove it * likewise, remove crosstool-common.noarch.rpm, which was just there so user scripts could use config.guess to find right bin * postinstall scripts no longer use temp files in / nor do they modify /etc/ld.so.conf if not needed Build matrix: * regtest-report.sh faster, less verbose, supports sanitized headers Sanitized headers: * new .dat files added to demonstrate use of sanitized headers, e.g. gcc-2.95.3-glibc-2.2.2-hdrs-2.6.11.2.dat * testlinux.sh no longer assumes config file was copied by crosstool.sh New or revised patches: * patches/glibc-2.3.[45]/glibc-fp-byteorder.patch copied from glibc-2.3.3 * patches/glibc-2.2.2/glibc-2.2.2-printf-not-macro.patch fixes buglet building c++ apps that have methods named printf * patches/gcc-*/gcc-*-trap-posix.patch fixes build problem under bash-3.0 (Thanks to Daniel Goertzen and Marc Kleine-Budde) * patches/gcc-3.4.3/pr18508-fix.patch fixes Cygwin build problem * patches/glibc-{,linuxthreads-}2.3.5/glibc-{,linuxthreads-}2.3.5-cygwin.patch fixes more Cygwin/MacOSX build problems (forward ported by Petr Cvachoucek) crosstest.sh: * now sets "lappend boards_dir /usr/share/dejagnu" to avoid error 'ERROR: (DejaGnu) proc "gcc_load ... {} {}" does not exist.' (Thanks to Khem Raj.) gdb support: * added two of the three patches I've received for gdb support: contrib/crosstool-0.28-pre15_gdb.patch contrib/crosstool-0.28-rc37-gdb.patch I'll get this integrated for the next release. Known issues: * ICE building gcc-4.0.0/glibc-2.3.5 for sh4; this is http://gcc.gnu.org/PR21623 0.33: gcc-4.0.0: * Added patches/gcc-4.0.0/pr20973-fix.patch Minor fix to getandpatch.sh so TARBALLS_CACHE_DIR and NO_DOWNLOAD together mean something distcc rpm scripts removed, distcc is available separately buildsrpms.sh now also builds crosstool-common.src.rpm, a little rpm that just installs a copy of config.guess as a convenience for scripts trying to figure out which subdirectory of /usr/crosstool to use (FIXME: there ought to be a better way) crosstool.sh: * runs masq.sh to set up a distcc masquerade directory for the generated toolchain * no longer runs mkoverride.sh, since the runtime library RPMs are nicer than the scripts generated by mkoverride.sh Contributed fixes (thanks, everyone): * getandpatch.sh knows how to get gcc-4.1 and 2005 binutils snapshots * glibc-2.3.[45] now apply glibc-configure-apple-as.patch * linux-libc-headers-2.6.11.2/no-include-asm-ubc.patch fixes an SH bug 0.32: New features: * sanitized kernel header support (from Arno Schuring) * gcc-4.0.0 support, including patches/gcc-4.0.0/pr21173-fix.patch regtest-{run,report}.sh: * generates much more complete build matrix in buildlogs/ * generates simple text summary of buildlogs, all.dats.txt * build matrix html report now has labels on right and bottom, too * no more silly .sh suffix in middle of filenames in buildlogs/ * regtest-run.sh now digests log files, so regtest-report.sh doesn't have to * now smarter about recovering from failures on remote system crosstool.sh bugfixes: * The change in 0.29 to build the apps that come with glibc with the real compiler should have only done it if really needed. Doing it when it's not needed causes problems like build-glibc/libc.so.6: undefined reference to `__deregister_frame_info' when building the apps that come with glibc. I now avoid rebuilding the glibc apps if they were already built earlier, which should fix this. * That change also caused some files like bits/syscalls.h and bin/iconv to not be installed. Thanks to Peter Barada for catching this. * fixed minor test -z ${LINUX_DIR}/.config bug Improved rpm support: * crosstool.sh now builds fix-embedded-paths, a little app you can use to fix embedded paths in gcc and binutils binaries. Useful especially for gcc-2.95.3 and binutils < 2.14. It lets you build crosstool in one place, then later move it somewhere else. * no longer assumes you have fedora-rpmdevtools installed * now tested even with old redhat 7.1's version of rpm and buildrpm * The generated spec files now only build combinations known to work. They look at buildresults/*.dat.txt to tell what works. * rpms no longer have directory permissions problems if installed with funny umask, and no longer leave directories behind after uninstallation * You can now build from sprms as a normal user without making /opt/crosstool or /usr/crosstool writable first * host c++ no longer stripped with target 'strip' when building rpm * now generates RPMs for gcc's shared libraries in case you want to run newer gcc's than your development system has installed * buildcommonrpm.sh - first cut at silly little package to hold config.guess (useful mainly for my $prefix/`config.guess`/$target build layout) getandpatch.sh: * Now looks in new environment variable $TARBALLS_CACHE_DIR before downloading to $TARBALLS_DIR. This was added to make life easier when generating .src.rpm's. * Now knows about a second download site for gcc and glibc (useful if ftp.gnu.org is down) glibc: * added patches to let glibc-2.2.2 be compiled with gcc-3.4 * added x86 sysv abi compliance patch glibc-2.2.2-export_fp_hw.patch to both glibc-2.1.3 and glibc-2.2.2 cygwin target: * updated to current cygwin (old one isn't online anymore -- they move fast?) doc/crosstool-howto.html: * added links to http://ftp.jg555.com/patches/raq2 - Jim Gifford's MIPS / Raq2 patches http://www.andric.com/cross/patches - Dmitry Andric's ARM / vfp patches Known issues: * several architectures that have trouble now (e.g. sh4) will probably be happier with sanitized kernel headers; I haven't tried them. * The demo-$CPU.sh scripts are way out of date, and should be auto-generated from the build matrix * The build matrix was computed by building on redhat 7.1, so the failure of x86_64 with gcc-3.4.3-glibc-2.3.2 is expected. It works on newer build machines. See http://gcc.gnu.org/PR9552 0.31: Preview of improved rpm support: * added buildsrpms.sh to generate .srpm files, one per each tool combination. * added buildrpms.sh to demo full pathway from tarballs to .srpm to .rpm I don't expect many people to run these two scripts; most rpm users will just download .srpms and .rpms instead of crosstool-0.xx.tar.gz * goal is to make .rpm/.srpms buildable by normal users, but I'm not quite there yet, as buildrpms.sh requires /usr/crosstool to be writable * getandpatch.sh now accepts two new environment variables: JUST_DOWNLOAD and NO_DOWNLOAD. They're kind of kludgy but I was too lazy to do anything elegant. * removed obsolete --buildrpm option from all.sh 0.30: crosstool.sh: * kludge from Cort Dougan to deal with fact gcc-3.3.[34] don't know about lib64. ppc970 gcc-3.3.4/glibc-2.3.2 build now gets further, and both x86_64 and ppc970 gcc-3.3.4/glibc-2.3.3 build work. regtest-run.sh: * Added armeb to build matrix * Added gcc-3.3.4-glibc-2.3.3, gcc-4.0-20050305-glibc-2.2.5 to build matrix * Now runs ssh-add at start. Run with 'nohup ssh-agent sh crosstool-0.30/regtest-run.sh'. This avoids nasty multiple ssh prompts if you lose your X session during the run. gcc-4.0: * added gcc-4.0-arm-bigendian.patch from Lennert Buytenhek; cf. http://gcc.gnu.org/PR16350 gcc-3.4.3: * Added gcc-3.4.3-glibc-2.3.4.dat. glibc-2.2.5: * added glibc-2.2.5-allow-gcc-4.0-powerpc-procfs.patch from Martin Nielsen m68k: * gcc-4.0 can't build glibc-2.3.x for m68k at moment; see http://gcc.gnu.org/PR20583 i386: * Added demo-i386.sh by popular demand :-) Builds fine with gcc-3.4.3/glibc-2.3.4, though it's not listed in the buildlogs. 0.29: numbering change: 0.28 was getting too long in the tooth, so I gave up on the 0.28-rc* names, and am back to just major.minor. gcc-4.0: * getandpatch.sh can now download gcc-4.0 snapshots * glibc-2.2.5, glibc-2.3.4, glibc-2.3-20050307 patched to build with gcc-4.0-20050305 * glibc-2.3.[34], glibc-2.3-20050307 patched to allow building and installing libs and apps separately, and crosstool.sh now builds apps again with final gcc for glibc-2.3.4 and later. Cygwin build support: * tweak to crosstool.sh by Steve Papacharalambous; no longer aborts just because compilers that run on cygwin have names *.exe Self-test: * replaced demo-loop.sh with regtest-{run.report,kill}.sh. This lets me generate build result matrices much faster. Linux version: * gcc-*-glibc-*.dat files now default to using linux-2.4.26 for all older versions of gcc, linux-2.6.8 for gcc-3.4.x. There's no good way to pick a default, but this one probably causes fewer problems. (but see http://sources.redhat.com/ml/crossgcc/2004-12/msg00135.html, I'll probably need to use linux-2.4.21 for some targets). Note that users can easily specify the kernel version themselves, so the value in the .dat files isn't supremely important... 0.28-rc37: doc: * crosstool-howto.html now explains how to build statically linked tools (although there are some reports it's wrong, and http://sources.redhat.com/ml/crossgcc/2004-10/msg00136.html points out it doesn't work everywhere anyway...) Cygwin target support: * Modifications for building cygwin targets from Steve Papacharalambous (stevep@metrowerks.com) * new files crosstool-cygwin.sh, cygwin.dat, demo-cygwin.sh, gcc-3.3.2-cygwin-1.5.10-3.dat * small mods to all.sh, getandpatch.sh demo-loop.sh: * now builds kernel, and generates build result matrix with three possible outcomes for each combination: ok, kernel fail (but tools ok), or tools fail. * split out html generation into demo-loop-report.sh so you can join runs from multiple machines or partial runs crosstool.sh: * added new parameter EXTRA_TARGET_CFLAGS so toolcombo .dat files can set CFLAGS options for glibc; needed by gcc-3.4.2-glibc-2.2.5.dat to turn on -fno-unit-at-a-time to avoid having to backport patches/glibc-2.3.2/glibc-2.3.2-allow-gcc-3.4-nounit.patch targets: * added config file for i686 so we can build kernels with 2.4 * updated config files for m68k, powerpc64 so we can build kernels * arm: - carried gcc-3.4.0-arm-nolibfloat.patch forward to gcc-3.4.2 - copied patches/glibc-2.2.5/arm-ctl_bus_isa.patch to patches/glibc-2.1.3 so glibc-2.1.3 can build against newer kernels - renamed patches/glibc-2.3.2/glibc-vfp.patch to glibc-fp-byteorder.patch, updated comments, copied to patches/glibc-{2.3.3,20040827} - added patches/linux-2.4.26/linux-2.4.21-arm-allow-gcc3.3.patch, linux-2.4.26-wdt977-uaccess.patch, and linux-2.4.26-arm-nonofpu.patch to fix 2.4 kernel build problems (before I switched to using 2.6 everywhere) * mips / glibc-2.2.5: - fixed glibc-2.2.5-mips-dl-machine-1.59.patch, renamed to glibc-2.2.5-mips-dl-machine-1.59-kinda.patch - added glibc-2.2.5-mips-dl-machine-1.60.patch (thanks to ml@bitbash.net) * alpha: - added patches/linux-2.4.26/01-kmap-types-cleanup.patch to fix an alpha build problem * ia64: - added patches/glibc-2.2.5/initfini-ia64.patch * m68k: - added patches/glibc-2.2.5/glibc-2.2.5-m68k-pwrite.patch Linux kernel: * carried linux-2.4.26-mkdep-xargs.patch back to linux-2.4.21 * updated linux-2.6.8-build_on_case_insensitive_fs-1.patch to work for sh64 and sparc32, and dropped the -1 from the name * updated all toolcombo .dat files to use linux-2.6.8, since the 2.4 kernel doesn't lend itself to compiling for all architectures, as required by demo-loop.sh binutils: * updated all toolcombo .dat files that specified anything earlier than binutils-2.14 to use binutils-2.15. Sadly, it looks like m68k has trouble with binutils-2.15 (see http://lists.debian.org/debian-68k/2004/08/msg00307.html and e.g. buildlogs/0.28/m68k-gcc-3.4.2-glibc-2.3.3.log.txt), maybe I'll ask on the binutils mailing list if there's a patch for this yet... 0.28-rc36: all.sh: * added --testlinux option to try building linux kernel (via new script testlinux.sh) Used by demo-loop.sh, which now says whether each toolchain builds a kernel, too kernel patches: * renamed linux-2.6.6-cygwin-kconfig.patch to linux-2.6.8-noshared-kconfig.patch, cleaned up. Lets you run 'make menuconfig' on systems where kconfig shared library didn't build * added linux-2.4.26-mkdep-xargs.patch so commandline doesn't blow up (happened to me on Linux!) new versions: * added gcc-3.4.2 (but didn't carry all patches forward yet; let me know which are still needed) * updated gcc-*-glibc-2.3.3.dat to reference linux-2.6.8 instead of linux-2.4.26 targets: * Tom Warzeka contributed patches to allow building ppc7450 toolchains: gcc-3.2.3/gcc-3.2.3-ppc-asm-spec.patch gcc-3.3.4/gcc-3.3.4-ppc-asm-spec.patch glibc-2.2.5/glibc-2.2.5-powerpc-as.patch * Robert Schwebel contributed file i586.config to allow building i586 toolchains * Robert Schwebel contributed patch glibc-2.2.5/glibc-2.2.5-i386-pwrite64.patch to allow building glibc-2.2.5 with newer kernels * Shay Gal-On contributed mips.dat, mips.config, and demo-mips.sh for big-endian mips * Updated arm.config to use linux-2.6.8's "make netwinder_defconfig", since old one didn't build kernel * "Michael Geiger" contributed patches/binutils-2.15/s390-invalid-insn-format.patch to fix problem building Linux kernel on s390. Not sure this really does it, though, as I still can't build a s/390 kernel. I'm including it so he can test whether I added it right. * Added comment in patches/gcc-3.4.0/gcc-3.4.0-arm-lib1asm.patch explaining why it's not in mainline yet 0.28-rc35: getandpatch.sh: * Fetch glibc from cvs (via script glibc-get.sh) if user asks for glibc-200YMMDD glibc-20040827: * Brought forward two good patches also needed by earlier versions: arm-ctl_bus_isa.patch, glibc-2.3.2-sparc64-dl-machine.patch and one kludge (unsuitable for building nptl, but good enough for linuxthreads): glibc-2.3.3-libeh-kludge.patch Added one tiny patch based on private email from the s390 maintainer: glibc-20040822-s390-sysdep_inc.patch * brought forward case-insensitive-filesystem patches so it can be built on cygwin glibc-2.3.3: * brought forward case-insensitive-filesystem patches so it can be built on cygwin gcc-3.4.2-20040829: * Brought forward gcc-3.4.0-arm-lib1asm.patch, noted that it seems to fix http://gcc.gnu.org/PR16314, proposed it be added into 3.4.2 (better late than never) Known issues (pretty much same as with rc34): * gcc-3.4.1-glibc-2.2.5 on i686 doesn't seem happy with linux-2.6.7, failed for me with "`__NR_pread' undeclared". Should be easy to fix. Patches welcome * gcc-3.4.1-glibc-2.3.3, gcc-3.4.1-glibc-20040826: target mips fails on "make sysdeps/gnu/errlist.c" with sysdeps/generic/bits/types.h:127:3: #error It looks like my tricks to prevent real building when doing that make are failing, as glibc-2.3.3 and later reconfigure then (but only for mips?!) Suggestions welcome * gcc-3.4.1-glibc-2.3.3 target arm-ixwwm (any softfloat?) fails on glibc build with ld-collate.s:6287: Error: bad immediate value for offset (4112) Reported as new bug http://gcc.gnu.org/PR17209 Resembles http://gcc.gnu.org/PR16201 and http://gcc.gnu.org/PR11442 0.28-rc34: glibc-2.3.3: * Adds support for glibc-2.3.3, but not for nptl. Added gcc-3.3.4-glibc-2.3.3.dat and gcc-3.4.1-glibc-2.3.3.dat, changed crosstool.sh to explicitly specify addons so nptl doesn't get built by accident, brought forward a few patches previously needed with glibc-2.3.2: arm-ctl_bus_isa.patch fixup.patch glibc-2.3.2-allow-gcc-3.4-inline.patch glibc-2.3.2-powerpc-procfs.patch glibc-2.3.2-pr139-fix.patch glibc-2.3.2-sparc32-sysdep.patch glibc-2.3.2-sparc64-dl-machine.patch glibc-2.3.2-without-fp.patch backported two patches from glibc cvs: glibc-2.3.3-s390-fadvise64.patch glibc-2.3.3-unwind-dw2.patch and pulled in a probably-wrong-but-works-for-me patch: glibc-2.3.3-libeh-kludge.patch glibc-2.2.5: * Added three patches to help building (and running) with gcc-3.4: glibc-2.2.5/glibc-2.2.5-allow-gcc-3.4-weakextern.patch glibc-2.2.5/glibc-2.2.5-mips-dl-machine-1.56.patch glibc-2.2.5/glibc-2.2.5-mips-dl-machine-1.57.patch * Renamed glibc-2.2.5/dl-machine-mips.patch to glibc-2.2.5/glibc-2.2.5-mips-dl-machine-1.59.patch binutils-2.15: * added patches/binutils-2.15/binutils-2.15-solaris-qsort.patch to fix build problem on Solaris arm: * added big-endian arm support for gcc-3.3.[234] from buytenh@wantstofly.org: armeb.dat, demo-armeb.sh patches/gcc-3.3.[234]/gcc-3.3.[234]-arm-bigendian.patch * added arm-xscale.dat, removed xscale stuff from arm-softfloat.dat 0.28-rc33: distcc: * Updated crosstool-distcc.spec to generate separate client and server RPMs * Made crosstool-distcc-server RPM conflict with the standard distcc-server RPM crosstool.sh: * now invokes mkoverrides.sh (see below) crosstool-generic.spec.in: * For gcc-3.x, create extra RPMs *-{libgcc,libstdc++}*.rpm which just invoke the library's install.sh script on installation, and its uninstall.sh script on uninstallation (see mkoverrides.sh below) mkoverrides.sh: * Makes it easy to add individual shared libraries into /etc/ld.so.conf by creating a directory for each shared library. This is useful e.g. when using a self-cross gcc-3.4 on a system that only has gcc-3.3 installed. For convenience, also puts install.sh and uninstall.sh scripts in that directory that just invoke install-shared-lib.sh (see below) install-shared-lib.sh: * Adds (or, if --uninstall given, removes) a directory from /etc/ld.so.conf, then runs ldconfig. buildrpm.sh: * update embedded version number (again) 0.28-rc32: arm: * Disabled patches/gcc-3.3.[23]/gcc-3.3.2-arm-softfloat.patch by moving it to a 'feature' subdirectory. If you need softfloat, please either use gcc-3.4.1 (where it's officially supported) or copy those patches back up a level yourself. * patches/gcc-3.3.3/pr15089-fix.patch fixes http://gcc.gnu.org/PR15089 (bad optimization causing failed builds of kernel?) * Copied forward some patches from gcc-3.4.0 to gcc-3.4.1: gcc-3.4.0-arm-{bigendian,lib1asm,nolibfloat}.patch glibc-2.2.5: * Backported some patches from glibc-2.3.2 to glibc-2.2.5: {arm-ctl_bus_isa,glibc-2.2.5-alpha-pwrite64,glibc-2.2.5-arm-pwrite64}.patch * patches/glibc-linuxthreads-2.2.5/glibc-2.2.5-alpha-self-clobber.patch fixes alpha error "internals.h:381: error: asm-specifier for variable `__self' conflicts with asm clobber list" mkdistcclinks.sh: * don't crash if no toolchains installed buildrpm.sh: * clean up $PREFIX/tmp before packaging 0.28-rc31bis: rpm: * added demo-rpm.sh to make it easier to try building rpms * use absolute paths in rpmrc and rpmmacros to avoid "can't open temporary file" error * update embedded version number in buildrpm.sh to 0.28-rc31 (annoying...) * set AutoReqProv: no in crosstool-generic.spec.in; it gets in the way for cross-libraries * use %package directive in crosstool-generic.spec.in on theory that lets us keep target out of .srpm name 0.28-rc31: glibc-2.3.2: * partial support for gcc-3.5-20040718. Added patches glibc-2.3.2-allow-gcc-3.5-elf.patch glibc-2.3.2-allow-gcc-3.5-gconv.patch glibc-2.3.2-allow-gcc-3.5-msort.patch glibc-2.3.2-allow-gcc-3.5-PR14096.patch glibc-2.3.2-allow-gcc-3.5-sunrpc.patch glibc-2.3.2-allow-gcc-3.5-xdr.patch Still fails to build, but it's getting close. * Added two SH-4 bugfix patches from CVS for Ankur Sheth as described in http://sources.redhat.com/ml/crossgcc/2004-07/msg00147.html * Updated glibc-linuxthreads-2.3.2-allow-3.4.patch slightly as described in http://sources.redhat.com/ml/crossgcc/2004-07/msg00169.html; binutils-2.15: * enable cross-gprof, which ought to be useful especially for 64 bit targets vs. 32 bit hosts or vice versa, but which (according to njuguna.njoroge@xilinx.com) is helpful even for ppc405 targets. doc: * crosstool-howto.html: lots of platform notes, notes on how to build RPMs linux-2.6.7: * copied patches from patches/linux-2.6.6 * included patches/linux-2.6.7/linux-2.6.7-build_on_case_insensitive_fs-1.patch as a convenience for users who need to build the Linux kernel Also included patches/linux-2.6.7/maybe/linux-2.6.7-build_on_osx-1.patch, but that's not applied automatically... 0.28-rc30ter: all.sh: * added --buildrpm option mkdistcc.sh: * added --buildrpm option * updated to distcc-2.16 0.28-rc29: crosstool.sh: * fix check for $TARGET-gcc to search PATH 0.28-rc28: gcc: * added gcc-3.3.4 support, removed gcc-3.3-20040630 support sh4: * added patches/gcc-3.3.4/gcc-3.3.4-libstdcxx-sh.patch from Kaz crosstool.sh: * added environment variable GLIBC_ADDON_OPTIONS. Set to "=linuxthreads" or "=nptl" when building with glibc from cvs, or it'll try to build both threading packages, which doesn't work. Patch from Martin H. VanLeeuwen. I may change the interface later to get rid of the =. solaris: * added note in doc/crosstool-howto.html about binutils patch (I'll apply it automatically once it makes it into cvs) 0.28-rc27: gcc: * added gcc-3.3-20040630 and gcc-3.4.1 support, but haven't brought forward any patches from previous versions yet. Some will surely still be needed, but I haven't checked which ones yet. arm: * added patches/binutils-2.15/binutils-arm-undef-imm.patch so ld doesn't silently ignore certain types of linking errors on arm * added patches/gcc-3.4.0/gcc-3.4.0-arm-bigendian.patch, armv5b-softfloat.dat, demo-armv5b-softfloat.sh from Lennert Buytenhek [buytenh at wantstofly.org] Patch turns on big-endian mode if the target is named arm*b-* misc: * added missing --enable-cxx-flags=-mcpu=xxxx option to arm-softfloat.dat powerpc-7450.dat powerpc-750.dat powerpc-860.dat sparc64.dat to match --with-cpu option, to make sure libstdc++ is compiled for right cpu (this was done on a hunch, not sure it's really needed) 0.28-rc26: uClibc: * added contrib/demo-uclibc.sh, contrib/crosstool-uclibc-0.28-rc5-ter.patch for those who really want uclibc support crosstool.sh: * added 'sleep 2' before touching errlist-compat.c in case it's on a filesystem with lousy time resolution (like FAT). Thanks to jdubois@mc.com for the suggestion. glibc-2.2.5: * fixed typo in patches/glibc-2.2.5/dl-machine-mips.patch 0.28-rc25: doc: * updated doc/crosstool-howto.html to add Solaris notes binutils: * renamed binutils-m68k-ignore-comments.patch to binutils-skip-comments.patch since it's needed for more systems than just m68k sh4, mips, m68k: * added patches/glibc-2.2.5/dl-machine-{sh,mips,m68k}.patch to fix build errors found with demo-loop.sh 0.28-rc24: big endian arm: * added patches/glibc-2.3.2/glibc-2.3.2-arm-fix-strlen.patch (now in glibc cvs) doc: * updated doc/crosstool-howto.html to cover how to deal with ICE caused by PR9552 demo-loop.sh: * create buildlogs/$ver and index.html showing summary of build status glibc-2.1.3: * moved glibc-2.1.3-fix-gcc3-llabs.patch to bad/ since it breaks toolchain build 0.28-rc23: All cpu types that should build with gcc-3.4.0/glibc-2.3.2 now do. Sweet. * crosstool.sh: - sh4 still needs version.h - check for AR and target compiler when doing canadian cross - updated crosstool-howto.html * linux-2.6.6: - gee, all it took to fix sh and s390 was to pull forward kaz-types.patch! * gcc-3.4.0: - gcc-3.4.0-pr14808-refix.patch: Christopher Faylor says changing cygming.h suffices * glibc-2.1.3: - patches/glibc-2.1.3/glibc-2.1.3-fix-gcc3-llabs.patch fixes? obscure incompatibility related to llabs() with gcc-3.x's libstdc++ * demo.sh: - added demo-s390.sh 0.28-rc22: cygwin: * patches/gcc-3.4.0/gcc-3.4.0-pr14808-refix.patch lets gcc-3.4.0 x86 build finish. * patches/linux-2.6.6/linux-2.6.6-cygwin-kconfig.patch lets gcc-3.4.0 sh4 build finish. distcc: * update to 2.14 * patches/distcc-2.14/randomhost.patch improves load balancing on large clusters 0.28-rc21bis: all.sh: uncomment call to testhello.sh (oops) ppc: added patches/glibc-2.3.2/glibc-2.3.2-powerpc-as.patch to fix ppc7450 error 0.28-rc21: demo-loop.sh: * added. Like demo.sh, but directly sets tool versions itself. Handy for testing whether one or more versions of gcc build for all CPU types. getandpatch.sh: * handle gcc-2.95.3 hide-and-go-seek at gnu.org * handle gcc-3.5 snapshots and gcc-3.3.4 release candidates doc: * fix typo in doc/chroot-login-howto.html mkjail.sh: * locate strip better for workstation case crosstool.sh: * use -sysinclude to get right kernel headers when building glibc for mips on linux-2.6 * let user specify BUILD machine tuple by setting GCC_BUILD (useful when crosstool.sh stands alone) * now knows how to coax linux-2.6 to emulate 'make symlinks' for more architectures (sh, mips, and arm) patches: * arm-softfloat: Note that I patch gcc-3.4.0 much less heavily than gcc-3.3.3 for arm-softfloat; much of Nico's gcc-3.3.3 patch is already in gcc-3.4.0. All that's left is tidying. Thanks to Dmitry Andric for putting up his patches at http://www.andric.com/cross/patches/gcc-3.3.2-arm-softfloat.patch.bz2 http://www.andric.com/cross/patches/gcc-3.4.0-arm-softfloat.patch.bz2 http://www.andric.com/cross/patches/gcc-3.4.0-arm-lib1asm.patch.bz2 from which I mostly only used the lib1asm.patch, but others may want to look into the others. - added patches/gcc-3.4.0/gcc-3.4.0-arm-lib1asm.patch - added patches/gcc-3.4.0/gcc-3.4.0-arm-nolibfloat.patch * mips: Get mips building with linux-2.6 and gcc-3.4.0: - patches/glibc-2.3.2/glibc-2.3.2-mips-user.patch - patches/glibc-2.3.2/glibc-2.3.2-allow-gcc-3.4-nounit.patch - patches/glibc-linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-allow-3.4.patch (the mips hunk is not from cvs!) * sh4: - patches/gcc-{3.3.3,3.4.0}/pr13250-fix.patch - patches/gcc-3.4.0/pr15647-fix.patch (gcc-3.3.3 backport coming soon from Kaz) * ppc: - patches/gcc-3.4.0/gcc-3.3.3h-ppc-asm-spec.patch to fix altivec problems with binutils-2.15 * glibc: fix cross-compilation detection (for canadian builds): - patches/glibc-2.1.3/glibc-2.1.3-ac_cv_prog_cc_cross.patch - patches/glibc-2.3.2/glibc-2.3.2-cross-2.patch fix some errors flagged by gcc-3.5: - patches/glibc-2.3.2/glibc-2.3.2-allow-gcc-3.5.patch 0.28-rc19: ppc: * added demo-ppc440.sh and demo-ppc604.sh alpha: * added patches/glibc-2.3.2/glibc-2.3.2-alpha-pwrite64.patch; now alpha and glibc-2.3.2 build linux-2.6: * brought a few patches forward to linux-2.6.6 and binutils-2.15 from previous versions * for 2.6 kernel headers on arm and cris, also do 'make include/asm-$ARCH/.arch' known issues: * demo-sh3.sh fails with include/asm/sigcontext.h:4:32: asm/cpu/sigcontext.h: No such file or directory make[2]: *** [libgcc/./_muldi3.o] Error 1 when built against 2.6 kernel; see http://marc.theaimsgroup.com/?l=linux-kernel&m=108554726629507&w=2 testhello.sh: * now only checks c++ compiler if present (should check GCC_LANGUAGES...) and doesn't do anything at all if GCC_HOST is set doc/crosstool-howto.html: * document canadian cross building, sort of * added ulimit -s tip for Mac OS X * updated known issues 0.28-rc18: * use GCC_HOST instead of HOST, since tcsh sets HOST=`hostname` on entry * modify $BUILD when doing canadian cross, so host never = build 0.28-rc17: canadian cross: * added DISTCC_EXTRA_CONFIG in mkdistcc.sh * added patches/glibc-{2.1.3,2.3.2}/glibc-*-override.sh; still need to set e.g. rpcgen_FOR_BUILD in demo-canadian.sh * disable testhello.sh in all.sh for the moment * don't fail on older gccs that don't have all-build-libiberty target 0.28-rc16bis: * added missing quote in crosstool.sh 0.28-rc16: m68k: * copied binutils-m68k-ignore-comments.patch to patches/binutils-2.14.92 Cleaning out the patch queue: crosstool.sh: * patch idea from AJLuse 3/2004: - Added SHARED_MODE option to allow caller to enable/disable build of shared libraries. - Keep copy from PowerPC NOF directory from failing if nothing there. * patch idea from Jan-Benedict Glaw: - extract kernel version from its Makefile rather than its directory name * patches from Jan-Benedict Glaw: - better error message for ppc64* targets (vs. powerpc*) - support vax (!) * assume canadian cross if BUILD and HOST are set by caller (untested) crosstool-howto.html: * patch from Hideki IWAMOTO: fix --builduserspace typo getandpatch.sh: * patch from Judith Lebzelter of OSDL: fall back to passive ftp if wget fails first time * patch from Olexiy Avramchenko: unpack/download $PTXDIST_DIR only if set earlier in all.sh testhello.sh: * patch from AJLuse: don't fail if tmp already exists, just clean old output files contrib: * ajl-all.sh (patch from AJLuse 3/2004; seems risky to me, but someone might like it): - Create SRC_DIR if it does not exist. - If building to a potentially shared tree only delete TARGET files. 0.28-rc15: Seems to build gcc-3.4.0-glibc-2.3.2 for most architectures, yay... getandpatch.sh: * always try getting .bz2 before .gz for gcc * guess BINUTILS_URL if not set binutils: * default recent gcc's to use binutils-2.14.92 (the most recent official snapshot) to fix strange sparc32 problem sh4: * copied linux-2.4.24/kaz-types.patch to linux-2.4.26 to fix same old problem compiling glibc with linux headers powerpc64: * binutils-2.14 can't link a powerpc64 toolchain, so try binutils-2.14.92 (an official prerelease?) alpha: * resurrected patches/glibc-linuxthreads-2.3.2/alpha_cfi1.patch, added alpha_cfi2.patch (thanks to Mathieu Chouquet-Stringer) sparc: * added patches/glibc-2.3.2/glibc-2.3.2-sparc32-sysdep.patch to fix gcc-3.4.0 issue sparc64: * copied gccpr15247-fix.patch into patches/binutils-2.14.92 0.28-rc14: * updated doc/crosstool-howto.html 0.28-rc13: arm: * Thanks to mroehner@gmx dot de for his crossgcc post of 9 May 2004, which suggested the following changes: - got rid of symlinks in patches/glibc-2.3.2 to avoid Windows problems - use 2.4 kernel headers until arm can build with 2.6 headers - moved contrib/glibc-vfp.patch to patches/glibc-2.3.2, as it seems to solve problems even when using hard float sparc64: * H.J.Lu and M.H.VanLeeuwen helped with http://gcc.gnu.org/PR15345; see patches/glibc-2.3.2/glibc-2.3.2-sparc64-dl-machine.patch misc: * fixed typo in chrootshell.c's die() macro that suppressed error text * switched to linux-2.4.26 from linux-2.4.24 or linux-2.6.5 for recent gcc's 0.28-rc12: x86_64: * added x86_64.config, generated by linux-2.6.5's "make allnoconfig"; seems to be needed for glibc-2.3.2 on x86_64 + gcc-3.4.0 * added patches/linux-2.6.5/linux-2.6.5-x86_64-unistd.patch to fix x86_64 build with kernel 2.6.5 0.28-rc11: sparc64: * added patches/binutils-2.15.90.0.3/gccpr15247-fix.patch Sadly build still fails with /home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/libc.a(dl-reloc.o)(.text+0x4b4): In function `elf_machine_load_address.3': : undefined reference to `_DYNAMIC' collect2: ld returned 1 exit status make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/elf/sln] Error 1 0.28-rc10: sparc64: * added gcc-3.4.0-ultrasparc3-default64.patch to get ultrasparc3 to default to 64 bits as it should 0.28-rc9: sparc64: * added patches/glibc-2.3.2/glibc-2.3.2-pr139-fix.patch to fix bug on sparc64 detected by latest hj lu binutils * added sparc64.config, generated by linux-2.6.5's "make allnoconfig" * still doesn't build; gcc defaults to sparc32, which causes a 32 bit libgcc.a to be built, which breaks glibc build * removed patches/binutils-2.15.90.0.3/binutils-sh-relocs.patch from binutils-2.14.90.0.5, duh, as it seems to be already in cvs 0.28-rc8: powerpc64: * added patches/glibc-2.3.2/glibc-2.3.2-powerpc-procfs.patch to fix linux-2.6.x builds * fixed powerpc64 case in ARCH; how the heck was I building powerpc64 before?! * added powerpc64.config m68k: * added patches/binutils-2.15.90.0.3/binutils-m68k-ignore-comments.patch to fix m68k build sh: * copied patches/binutils-2.15.90.0.3/binutils-sh-relocs.patch from binutils-2.14.90.0.5 (I expect it's still needed on sh, though I haven't verified this). 0.28-rc7: crosstool.sh: * when building gcc, don't parallelize install, as that seems to be broken * Added new environment variable GLIBC_EXTRA_CC_ARGS because there seems to be no way to get gcc to default to 64 bits on sparc64; setting GLIBC_EXTRA_CC_ARGS to e.g. "-64" helps arm: * fixed typo in arm9tdmi.dat sparc: * sparc64.dat now makes gcc default to ultrasparc3 to get around glibc compile failure on .S files; probably could also have worked around it by setting something like AS_OPTIONS, but didn't explore that * updated sparc64.dat to use GLIBC_EXTRA_CC_ARGS to get around glibc link failure (glibc's configury doesn't provide any way to pass options to gcc when linking some files!) Still can't build glibc-2.3.2 for sparc64; error is qp_qtoi.s:261: Error: Illegal operands: There are only 32 single precision f registers; [0-31] powerpc: * added patches/glibc-2.3.2/glibc-2.3.2-allow-gcc-3.4-inline.patch from cvs to allow building with gcc-3.4.0 m68k: * Still can't build a gcc-3.4.0-glibc-2.3.2 toolchain; error is localealias.s:544: Error: junk at end of line, first unrecognized character is `,' 0.28-rc6: * added gcc-3.4.0-glibc-{2.1.3,2.2.5,2.3.2}.dat, use it in demo scripts (at least where it works) * Moved gcc snapshot .dat files into old * fixed typos in mkdistlinks.sh and demo-cluster.sh 0.28-rc5: * Revamped doc/crosstool-howto.html to describe distcc integration * finally renamed mkcommon.sh to be mkdistcc.sh, and moved tcl and expect builds into mkdejagnu.sh * added support for gcc-3.4-20040414, gcc-3.4.0-20040416 crosstool.sh, mkjail.sh, demo-*.sh: * add support for other languages, e.g. Java. To enable this, set the GCC_LANGUAGES variable, e.g. export GCC_LANGUAGES="c,c++,java,f77" before running. (Inspired by http://ometer.com/desktop-language.html) gcc-3.4.0: * getandpatch.sh: - added support for downloading gcc-3.4.0 prereleases * glibc: - added following patches to allow compiling with gcc-3.4.0 prereleases: patches/glibc-2.3.2/fixup.patch patches/glibc-2.2.5/glibc-2.2.5-fixup.patch patches/glibc-linuxthreads-2.2.5/glibc-2.2.5-allow-gcc-3.4-td.patch * mkcommon.sh avoids wget if distcc tarball already present, to avoid unneccessary failure when network connectivity poor 0.28-rc4: * common/bin/install-distccd.sh tested on Red Hat Linux, seems to work Not yet tested on cygwin or Mac * mkcommon.sh and mkdistcclinks.sh now set permission 755 on directories * mkcommon.sh now installs startup script templates crosstool-distccd-{linux,mac,cygwin}.sh.in to common/etc mkdistcclinks.sh now creates common/bin/install-distccd.sh The user then runs common/bin/install-distccd.sh which expands the appropriate startup script template, installs it whereever the OS wants it, and registers the service so it'll automatically start on future system boots * added StartupParameters.plist, used by mkdistcclinks.sh on Mac OS X 0.28-rc3: getandpatch.sh: * don't set +e anymore, that was a kludge that's no longer needed * fix error message from wrong cd when patching glibc addon mkcommon.sh, mkdistcclinks.sh: * create common/bin/install-distccd.sh for all operating systems we can, not just cygwin-install-distccd.sh 0.28-rc2: Doc: * split off crosstest-howto.html from crosstool-howto.html powerpc64: * added powerpc970.dat and demo-ppc970.sh (thanks Rafael Ávila de Espíndola) crosstool.sh: * abort if PREFIX is set to / or /usr or user running as root 0.28-rc1: Executive summary: * can now build on Mac OS X and Cygwin (though it still only targets Linux) * can now build on x86_64 Linux systems * supports hetrogenous distcc build clusters out-of-the-box * supports building programs to run on Red Hat 6.2 with gcc-2.95.3 or gcc-3.3.3 * no longer requires internet connection if you already have the tarballs * supports new target sparc64 distcc: * To create a build cluster: - make a shared directory all computers can see on network, say /shared - edit demo-cluster.sh to select the toolchains and targets you want, and set RESULT_TOP to /shared/`config.guess` - run demo-cluster.sh on one machine of each type - run $RESULT_TOP/common/bin/run-distccd.sh on each machine Voila! You now have a compile cluster! To use it, set CC in your program's Makefile to $RESULT_TOP/$target/$toolcombo/distributed/bin/$TARGET-gcc You may want to invoke config.guess in your Makefile when setting CC, so the same Makefile can run on multiple architectures. The distcc that comes with this release contains the following patch: patches/distcc-2.13/distcc-stringmap.patch which is needed to support hetrogenous distccd clusters with multiple targets and toolchains. crosstool.sh: * uses right --build argument on binutils and glibc; fixes x86_64 build * remove bogus --enable-clocale=gnu from glibc configure * use own copy of config.guess instead of relying on gcc's * On exit, say *where* the result was stored * Verify that LD_LIBRARY_PATH is not set, since glibc complains if set * handle 2.6 kernel better * obey PARALLELMFLAGS when building binutils and gcc (glibc already did) mkdist.sh: * renamed to clean.sh gcc/glibc versions: * support gcc-3.3.3 * added gcc-2.95.3-glibc-2.1.3.dat to target Red Hat 6.2 boxes * Added patches/glibc-2.1.3/glibc-2.1.3-allow-gcc3-*.patch to allow compiling glibc-2.1.3 with gcc-3.x getandpatch.sh (thanks to Alan Luse for the first three): * use BASENAME in test for previously extracted source trees * don't cd to nonexistent patch directories * Handle linux tarballs which extract to directory 'kernel' * Added a QUIET_EXTRACTIONS option to do non-verbose extractions * offline operation. Important so you can still build if ftp.gnu.org is unreachable and you already have the tarballs. demo.sh: * updated to use gcc-3.3.3 where possible * created demo-$CPU.sh scripts for more processors * demo.sh now just calls all the demo-$CPU.sh scripts * demo.sh now runs through all cpu types even if one fails, and makes separate log files for each * added mkcommon.sh to compile distcc, tcl, expect, dejagnu demo-runtest.sh: * added as example of how to run a single regression test newlib: * added contrib/newlib2, files from Harry Kaes, who successfully built gcc-3.3.2/newlib for mips arm: * Revert to binutils-2.14.90.0.5 because arm has trouble with plain 2.14 * copied gcc-3.3.2-arm-softfloat.patch to patches/gcc-3.3.3, but probably still need contrib/glibc-vfp.patch Added more notes to demo-arm-softfloat.sh * Added arm-iwmmxt sparc64: thanks to Martin Van Leeuwen for the following changes: * backported glibc-2.3.2 fixes from cvs: - patches/glibc-2.3.2/glibc-2.3.2-sparc64-pause.patch - patches/glibc-2.3.2/glibc-2.3.2-sparc64-pwrite64.patch - patches/glibc-linuxthreads-2.3.2/glibc-2.3.2-sparc64-sigproc.patch * tell the assembler to use CPU v9a, -mcpu=ultrasparc3 isn't enough portability: * use -g0 when invoking patch to keep it from checking CVS or Perforce * update glibc-2.1.3's config.sub to avoid warnings on newer systems * copied patches/linux-2.4.24/linux-2.4-bsd-expr.patch to patches/linux-2.4.21/linux-2.4-bsd-expr.patch for Mac OS X's benefit * update gcc-2.95.3's config.sub so we can build on newer systems * patches/{gcc-2.95.3,binutils-2.11.2}/gcc-pr3106.patch fixes compile failure on Mac OS X * patches/gcc-2.95.3/backport-config.gcc-{1.4,1.92}.patch fix compile failures on Mac OS X and x86_64 * avoid using $PWD, since that's a bash feature, not part of POSIX cygwin compatibility: * patch glibc's configure to not depend on case sensitivity: patches/glibc-linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-cygwin.patch patches/glibc-2.3.2/glibc-2.3.2-cygwin.patch patches/glibc-2.2.5/glibc-2.2.5-cygwin.patch patches/glibc-2.1.3/glibc-2.1.3-cygwin.patch * demo*.sh: don't use ~, as ash doesn't expand it * getandpatch.sh: don't use set -e when calling functions that return 1 * don't let gcc-2.95.3 put .exe on end of Linux executables (only ok because we are targeting Linux, not VMS, Windows, or Cygwin) patches/gcc-2.95.3/gcc-2.95.3-cygwin-020611.patch Mac OS X compatibility * Note: you need to install gawk, gnu sed, and wget using fink before you can build crosstool. If wget or any other fink program segfaults, try 'sudo /sw/var/lib/fink/prebound/update-package-prebinding.pl -f' once to get around a hiccup in fink's incremental prelinking of apps. * Two patches from Martin Schaffner: - patches/linux-2.4.24/linux-2.4-bsd-expr.patch - patches/glibc-2.3.2/glibc-configure-apple-as.patch * use 'true' and 'false' rather than '/bin/true' and '/bin/false' * crosstool.sh: override LD and RANLIB when building glibc; fixes ld: .../c_stubs/gconv_stubs.o bad magic number (not a Mach-O file) make[2]: *** [.../build-glibc/c_stubs/libc_stubs.a] Error 1 which probably only happens when building redhat's glibc-2.1.3 0.27 1 Feb 2004 "ow ow ow should have worn hockey skates" getandpatch.sh: * really try to detect patches that fail to apply * be more permissive about how patches are named * can fetch gcc-3.3.3 prereleases crosstool.sh: * let caller override $BUILD if config.guess gets it wrong, e.g. when building 32 bit stuff on X86_64 * always specify --with-sysroot to binutils. Lets you build 32->64 bit cross toolchains with gcc-3.2.3 even though it doesn't support --with-sysroot; all that matters is that binutils-2.14 does. * remove junk file ${PREFIX}/${TARGET}/test-if-write * Since gcc-3.2.* was written in the binutils-2.13 era, and doesn't work properly with newer binutils on mips due to the obsoleting of the -mcpu flag, roll back to binutils-2.13 for gcc-3.2.* toolchains. * Since gcc-3.3.* doesn't build right for alpha with H.J.Lu's binutils-2.14.90.* snapshots, roll back to gnu's binutils-2.14 for gcc-3.3.* toolchains. This fixes a regression caused by crosstool-0.24. (Maybe we'll find out that a couple platforms require the fixes in H.J.Lu's snapshots. That'd be worth knowing.) sh4 fixes: * added patches/gcc-3.3-20040119/pr11608.patch to fix PR11608 arm fixes: * patches/glibc-2.3.2/arm-ioperm.patch caused build failures, and has been replaced by the more correct patches/glibc-2.3.2/arm-ctl_bus_isa.patch. * patches/gcc-3.3.2/gcc-3.3.2-arm-softfloat.patch, arm-softfloat.dat, and demo-arm-softfloat.sh added for people who want to switch to the soft float ABI for higher floating point performance This is from Robert Schwebel's cvs version of the ptxdist patch repository, so he hasn't really released it yet, but it does build. gcc fixes: * Moved pr11587.patch to bad/ subdirectory since it's said to be wrong * Populated patches/gcc-3.3-20040119/ and patches/gcc-3.3-20040126/ new targets (not tested; let me know if they work): * added powerpc-860.dat * added sh3.dat (thanks to Henk Brunsting for sh3.config) crosstest.sh fixes: * crosstest.sh no longer tries to filter out bogus fails caused by http://gcc.gnu.org/PR12096 since the patch crosstool-0.26/patches/expect-5.39/pr12096.patch fixes that bug. You'll want to build expect from sources and apply that patch before running crosstest.sh (until I add that to dejagnu.sh) (see mkcommon.sh) FIXME: * patches/linux-2.4.21/maybe/ia64-offsets.h.patch would partially fix build error caused by removal of generated file offsets.h from linux source tree as of 2.4.21, but doesn't solve more basic problems. For now, if you need to build ia64 toolchains, either use 2.4.20 headers or steal offsets.h from a working system. * dejagnu.sh should build a local copy of expect (with patches/expect-5.39/pr12096.patch applied), but doesn't 0.26 18 Jan 2004 "been so gosh-darned long" It's been too long since the last release, so I'm releasing this version without much regression testing just to get it out the door. I did verify that gcc-3.3-20040112 builds on a number of architectures, though, and I did do one run of the gcc-3.3-20040105/glibc-2.3.2 regression tests on sh4. I hope to do more testing in time for the release of gcc-3.3.3. x86_64 fixes: * added x86_64.dat * added USE_SYSROOT boolean flag. If set, uses --with-sysroot when configuring gcc. This is only supported as of gcc-3.3.3, and seems to be required when building an x86_64 compiler. I set it in x86_64.dat, but it might be reasonable to set it in gcc-3.3.3.dat when that's released. glibc-2.3.2 fixes for arm: * patches/glibc-2.3.2/nobits.patch, avoid @ since that's a comment on arm * patches/glibc-linuxthreads-2.3.2/sysdep-cancel-arm-1.2-1.6.patch * patches/glibc-2.3.2/{arm-ioperm,arm-mcount_internal}.patch from ptxdist glibc-2.3.2 fix for x86_64 (aka gcc bug workaround for x86_64): * patches/glibc-2.3.2/gcc-pr-9552-workaround.patch glibc-2.1.3 fixes: * use --enable-add-ons without args so old crypto addon used if present * patches/glibc-2.1.3/glibc-manual-stdin.texi-1.127.patch * getandpatch.sh now gets crypt addon if GLIBCCRYPT_FILENAME set * Red Hat 6.2 patches from glibc-2.1.3-28.src.rpm (rh62-*.patch) binutils-2.13.90.0.2 fixes: * Red Hat 6.2 patches from binutils-2.13.90.0.2-2.src.rpm (rh62-*.patch) binutils-2.14.90.0.3+ fixes: * getandpatch.sh now runs patches/README if present, grr. gcc-3.3.2 fix for sh: avoid __movstr_i4_even runtime error msg * patches/gcc-3.3.2/sh-lib1funcs_sizeAndType.patch * patches/gcc-3.3.2/sh-libgcc-hidden.patch gcc-3.3.2 test for sh: http://gcc.gnu.org/PR13260 (fix said to be in 3.4) * patches/gcc-3.3.2/pr-13260-test.patch gcc-3.3.3 support: * added gcc-3.3-20040112-glibc-2.3.2.dat. Have not pulled patches forward yet. Removed glibc-2.3.2/shlibs-lds.patch; it was added by mistake in 0.25 crosstool.sh and getandpatch.sh now take SRC_DIR to let multiple architectures share a single set of unpacked source tarballs. (Still can't run multiple runs in parallel, though, unless getandpatch.sh has already run once.) crosstool.sh now checks to make sure awk runs, and that user doesn't have CFLAGS or CXXFLAGS set. These tripped up a couple users. crosstool.sh no longer fails with 64 bit CPUs (which use /lib64) and will use --with-sysroot if you set USE_SYSROOT to a nonempty string; it seems that --with-sysroot is required for 32 -> 64 bit crosscompilers. crosstool.sh now obeys new environment variable BINUTILS_EXTRA_CONFIG crosstest.sh now checks to make sure expect is available, and checks to make sure initjail.sh ran. doc/remote-dejagnu-howto.html now recommends latest expect and tcl, and links to gcc bug report describing patch expect might need chrootlogin.c no longer crashes if run without arguments In last release, gcc-3.3.2 support was added without pulling forward all the applicable patches from gcc-3.3.1, because I didn't have time to test. I had time to test on sh4 this time, so I've pulled forward the patches that seem to be needed. getandpatch.sh now knows how to download and unpack linux-2.6. In my one try actually building a toolchain with linux-2.6 with x86_64, it demanded a .config file, so I went back to linux-2.4 for now. Added more demo-$CPU.sh scripts. demo-*.sh now set exit code on error. updated todo and contrib/ 0.25 14 Nov 2003 Added demo-mipsel.sh for those who just want a toolchain for the Linksys wrt54g, and demo-ppc{405,750}.sh as additional examples of how to use the build script Added glibc-2.2.3 support (since I wanted to match linksys wrt54g's firmware) Added gcc-3.3.2 support. Haven't decided which patches it needs yet. Renamed gcc*-glibc*.dat files to gcc-*-glibc-*.dat to match ${TOOLCOMBO} Added contrib/newlib (thanks Nic Moreau) Added patches/gcc-3.3.1/pr11949-fix.patch Updated to ptxdist-testing as of 20031113, patched a couple buglets Fixed broken symlinks (thanks Marc K-B) Removed extra file patches/glibc-2.2.5/mips-clone-local-label.diff (thanks Stuart Hughes) Let LINUX_DIR point anywhere (thanks Yves Rutschle); but see also contrib/xtool-ro.patch getandpatch.sh now aborts properly if tarballs are corrupt Moved download of ptxdist to getandpatch.sh from ptx.sh to allow building different toolchains in parallel (though the parallel ptxdist builds will still download busybox at same time, so best download that first; FIXME) Brought epoll.h in glibc-2.3.2 up to date with cvs by adding glibc-2.3.2/epoll-{epollet,stdint}.patch Only very lightly tested. 0.24 15 Sept 2003 Rearranged patch repository so you can hyperlink to it without seeing all the other dat files etc; *-patches moved to patches/* Eight bug reports in Bugzilla against the Hitachi SH processor had nice test cases that had not as far as I know made it into the testsuite, so I wrote the following eight patches and apply them to both gcc-3.3.1 and gcc-3.4-20030903: pr9365-1-test.patch pr10392-1-test.patch pr10412-1-test.patch pr10589-1-test.patch pr11162-1-test.patch pr11587-1-test.patch pr11736-1-test.patch pr11864-1-test.patch Each of those creates a testcase prNNNNN-1.c. One of them had a fix in the report but not in cvs, so I added pr11587.patch to both gcc-3.3.1 and gcc-3.4-20030903. I verified that the new tests pr9365-1.c pr10392-1.c pr10589-1.c pr11587-1.c pr11736-1.c pr11864-1.c report FAIL on sh4 in my test runs with gcc-3.3.1, as expected. They are not marked XFAIL because they are regressions from older compilers. Hope someone fixes them soon. (I don't test with -m2, so I don't catch pr10412.) It looks like the fix for pr11587 worked, and fixed pr11162 as well... Tried gcc3.3.1-glibc2.2.2 with sh4, but it turns out glibc-2.2.2 doesn't support sh4, and its configure script gets stuck in an infinite loop on "checking sysdep dirs..." :-) 0.23 9 Sept 2003 "all your base are belong to ptxdist" Added gcc-3.4-20030903-glibc2.3.2.dat, gcc3.3.1-glibc2.2.5.dat --builduserspace: updated to a new ptxdist snapshot, added libnet, libpcap, and ncurses 0.22 26 Aug 2003 "towards userspace -- and beyond!" glibc-2.2.5 and glibc-2.3.2 now build on arm with gcc-3.3.x thanks to glibc-2.2.5-patches/dl-machine-arm.patch, glibc-2.2.5-patches/arm-asm-clobber.patch, and glibc-2.3.2-patches/arm-asm-clobber.patch crosstest.sh now invokes the gcc-3.4-20030813 libstdc++ testsuite properly. crosstool.sh and crosstest.sh now work even if PATH contains a space (as it often does on Cygwin). doc/crosstool-howto.html now mentions the need for gcc-3.2 or higher to compile a recent toolchain doc/crosstool-howto.html now suggests setting tcp_tw_recycle both locally and on target to allow lots of rsh sessions, and has a harsher test for whether rsh is in fact configured to allow lots of sessions. doc/chroot-login-howto.html now has instructions for configuring xinetd to allow lots of rsh sessions. (Hmm, seems like the rsh configuration doc should be in one place, not in two... fixme) Thanks to Michael LeBlanc for xinetd config info. Deleted glibc-2.3.2-patches/sh-fpscr-libc-kludge.patch, and added back to sh4.dat the line GLIBC_CONFIGPARMS="no-z-defs=yes", to fix the following gcc tests that fail with that patch: 20000605-1.c 20020411-1.c 930603-1.c complex-6.c conversion.c gofast.c ieee/{20010114-2.c, inf-1.c, rbug.c} (no-z-defs is only needed for gcc-3.4-*/glibc-2.3.2, but shouldn't hurt older versions.). This means I can't run my old binaries on sh4, but that's ok. all.sh now takes an optional --builduserspace flag. If this is set, all.sh uses ptx.sh to build busybox, and crosstest.sh uses this busybox instead of the target's normal shell. This is useful if you can't run the target's normal shell with the new toolchain. (e.g. when the target's old /bin/sh is linked against a newer glibc, or when the target's old /bin/sh and libc used a different shared library interface). Thanks to Pengutronix for PTXdist. I plan to use it to build things like ncurses and libreadline in the next release; ncurses-5.3 already builds, but I commented that line out of ptx.config as it's not needed for testing toolchains. Eventually crosstool and PTXdist may merge somehow. Caution: if you use --builduserspace, you must install the graphviz package (see http://www.research.att.com/sw/tools/graphviz/), else the build will fail in ptx.sh with 'dot: command not found'. This is a usability problem with ptxdist; it shouldn't require graphviz by default. Discovered why the libstdc++ 27_io testcases fail when run remotely: it's a bug in the testcase driver, which needs to use dejagnu's remote file operations during test setup and evaluation. Updated http://gcc.gnu.org/PR11610 Likewise, the testcase g++-bprob-1 fails when run remotely due to a similar bug in the testcase driver. Filed http://gcc.gnu.org/PR12055 0.21 23 Aug 2003 "poopiest baby in the world" Added gcc2.95.3-glibc2.2.5.dat Added gcc3.2.3-glibc2.3.2.dat Added arm9tdmi.dat crosstest.sh now edits linker scripts to remove BUG line to work around bug described at http://sources.redhat.com/ml/bug-glibc/2003-05/msg00055.html, needed to fix gcc-3.2.3/glibc-2.3.2 targeting arm crosstest.sh now finds the libstdc++ test whether it's named libstdc++ or libstdc++-v3. This was needed for gcc2.95.3. Tests still not invoked quite right on that version, but it's close. crosstool.sh now can use a .config that was copied by hand into the kernel source directory even if you don't set KERNELCONFIG, at Dara's request. Refactored gcc-3.4-20030813-patches/compat.exp.patch gcc-3.4-20030813-patches/gcc-3.4-20030813-g++.exp.patch gcc-3.4-20030813-patches/gcc-3.4-20030813-libstdc++.exp.patch into gcc-3.4-20030813-patches/pr12009.patch gcc-3.4-20030813-patches/pr12010.patch Replaced gcc-3.4-20030813-patches/gcc-3.4-20030813-dj0815.patch with gcc-3.4-20030813-patches/kaz-gcc-3.4-20030813-abi_check.patch because Kaz pointed out a problem. This probably isn't the final solution to the libstdc++-v3/testsuite/abi_check.c link failure on sh. This did not change regression test results, but then, gcc-3.4-20030813 fails many of the floating point tests anyway, so maybe the change is masked. Started experimenting with using ptxdist to build busybox etc. ptx.sh and ptx.config only support powerpc-750 at the moment, and fail compiling busybox, so don't try ptx.sh unless you like broken stuff :-) 0.20 19 Aug 2003 "oops" getandpatch.sh falls back to .gz if .bz2 not available; this is important when compiling older versions, which haven't been recompressed yet. Added glibc-2.3.2-patches/string2-typedef.patch to fix bad attribute revealed by compiling with gcc-3.4 0.19 18 Aug 2003 "static on the baby monitor" getandpatch.sh fetches .bz2 archives where possible to save download time Switch to linux-2.4.21 as that includes asm-ppc/unistd.h changes that supposedly fix a busybox compilation problem. The problem is described at http://lists.debian.org/debian-glibc/2003/debian-glibc-200305/msg00190.html and may be fixed in busybox cvs, but what the heck, let's support the old busybox sources. Added gcc-3.4 snapshot support. Patches: Forward port of testsuite fixes for cross-compilation: gcc-3.4-20030813-patches/compat.exp.patch gcc-3.4-20030813-patches/gcc-3.4-20030813-g++.exp.patch gcc-3.4-20030813-patches/gcc-3.4-20030813-libstdc++.exp.patch Fix --without-fp (thanks, Dan J.!): glibc-2.3.2-patches/glibc-2.3.2-without-fp.patch [fixed typo here 21 aug 2003] Fix --without-headers: gcc-3.4-20030813-patches/gcc-3.4-without-headers.patch Kludge to let me run old binaries on sh4: glibc-2.3.2-patches/sh-fpscr-libc-kludge.patch Note that most people building gcc-3.4/glibc-2.3.2 on sh4 will want to remove sh-fpscr-libc-kludge.patch and use sh4-normal.dat rather than sh4.dat. I needed to do things a bit oddly because I didn't want to have to recompile busybox with the new toolchain. Thanks to Kaz and Dan J. for hints about fpscr_values issues. crosstool.sh now grabs files from lib/nof if glibc is built --without-fp. gcc-3.4 doesn't build non-nof version of libstdc++ in that case, which made it pretty obvious I wasn't handling that right! 0.18 12 Aug 2003 "not enough sleep" Added gcc-3.3.1 support and test results. Removed same for pre-gcc-3.3.1 snapshots. Tested with ppc405, ppc750, sh4; see summaries directory. Did all sorts of little cleanup after testing, so I might have botched something; hope not. I really need to run through demo.sh again; I haven't compiled for anything but ppc405, ppc750, and sh4 in several releases, though they should all still work. The sh4 glibc string functions problems appear to be a gcc-3.3 regression; see http://gcc.gnu.org/PR11864 Kaz has a patch that papers over the problem without causing any caught regressions, but he's not happy with it yet, so I'm not including it. gcc-3.3.1/glibc-2.3.2 failed glibc's tst-fseek test on ppc750 with errors 353: st_ctime not changed 358: st_mtime not changed Possible causes: on my target, /tmp is tmpfs and /build-glibc is nfs; maybe those don't update those fields on write, or perhaps the version of the kernel I ran it on (linux-2.4.17 ppc_devel) has a problem. I haven't really looked. mipsel.config now sets little-endian mode to match the name (thanks, Guido!) all.sh now delivered chmod +x in the source tarball as suggested by jfreeman I've added two user-contributed patches to a 'contrib' subdirectory: contrib/bz2.patch adds support for bz2, which should make fetching source much faster. contrib/xtool-ro.patch lets you run with sources in a read-only directory. I'll integrate these patches once I have time to try 'em. Submitted gcc PRs for the problems fixed by the following patches: gcc-3.3.1-patches/sh-pic-set_fpscr.patch http://gcc.gnu.org/PR11901 gcc-3.3.1-patches/sh-spec.patch http://gcc.gnu.org/PR11902 gcc-3.3.1-patches/sh4-pthread.patch http://gcc.gnu.org/PR11903 0.17 4 Aug 2003 The sh4 toolchain is now in about the same state on glibc-2.3.2 as it was on glibc-2.2.5, which is to say a bit shaky compared to ppc405 and ppc750: powerpc-750/gcc-3.3/glibc-2.3.2: fails 1 out of 339 glibc tests powerpc-750/gcc-3.3/glibc-2.2.5: fails 1 out of 247 glibc tests powerpc-405/gcc-3.3/glibc-2.3.2: fails 5 out of 339 glibc tests powerpc-405/gcc-3.3/glibc-2.2.5: fails 5 out of 247 glibc tests sh4/gcc-3.3/glibc-2.3.2: fails 19 out of 339 glibc tests sh4/gcc-3.3/glibc-2.2.5: fails 12 out of 247 glibc tests Still, at least crosstool can now build sh4/gcc-3.3/glibc-2.3.2, which should make it easier for newcomers to verify these test failures and perhaps even fix them. Thanks to Kaz Kojima for his patient assistance! This release contains three patches he wrote to help me get past dynamic linking problems on SH: 1. gcc-3.3-patches/sh-spec.patch fixes an early segmentation fault in ld-linux.so which caused all dynamically-linked programs to fail on sh4 with glibc-2.3.2. It seems gcc on SH has for years been inserting an rpath of /lib when you didn't specify one, which runs afoul of the new assert (info[DT_RPATH] == NULL); at line 161 in glibc-2.3.2/elf/dynamic-link.h. Simply removing this default rpath from gcc's spec file cures the crash. The following two patches are needed because glibc-2.3.2 (as of Dec 2002) checks at build time to make sure its shared libraries don't need text relocations (which would hurt prelinking). 2. gcc-3.3-patches/sh-pic-set_fpscr.patch fixes part one cause of make[2]: *** [/build/sh4-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/build-glibc/elf/check-textrel.out] Error 1 Without it, check-textrel complains libc.so: text relocations used linuxthreads/libc.so: text relocations used math/libm.so: text relocations used because there was no PIC version of set_fpscr(). 3. binutils-2.14.90.0.5-patches/binutils-sh-relocs.patch fixes another cause of: make[2]: *** [/build/sh4-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/build-glibc/elf/check-textrel.out] Error 1 Without it, check-textrel complains libc.so: text relocations used linuxthreads/libc.so: text relocations used linuxthreads/libpthread.so: text relocations used math/libm.so: text relocations used resolv/libresolv.so: text relocations used because DT_TEXTREL was set even though there were no text relocations. Other changes: glibc-{2.2.5,2.3.2}-patches/glibc-test-lowram.patch prevents glibc's tst-calloc from running out of RAM on 32MB target systems, at the cost of weakening the test a bit. The test should probably check RLIMIT_DATA and/or RLIMIT_AS, and use them at runtime to decide how big a test to run. Instead, I've just hardcoded it to be one sixth the original size. Other notes: On sh4, g++'s thread/pthread6.cc test failed with gcc-3.3, but not with gcc-ss-3_3-20030714. Not sure what's going on there yet. On sh4, until gcc-3.4, the -mrelax option in gcc is broken, and the corresponding test in the binutils test suite fails. If you need this to work in gcc-3.3, Kaz says use binutils-2.14.90.0.5 or later, and see http://gcc.gnu.org/ml/gcc-patches/2003-03/msg00226.html and http://gcc.gnu.org/ml/gcc-patches/2003-03/msg00213.html I have not tested these patches yet. The error in the binutils test log is ERROR: -O -mrelax ...ld/testsuite/ld-sh/sh2.c: compilation failed 0.16 31 July 2003 "Shaking out glibc-2.3.2 a bit" glibc-2.3.2-patches/glibc-2.3.2-without-fp.patch, straight from Daniel Jacobowitz, fixes the --without-fp option of glibc-2.3.2, needed for ppc405. glibc-2.3.2-patches/glibc-2.3.2-cross.patch, from cvs, avoids a glaring build failure. gcc-3.3-patches/sh-pic-set_fpscr.patch is a partial fix for problems building gcc-3.3/glibc-2.3.2 for sh4. Work in progress. gcc3.3-glibc2.3.2.dat now refers to binutils-2.14.90.0.5 in hopes that fixes problems on sh4 (or at least makes it easier for Kaz to play with) My gcc-*-patches directories are a bit out of sync; if you run into a problem, it could be the patch you need hasn't been copied or symlinked into your version of gcc's patches directory yet. Note that wget on Red Hat 9 is rumored to not be able to fetch from gnu.org. Workaround - use vanilla wget, or perhaps add the flag to use passive mode. 0.15 26 July 2003 "if it hurts, don't do it" crosstool.sh now obeys GCC_EXTRA_CONFIG when building bootstrap gcc, otherwise glibc's shared libraries have bad code linked into them on some cpus. crosstool.sh sets BUILD_CC when configuring glibc so it can build datafiles needed for test. crosstest.sh now runs subset of glibc regression test. glibc-2.2.5-patches/sh-setjmp-fix.patch fixes glibc isomac conformance failure on sh. glibc-2.2.5-patches/glibc-2.2.5-crosstest.patch tells glibc to actually compile shared libraries needed to run its unit tests. Test results in 'summaries' directory. Actually passes most of the gcc and glibc regression tests for ppc405 and ppc750. Doesn't fare quite so well yet on sh4. 0.14 21 July 2003 Tracked down some test failures, documented in gcc-ss-3_3-20030714-bugs.txt Fixed four test failures, mostly-fixed another, and suppressed several failures caused by bugs in expect: gcc-ss-3_3-20030714-patches/pthread4.patch from cvs should fix FAIL: thread/pthread4.cc execution test gcc-ss-3_3-20030714-patches/empty6.patch from cvs should fix FAIL: g++.dg/abi/empty6.C (test for warnings, line 6) gcc-ss-3_3-20030714-patches/thunk3.patch, a little patch I wrote, should fix FAIL: g++.jason/thunk3.C (test for excess errors) gcc-ss-3_3-20030714-patches/sh4-pthread.patch, from http://www.sh-linux.org/rpm-2003/SRPMS/gcc-3.2.3-3.src.rpm's gcc-20030210-sh-linux-1.patch, should fix -pthread on sh4, symptom FAIL: thread/pthread1.cc (test for excess errors) crosstest.sh now configures final gcc with --with-headers to avoid setting inhibit_glibc; this causes -g -fprofile-arcs to actually compile, fixing e.g. FAIL: g++.dg/bprob/g++-bprob-1.C compilation, -g -fprofile-arcs It now gets a little farther, namely FAIL: g++.dg/bprob/g++-bprob-1.C execution: file g++-bprob-1.da does not exist, -g -fprofile-arcs The tcl for that test doesn't seem to use the proper remote file operations. dejagnu-bug is a list of test failures known to be caused by dejagnu (all due to truncating compiler output in local_exec). For convenience, crosstest.sh now does 'fgrep -v -f dejagnu-bug < *.sum > *.sum2' 0.13 17 July 2003: no, really this time. Worked some kinks out of running crosstest.sh in parallel for different targets Fix one more place g++ testsuite is improperly setting LD_LIBRARY_PATH cleantmp.sh now runs outside the jail crosstest.sh now enforces tcp_tw_recycle=1 on Linux to avoid dreaded rsh failure Include test summaries from ppc405, ppc750, sh4 in files summaries/$TARGET-$GCC-$GLIBC.tool.sum 0.12 13 July 2003: actually runs gcc/g++/stdlibc++ testsuites on sh4,ppc405,ppc750 Details: crosstest.sh now tests binutils, gcc, g++, and stdlibc++ instead of just gcc crosstest.sh creates file LAST_UPDATED if missing so contrib/test_summary doesn't abort crosstest.sh now mentions how to force static linking of test programs crosstest.sh checks remote execution early, and aborts if it fails crosstest.sh now saves gcc test summary as $TARGET-$TOOLCOMBO.gcc.sum in top level crosstool.sh now lets caller pass glibc config args in GLIBC_EXTRA_CONFIG (needed for ppc405) crosstool.sh disables nls in final gcc build (somewhat arbitrarily) glibc-2.2.5-patches & gcc-3.2.3-patches include my ppc405 erratum 77 patches glibc-2.2.5-patches includes Montavista's hhl-powerpc-float patch, rediffed gcc-{3.2.3,3.3}-patches now include my g++ and libstdc++-v3 cross-test patches getandpatch.sh now uses -f so patches which delete files apply properly. demo.sh uses target name powerpc instead of ppc, because test suites have 'powerpc' hardcoded in their exception lists & binutils' make check disallows ppc. all.sh now lets caller override TARBALLS_DIR, RESULT_TOP, and PREFIX doc/dejagnu-remote-howto.html now mentions that rsh/rcp are the default, and no longer claims that glibc uses dejagnu 0.11: Updated crosstest.sh to actually work. Added doc/crosstool-howto.html, doc/chroot-login-howto.html Added chrootshell.c Added inetutils-1.4.2-patches/*.patch to work around old sh4 compiler bug that made rcp fail. Renamed dejagnu tutorial doc/dejagnu-remote-howto.html Remove absolute paths from libpthread.so (by analogy with libc.so; untested) 0.10: Added initial try at m68k, hppa, and x86_64 support. hppa might work if you enable the experimental patches; see glibc-2.3.2-patches/README-hppa. I haven't tried them. 0.9: Added initial cris support. 0.8: Added mips support. Added notes on how to run tests remotely with dejagnu (not finished). 0.7: Got arm building properly for gcc-3.2.3 and gcc-2.95.3 Added ia64 support. Started adding s390 support. Fixed HOST setting to make sense (thanks to Dan Jacobowitz for his assistance). Added speculative patch to fix config.sub so users running this script on s390 and cris don't fail in gcc configure. 0.6: Added sparc support. Haven't actually run binaries compiled for sparc yet. Added arm support, but gcc-3.3 isn't building glibc-2.3.2 (see http://gcc.gnu.org/PR11103), and I haven't tried the others yet. 0.5: Run 'make check' after building binutils, gcc, and glibc but only if DEJAGNU environment variable set. And since Dejagnu hates abbreviated target names, use names like xxx-yyy-linux-gnu Added initial alpha support 0.4: Add gcc-3.3-patches/{sh-predef-gnu_source,sh4-no-fix-protos}.patch to fix sh4 build for glibc-2.2.5. Fixed typo in glibc-2.3.2 support; it builds for ppc and x86 now. (sh4 build dies with "include/asm/user.h:32: error: redefinition of `struct user_fpu_struct'".) 0.3: add x86->x86 support This involved twiddling HOST in crosstool.sh to force cross-compiler even if HOST = TARGET. Not sure this is a good idea yet (and I got it wrong; fixed in rev 0.7). See also http://gcc.gnu.org/ml/gcc-patches/2003-06/msg00246.html 0.2: add glibc-2.3.2 support, move options from demo script into .dat files 0.1: Starting with Bill Gatliff's script, add framework for downloading and patching.