aboutsummaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)Author
2020-12-04Add scripts/move-symbol-to-libc.pyFlorian Weimer
This helper script can be used to move symbols to libc.abilist across all architectures, while preserving their symbol version.
2020-11-15hurd: Remove some remnants of cthreadsSamuel Thibault
Libc has actually been using mach's lock-internal.h mutex for a long time already.
2020-10-30Use MPC 1.2.1 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use the new MPC 1.2.1 release. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-10-22Use Linux 5.9 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.9. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-10-08scripts/update-copyrights: Update csu/version.c, elf/dl-usage.cFlorian Weimer
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-10-05Optimize scripts/merge-test-results.shDJ Delorie
The inner loop is called thousands of times per "make check" even if there's otherwise nothing to do. Avoid calling /bin/head all those times when a builtin will do. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2020-08-27Add RISC-V 32-bit target to build-many-glibcs.pyZong Li
Support building three variants of 32-bit RISC-V glibc as follows: - riscv32-linux-gnu-rv32imac-ilp32 - riscv32-linux-gnu-rv32imafdc-ilp32 - riscv32-linux-gnu-rv32imafdc-ilp32d Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
2020-08-20[vcstocl] Import ProjectQuirks from its own fileSiddhesh Poyarekar
ProjectQuirks moved into its own file in gnulib because one cannot import modules with hyphens in them. Adjust the quirks file to reflect this reality.
2020-08-20build-many-glibcs.py: Add a s390x -O3 glibc variant.Stefan Liebler
On s390x, gcc inlines more aggresive compared to other architectures. This occaisionally leads to build warnings / errors. Therefore this patch adds a s390x glibc variant with optimization. There is the ccopts field which contain ABI options which are passed to configure as CC / CXX. Now there is also the cflags field which contains non-ABI options like -g or -O. Those are passed to configure as CFLAGS / CXXFLAGS. Currently CC is passed to conformtest.py or linknamespace.py but not the CFLAGS.
2020-08-19Use MPC 1.2.0 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use the new MPC 1.2.0 release. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-08-13Update build-many-glibcs.py for binutils ia64 obsoletion.Joseph Myers
Since binutils has obsoleted ia64 support, use --enable-obsolete for now when configuring binutils for ia64 in build-many-glibcs.py (which requires adding support for architecture-specific binutils configure options there). As with other obsoletions, the removal of support for ia64 in any of (binutils, GCC, Linux kernel) should imply its removal from glibc. Tested with build-many-glibcs.py for ia64-linux-gnu (compilers and glibcs build).
2020-08-07Use Linux 5.8 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.8. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-07-27Use binutils 2.35 branch in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use binutils 2.35 branch. Tested with build-many-glibcs.py (compilers and glibcs builds).
2020-07-20Use MPFR 4.1.0 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use the new MPFR 4.1.0 release. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-07-13Remove --enable-obsolete-rpc configure flagPetr Vorel
Sun RPC was removed from glibc. This includes rpcgen program, librpcsvc, and Sun RPC headers. Also test for bug #20790 was removed (test for rpcgen). Backward compatibility for old programs is kept only for architectures and ABIs that have been added in or before version 2.28. libtirpc is mature enough, librpcsvc and rpcgen are provided in rpcsvc-proto project. NOTE: libnsl code depends on Sun RPC (installed libnsl headers use installed Sun RPC headers), thus --enable-obsolete-rpc was a dependency for --enable-obsolete-nsl (removed in a previous commit). The arc ABI list file has to be updated because the port was added with the sunrpc symbols Tested-by: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2020-07-10build-many-glibcs.py: Enable ARC buildsVineet Gupta
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-07-08Remove --enable-obsolete-nsl configure flagPetr Vorel
this means that *always* libnsl is only built as shared library for backward compatibility and the NSS modules libnss_nis and libnss_nisplus are not built at all, libnsl's headers aren't installed. This compatibility is kept only for architectures and ABIs that have been added in or before version 2.28. Replacement implementations based on TIRPC, which additionally support IPv6, are available from <https://github.com/thkukuk/>. This change does not affect libnss_compat which does not depended on libnsl since 2.27 and thus can be used without NIS. libnsl code depends on Sun RPC, e.g. on --enable-obsolete-rpc (installed libnsl headers use installed Sun RPC headers), which will be removed in the following commit.
2020-07-07signal: Move sys_errlist to a compat symbolAdhemerval Zanella
The symbol is deprecated by strerror since its usage imposes some issues such as copy relocations. Its internal name is also changed to _sys_errlist_internal to avoid static linking usage. The compat code is also refactored by removing the over enginered errlist-compat.c generation from manual entried and extra comment token in linker script file. It disantangle the code generation from manual and simplify both Linux and Hurd compat code. The definitions from errlist.c are moved to errlist.h and a new test is added to avoid a new errno entry without an associated one in manual. Checked on x86_64-linux-gnu and i686-linux-gnu. I also run a check-abi on all affected platforms. Tested-by: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2020-06-10Use Linux 5.7 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.7. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-05-06Use GCC 10 branch in build-many-glibcs.py.Joseph Myers
This updates the default GCC version used in build-many-glibcs.py when no version is specified explicitly. I'm replacing my bot using GCC 8 with one using GCC 10 (leaving the GCC 9 and GCC mainline bots running as at present).
2020-04-15Linux: Remove <sys/sysctl.h> and the sysctl functionFlorian Weimer
Linux 5.5 remove the system call in commit 61a47c1ad3a4dc6882f01ebdc88138ac62d0df03 ("Linux: Remove <sys/sysctl.h>"). Therefore, the compat function is just a stub that sets ENOSYS. Due to SHLIB_COMPAT, new ports will not add the sysctl function anymore automatically. x32 already lacks the sysctl function, so an empty sysctl.c file is used to suppress it. Otherwise, a new compat symbol would be added. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-03-31Use Linux 5.6 and GMP 6.2.0 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use the current versions of Linux (5.6) and GMP (6.2.0). Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-03-03build-many-glibcs.py: Add list-compilers, list-glibcs commandsFlorian Weimer
These commands are helpful for scripting the distribution of build-many-glibcs.py runs across multiple builders.
2020-03-03build-many-glibcs.py: Add --shallow optionFlorian Weimer
The history is not used by build-many-glibcs.py itself. --replace-sources deletes an existing source tree before switching the version. But some users prefer to have the full history available, therefore make shallow clones optional with the --shallow option.
2020-03-02elf: Add elf/check-wx-segment, a test for the presence of WX segmentsFlorian Weimer
Writable, executable segments defeat security hardening. The existing check for DT_TEXTREL does not catch this. hppa and SPARC currently keep the PLT in an RWX load segment.
2020-02-13Use gcc -finput-charset=ascii for check-installed-headers.Stefan Liebler
A non-ascii character in the installed headers leads now to: error: failure to convert ascii to UTF-8 Such a finding in s390 specific fenv.h leads to fails in GCC testsuite. See glibc commit 08aea89ef67c5780ae734073494df0a451bce20f. Adding this gcc option also to our tests was proposed by Florian Weimer. This change also found a hit in resource.h where now "microseconds" is used. I've adjusted all the resource.h files. I've used the following command to check for further hits in headers. LC_ALL=C find -name "*.h" -exec grep -PHn "[\x80-\xFF]" {} \; Tested on s390x and x86_64. Reviewed-by: Zack Weinberg <zackw@panix.com>
2020-02-10Use --disable-gdbserver in build-many-glibcs.py.Joseph Myers
Now that binutils-gdb has gdbserver at top level, an extra --disable-gdbserver configure option is needed when configuring binutils from a git checkout to avoid it also building gdbserver unnecessarily (although fairly harmlessly). This patch updates the options used in build-many-glibcs.py accordingly (although this might end up not being needed depending on what happens regarding whether gdbserver gets built for host != target). Tested with a build-many-glibcs.py compilers build for aarch64-linux-gnu using binutils-gdb master.
2020-02-03Use binutils 2.34 branch in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use binutils 2.34 branch. Tested with build-many-glibcs.py (compilers and glibcs builds).
2020-02-03Use Linux 5.5 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.5. Tested with build-many-glibcs.py (compilers and glibcs builds).
2020-02-03list-fixed-bugs.py: Wrap at 72 charsSiddhesh Poyarekar
Wrap the bug list output at 72 chars to make it easy to paste into emails. Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2020-01-23gitlog-to-changelog: Drop scripts in favour of gnulib versionSiddhesh Poyarekar
The ChangeLog automation scripts were incorporated in gnulib as vcs-to-changelog for a while now since other projects expressed the desire to use and extend this script. In the interest of avoiding duplication of code, drop the glibc version of gitlog-to-changelog and use the gnulib one directly. The only file that remains is vcstocl_quirks.py, which specifies properties and quirks of the glibc project source code. This patch also drops the shebang at the start of vcstocl_quirks.py since the file is not intended to be directly executable.
2020-01-17vcs-to-changelog: Add quirk for __nonnullSiddhesh Poyarekar
The parser cannot identify the __nonnull off the bat and confuses __typeof in the change db25266c9 to be a function declaration.
2020-01-13Update build-many-glibcs.py for GCC move to git.Joseph Myers
This patch updates build-many-glibcs.py for the move of GCC to git, teaching it to do the initial checkout from git, to replace an SVN checkout with a git one if --replace-sources is used, and to get the commit identifier from a git checkout after updating it.
2020-01-07Fix formatting of ChangeLog ouputSiddhesh Poyarekar
Add another newline when the number of files differing is too large. This is typical for across-the-board changes such as the copyright year update that happened recently.
2020-01-02build-many-glibcs.py: Fix “glibcs i686-gnu --strip”Florian Weimer
Hurd uses an empty prefix, so the linker scripts end up in /lib, the find command picked them up, and stripping them failed because they are not ELF files.
2020-01-02build-many-glibcs.py: Implement update-syscalls commandFlorian Weimer
This command uses pre-built compilers to re-install the Linux headers from the current sources into a temporary location and runs glibc's “make update-syscalls-lists” against that. This updates the glibc source tree with the current system call numbers. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-02build-many-glibcs.py: Introduce glibc build policy classesFlorian Weimer
The new classes GlibcPolicyForCompiler and GlibcPolicyForBuild allow customization of the Glibc.build_glibc method, replacing the existing for_compiler flag. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-02build-many-glibcs.py: Introduce LinuxHeadersPolicyForBuildFlorian Weimer
And move install_linux_headers to the top level. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-01Update copyright dates not handled by scripts/update-copyrights.Joseph Myers
I've updated copyright dates in glibc for 2020. This is the patch for the changes not generated by scripts/update-copyrights and subsequent build / regeneration of generated files. As well as the usual annual updates, mainly dates in --version output (minus libc.texinfo which previously had to be handled manually but is now successfully updated by update-copyrights), there is a fix to sysdeps/unix/sysv/linux/powerpc/bits/termios-c_lflag.h where a typo in the copyright notice meant it failed to be updated automatically. Please remember to include 2020 in the dates for any new files added in future (which means updating any existing uncommitted patches you have that add new files to use the new copyright dates in them).
2020-01-01Update copyright dates with scripts/update-copyrights.Joseph Myers
2019-12-18build-many-glibcs.py: Do not build C++ PCHs by defaultFlorian Weimer
They are not used during the subsequent glibc build, so creating them merely wastes time.
2019-12-16build-many-glibcs.py: Add mipsisa64r6el-linux-gnu targetDragan Mladjenovic
This patch enables building mips/r6 isa/little-endian/hard-float configuration in o32, n32, and n64 variants.
2019-12-05build-many-glibcs.py: Move sparcv8 to extra_glibcsAdhemerval Zanella
It also fixes the sparcv9-linux-gnu-disable-multi-arch configuration. The resulting sparc possible build permutations are: - sparc64-linux-gnu - sparcv9-linux-gnu - sparcv8-linux-gnu-leon3 (from extra_glibcs) - sparc64-linux-gnu-disable-multi-arch (from extra_glibcs) - sparcv9-linux-gnu-disable-multi-arch (from extra_glibcs)
2019-11-28Fix syntax error in build-many-glibcs.py.Joseph Myers
The recent SPARC changes caused a syntax error: 'ccopts': '-m32 -mlong-double-128 -mcpu=v9'}], ^ SyntaxError: invalid syntax Fixed by this patch.
2019-11-27Remove 32 bit sparc v7 supportAdhemerval Zanella
The patch is straighforward: - The sparc32 v8 implementations are moved as the generic ones. - A configure test is added to check for either __sparc_v8__ or __sparc_v9__. - The triple names are simplified and sparc implies sparcv8. The idea is to keep support on sparcv8 architectures that does support CAS instructions, such as LEON3/LEON4. Checked on a sparcv9-linux-gnu and sparc64-linux-gnu. Tested-by: Andreas Larsson <andreas@gaisler.com>
2019-11-26Use Linux 5.4 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.4. Tested with build-many-glibcs.py (compilers and glibcs builds).
2019-09-30Use binutils 2.33 branch in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py default to binutils 2.33 branch. Tested with build-many-glibcs.py (compilers and glibcs builds). * scripts/build-many-glibcs.py (Context.checkout): Default binutils version to 2.33 branch.
2019-09-26auto-changelog: Remove latin1 from codecsSiddhesh Poyarekar
Bruno Haible had pointed out that latin1 is a subset of cp1252 and is hence redundant. I forgot to remove it back then.
2019-09-20Script to generate ChangeLog-like output from git logSiddhesh Poyarekar
Co-authored-by: Gabriel F. T. Gomes <gabriel@inconstante.net.br> Reviewed-by: Gabriel F. T. Gomes <gabriel@inconstante.net.br> Reviewed-by: Joseph Myers <joseph@codesourcery.com> The utility of a ChangeLog file has been discussed in various mailing list threads and GNU Tools Cauldrons in the past years and the general consensus is that while the file may have been very useful in the past when revision control did not exist or was not as powerful as it is today, it's current utility is fast diminishing. Further, the ChangeLog format gets in the way of modernisation of processes since it almost always results in rewriting of a commit, thus preventing use of any code review tools to automatically manage patches in the glibc project. There is consensus in the glibc community that documentation of why a change was done (i.e. a detailed description in a git commit) is more useful than what changed (i.e. a ChangeLog entry) since the latter can be deduced from the patch. The GNU community would however like to keep the option of ascertaining what changed through a ChangeLog-like output and as a compromise, it was proposed that a script be developed that generates this output. The script below is the result of these discussions. This script takes two git revisions references as input and generates the git log between those revisions in a form that resembles a ChangeLog. Its capabilities and limitations are listed in a comment in the script. On a high level it is capable of parsing C code and telling what changed at the top level, but not within constructs such as functions. Design ------ At a high level, the script analyses the raw output of a VCS, parses the source files that have changed and attempts to determine what changed. The script driver needs three distinct components to be fully functional for a repository: - A vcstocl_quirks.py file that helps it parse weird patterns in sources that may result from preprocessor defines. - A VCS plugin backend; the git backend is implemented for glibc - A programming language parser plugin. C is currently implemented. Additional programming language parsers can be added to give more detailed output for changes in those types of files. For input in languages other than those that have a parser, the script only identifies if a file has been added, removed, modified, permissions changed, etc. but cannot understand the change in content. The C Parser ------------ The C parser is capable of parsing C programs with preprocessor macros in place, as if they were part of the language. This presents some challenges with parsing code that expands macros on the fly and to help work around that, a vcstocl_quirks.py file has transformations to ease things. The C parser currently can identify macro definitions and scopes and all global and static declarations and definitions. It cannot parse (and compare) changes inside functions yet, it could be a future enhancement if the need for it arises. Testing ------- The script has been tested with the glibc repository up to glibc-2.29 and also in the past with emacs. While it would be ideal to have something like this in a repository like gnulib, that should not be a bottleneck for glibc to start using this, so this patch proposes to add these scripts into glibc. And here is (hopefully!) one of the last ChangeLog entries we'd have to write for glibc: * scripts/gitlog_to_changelog.py: New script to auto-generate ChangeLog. * scripts/vcs_to_changelog/frontend_c.py: New file. * scripts/vcs_to_changelog/misc_util.py: New file. * scripts/vcs_to_changelog/vcs_git.py: New file. * scripts/vcs_to_changelog/vcstocl_quirks.py: Likewise.
2019-09-18Use Linux 5.3 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.3. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds). * scripts/build-many-glibcs.py (Context.checkout): Default Linux version to 5.3.