diff options
author | Joseph Myers <joseph@codesourcery.com> | 2018-01-02 18:33:18 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2018-01-02 18:33:18 +0000 |
commit | b9256ab6bb81e6cf983f31f5162dbc9fad4c293a (patch) | |
tree | 4bb426b2bca669f50ba053f0ef5ecc7f352f0b01 | |
parent | 4cf82d2379809ea7c06e04adbc8de22c9d507d03 (diff) | |
download | glibc-b9256ab6bb81e6cf983f31f5162dbc9fad4c293a.tar glibc-b9256ab6bb81e6cf983f31f5162dbc9fad4c293a.tar.gz glibc-b9256ab6bb81e6cf983f31f5162dbc9fad4c293a.tar.bz2 glibc-b9256ab6bb81e6cf983f31f5162dbc9fad4c293a.zip |
Reduce command length in regen-ulps.
I found that "make regen-ulps" failed when building with unmodified
GNU make 4.1, and an objdir /some/where/math/ longer than about 37
characters, because the list of tests in the "for run in $^" loop
exceeded the Linux kernel's MAX_ARG_STRLEN limit (131072 bytes) on the
length of a single argument passed to a command.
Some GNU/Linux distributions have a patch to make to work around this
limit (see e.g. Debian bug 688601), but clearly this ought to work
without needing such a patch. This patch arranges for the shell loop
to be over the test names without a $(objdir) prefix, which reduces
the space used to less than half MAX_ARG_STRLEN.
(I think we ought to aim to get rid of bits/mathinline.h completely -
filing GCC bugs for any optimizations GCC can't currently do with
-ffast-math - which would mean we could halve the number of libm tests
run because separate inline function tests would no longer be needed.
However, with a long directory name even half the number of tests
could make this command exceed MAX_ARG_STRLEN without my patch.)
Tested regen-ulps on a system where it failed before this patch.
* math/Makefile (run-regen-ulps): Add $(objpfx) to test name here.
(regen-ulps): Use $(libm-tests) not $^ in shell loop.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | math/Makefile | 4 |
2 files changed, 7 insertions, 2 deletions
@@ -1,3 +1,8 @@ +2018-01-02 Joseph Myers <joseph@codesourcery.com> + + * math/Makefile (run-regen-ulps): Add $(objpfx) to test name here. + (regen-ulps): Use $(libm-tests) not $^ in shell loop. + 2018-01-02 Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com> * NEWS: Add cosf and sincosf to list of optimized functions. diff --git a/math/Makefile b/math/Makefile index e966c9889e..4c8703c71e 100644 --- a/math/Makefile +++ b/math/Makefile @@ -521,12 +521,12 @@ include $(o-iterator) run-regen-ulps = $(test-wrapper-env) \ $(run-program-env) \ - $($*-ENV) $(rtld-prefix) $${run} + $($*-ENV) $(rtld-prefix) $(objpfx)$${run} regen-ulps: $(addprefix $(objpfx),$(libm-tests)) rm -f $(objpfx)ULPs; rm -f $(objpfx)NewUlps; \ cp $(ulps-file) $(objpfx)libm-test-ulps; \ - for run in $^; do \ + for run in $(libm-tests); do \ echo "Regenerating ULPs for $${run}"; \ $(run-regen-ulps) -u -o $(objpfx); \ cat $(objpfx)ULPs >> $(objpfx)libm-test-ulps; \ |