aboutsummaryrefslogtreecommitdiff
path: root/scripts
AgeCommit message (Collapse)Author
2021-06-02Add libc ABI extension kludge for baseline-violating libdl symbolsFlorian Weimer
Some targets have a GLIBC_2.0 baseline for libdl, while using GLIBC_2.2 for libc. This means that the generated libc.map file does not have any version nodes for GLIBC_2.0 or GLIBC_2.1. However, moving symbols from libdl into libc needs such version nodes. (Future symbol moves from librt will need this as well.) This kludge is only necessary for symbols predating GLIBC_2.2 because the affected targets use GLIBC_2.2 as the baseline for libc. Given the small number and fixed set of affected architectures, no generic mechanism is implemented, and instead the map file fragment is hard-coded in scripts/versions.mk. The compat_symbol macro already emits the appropriate version strings, so no adjustments are needed there. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-06-02scripts/versions.awk: Add local: * to all version nodesFlorian Weimer
This requires that all exported symbol versions are listed in Versions files. It results in more consistent behavior across architectures because previously, symbols could be exported via explicit versioned_symbol and compat_symbol macros if the version node existed in some Versions file (without listing the symbol), and it was not the base version for the library (which already had the local: * directive). Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-05-10scripts/versions.awk: Add strings and hashes to <first-versions.h>Florian Weimer
This generates new macros of this from: They are useful for symbol lookups using _dl_lookup_direct. Tested-by: Carlos O'Donell <carlos@redhat.com> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2021-04-27Use Linux 5.12 and GCC 11 branch in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.12 and GCC 11 branch. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2021-03-16glibcymbols.read_abilist: Add check for duplicate symbolsFlorian Weimer
This detects some bogus abilist files. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-03-16scripts/glibcsymbols.py: Extract from scripts/move-symbol-to-libc.pyFlorian Weimer
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-03-11Allow gdb version 10 in pretty printer tests.Stefan Liebler
With gdb 10, the pretty printer tests are UNSUPPORTED:: The gdb version string (gdb -v) is incorrectly formatted. This is observable in: nptl/test-cond-printers, nptl/test-condattr-printers, nptl/test-mutex-printers, nptl/test-mutexattr-printers, nptl/test-rwlock-printers, nptl/test-rwlockattr-printers After updating the regexp and building with debug-info, all those tests are passing.
2021-03-08tst: Extend cross-test-ssh.sh to specify if target date can be alteredLukasz Majewski
This code adds new flag - '--allow-time-setting' to cross-test-ssh.sh script to indicate if it is allowed to alter the date on the system on which tests are executed. This change is supposed to be used with test systems, which use virtual machines for testing. The GLIBC_TEST_ALLOW_TIME_SETTING env variable is exported to the remote environment on which the eligible test is run and brings no functional change when it is not. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-02-22Use Linux 5.11 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.11. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2021-02-22build-many-glibcs.py: Use make -O for more consistent log outputFlorian Weimer
The -O option avoids interleaving (e.g.) compiler error messages with other build messages, and makes attribution of messages to commands easier. According to my tests, the impact on build time is within the noise.
2021-02-04Use binutils 2.36 branch in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use binutils 2.36 branch. Tested with build-many-glibcs.py (compilers and glibcs builds).
2021-01-21elf: Avoid RELATIVE relocs in __tunables_initSzabolcs Nagy
With static pie linking pointers in the tunables list need RELATIVE relocs since the absolute address is not known at link time. We want to avoid relocations so the static pie self relocation can be done after tunables are initialized. This is a simple fix that embeds the tunable strings into the tunable list instead of using pointers. It is possible to have a more compact representation of tunables with some additional complexity in the generator and tunable parser logic. Such optimization will be useful if the list of tunables grows. There is still an issue that tunables_strdup allocates and the failure handling code path is sufficiently complex that it can easily have RELATIVE relocations. It is possible to avoid the early allocation and only change environment variables in a setuid exe after relocations are processed. But that is a bigger change and early failure is fatal anyway so it is not as critical to fix right away. This is bug 27181. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-01-21elf: Make the tunable struct definition internal onlySzabolcs Nagy
The representation of the tunables including type information and the tunable list structure are only used in the implementation not in the tunables api that is exposed to usage within glibc. This patch moves the representation related definitions into the existing dl-tunable-types.h and uses that only for implementation. The tunable callback and related types are moved to dl-tunables.h because they are part of the tunables api. This reduces the details exposed in the tunables api so the internals are easier to change. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-01-11install: Replace scripts/output-format.sed with objdump -f [BZ #26559]Fangrui Song
GNU ld and gold have supported --print-output-format since 2011. glibc requires binutils>=2.25 (2015), so if LD is GNU ld or gold, we can assume the option is supported. lld is by default a cross linker supporting multiple targets. It auto detects the file format and does not need OUTPUT_FORMAT. It does not support --print-output-format. By parsing objdump -f, we can support all the three linkers. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2021-01-02Sync move-if-change from GnulibPaul Eggert
This alters move-if-change so that its --version option outputs the correct copyright date automatically. One less thing to update by hand.
2021-01-02Update copyright dates not handled by scripts/update-copyrights.Paul Eggert
I've updated copyright dates in glibc for 2021. 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 csu/version.c which previously had to be handled manually but is now successfully updated by update-copyrights), there is a small change to the copyright notice in NEWS which should let NEWS get updated automatically next year. Please remember to include 2021 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).
2021-01-02Update copyright dates with scripts/update-copyrightsPaul Eggert
I used these shell commands: ../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright (cd ../glibc && git commit -am"[this commit message]") and then ignored the output, which consisted lines saying "FOO: warning: copyright statement not found" for each of 6694 files FOO. I then removed trailing white space from benchtests/bench-pthread-locks.c and iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c, to work around this diagnostic from Savannah: remote: *** pre-commit check failed ... remote: *** error: lines with trailing whitespace found remote: error: hook declined to update refs/heads/master
2020-12-29hurd: Accept including hurd/version.hSamuel Thibault
We need it to get the RPC API version.
2020-12-15Use Linux 5.10 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use Linux 5.10. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-12-15Use GMP 6.2.1 in build-many-glibcs.py.Joseph Myers
This patch makes build-many-glibcs.py use the recent GMP 6.2.1 release. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
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>