about summary refs log tree commit diff
path: root/scripts/build-many-glibcs.py
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove pre-Python-3.4 compatibility from build-many-glibcs.py.Joseph Myers2018-10-261-11/+0
| | | | | | | | | | | | | | | | | | | Since we have consensus on requiring Python 3.4 or later to build glibc, it follows that compatibility with older Python versions is also no longer relevant to auxiliary Python scripts for use in glibc development. This patch removes such compatibility code from build-many-glibcs.py (compatibility code needed for 3.4, which lacks the newer subprocess interface, is kept). Because build-many-glibcs.py is not itself called from the glibc build system, this patch is independent of the configure checks for having a new-enough Python version, which are only relevant to uses of Python from the main build and test process. Tested with build-many-glibcs.py building glibc for aarch64-linux-gnu (with Python 3.4 to make sure that still works). * scripts/build-many-glibcs.py: Remove compatibility for missing os.cpu_count and re.fullmatch.
* Use Linux 4.19 in build-many-glibcs.py.Joseph Myers2018-10-221-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default Linux version to 4.19.
* Add build-many-glibcs.py support for building more GCC libraries.Joseph Myers2018-09-111-12/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Every so often we get libsanitizer or libgo builds breaking with new glibc because of some change in the glibc headers. glibc's build-many-glibcs.py deliberately disables libsanitizer and GCC languages other than C and C++ because the point is to test glibc and find glibc problems (including problems shown up by new compiler warnings in new GCC), not to test libsanitizer or libgo; if the compiler build fails because of libsanitizer or libgo failing to build, that could hide the existence of new problems in glibc. However, it seems reasonable to have a non-default mode where build-many-glibcs.py does build those additional pieces, which this patch adds. Note that I do not intend to run a build-many-glibcs.py bot with this new option. If people concerned with libsanitizer, libgo or other potentially affected GCC libraries wish to find out about such problems more quickly, they may wish to run such a bot or bots (and to monitor the results and fix issues found - obviously there will be some overlap with issues found by my bots not using that option). Note also that building a non-native Ada compiler requires a sufficiently recent native (or build-x-host, in general) Ada compiler to be used, possibly more or less the same version as being built. That needs to be in the PATH when build-many-glibcs.py --full-gcc is run; the script does not deal with setting up such a compiler (or any of the other host tools needed for building GCC and glibc, beyond the GMP / MPFR / MPC libraries), but perhaps it should, to avoid the need to keep updating such a compiler manually when running a bot. Tested by running build-many-glibcs.py with the new option, with mainline GCC. There are build failures for various configurations, which may be of interest to Go / Ada people even if you're not interested in running such a bot: * mips64 / mips64el (all configuration): ICE building libstdc++, as seen without using the new option <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87156>. * aarch64_be: error building libgo (little-endian aarch64 works fine): version.go:67:13: error: expected ';' or ')' or newline 67 | BigEndian = | ^ version.go:67:3: error: reference to undefined name 'BigEndian' 67 | BigEndian = | ^ * arm (all configurations): error building libgo: /scratch/jmyers/glibc/many9/src/gcc/libgo/go/internal/syscall/unix/getrandom_linux.go:29:5: error: reference to undefined name 'randomTrap' 29 | if randomTrap == 0 { | ^ /scratch/jmyers/glibc/many9/src/gcc/libgo/go/internal/syscall/unix/getrandom_linux.go:38:34: error: reference to undefined name 'randomTrap' 38 | r1, _, errno := syscall.Syscall(randomTrap, | ^ What's happening there is, I think, that the arm*b*-*-* case in libgo/configure.ac is wrongly matching arm-glibc-linux-gnueabi with the 'b' in the vendor part, and then something else is failing to handle GOARCH=armbe. Given that you can have configurations with multilibs of both endiannesses, endianness should always be detected by configure.ac, for all architectures, using a compile test of whether __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__, not based on textual matches to the host (= target at top-level) triplet. * armeb (all configurations): error building libada (for some reason the Arm libada configuration seems to do different things for EH for big-endian, which makes no sense to me and doesn't actually work): a-exexpr.adb:87:06: "System.Exceptions.Machine" is not a predefined library unit a-exexpr.adb:87:06: "Ada.Exceptions (body)" depends on "Ada.Exceptions.Exception_Propagation (body)" a-exexpr.adb:87:06: "Ada.Exceptions.Exception_Propagation (body)" depends on "System.Exceptions.Machine (spec)" * hppa: error building libgo (same error as for aarch64_be). * ia64: ICE building libgo. I've filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87281> for this. * m68k: ICE in the Go front end building libgo <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84948>. * microblaze, microblazeel, nios2, sh3, sh3eb: build failure in libada for lack of a libada port to those systems (I'm not sure sh3 would actually need anything different from sh4): a-cbdlli.ads:38:14: violation of restriction "No_Finalization" at system.ads:47 * i686-gnu: build failure in libada, might be fixed by the patch attached to <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81103> (not tested): terminals.c:1115:13: fatal error: termio.h: No such file or directory * scripts/build-many-glibcs.py (Context.__init__): Add full_gcc argument. (Config.build_gcc): Use --disable-libsanitizer for first GCC build, but not for second build if --full-gcc. Use --enable-languages=all for second build if --full-gcc. (get_parser): Add --full-gcc option. (main): Update call to Context.
* Add build-many-glibcs.py --enable-obsolete-* configs.Joseph Myers2018-09-101-0/+8
| | | | | | | | | | | | | | | We've had issues before with build failures (with new GCC) in code only built with --enable-obsolete-rpc or --enable-obsolete-nsl not being reported for a while because build-many-glibcs.py does not test those configure options. This patch adds configurations (32-bit and 64-bit) using those options so that in future we can notice quickly if they start failing to build. Tested the new configurations do build with GCC 8. * scripts/build-many-glibcs.py (Context.add_all_configs): Add x86_64 and i686 configs using --enable-obsolete-rpc --enable-obsolete-nsl.
* Use Linux 4.18 in build-many-glibcs.py.Joseph Myers2018-08-131-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default Linux version to 4.18.
* Use binutils 2.31 branch in build-many-glibcs.py.Joseph Myers2018-07-201-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default binutils version to 2.31 branch.
* Change URL of gcc's tarballZong Li2018-07-201-1/+1
| | | | | | | After 7.1.0 version, there is no .bz2 format of gcc's tarball. * scripts/build-many-glibcs.py (Context.checkout_tar): Change the URL of gcc's tarball.
* Use Linux 4.17 in build-many-glibcs.py.Joseph Myers2018-06-041-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default Linux version to 4.17
* Remove tilegx port.Joseph Myers2018-04-271-9/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since tile support has been removed from the Linux kernel for 4.17, this patch removes the (unmaintained) port to tilegx from glibc (the tilepro support having been previously removed). This reflects the general principle that a glibc port needs upstream support for the architecture in all the components it build-depends on (so binutils, GCC and the Linux kernel, for the normal case of a port supporting the Linux kernel but no other OS), in order to be maintainable. Apart from removal of sysdeps/tile and sysdeps/unix/sysv/linux/tile, there are updates to various comments referencing tile for which removal of those references seemed appropriate. The configuration is removed from README and from build-many-glibcs.py. contrib.texi keeps mention of removed contributions, but I updated Chris Metcalf's entry to reflect that he also contributed the non-removed support for the generic Linux kernel syscall interface. __ASSUME_FADVISE64_64_NO_ALIGN support is removed, as it was only used by tile. * sysdeps/tile: Remove. * sysdeps/unix/sysv/linux/tile: Likewise. * README (tilegx-*-linux-gnu): Remove from list of supported configurations. * manual/contrib.texi (Contributors): Mention Chris Metcalf's contribution of support for generic Linux kernel syscall interface. * scripts/build-many-glibcs.py (Context.add_all_configs): Remove tilegx configurations. (Config.install_linux_headers): Do not handle tile. * sysdeps/unix/sysv/linux/aarch64/ldsodefs.h: Do not mention Tile in comment. * sysdeps/unix/sysv/linux/nios2/Makefile: Likewise. * sysdeps/unix/sysv/linux/posix_fadvise.c: Likewise. [__ASSUME_FADVISE64_64_NO_ALIGN] (__ALIGNMENT_ARG): Remove conditional undefine and redefine. * sysdeps/unix/sysv/linux/posix_fadvise64.c: Do not mention Tile in comment. [__ASSUME_FADVISE64_64_NO_ALIGN] (__ALIGNMENT_ARG): Remove conditional undefine and redefine.
* Use GCC 8 in build-many-glibcs.py by default.Joseph Myers2018-04-251-1/+1
| | | | | | | | | | | | | | | | | Now that GCC 8 has branched, this patch makes build-many-glibcs.py default to using GCC 8 branch instead of GCC 7. The effect should be that all builds complete cleanly and the compilation parts of the glibc testsuite complete cleanly except for on i686-gnu (with GCC 7 there were testsuite failures for some other configurations as well). I've replaced my bot building using GCC 6 branch with one using GCC 8 branch. (Of course glibc should continue building with GCC 6 - and for that matter GCC 5 and 4.9, which are no longer maintained, are supported versions as well - but building with GCC 6 will no longer be included in my bot testing.) * scripts/build-many-glibcs.py (Context.checkout): Default GCC version to GCC 8 branch.
* Make build-many-glibcs.py build GCC for powerpcspe with --enable-obsolete.Joseph Myers2018-04-181-2/+3
| | | | | | | | | | | | | | | The powerpcspe GCC port has been obsoleted in GCC 8 for not having had the removal of code for non-SPE processors completed. This patch accordingly arranges for build-many-glibcs.py to configure GCC with --enable-obsolete for affected configurations. This is temporary; either the port gets cleaned up and unobsoleted in GCC and the configure option can be removed, or the port gets removed in GCC and we should remove the corresponding glibc support. Tested with build-many-glibcs.py for the affected configurations. * scripts/build-many-glibcs.py (Context.add_all_configs): Use --enable-obsolete for powerpc-linux-gnuspe.
* Use Linux 4.16 in build-many-glibcs.py.Joseph Myers2018-04-031-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default Linux version to 4.16.
* Use MPFR 4.0.1 in build-many-glibcs.py.Joseph Myers2018-02-071-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default MPFR version to 4.0.1.
* Add RISC-V to build-many-glibcs.pyPalmer Dabbelt2018-01-291-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For full disclosure, I've only run build-many-glibcs.py with the additional diff below. diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index 1c7b85050b57..22cc7b427041 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -706,7 +706,7 @@ class Context(object): 'gcc': 'vcs-7', 'glibc': 'vcs-mainline', 'gmp': '6.1.2', - 'linux': '4.14', + 'linux': '4.15-rc8', 'mpc': '1.0.3', 'mpfr': '3.1.6'} use_versions = {} @@ -841,7 +841,7 @@ class Context(object): url_map = {'binutils': 'https://ftp.gnu.org/gnu/binutils/binutils-%(version)s.tar.bz2', 'gcc': 'https://ftp.gnu.org/gnu/gcc/gcc-%(version)s/gcc-%(version)s.tar.bz2', 'gmp': 'https://ftp.gnu.org/gnu/gmp/gmp-%(version)s.tar.xz', - 'linux': 'https://www.kernel.org/pub/linux/kernel/v4.x/linux-%(version)s.tar.xz', + 'linux': 'https://git.kernel.org/torvalds/t/linux-%(version)s.tar.gz', 'mpc': 'https://ftp.gnu.org/gnu/mpc/mpc-%(version)s.tar.gz', 'mpfr': 'https://ftp.gnu.org/gnu/mpfr/mpfr-%(version)s.tar.xz'} if component not in url_map: 2018-01-29 Palmer Dabbelt <palmer@sifive.com> * scripts/build-many-glibcs.py (Context): Add RISC-V targets. (Config): Likewise.
* Make build-many-glibcs.py clean git source directories.Joseph Myers2018-01-291-0/+3
| | | | | | | | | | | | | | | | | | With the git checkouts of Hurd components in build-many-glibcs.py involving running autoreconf, there's a risk that generated files could be left behind by an old autoreconf run (if an old version of the sources generates those files in the source directory but a new version does not). This patch avoids that by using git clean -dxfq when updating git checkouts. In this patch, that's conditional on --replace-sources, to avoid removing any local not-checked-in files someone may have in their checkout unless the option has been specifically passed that says it's OK to blow old checkouts away, complete with any local changes to them. * scripts/build-many-glibcs.py (Context.git_checkout): Use git clean -dxfq for git updates when replacing sources.
* Clean up build-many-glibcs.py libcilkrts disabling.Joseph Myers2018-01-291-3/+5
| | | | | | | | | | | | | | | | The disabling of libcilkrts in build-many-glibcs.py has some peculiarities. It's only for the final GCC build, not the initial bootstrap one, whereas normally anything disabled for the final build should be disabled for the bootstrap one as well. And it's only for Hurd, when it's more natural by analogy with the libsanitizer disabling to disable this library unconditionally, not only for targets where it's known to break. This patch cleans up that disabling accordingly, adding a comment so it's obvious it can be removed once GCC 7 is too old to build glibc. * scripts/build-many-glibcs.py (Config.build_gcc): Use --disable-libcilkrts unconditionally, not just for the final GCC build for Hurd.
* Use Linux 4.15 in build-many-glibcs.py.Joseph Myers2018-01-291-1/+1
| | | | | | | | This patch makes build-many-glibcs.py use Linux 4.15. Other glibc updates for Linux 4.15 can wait until after the 2.27 release. * scripts/build-many-glibcs.py (Context.checkout): Default Linux version to 4.15.
* hurd: Make build-many-glibcs.py use mainline gnumachSamuel Thibault2018-01-281-1/+8
| | | | | | | Some warnings need a couple of fixes in the gnumach headers. * scripts/build-many-glibcs.py (checkout_vcs): Add gnumach repository URLs, run autoreconf, and make it the default for now.
* hurd: make build-many-glibcs.py use mainline migSamuel Thibault2018-01-271-1/+8
| | | | | | | | Some warnings come from code generated by mig, so we need a very recent version for now. * scripts/build-many-glibcs.py (checkout_vcs): Add mig repository URL, and run autoreconf, make it the default for now.
* hurd: fix gcc build in build-many-glibcs.pySamuel Thibault2018-01-271-0/+2
| | | | | | | | | gcc's libcilkrts has never actually supported GNU/Hurd, and doesn't automatically disable it, and the support was actually removed in gcc trunk, so that will never actually be fixed there. * scripts/build-many-glibcs.py [os == gnu] (build_gcc): Pass --disable-libcilkrts to gcc configure.
* hurd build-many-glibcs.py: use hurd mainline for nowSamuel Thibault2018-01-261-1/+1
| | | | | * scripts/build-many-glibcs.py (checkout_vcs): Make hurd mainline the default for now.
* build-many-glibcs.py: Fix hurd-vcs checkoutSamuel Thibault2018-01-251-1/+4
| | | | * scripts/build-many-glibcs.py (checkout_vcs): Run autoconf.
* build-many-glibcs.py: Add hurd vcs supportSamuel Thibault2018-01-251-0/+4
| | | | * scripts/build-many-glibcs.py (checkout_vcs): Add hurd repository URL.
* Add soft-float ColdFire to build-many-glibcs.py.Joseph Myers2018-01-241-0/+5
| | | | | | | | | | | | | | Since it turns out soft-float ColdFire has a different glibc ABI to hard-float ColdFire, as well as various differences in which glibc code gets built, this patch adds such a configuration to build-many-glibcs.py to (hopefully) complete the set of ABIs being tested. (Note that the build for soft-float ColdFire is currently broken even with GCC mainline - I have a glibc patch to fix this, but it needs before-and-after build-many-glibcs.py comparison of stripped binaries for all configurations before being committed.) * scripts/build-many-glibcs.py (Context.add_all_configs): Add soft-float ColdFire configuration.
* Add build-many-glibcs.py support for Hurd.Joseph Myers2018-01-241-10/+65
| | | | | | | | | | | | | | | | | | | | | | | This patch adds build-many-glibcs.py support for GNU Hurd. Builds of the i686-gnu configuration will fail until sufficient support is merged to master, so completing build-many-glibcs.py coverage of all glibc ABIs and making results accurately reflect the broken state of builds for Hurd. * scripts/build-many-glibcs.py (Context.add_all_configs): Add i686-gnu configurations. (Context.run_builds): Include mig, gnumach and hurd in components considered. (Context.checkout): Add mig, gnumach and hurd to components. (Context.checkout_tar): Add URL mappings for mig, gnumach and hurd. (Context.bot_cycle): Check for changes to mig, gnumach and hurd. (Config.build): Install gnumach headers, build mig and install hurd headers for 'gnu' OS. (Config.install_gnumach_headers): New function. (Config.install_hurd_headers): Likewise. (Glibc.build_glibc): Do not use /usr for 'gnu' OS. Specifiy MIG when building for 'gnu' OS.
* Update build-many-glibcs.py binutils, mpfr, mpc versions.Joseph Myers2018-01-151-3/+3
| | | | | | * scripts/build-many-glibcs.py (Context.checkout): Default binutils version to 2.30 branch, MPFR version to 4.0.0 and MPC version to 1.1.0.
* Strip shared objects in subdirectories of libPalmer Dabbelt2018-01-061-1/+1
| | | | | | | | | | | The RISC-V port will have libraries in subdirectories of lib, like "lib64/lp64d". This adds support for stripping these installed libraries. 2018-01-06 Palmer Dabbelt <palmer@sifive.com> * scripts/build-many-glibcs.py (class Glibc): Strip shared objects in subdirectories of lib.
* Update copyright dates with scripts/update-copyrights.Joseph Myers2018-01-011-1/+1
| | | | | | | * All files with FSF copyright notices: Update copyright dates using scripts/update-copyrights. * locale/programs/charmap-kw.h: Regenerated. * locale/programs/locfile-kw.h: Likewise.
* Add aarch64 disable-multi-arch variant to build-many-glibcs.pySzabolcs Nagy2017-12-211-1/+3
| | | | | | | aarch64 has several ifuncs now so test it without multiarch support separately. * scripts/build-many-glibcs.py (Context.add_all_configs): Add disable-multi-arch variant to aarch64-linux-gnu.
* Remove tilepro-*-linux-gnu supportAdhemerval Zanella2017-12-201-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As from previous discussions [1] this patch removes tileprox-*-linux-gnu support from GLIBC. This patch is a straigthfoward one, which just remove tilepro specific implementation and configurations (no sysdep simplfication or reorganization is done). * README: Remove tilepro-*-linux-gnu from supported architecture. * scripts/build-many-glibcs.py: Likewise. * sysdeps/tile/__tls_get_addr.S (__tls_get_addr): Likewise. * sysdeps/tile/crti.S (PREINIT_FUNCTION): Likewise. * sysdeps/tile/dl-machine.h (ELF_MACHINE_NAME, elf_machine_matches_host, elf_machine_dynamic, elf_machine_load_address, elf_machine_runtime_setup, reloc_howto howto, elf_machine_rela): Likewise * sysdeps/tile/dl-start.S (_start): Likewise. * sysdeps/tile/memcmp.c (DBLALIGN, REVBYTES): Likewise. * sysdeps/tile/memcopy.h (MEMCPY_OK_FOR_FWD_MEMMOVE, MEMCPY_OK_FOR_FWD_MEMMOVE, op_t): Likewise. * sysdeps/tile/nptl/pthread_spin_lock.c (TNS, CMPTNS): Likewise. * sysdeps/tile/nptl/pthread_spin_trylock.c (TNS): Likewise. * sysdeps/tile/nptl/pthread_spin_unlock.c (pthread_spin_unlock): Likewise. * sysdeps/tile/nptl/tls.h (DB_THREAD_SELF): Likewise. * sysdeps/tile/preconfigure: Likewise. * sysdeps/tile/stackguard-macros.h (STACK_CHK_GUARD, POINTER_CHK_GUARD): Likewise. * sysdeps/tile/stackinfo.h (__stackinfo_sub): Likewise. * sysdeps/tile/start.S (_start): Likewise. * sysdeps/tile/tls-macros.h (TLS_GD_OFFSET, TLS_IE_OFFSET, _TLS_LE): Likewise. * sysdeps/tile/sysdep.h (REGSIZE): Likewise. (LD, LD4U, ST, ST4, BNEZ, BEQZ, BEQZT, BGTZ, CMPEQI, CMPEQ, CMOVEQZ, CMOVNEZ): Remove. * sysdeps/unix/sysv/linux/tile/bits/environments.h (__ILP32_OFF32_CFLAGS, __ILP32_OFFBIG_CFLAGS, __ILP32_OFF32_LDFLAGS, __ILP32_OFFBIG_LDFLAGS, __LP64_OFF64_CFLAGS, __LP64_OFF64_LDFLAGS): Likewise. * sysdeps/tile/wordcopy.c (DBLALIGN): Likewise. * sysdeps/tile/tilepro/Implies: Remove file. * sysdeps/tile/tilepro/atomic-machine.h: Likewise. * sysdeps/tile/tilepro/bits/wordsize.h: Likewise. * sysdeps/tile/tilepro/memchr.c: Likewise. * sysdeps/tile/tilepro/memcpy.S: Likewise. * sysdeps/tile/tilepro/memset.c: Likewise. * sysdeps/tile/tilepro/memusage.h: Likewise. * sysdeps/tile/tilepro/rawmemchr.c: Likewise. * sysdeps/tile/tilepro/strchr.c: Likewise. * sysdeps/tile/tilepro/strchrnul.c: Likewise. * sysdeps/tile/tilepro/strlen.c: Likewise. * sysdeps/tile/tilepro/strrchr.c: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/Implies: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/c++-types.data: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/jmp_buf-macros.h: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/ld.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/ldconfig.h: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libBrokenLocale.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libanl.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libcrypt.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libdl.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libnsl.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libpthread.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libresolv.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/librt.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libthread_db.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libutil.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/register-dump.h: Likewise. * sysdeps/unix/sysv/linux/tile/sysconf.c (linux_sysconf): Remove tilepro mention in comment. [1] https://sourceware.org/ml/libc-alpha/2017-12/msg00038.html
* Add --enable-static-pie variants to x86_64, x32 and i686H.J. Lu2017-12-181-0/+9
| | | | | | | | | | | | Since the default GCC and binutils versions used by build-many-glibcs.py, which are GCC 7 branch and binutils 2.29 branch, support static PIE on x86_64, x32 and i686, this patch adds --enable-static-pie glibc variants to x86_64, x32 and i686 to get some coverage for static PIE. Tested with build-many-glibcs.py. * scripts/build-many-glibcs.py (Context.add_all_configs): Add --enable-static-pie variants to x86_64, x32 and i686.
* Fix build-many-glibcs.py arm-linux-gnueabihf builds with mainline GCC.Joseph Myers2017-12-191-5/+6
| | | | | | | | | | | | | | | | | My fix to make the arm-linux-gnueabihf build-many-glibcs.py builds actually use the hard-float ABI as intended showed up another issue when building with mainline GCC: GCC now determines an FPU based on the selected CPU or architecture and gives an error for -mfloat-abi=hard when the CPU does not imply a choice of FPU. This patch fixes all the affected configurations to specify a suitable --with-cpu, --with-fpu or -mfpu option explicitly to avoid that error from GCC. Tested the relevant configurations with build-many-glibcs.py with mainline GCC. * scripts/build-many-glibcs.py (Context.add_all_configs): Specify CPU or FPU for ARM hard-float configurations.
* Correct build-many-glibcs.py arm-linux-gnueabihf configurations.Joseph Myers2017-12-151-2/+4
| | | | | | | | | | | | | | The conventional configure triplet for ARM GNU/Linux with hard-float ABI is arm-*-linux-gnueabihf. However, GCC does not automatically use the hard-float ABI based on that triplet. This patch fixes build-many-glibcs.py to pass --with-float=hard so that the arm-linux-gnueabihf configurations actually build with the intended ABI. Tested building the affected configurations with build-many-glibcs.py. * scripts/build-many-glibcs.py (Context.add_all_configs): Use --with-float=hard for arm-linux-gnueabihf configurations.
* Remove --with-fp / --without-fp.Joseph Myers2017-12-121-34/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is a configure option --without-fp that specifies that nofpu sysdeps directories should be used instead of fpu directories. For most glibc configurations, this option is of no use: either there is no valid nofpu variant of that configuration, or there are no fpu or nofpu sysdeps directories for that processor and so the option does nothing. For a few configurations, if you are using a soft-float compiler this option is required, and failing to use it generally results in compilation errors from inline asm using unavailable floating-point instructions. We're moving away from --with-cpu to configuring glibc based on how the compiler generates code, and it is natural to do so for --without-fp as well; in most cases the soft-float and hard-float ABIs are incompatible so you have no hope of building a working glibc with an inappropriately configured compiler or libgcc. This patch eliminates --without-fp, replacing it entirely by automatic configuration based on the compiler. Configurations for which this is relevant (coldfire / mips / powerpc32 / sh) define a variable with_fp_cond in their preconfigure fragments (under the same conditions under which those fragments do anything); this is a preprocessor conditional which the toplevel configure script then uses in a test to determine which sysdeps directories to use. The config.make with-fp variable remains. It's used only by powerpc (sysdeps/powerpc/powerpc32/Makefile) to add -mhard-float to various flags variables. For powerpc, -mcpu= options can imply use of soft-float. That could be an issue if you want to build for e.g. 476fp, but are using --with-cpu=476 because there isn't a 476fp sysdeps directory. If in future we eliminate --with-cpu and replace it entirely by testing the compiler, it would be natural at that point to eliminate that code as well (as the user should then just use a compiler defaulting to 476fp and the 476 sysdeps directory would be used automatically). Tested for x86_64, and tested with build-many-glibcs.py that installed shared libraries are unchanged by this patch. * configure.ac (--with-fp): Remove configure option. (with_fp_cond): New variable. (libc_cv_with_fp): New configure test. Use this variable instead of with_fp. * configure: Regenerated. * config.make.in (with-fp): Use @libc_cv_with_fp@. * manual/install.texi (Configuring and compiling): Remove --without-fp. * INSTALL: Regenerated. * sysdeps/m68k/preconfigure (with_fp_cond): Define for ColdFire. * sysdeps/mips/preconfigure (with_fp_cond): Define. * sysdeps/powerpc/preconfigure (with_fp_cond): Define for 32-bit. * sysdeps/sh/preconfigure (with_fp_cond): Define. * scripts/build-many-glibcs.py (Context.add_all_configs): Do not use --without-fp to configure glibc.
* Add SPARC --disable-multi-arch builds to build-many-glibcs.py.Joseph Myers2017-11-291-1/+7
| | | | | | | | | | | | While working on SPARC changes to use libm_alias_* I noticed that the non-multi-arch sparc32/sparcv9/fpu/s_fabs.S was missing compat symbol support for fabsl. This clearly shows inadequate test coverage, so this patch adds SPARC --disable-multi-arch builds to build-many-glibcs.py (the 32-bit one fails testing until that bug is fixed, the 64-bit one passes testing). * scripts/build-many-glibcs.py (Context.add_all_configs): Add SPARC --disable-multi-arch glibc variants.
* Use Linux 4.14 in build-many-glibcs.py.Joseph Myers2017-11-151-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default Linux kernel version to 4.14.
* Fix armv7-a compiler option nameAdhemerval Zanella2017-10-171-2/+2
| | | | | This patch fixes the wrong -march name option used to define the ARMv7-A glibc variant pushed on commit 3d26560.
* Add build-many-glibcs.py arm-linux-gnueabihf-v7{-disable-multiarch}Adhemerval Zanella2017-10-171-1/+6
| | | | | | | | | | | | | | | This patch adds two extra configuration for arm-linux-gnueabihf to cover for multiarch support: 1. arm-linux-gnueabihf-v7a: enables multiarch support by using -march=armv7a. 2. Same as 1. but with --disable-multiarch. Check with build-many-glibcs.py for both options. * scripts/build-many-glibcs.py (Context.add_all_configs): Add arm-linux-gnueabihf multiarch extra_glibcs.
* Remove add-ons mechanism.Joseph Myers2017-10-051-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | glibc has an add-ons mechanism to allow additional software to be integrated into the glibc build. Such add-ons may be within the glibc source tree, or outside it at a path passed to the --enable-add-ons configure option. localedata and crypt were once add-ons, distributed in separate release tarballs, but long since stopped using that mechanism. Linuxthreads was always an add-on. Ports spent some time as an add-on with separate release tarballs, then was first moved into the glibc source tree, then had its sysdeps files moved into the main sysdeps hierarchy so the add-ons mechanism was no longer used. NPTL spent some time as an add-on in the main glibc tree before stopping using the add-on mechanism. libidn used to have separate release tarballs but no longer does so, but still uses the add-ons mechanism within the glibc source tree. Various other software has supported building with the add-ons mechanism at times in the past, but I don't think any is still widely used. Add-ons involve significant, little-used complexity in the glibc build system, and make it hard to understand what the space of possible glibc configurations is. This patch removes the add-ons mechanism. libidn is now built via the Subdirs mechanism to cause any configuration using sysdeps/unix/inet to build libidn; HAVE_LIBIDN (which effectively means shared libraries are available) is now defined via sysdeps/unix/inet/configure. Various references to add-ons around the source tree are removed (in the case of maint.texi, the example list of sysdeps directories is still very out of date). Externally maintained ports should now put their files in the normal sysdeps directory structure rather than being arranged as add-ons; they probably need to change e.g. elf.h anyway, rather than actually being able to work just as a drop-in subtree. Hurd libpthread should be arranged similarly to NPTL, so some files might go in a hurd-pthreads (or similar) top-level directory in glibc, while sysdeps files should go in the normal sysdeps directory structure (possibly in hurd or hurd-pthreads subdirectories, just as there are nptl subdirectories in the sysdeps tree). Tested for x86_64, and with build-many-glibcs.py. * configure.ac (--enable-add-ons): Remove option. (machine): Do not mention add-ons in comment. (LIBC_PRECONFIGURE): Likewise. (add_ons): Remove variable and sanity checks and logic to locate add-ons. (add_ons_automatic): Remove variable. (configured_add_ons): Likewise. (add_ons_sfx): Likewise. (add_ons_pfx): Likewise. (add_on_subdirs): Likewise. (sysnames_add_ons): Likewise. Remove loop over add-ons and consideration of add-ons in Implies handling. (sysdeps_add_ons): Likewise. * configure: Regenerated. * libidn/configure.ac: Remove. * libidn/configure: Likewise. * sysdeps/unix/inet/configure.ac: New file. * sysdeps/unix/inet/configure: New generated file. * sysdeps/unix/inet/Subdirs: Add libidn. * Makeconfig (sysdeps-srcdirs): Remove variable. (+sysdep_dirs): Do not include $(sysdeps-srcdirs). ($(common-objpfx)config.status): Do not depend on add-on files. ($(common-objpfx)shlib-versions.v.i): Do not mention add-ons in comment. (all-subdirs): Do not include $(add-on-subdirs). * Makefile (dist-prepare): Do not use $(sysdeps-add-ons). * config.make.in (add-ons): Remove variable. (add-on-subdirs): Likewise. (sysdeps-add-ons): Likewise. * manual/Makefile (add-chapters): Remove. ($(objpfx)texis): Do not depend on $(add-chapters). (nonexamples): Do not handle $(add-chapters). (examples): Do not handle $(add-ons). (chapters.% top-menu.%): Do not pass '$(add-chapters)' to libc-texinfo.sh. * manual/install.texi (Installation): Do not mention add-ons. (--enable-add-ons): Do not document configure option. * INSTALL: Regenerated. * manual/libc-texinfo.sh: Do not handle $2 add-ons argument. * manual/maint.texi (Hierarchy Conventions): Do not mention add-ons. * scripts/build-many-glibcs.py (Glibc.build_glibc): Do not use --enable-add-ons. * scripts/gen-sorted.awk: Do not handle Subdirs files from add-ons. * scripts/test-installation.pl: Do not handle glibc-compat add-on. * sysdeps/nptl/Makeconfig: Do not mention add-ons in comment.
* Use MPFR 3.1.6 in build-many-glibcs.py.Joseph Myers2017-09-071-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default MPFR version to 3.1.6.
* Use Linux 4.13 in build-many-glibcs.py.Joseph Myers2017-09-041-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default Linux kernel version to 4.13.
* build-many-glibcs.py: also build profiled objectsAndreas Schwab2017-07-081-0/+1
|
* Update versions in build-many-glibcs.py.Joseph Myers2017-07-041-3/+3
| | | | | | | | | This patch updates build-many-glibcs.py to use the current release branch of binutils and current releases of GMP and the Linux kernel. * scripts/build-many-glibcs.py (Context.checkout): Default binutils version to 2.29 branch, GMP version to 6.1.2 and Linux kernel version to 4.12.
* Default Linux kernel version in build-many-glibcs.py to 4.11.Joseph Myers2017-05-011-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default Linux kernel version to 4.11.
* Default build-many-glibcs.py to GCC 7 branch.Joseph Myers2017-04-261-1/+1
| | | | | | | | | | | | | Now there is a GCC 7 release branch, this patch makes build-many-glibcs.py default to using it instead of GCC 6. Relative to GCC 6, this fixes the MicroBlaze build but introduces ICEs building glibc testcases for SH (GCC PRs 78459, 78460; the latter is an out-of-memory issue so you may want to set memory limits when running build-many-glibcs.py). * scripts/build-many-glibcs.py (Context.checkout): Default gcc version to 7 branch.
* build-many-glibcs: Remove no_isolate from SH configAdhemerval Zanella2017-03-131-19/+6
| | | | | | | | | | | | | Now with d40dbe7 SH build does not require more the no_isolate gcc options to correct build glibc (since SH build now does not generate a trap anymore). This patch removes the unrequired options from SH config. Checked with a build for sh3-linux-gnu, sh3eb-linux-gnu, sh4-linux-gnu, and sh4eb-linux-gnu. * scripts/build-many-glibcs.py (Context.add_all_configs): Remove no_isolate usage for SH.
* Use Linux 4.10 in build-many-glibcs.py.Joseph Myers2017-02-221-1/+1
| | | | | * scripts/build-many-glibcs.py (Context.checkout): Default Linux kernel version to 4.10.
* build-many-glibcs: don't crash if email is not configuredZack Weinberg2017-02-161-0/+10
| | | | | | | | | | | The 'bot-cycle' action for build-many-glibcs is a convenient way to not have to remember all the steps in keeping a many-glibcs tree up to date ... or it would be, if the script could send mail _optionally_. Make it so by skipping the mail step if mail isn't configured. * scripts/build-many-glibcs.py (bot_build_mail): If the bot_config does not contain all of the necessary email- related settings, just print a warning and continue.
* Avoid parallel GCC install in build-many-glibcs.py.Joseph Myers2017-01-181-1/+11
| | | | | | | | | | | | | | | | | | A recent build-many-glibcs.py build <https://sourceware.org/ml/libc-testresults/2017-q1/msg00067.html> ran into what proves to be an old known bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42980> with parallel install of GCC (one which as discussed there might require automake changes to fix). This patch makes build-many-glibcs.py avoid such intermittent failures from parallel install by using -j1 for GCC make install (the code in question also applies to binutils make install, but it doesn't seem worth trying to avoid -j1 there; the builds and installs of different toolchains are still fully parallel with each other, this is only about the case when there are few enough of those that multiple jobs can get used within a single make install). * scripts/build-many-glibcs.py (Config.build_cross_tool): Use -j1 for make install.
* Make build-many-glibcs.py work on python3.2Szabolcs Nagy2017-01-111-0/+37
| | | | | | | | | | | | | | | | | I used this patch to run the new build script with python3.2, it may be worth adding this hack if python3.5 is not widespread (might work with older python, i haven't tested that). This patch make build-many-glibcs.py work with python 3.2 by adding fallback implementation to python 3.5 facilities if they are not present. Checked building a x86_64-linux-gnu toolchain with python 3.2. 2016-11-22 Szabolcs Nagy <szabolcs.nagy@arm.com> * scripts/build-many-glibcs.py (os.cpu_count): Add compatibility definition. (re.fullmatch, subprocess.run): Likewise.