Message ID | 20210913230506.546749-1-goldstein.w.n@gmail.com |
---|---|
State | New |
Headers | show |
Series | [1/5] x86_64: Add support for bcmp using sse2, sse4_1, avx2, and evex | expand |
On Mon, Sep 13, 2021 at 6:21 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > No bug. This commit adds support for an optimized bcmp implementation. > Support is for sse2, sse4_1, avx2, and evex. > > All string tests passing and build succeeding. > --- > This commit is essentially because compilers will optimize the > idiomatic use of memcmp return as a boolean: > > https://godbolt.org/z/Tbhefh6cv > > so it seems reasonable to have an optimized bcmp implementation as we > can get ~0-25% improvement (generally larger improvement for the > smaller size ranges which ultimately are the most important to opimize > for). > > Numbers for new implementations attached in reply. > Numbers in this email. > > Tests where run on the following CPUs: > > Tigerlake: > https://ark.intel.com/content/www/us/en/ark/products/208921/intel-core-i7-1165g7-processor-12m-cache-up-to-4-70-ghz-with-ipu.html > Skylake: > https://ark.intel.com/content/www/us/en/ark/products/149091/intel-core-i7-8565u-processor-8m-cache-up-to-4-60-ghz.html > > Some notes on the numbers. > > There are some regressions in the sse2/sse4_1 versions. I didn't > optimize these versions beyond defining out obviously irrelivant code > for bcmp. My intuition is that the slowdowns are alignment related. I > am not sure if these issues would translate to architectures that > would actually use sse2/sse4_1. > > I add the sse2/sse4_1 implementations mostly so that the ifunc would > have something to fallback on. With the lackluster numbers it may not > be worth it, especially factoring in code size costs. Thoughts? > > The Tigerlake and Skylake versions are basically universal > improvements for evex and avx2. I opted to align bcmp to 64 byte as > opposed to 16. The rational is that to optimize for frontend behavior > on either machine, only 16 byte gurantees is not enough. I think in > any function where throughput (which I think bcmp can be) might be > important good frontend behavior is important. > > > benchtests/Makefile | 2 +- > benchtests/bench-bcmp.c | 20 ++++++++ > benchtests/bench-memcmp.c | 4 +- > string/Makefile | 4 +- > string/test-bcmp.c | 21 +++++++++ > string/test-memcmp.c | 27 +++++++---- > sysdeps/x86_64/memcmp.S | 2 - > sysdeps/x86_64/multiarch/Makefile | 3 ++ > sysdeps/x86_64/multiarch/bcmp-avx2-rtm.S | 12 +++++ > sysdeps/x86_64/multiarch/bcmp-avx2.S | 23 ++++++++++ > sysdeps/x86_64/multiarch/bcmp-evex.S | 23 ++++++++++ > sysdeps/x86_64/multiarch/bcmp-sse2.S | 23 ++++++++++ > sysdeps/x86_64/multiarch/bcmp-sse4.S | 23 ++++++++++ > sysdeps/x86_64/multiarch/bcmp.c | 35 ++++++++++++++ > sysdeps/x86_64/multiarch/ifunc-bcmp.h | 53 ++++++++++++++++++++++ > sysdeps/x86_64/multiarch/ifunc-impl-list.c | 23 ++++++++++ > sysdeps/x86_64/multiarch/memcmp-sse2.S | 4 +- > sysdeps/x86_64/multiarch/memcmp.c | 2 - > 18 files changed, 286 insertions(+), 18 deletions(-) > create mode 100644 benchtests/bench-bcmp.c > create mode 100644 string/test-bcmp.c > create mode 100644 sysdeps/x86_64/multiarch/bcmp-avx2-rtm.S > create mode 100644 sysdeps/x86_64/multiarch/bcmp-avx2.S > create mode 100644 sysdeps/x86_64/multiarch/bcmp-evex.S > create mode 100644 sysdeps/x86_64/multiarch/bcmp-sse2.S > create mode 100644 sysdeps/x86_64/multiarch/bcmp-sse4.S > create mode 100644 sysdeps/x86_64/multiarch/bcmp.c > create mode 100644 sysdeps/x86_64/multiarch/ifunc-bcmp.h > > diff --git a/benchtests/Makefile b/benchtests/Makefile > index 1530939a8c..5fc495eb57 100644 > --- a/benchtests/Makefile > +++ b/benchtests/Makefile > @@ -47,7 +47,7 @@ bench := $(foreach B,$(filter bench-%,${BENCHSET}), > ${${B}}) > endif > > # String function benchmarks. > -string-benchset := memccpy memchr memcmp memcpy memmem memmove \ > +string-benchset := bcmp memccpy memchr memcmp memcpy memmem memmove \ > mempcpy memset rawmemchr stpcpy stpncpy strcasecmp > strcasestr \ > strcat strchr strchrnul strcmp strcpy strcspn strlen \ > strncasecmp strncat strncmp strncpy strnlen strpbrk > strrchr \ > diff --git a/benchtests/bench-bcmp.c b/benchtests/bench-bcmp.c > new file mode 100644 > index 0000000000..1023639787 > --- /dev/null > +++ b/benchtests/bench-bcmp.c > @@ -0,0 +1,20 @@ > +/* Measure bcmp functions. > + Copyright (C) 2015-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#define TEST_BCMP 1 > +#include "bench-memcmp.c" > diff --git a/benchtests/bench-memcmp.c b/benchtests/bench-memcmp.c > index 744c7ec5ba..4d5f8fb766 100644 > --- a/benchtests/bench-memcmp.c > +++ b/benchtests/bench-memcmp.c > @@ -17,7 +17,9 @@ > <https://www.gnu.org/licenses/>. */ > > #define TEST_MAIN > -#ifdef WIDE > +#ifdef TEST_BCMP > +# define TEST_NAME "bcmp" > +#elif defined WIDE > # define TEST_NAME "wmemcmp" > #else > # define TEST_NAME "memcmp" > diff --git a/string/Makefile b/string/Makefile > index f0fce2a0b8..f1f67ee157 100644 > --- a/string/Makefile > +++ b/string/Makefile > @@ -35,7 +35,7 @@ routines := strcat strchr strcmp strcoll strcpy > strcspn \ > strncat strncmp strncpy \ > strrchr strpbrk strsignal strspn strstr strtok \ > strtok_r strxfrm memchr memcmp memmove memset \ > - mempcpy bcopy bzero ffs ffsll stpcpy stpncpy \ > + mempcpy bcmp bcopy bzero ffs ffsll stpcpy stpncpy > \ > strcasecmp strncase strcasecmp_l strncase_l \ > memccpy memcpy wordcopy strsep strcasestr \ > swab strfry memfrob memmem rawmemchr strchrnul \ > @@ -52,7 +52,7 @@ strop-tests := memchr memcmp memcpy memmove mempcpy > memset memccpy \ > stpcpy stpncpy strcat strchr strcmp strcpy strcspn \ > strlen strncmp strncpy strpbrk strrchr strspn memmem \ > strstr strcasestr strnlen strcasecmp strncasecmp \ > - strncat rawmemchr strchrnul bcopy bzero memrchr \ > + strncat rawmemchr strchrnul bcmp bcopy bzero memrchr \ > explicit_bzero > tests := tester inl-tester noinl-tester testcopy test-ffs \ > tst-strlen stratcliff tst-svc tst-inlcall \ > diff --git a/string/test-bcmp.c b/string/test-bcmp.c > new file mode 100644 > index 0000000000..6d19a4a87c > --- /dev/null > +++ b/string/test-bcmp.c > @@ -0,0 +1,21 @@ > +/* Test and measure bcmp functions. > + Copyright (C) 2012-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#define BAD_RESULT(result, expec) ((!(result)) != (!(expec))) > +#define TEST_BCMP 1 > +#include "test-memcmp.c" > diff --git a/string/test-memcmp.c b/string/test-memcmp.c > index 6ddbc05d2f..c630e6799d 100644 > --- a/string/test-memcmp.c > +++ b/string/test-memcmp.c > @@ -17,11 +17,14 @@ > <https://www.gnu.org/licenses/>. */ > > #define TEST_MAIN > -#ifdef WIDE > +#ifdef TEST_BCMP > +# define TEST_NAME "bcmp" > +#elif defined WIDE > # define TEST_NAME "wmemcmp" > #else > # define TEST_NAME "memcmp" > #endif > + > #include "test-string.h" > #ifdef WIDE > # include <inttypes.h> > @@ -35,6 +38,7 @@ > # define CHARBYTES 4 > # define CHAR__MIN WCHAR_MIN > # define CHAR__MAX WCHAR_MAX > + > int > simple_wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n) > { > @@ -48,8 +52,11 @@ simple_wmemcmp (const wchar_t *s1, const wchar_t *s2, > size_t n) > } > #else > # include <limits.h> > - > -# define MEMCMP memcmp > +# ifdef TEST_BCMP > +# define MEMCMP bcmp > +# else > +# define MEMCMP memcmp > +# endif > # define MEMCPY memcpy > # define SIMPLE_MEMCMP simple_memcmp > # define CHAR char > @@ -69,6 +76,12 @@ simple_memcmp (const char *s1, const char *s2, size_t n) > } > #endif > > +# ifndef BAD_RESULT > +# define BAD_RESULT(result, expec) \ > + (((result) == 0 && (expec)) || ((result) < 0 && (expec) >= 0) || \ > + ((result) > 0 && (expec) <= 0)) > +# endif > + > typedef int (*proto_t) (const CHAR *, const CHAR *, size_t); > > IMPL (SIMPLE_MEMCMP, 0) > @@ -79,9 +92,7 @@ check_result (impl_t *impl, const CHAR *s1, const CHAR > *s2, size_t len, > int exp_result) > { > int result = CALL (impl, s1, s2, len); > - if ((exp_result == 0 && result != 0) > - || (exp_result < 0 && result >= 0) > - || (exp_result > 0 && result <= 0)) > + if (BAD_RESULT(result, exp_result)) > { > error (0, 0, "Wrong result in function %s %d %d", impl->name, > result, exp_result); > @@ -186,9 +197,7 @@ do_random_tests (void) > { > r = CALL (impl, (CHAR *) p1 + align1, (const CHAR *) p2 + align2, > len); > - if ((r == 0 && result) > - || (r < 0 && result >= 0) > - || (r > 0 && result <= 0)) > + if (BAD_RESULT(r, result)) > { > error (0, 0, "Iteration %zd - wrong result in function %s > (%zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", > n, impl->name, align1 * CHARBYTES & 63, align2 * > CHARBYTES & 63, len, pos, r, result, p1, p2); > diff --git a/sysdeps/x86_64/memcmp.S b/sysdeps/x86_64/memcmp.S > index 870e15c5a0..dfd0269db2 100644 > --- a/sysdeps/x86_64/memcmp.S > +++ b/sysdeps/x86_64/memcmp.S > @@ -356,6 +356,4 @@ L(ATR32res): > .p2align 4,, 4 > END(memcmp) > > -#undef bcmp > -weak_alias (memcmp, bcmp) > libc_hidden_builtin_def (memcmp) > diff --git a/sysdeps/x86_64/multiarch/Makefile > b/sysdeps/x86_64/multiarch/Makefile > index 26be40959c..9dd0d8c3ff 100644 > --- a/sysdeps/x86_64/multiarch/Makefile > +++ b/sysdeps/x86_64/multiarch/Makefile > @@ -1,6 +1,7 @@ > ifeq ($(subdir),string) > > sysdep_routines += strncat-c stpncpy-c strncpy-c \ > + bcmp-sse2 bcmp-sse4 bcmp-avx2 \ > strcmp-sse2 strcmp-sse2-unaligned strcmp-ssse3 \ > strcmp-sse4_2 strcmp-avx2 \ > strncmp-sse2 strncmp-ssse3 strncmp-sse4_2 strncmp-avx2 \ > @@ -40,6 +41,7 @@ sysdep_routines += strncat-c stpncpy-c strncpy-c \ > memset-sse2-unaligned-erms \ > memset-avx2-unaligned-erms \ > memset-avx512-unaligned-erms \ > + bcmp-avx2-rtm \ > memchr-avx2-rtm \ > memcmp-avx2-movbe-rtm \ > memmove-avx-unaligned-erms-rtm \ > @@ -59,6 +61,7 @@ sysdep_routines += strncat-c stpncpy-c strncpy-c \ > strncpy-avx2-rtm \ > strnlen-avx2-rtm \ > strrchr-avx2-rtm \ > + bcmp-evex \ > memchr-evex \ > memcmp-evex-movbe \ > memmove-evex-unaligned-erms \ > diff --git a/sysdeps/x86_64/multiarch/bcmp-avx2-rtm.S > b/sysdeps/x86_64/multiarch/bcmp-avx2-rtm.S > new file mode 100644 > index 0000000000..d742257e4e > --- /dev/null > +++ b/sysdeps/x86_64/multiarch/bcmp-avx2-rtm.S > @@ -0,0 +1,12 @@ > +#ifndef MEMCMP > +# define MEMCMP __bcmp_avx2_rtm > +#endif > + > +#define ZERO_UPPER_VEC_REGISTERS_RETURN \ > + ZERO_UPPER_VEC_REGISTERS_RETURN_XTEST > + > +#define VZEROUPPER_RETURN jmp L(return_vzeroupper) > + > +#define SECTION(p) p##.avx.rtm > + > +#include "bcmp-avx2.S" > diff --git a/sysdeps/x86_64/multiarch/bcmp-avx2.S > b/sysdeps/x86_64/multiarch/bcmp-avx2.S > new file mode 100644 > index 0000000000..93a9a20b17 > --- /dev/null > +++ b/sysdeps/x86_64/multiarch/bcmp-avx2.S > @@ -0,0 +1,23 @@ > +/* bcmp optimized with AVX2. > + Copyright (C) 2017-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#ifndef MEMCMP > +# define MEMCMP __bcmp_avx2 > +#endif > + > +#include "bcmp-avx2.S" > diff --git a/sysdeps/x86_64/multiarch/bcmp-evex.S > b/sysdeps/x86_64/multiarch/bcmp-evex.S > new file mode 100644 > index 0000000000..ade52e8c68 > --- /dev/null > +++ b/sysdeps/x86_64/multiarch/bcmp-evex.S > @@ -0,0 +1,23 @@ > +/* bcmp optimized with EVEX. > + Copyright (C) 2017-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +#ifndef MEMCMP > +# define MEMCMP __bcmp_evex > +#endif > + > +#include "memcmp-evex-movbe.S" > diff --git a/sysdeps/x86_64/multiarch/bcmp-sse2.S > b/sysdeps/x86_64/multiarch/bcmp-sse2.S > new file mode 100644 > index 0000000000..b18d570386 > --- /dev/null > +++ b/sysdeps/x86_64/multiarch/bcmp-sse2.S > @@ -0,0 +1,23 @@ > +/* bcmp optimized with SSE2 > + Copyright (C) 2017-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +# ifndef memcmp > +# define memcmp __bcmp_sse2 > +# endif > +# define USE_AS_BCMP 1 > +#include "memcmp-sse2.S" > diff --git a/sysdeps/x86_64/multiarch/bcmp-sse4.S > b/sysdeps/x86_64/multiarch/bcmp-sse4.S > new file mode 100644 > index 0000000000..ed9804053f > --- /dev/null > +++ b/sysdeps/x86_64/multiarch/bcmp-sse4.S > @@ -0,0 +1,23 @@ > +/* bcmp optimized with SSE4.1 > + Copyright (C) 2017-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +# ifndef MEMCMP > +# define MEMCMP __bcmp_sse4_1 > +# endif > +# define USE_AS_BCMP 1 > +#include "memcmp-sse4.S" > diff --git a/sysdeps/x86_64/multiarch/bcmp.c > b/sysdeps/x86_64/multiarch/bcmp.c > new file mode 100644 > index 0000000000..6e26b73ecc > --- /dev/null > +++ b/sysdeps/x86_64/multiarch/bcmp.c > @@ -0,0 +1,35 @@ > +/* Multiple versions of bcmp. > + All versions must be listed in ifunc-impl-list.c. > + Copyright (C) 2017-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +/* Define multiple versions only for the definition in libc. */ > +#if IS_IN (libc) > +# define bcmp __redirect_bcmp > +# include <string.h> > +# undef bcmp > + > +# define SYMBOL_NAME bcmp > +# include "ifunc-bcmp.h" > + > +libc_ifunc_redirected (__redirect_bcmp, bcmp, IFUNC_SELECTOR ()); > + > +# ifdef SHARED > +__hidden_ver1 (bcmp, __GI_bcmp, __redirect_bcmp) > + __attribute__ ((visibility ("hidden"))) __attribute_copy__ (bcmp); > +# endif > +#endif > diff --git a/sysdeps/x86_64/multiarch/ifunc-bcmp.h > b/sysdeps/x86_64/multiarch/ifunc-bcmp.h > new file mode 100644 > index 0000000000..b0dacd8526 > --- /dev/null > +++ b/sysdeps/x86_64/multiarch/ifunc-bcmp.h > @@ -0,0 +1,53 @@ > +/* Common definition for bcmp ifunc selections. > + All versions must be listed in ifunc-impl-list.c. > + Copyright (C) 2017-2021 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library; if not, see > + <https://www.gnu.org/licenses/>. */ > + > +# include <init-arch.h> > + > +extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2) attribute_hidden; > +extern __typeof (REDIRECT_NAME) OPTIMIZE (sse4_1) attribute_hidden; > +extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2) attribute_hidden; > +extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2_rtm) attribute_hidden; > +extern __typeof (REDIRECT_NAME) OPTIMIZE (evex) attribute_hidden; > + > +static inline void * > +IFUNC_SELECTOR (void) > +{ > + const struct cpu_features* cpu_features = __get_cpu_features (); > + > + if (CPU_FEATURE_USABLE_P (cpu_features, AVX2) > + && CPU_FEATURE_USABLE_P (cpu_features, BMI2) > + && CPU_FEATURE_USABLE_P (cpu_features, MOVBE) > + && CPU_FEATURES_ARCH_P (cpu_features, AVX_Fast_Unaligned_Load)) > + { > + if (CPU_FEATURE_USABLE_P (cpu_features, AVX512VL) > + && CPU_FEATURE_USABLE_P (cpu_features, AVX512BW)) > + return OPTIMIZE (evex); > + > + if (CPU_FEATURE_USABLE_P (cpu_features, RTM)) > + return OPTIMIZE (avx2_rtm); > + > + if (!CPU_FEATURES_ARCH_P (cpu_features, Prefer_No_VZEROUPPER)) > + return OPTIMIZE (avx2); > + } > + > + if (CPU_FEATURE_USABLE_P (cpu_features, SSE4_1)) > + return OPTIMIZE (sse4_1); > + > + return OPTIMIZE (sse2); > +} > diff --git a/sysdeps/x86_64/multiarch/ifunc-impl-list.c > b/sysdeps/x86_64/multiarch/ifunc-impl-list.c > index 39ab10613b..dd0c393c7d 100644 > --- a/sysdeps/x86_64/multiarch/ifunc-impl-list.c > +++ b/sysdeps/x86_64/multiarch/ifunc-impl-list.c > @@ -38,6 +38,29 @@ __libc_ifunc_impl_list (const char *name, struct > libc_ifunc_impl *array, > > size_t i = 0; > > + /* Support sysdeps/x86_64/multiarch/bcmp.c. */ > + IFUNC_IMPL (i, name, bcmp, > + IFUNC_IMPL_ADD (array, i, bcmp, > + (CPU_FEATURE_USABLE (AVX2) > + && CPU_FEATURE_USABLE (MOVBE) > + && CPU_FEATURE_USABLE (BMI2)), > + __bcmp_avx2) > + IFUNC_IMPL_ADD (array, i, bcmp, > + (CPU_FEATURE_USABLE (AVX2) > + && CPU_FEATURE_USABLE (BMI2) > + && CPU_FEATURE_USABLE (MOVBE) > + && CPU_FEATURE_USABLE (RTM)), > + __bcmp_avx2_rtm) > + IFUNC_IMPL_ADD (array, i, bcmp, > + (CPU_FEATURE_USABLE (AVX512VL) > + && CPU_FEATURE_USABLE (AVX512BW) > + && CPU_FEATURE_USABLE (MOVBE) > + && CPU_FEATURE_USABLE (BMI2)), > + __bcmp_evex) > + IFUNC_IMPL_ADD (array, i, bcmp, CPU_FEATURE_USABLE (SSE4_1), > + __bcmp_sse4_1) > + IFUNC_IMPL_ADD (array, i, bcmp, 1, __bcmp_sse2)) > + > /* Support sysdeps/x86_64/multiarch/memchr.c. */ > IFUNC_IMPL (i, name, memchr, > IFUNC_IMPL_ADD (array, i, memchr, > diff --git a/sysdeps/x86_64/multiarch/memcmp-sse2.S > b/sysdeps/x86_64/multiarch/memcmp-sse2.S > index b135fa2d40..2a4867ad18 100644 > --- a/sysdeps/x86_64/multiarch/memcmp-sse2.S > +++ b/sysdeps/x86_64/multiarch/memcmp-sse2.S > @@ -17,7 +17,9 @@ > <https://www.gnu.org/licenses/>. */ > > #if IS_IN (libc) > -# define memcmp __memcmp_sse2 > +# ifndef memcmp > +# define memcmp __memcmp_sse2 > +# endif > > # ifdef SHARED > # undef libc_hidden_builtin_def > diff --git a/sysdeps/x86_64/multiarch/memcmp.c > b/sysdeps/x86_64/multiarch/memcmp.c > index fe725f3563..1760e045df 100644 > --- a/sysdeps/x86_64/multiarch/memcmp.c > +++ b/sysdeps/x86_64/multiarch/memcmp.c > @@ -27,8 +27,6 @@ > # include "ifunc-memcmp.h" > > libc_ifunc_redirected (__redirect_memcmp, memcmp, IFUNC_SELECTOR ()); > -# undef bcmp > -weak_alias (memcmp, bcmp) > > # ifdef SHARED > __hidden_ver1 (memcmp, __GI_memcmp, __redirect_memcmp) > -- > 2.25.1 > >
bcmp is an obsolescent function that no modern programs should be using, and it's not in the implementation namespace either so compilers shouldn't translate memcmp calls to bcmp. If you want to define memcmp ABI variants optimized for particular usages, I suggest the following: 1. Add reserved-namespace names for such variants to the x86_64 psABI document (working with the ABI mailing list). The 32-bit Arm RTABI <https://github.com/ARM-software/abi-aa/blob/main/rtabi32/rtabi32.rst> provides a precedent for defining such function variants in a psABI (it includes various __aeabi_mem*, though no memcmp variants). 2. Add those names to glibc, as well as teaching compilers to generate calls to them (with appropriate conditionals for whether the functions are known to be available in the target libc; in GCC, that would be based on GCC_GLIBC_VERSION_GTE_IFELSE configure tests for targets using glibc). As a variant, you could define such names as architecture-independent GNU extensions rather than in a psABI, especially if there's nothing architecture-specific about the variants you think are useful (e.g. no use for having changes to calling conventions / call-clobbered registers for the variants). But what should not be done in any case is tying an optimization to an obsolescent non-reserved name - any such optimized variants should use only implementation-namespace names.
On Tue, Sep 14, 2021, at 8:00 PM, Joseph Myers wrote: > bcmp is an obsolescent function that no modern programs should be using, > and it's not in the implementation namespace either so compilers shouldn't > translate memcmp calls to bcmp. I want to add that glibc has made bcmp an alias for memcmp for many years, which means that Linux- or Hurd-specific programs that are still using bcmp may have come to depend on its return value indicating ordering rather than just equality. I myself had been under the impression that they were *specified* exactly the same, until this thread prompted me to double-check the specifications. As such I don't think it's safe for *glibc* to accept patches that optimize bcmp separately from memcmp. I do rather like the idea of a __gnu_memeq() that compilers could optimize memcmp calls to, when they can prove that the result is used only for its truth value. zw
* Zack Weinberg via Libc-alpha: > On Tue, Sep 14, 2021, at 8:00 PM, Joseph Myers wrote: >> bcmp is an obsolescent function that no modern programs should be using, >> and it's not in the implementation namespace either so compilers shouldn't >> translate memcmp calls to bcmp. > > I want to add that glibc has made bcmp an alias for memcmp for many > years, which means that Linux- or Hurd-specific programs that are > still using bcmp may have come to depend on its return value > indicating ordering rather than just equality. I myself had been > under the impression that they were *specified* exactly the same, > until this thread prompted me to double-check the specifications. As > such I don't think it's safe for *glibc* to accept patches that > optimize bcmp separately from memcmp. That's a very good point. > I do rather like the idea of a __gnu_memeq() that compilers could > optimize memcmp calls to, when they can prove that the result is used > only for its truth value. Yes, we should use a name in the implementation namespace because even if we pick an obvious like memequal, it will probably come back under a different name from the C committee. Thanks, Florian
On Wed, Sep 15, 2021 at 9:02 AM Florian Weimer via Libc-alpha < libc-alpha@sourceware.org> wrote: > * Zack Weinberg via Libc-alpha: > > > On Tue, Sep 14, 2021, at 8:00 PM, Joseph Myers wrote: > >> bcmp is an obsolescent function that no modern programs should be > using, > >> and it's not in the implementation namespace either so compilers > shouldn't > >> translate memcmp calls to bcmp. > > > > I want to add that glibc has made bcmp an alias for memcmp for many > > years, which means that Linux- or Hurd-specific programs that are > > still using bcmp may have come to depend on its return value > > indicating ordering rather than just equality. I myself had been > > under the impression that they were *specified* exactly the same, > > until this thread prompted me to double-check the specifications. As > > such I don't think it's safe for *glibc* to accept patches that > > optimize bcmp separately from memcmp. > > That's a very good point. > > > I do rather like the idea of a __gnu_memeq() that compilers could > > optimize memcmp calls to, when they can prove that the result is used > > only for its truth value. > > Yes, we should use a name in the implementation namespace because even > if we pick an obvious like memequal, it will probably come back under a > different name from the C committee. > +1 What would be the steps for getting that into GLIBC? > > Thanks, > Florian > >
On Wed, 15 Sep 2021, Noah Goldstein via Libc-alpha wrote: > > > I do rather like the idea of a __gnu_memeq() that compilers could > > > optimize memcmp calls to, when they can prove that the result is used > > > only for its truth value. > > > > Yes, we should use a name in the implementation namespace because even > > if we pick an obvious like memequal, it will probably come back under a > > different name from the C committee. > > > > +1 > > What would be the steps for getting that into GLIBC? Define what the exact interface you want is (the exact function type and (reserved) name and semantics of the return value and arguments; explicitly including details such as whether the full n bytes of each argument are required to be mapped into memory even if they compare unequal before n bytes). Discuss it on the libc-coord mailing list (probably include compiler mailing lists as well) to get agreement on semantics that are good for both libc implementations and for compilers to generate; it's best if this interface is acceptable to multiple libc implementations and suitable for multiple compilers to generate calls to (when available in libc). Implement in glibc, across all glibc ports and including all the ABI test baseline updates. If the semantics are such that an alias to memcmp is a valid implementation, that probably means adding such an alias to every memcmp implementation in glibc (and verifying with build-many-glibcs.py that they all build and pass the ABI tests), as well as allowing for architectures to add their own separate implementation of the new function if they wish. There should also be execution tests that the new function works correctly at runtime (with different alignment, arguments just before unmapped pages, etc., as with other string function tests). If the new function is purely an ABI, not an API, it doesn't need user manual documentation, however (although there will at least need to be a comment giving the detailed semantics that were agreed on libc-coord).
On Wed, Sep 15, 2021 at 1:30 PM Joseph Myers <joseph@codesourcery.com> wrote: > On Wed, 15 Sep 2021, Noah Goldstein via Libc-alpha wrote: > > > > > I do rather like the idea of a __gnu_memeq() that compilers could > > > > optimize memcmp calls to, when they can prove that the result is used > > > > only for its truth value. > > > > > > Yes, we should use a name in the implementation namespace because even > > > if we pick an obvious like memequal, it will probably come back under a > > > different name from the C committee. > > > > > > > +1 > > > > What would be the steps for getting that into GLIBC? > > Define what the exact interface you want is (the exact function type and > (reserved) name and semantics of the return value and arguments; > explicitly including details such as whether the full n bytes of each > argument are required to be mapped into memory even if they compare > unequal before n bytes). > > Discuss it on the libc-coord mailing list (probably include compiler > mailing lists as well) to get agreement on semantics that are good for > both libc implementations and for compilers to generate; it's best if this > interface is acceptable to multiple libc implementations and suitable for > multiple compilers to generate calls to (when available in libc). > > Implement in glibc, across all glibc ports and including all the ABI test > baseline updates. If the semantics are such that an alias to memcmp is a > valid implementation, that probably means adding such an alias to every > memcmp implementation in glibc (and verifying with build-many-glibcs.py > that they all build and pass the ABI tests), as well as allowing for > architectures to add their own separate implementation of the new function > if they wish. There should also be execution tests that the new function > works correctly at runtime (with different alignment, arguments just > before unmapped pages, etc., as with other string function tests). If the > new function is purely an ABI, not an API, it doesn't need user manual > documentation, however (although there will at least need to be a comment > giving the detailed semantics that were agreed on libc-coord). > > Is there some documentation for how to effectively use build-many-glibcs.py I've tried: $> python3 src/glibc/scripts/build-many-glibcs.py /some/were checkout gcc-vcs-11 $> python3 src/glibc/scripts/build-many-glibcs.py /some/were host-libraries $> python3 src/glibc/scripts/build-many-glibcs.py /some/were compilers $> python3 src/glibc/scripts/build-many-glibcs.py /some/were glibcs With GLIBC master I'm seeing a ton of failures so I'm not sure how I'm supposed to actually test my patches. I've also tried with gcc-vcs-mainline although my guess is that it will just be a less stable version that could cause unrelated failures. > -- > Joseph S. Myers > joseph@codesourcery.com >
* Noah Goldstein: > Is there some documentation for how to effectively use build-many-glibcs.py > > I've tried: > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were checkout gcc-vcs-11 (gcc-vcs-11 is actually the current default.) > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were host-libraries > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were compilers > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were glibcs > > With GLIBC master I'm seeing a ton of failures so I'm not sure how I'm > supposed to actually test my patches. Running build-many-glibcs.py is not a requirement for patch submission. (One run that completes in a somewhat reasonable amount of time costs 10 USD to 20 USD in the public cloud, after all.) I just tried a run, and it passes for me without errors. Joseph's tester also produces clean reports for GCC 11. Which errors do you encounter? For investigation, it may be prudent to build with “--keep failed”. Logs are always preserved. For the Linux targets, they can be found in logs/glibcs/…/004*.log.txt for the build phase, and logs/glibcs/…/007*.log.txt for the check phase. Common sources of errors are lack of disk space or memory. I think below 1 GiB RAM per core, it gets a bit tight, and you may have to reduce parallelism using -j. Thanks, Florian
On Mon, Sep 27, 2021 at 2:29 AM Florian Weimer <fweimer@redhat.com> wrote: > * Noah Goldstein: > > > Is there some documentation for how to effectively use > build-many-glibcs.py > > > > I've tried: > > > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were checkout > gcc-vcs-11 > > (gcc-vcs-11 is actually the current default.) > > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were > host-libraries > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were compilers > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were glibcs > > > > With GLIBC master I'm seeing a ton of failures so I'm not sure how I'm > > supposed to actually test my patches. > > Running build-many-glibcs.py is not a requirement for patch submission. > (One run that completes in a somewhat reasonable amount of time costs > 10 USD to 20 USD in the public cloud, after all.) > > I just tried a run, and it passes for me without errors. Joseph's > tester also produces clean reports for GCC 11. > > Which errors do you encounter? For investigation, it may be prudent to > build with “--keep failed”. Logs are always preserved. For the Linux > targets, they can be found in logs/glibcs/…/004*.log.txt for the build > phase, and logs/glibcs/…/007*.log.txt for the check phase. > > Common sources of errors are lack of disk space or memory. I think > below 1 GiB RAM per core, it gets a bit tight, and you may have to > reduce parallelism using -j. > So I essentially get an error at the first build step in compilers (same for any target) i.e FAIL: compilers-arc-linux-gnu binutils build Looking inside the log I see: ``` /some/were/src/binutils/gas/as.c:110:31: error: ‘DEFAULT_GENERATE_ELF_STT_COMMON’ undeclared here (not in a function) 110 | int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /some/were/src/binutils/gas/as.c:111:34: error: ‘DEFAULT_GENERATE_BUILD_NOTES’ undeclared here (not in a function) 111 | bool flag_generate_build_notes = DEFAULT_GENERATE_BUILD_NOTES; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ /some/were/src/binutils/gas/as.c: In function ‘print_version_id’: /some/were/src/binutils/gas/as.c:237:21: error: ‘TARGET_ALIAS’ undeclared (first use in this function); did you mean ‘TARGET_ARCH’? 237 | VERSION, TARGET_ALIAS, BFD_VERSION_STRING); | ^~~~~~~~~~~~ | TARGET_ARCH /some/were/src/binutils/gas/as.c:237:21: note: each undeclared identifier is reported only once for each function it appears in /some/were/src/binutils/gas/as.c: In function ‘parse_args’: /some/were/src/binutils/gas/as.c:700:19: error: ‘TARGET_ALIAS’ undeclared (first use in this function); did you mean ‘TARGET_ARCH’? 700 | TARGET_ALIAS); | ^~~~~~~~~~~~ | TARGET_ARCH /some/were/src/binutils/gas/as.c:715:51: error: ‘TARGET_CANONICAL’ undeclared (first use in this function) 715 | fprintf (stderr, _("canonical = %s\n"), TARGET_CANONICAL); | ^~~~~~~~~~~~~~~~ /some/were/src/binutils/gas/as.c:716:50: error: ‘TARGET_CPU’ undeclared (first use in this function) 716 | fprintf (stderr, _("cpu-type = %s\n"), TARGET_CPU); | ^~~~~~~~~~ make[5]: *** [Makefile:1238: as.o] Error 1 make[5]: Leaving directory '/some/were/build/compilers/arc-linux-gnu/binutils/gas' make[4]: *** [Makefile:1283: all-recursive] Error 1 make[3]: *** [Makefile:819: all] Error 2 make[2]: *** [Makefile:4990: all-gas] Error 2 make[1]: *** [Makefile:903: all] Error 2 FAIL: compilers-arc-linux-gnu binutils build ``` All the ensuing GLIBC builds result in UNRESOLVED i.e: UNRESOLVED: glibcs-x86_64-linux-gnu build ``` Description: glibcs-x86_64-linux-gnu build Command: make Directory: /some/were/build/glibcs/x86_64-linux-gnu/glibc Path addition: /some/were/install/compilers/x86_64-linux-gnu/bin UNRESOLVED: glibcs-x86_64-linux-gnu build ``` > Thanks, > Florian > >
* Noah Goldstein: > So I essentially get an error at the first build step in compilers (same for any target) > > i.e > > FAIL: compilers-arc-linux-gnu binutils build > > Looking inside the log I see: > > ``` > /some/were/src/binutils/gas/as.c:110:31: error: ‘DEFAULT_GENERATE_ELF_STT_COMMON’ > undeclared here (not in a function) > 110 | int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON; > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This is quite weird. It means that something went wrong when running configure because it should be defined unconditionally. I haven't seen a report of this error before. Do you use site defaults for autoconf or something like that? Could you please check what's in config.log for the binutils build? (You may have to pass --keep failed to the Python script.) Thanks, Florian
On Mon, 27 Sep 2021, Florian Weimer via Libc-alpha wrote: > * Noah Goldstein: > > > Is there some documentation for how to effectively use build-many-glibcs.py > > > > I've tried: > > > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were checkout gcc-vcs-11 > > (gcc-vcs-11 is actually the current default.) > > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were host-libraries > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were compilers > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were glibcs > > > > With GLIBC master I'm seeing a ton of failures so I'm not sure how I'm > > supposed to actually test my patches. > > Running build-many-glibcs.py is not a requirement for patch submission. > (One run that completes in a somewhat reasonable amount of time costs > 10 USD to 20 USD in the public cloud, after all.) However, it's certainly a good idea, when proposing a patch changing all the architecture-specific memcmp implementations to add a new alias, to test building at least one configuration using each such implementation (which is a smaller set than the full set of build-many-glibcs.py configurations).
On Mon, Sep 27, 2021 at 12:42 PM Joseph Myers <joseph@codesourcery.com> wrote: > On Mon, 27 Sep 2021, Florian Weimer via Libc-alpha wrote: > > > * Noah Goldstein: > > > > > Is there some documentation for how to effectively use > build-many-glibcs.py > > > > > > I've tried: > > > > > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were checkout > gcc-vcs-11 > > > > (gcc-vcs-11 is actually the current default.) > > > > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were > host-libraries > > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were compilers > > > $> python3 src/glibc/scripts/build-many-glibcs.py /some/were glibcs > > > > > > With GLIBC master I'm seeing a ton of failures so I'm not sure how I'm > > > supposed to actually test my patches. > > > > Running build-many-glibcs.py is not a requirement for patch submission. > > (One run that completes in a somewhat reasonable amount of time costs > > 10 USD to 20 USD in the public cloud, after all.) > > However, it's certainly a good idea, when proposing a patch changing all > the architecture-specific memcmp implementations to add a new alias, to > test building at least one configuration using each such implementation > (which is a smaller set than the full set of build-many-glibcs.py > configurations). > Agreed. Hence I'm trying to get it working before posting my patch. > > -- > Joseph S. Myers > joseph@codesourcery.com >
On Mon, Sep 27, 2021 at 11:54 AM Florian Weimer <fweimer@redhat.com> wrote: > * Noah Goldstein: > > > So I essentially get an error at the first build step in compilers (same > for any target) > > > > i.e > > > > FAIL: compilers-arc-linux-gnu binutils build > > > > Looking inside the log I see: > > > > ``` > > /some/were/src/binutils/gas/as.c:110:31: error: > ‘DEFAULT_GENERATE_ELF_STT_COMMON’ > > undeclared here (not in a function) > > 110 | int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON; > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > This is quite weird. It means that something went wrong when running > configure because it should be defined unconditionally. I haven't seen > a report of this error before. > > Do you use site defaults for autoconf or something like that? > > Could you please check what's in config.log for the binutils build? > (You may have to pass --keep failed to the Python script.) > Full command im using. $> python3 src/glibc/scripts/build-many-glibcs.py build-many/ checkout gcc-vcs-11; echo "Host Libraries"; python3 src/glibc/scripts/build-many-glibcs.py build-many host-libraries --keep=all; echo "Compilers"; python3 src/glibc/scripts/build-many-glibcs.py build-many compilers x86_64-linux-gnu --keep=all; echo "GLIBC"; python3 src/glibc/scripts/build-many-glibcs.py build-many glibcs --keep=all binutils configure seems to PASS. Here is the full log file for x86-64-linux-gnu (my host). Note the build for x86-64 binutils still fails with the same error as arc. ``` $> cat build-many/logs/compilers/x86_64-linux-gnu/003-compilers-x86_64-linux-gnu-binutils-configure-log.txt Mon 27 Sep 2021 12:44:53 PM CDT Description: compilers-x86_64-linux-gnu binutils configure Command: /some/were/src/binutils/configure '--prefix=/some/were/install/compilers/x86_64-linux-gnu' '--build=x86_64-pc-linux-gnu' '--host=x86_64-pc-linux-gnu' '--target=x86_64-glibc-linux-gnu' '--with-sysroot=/some/were/install/compilers/x86_64-linux-gnu/sysroot' --disable-gdb --disable-gdbserver --disable-libdecnumber --disable-readline --disable-sim Directory: /some/were/build/compilers/x86_64-linux-gnu/binutils Path addition: /some/were/install/compilers/x86_64-linux-gnu/bin checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking target system type... x86_64-glibc-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether ln works... yes checking whether ln -s works... yes checking for a sed that does not truncate output... /usr/bin/sed checking for gawk... gawk checking for x86_64-pc-linux-gnu-gcc... no checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking for gcc option to accept ISO C99... none needed checking for x86_64-pc-linux-gnu-g++... no checking for x86_64-pc-linux-gnu-c++... no checking for x86_64-pc-linux-gnu-gpp... no checking for x86_64-pc-linux-gnu-aCC... no checking for x86_64-pc-linux-gnu-CC... no checking for x86_64-pc-linux-gnu-cxx... no checking for x86_64-pc-linux-gnu-cc++... no checking for x86_64-pc-linux-gnu-cl.exe... no checking for x86_64-pc-linux-gnu-FCC... no checking for x86_64-pc-linux-gnu-KCC... no checking for x86_64-pc-linux-gnu-RCC... no checking for x86_64-pc-linux-gnu-xlC_r... no checking for x86_64-pc-linux-gnu-xlC... no checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking whether g++ accepts -static-libstdc++ -static-libgcc... yes checking for x86_64-pc-linux-gnu-gnatbind... no checking for gnatbind... no checking for x86_64-pc-linux-gnu-gnatmake... no checking for gnatmake... no checking whether compiler driver understands Ada... no checking how to compare bootstrapped objects... cmp --ignore-initial=16 $$f1 $$f2 checking for objdir... .libs checking for isl 0.15 or later... no required isl version is 0.15 or later *** This configuration is not supported in the following subdirectories: readline libdecnumber sim gdb gdbserver (Any other directories should still work fine.) checking for default BUILD_CONFIG... checking for --enable-vtable-verify... no checking for bison... bison -y checking for bison... bison checking for gm4... no checking for gnum4... no checking for m4... m4 checking for flex... flex checking for flex... flex checking for makeinfo... makeinfo checking for expect... no checking for runtest... no checking for x86_64-pc-linux-gnu-ar... no checking for ar... ar checking for x86_64-pc-linux-gnu-as... no checking for as... as checking for x86_64-pc-linux-gnu-dlltool... no checking for dlltool... no checking for x86_64-pc-linux-gnu-ld... no checking for ld... ld checking for x86_64-pc-linux-gnu-lipo... no checking for lipo... no checking for x86_64-pc-linux-gnu-nm... no checking for nm... nm checking for x86_64-pc-linux-gnu-ranlib... no checking for ranlib... ranlib checking for x86_64-pc-linux-gnu-strip... no checking for strip... strip checking for x86_64-pc-linux-gnu-windres... no checking for windres... no checking for x86_64-pc-linux-gnu-windmc... no checking for windmc... no checking for x86_64-pc-linux-gnu-objcopy... no checking for objcopy... objcopy checking for x86_64-pc-linux-gnu-objdump... no checking for objdump... objdump checking for x86_64-pc-linux-gnu-readelf... no checking for readelf... readelf checking for -plugin option... checking for x86_64-pc-linux-gnu-ar... (cached) ar --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so checking for x86_64-glibc-linux-gnu-cc... no checking for x86_64-glibc-linux-gnu-gcc... no checking for x86_64-glibc-linux-gnu-c++... no checking for x86_64-glibc-linux-gnu-g++... no checking for x86_64-glibc-linux-gnu-cxx... no checking for x86_64-glibc-linux-gnu-gxx... no checking for x86_64-glibc-linux-gnu-gcc... no checking for x86_64-glibc-linux-gnu-gfortran... no checking for x86_64-glibc-linux-gnu-gccgo... no checking for x86_64-glibc-linux-gnu-ar... no checking for x86_64-glibc-linux-gnu-as... no checking for x86_64-glibc-linux-gnu-dlltool... no checking for x86_64-glibc-linux-gnu-ld... no checking for x86_64-glibc-linux-gnu-lipo... no checking for x86_64-glibc-linux-gnu-nm... no checking for x86_64-glibc-linux-gnu-objcopy... no checking for x86_64-glibc-linux-gnu-objdump... no checking for x86_64-glibc-linux-gnu-ranlib... no checking for x86_64-glibc-linux-gnu-readelf... no checking for x86_64-glibc-linux-gnu-strip... no checking for x86_64-glibc-linux-gnu-windres... no checking for x86_64-glibc-linux-gnu-windmc... no checking where to find the target ar... just compiled checking where to find the target as... just compiled checking where to find the target cc... pre-installed checking where to find the target c++... pre-installed checking where to find the target c++ for libstdc++... pre-installed checking where to find the target dlltool... just compiled checking where to find the target gcc... pre-installed checking where to find the target gfortran... pre-installed checking where to find the target gccgo... pre-installed checking where to find the target ld... just compiled checking where to find the target lipo... pre-installed checking where to find the target nm... just compiled checking where to find the target objcopy... just compiled checking where to find the target objdump... just compiled checking where to find the target ranlib... just compiled checking where to find the target readelf... just compiled checking where to find the target strip... just compiled checking where to find the target windres... just compiled checking where to find the target windmc... just compiled checking whether to enable maintainer-specific portions of Makefiles... no configure: creating ./config.status config.status: creating Makefile PASS: compilers-x86_64-linux-gnu binutils configure Mon 27 Sep 2021 12:44:54 PM CDT ``` > Thanks, > Florian > >
* Noah Goldstein: > $> cat > build-many/logs/compilers/x86_64-linux-gnu/003-compilers-x86_64-linux-gnu-binutils-configure-log.txt There should be a config.log file in the binutils build directory (under build-many/build/compilers). I hope this file contains illuminating data. Thanks, Florian
On Mon, Sep 27, 2021 at 12:56 PM Florian Weimer <fweimer@redhat.com> wrote: > > * Noah Goldstein: > > > $> cat > > build-many/logs/compilers/x86_64-linux-gnu/003-compilers-x86_64-linux-gnu-binutils-configure-log.txt > > There should be a config.log file in the binutils build directory (under > build-many/build/compilers). I hope this file contains illuminating > data. Oh sorry. Here is the output of config.log ``` $> cat build-many/build/compilers/x86_64-linux-gnu/binutils/config.log This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by configure, which was generated by GNU Autoconf 2.69. Invocation command line was $ /some/were/build-many/src/binutils/configure --prefix=/some/were/build-many/install/compilers/x86_64-linux-gnu --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-glibc-linux-gnu --with-sysroot=/some/were/build-many/install/compilers/x86_64-linux-gnu/sysroot --disable-gdb --disable-gdbserver --disable-libdecnumber --disable-readline --disable-sim ## --------- ## ## Platform. ## ## --------- ## hostname = noah-tigerlake uname -m = x86_64 uname -r = 5.11.0-27-generic uname -s = Linux uname -v = #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021 /usr/bin/uname -p = x86_64 /bin/uname -X = unknown /bin/arch = x86_64 /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown /usr/bin/hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown PATH: /some/were/build-many/install/compilers/x86_64-linux-gnu/bin PATH: /home/noah/programs/libraries/ PATH: /home/noah/.local/bin PATH: /home/noah/programs/pyscripts PATH: /home/noah/scripts PATH: /home/noah/programs/libraries/ PATH: /home/noah/.local/bin PATH: /home/noah/programs/pyscripts PATH: /home/noah/scripts PATH: /home/noah/.local/bin PATH: /usr/local/sbin PATH: /usr/local/bin PATH: /usr/sbin PATH: /usr/bin PATH: /sbin PATH: /bin PATH: /usr/games PATH: /usr/local/games PATH: /snap/bin ## ----------- ## ## Core tests. ## ## ----------- ## configure:2348: checking build system type configure:2362: result: x86_64-pc-linux-gnu configure:2409: checking host system type configure:2422: result: x86_64-pc-linux-gnu configure:2442: checking target system type configure:2455: result: x86_64-glibc-linux-gnu configure:2509: checking for a BSD-compatible install configure:2577: result: /usr/bin/install -c configure:2588: checking whether ln works configure:2610: result: yes configure:2614: checking whether ln -s works configure:2618: result: yes configure:2625: checking for a sed that does not truncate output configure:2689: result: /usr/bin/sed configure:2698: checking for gawk configure:2714: found /usr/bin/gawk configure:2725: result: gawk configure:4021: checking for x86_64-pc-linux-gnu-gcc configure:4051: result: no configure:4061: checking for gcc configure:4077: found /usr/bin/gcc configure:4088: result: gcc configure:4317: checking for C compiler version configure:4326: gcc --version >&5 gcc (Ubuntu 11.1.0-1ubuntu1~20.04) 11.1.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:4337: $? = 0 configure:4326: gcc -v >&5 Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.1.0-1ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-2V7zgg/gcc-11-11.1.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-2V7zgg/gcc-11-11.1.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.1.0 (Ubuntu 11.1.0-1ubuntu1~20.04) ... rest of stderr output deleted ... configure:4337: $? = 0 configure:4326: gcc -V >&5 gcc: error: unrecognized command-line option '-V' gcc: fatal error: no input files compilation terminated. configure:4337: $? = 1 configure:4326: gcc -qversion >&5 gcc: error: unrecognized command-line option '-qversion'; did you mean '--version'? gcc: fatal error: no input files compilation terminated. configure:4337: $? = 1 configure:4357: checking whether the C compiler works configure:4379: gcc conftest.c >&5 configure:4383: $? = 0 configure:4431: result: yes configure:4434: checking for C compiler default output file name configure:4436: result: a.out configure:4442: checking for suffix of executables configure:4449: gcc -o conftest conftest.c >&5 configure:4453: $? = 0 configure:4475: result: configure:4497: checking whether we are cross compiling configure:4505: gcc -o conftest conftest.c >&5 configure:4509: $? = 0 configure:4516: ./conftest configure:4520: $? = 0 configure:4508: result: no configure:4513: checking for suffix of object files configure:4535: gcc -c conftest.c >&5 configure:4539: $? = 0 configure:4560: result: o configure:4564: checking whether we are using the GNU C compiler configure:4583: gcc -c conftest.c >&5 configure:4583: $? = 0 configure:4592: result: yes configure:4601: checking whether gcc accepts -g configure:4621: gcc -c -g conftest.c >&5 configure:4621: $? = 0 configure:4662: result: yes configure:4679: checking for gcc option to accept ISO C89 configure:4742: gcc -c -g -O2 conftest.c >&5 configure:4742: $? = 0 configure:4755: result: none needed configure:4775: checking for gcc option to accept ISO C99 configure:4924: gcc -c -g -O2 conftest.c >&5 configure:4924: $? = 0 configure:4937: result: none needed configure:4966: checking for x86_64-pc-linux-gnu-g++ configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-c++ configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-gpp configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-aCC configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-CC configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-cxx configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-cc++ configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-cl.exe configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-FCC configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-KCC configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-RCC configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-xlC_r configure:4996: result: no configure:4966: checking for x86_64-pc-linux-gnu-xlC configure:4996: result: no configure:5010: checking for g++ configure:5026: found /usr/bin/g++ configure:5037: result: g++ configure:5064: checking for C++ compiler version configure:5073: g++ --version >&5 g++ (Ubuntu 11.1.0-1ubuntu1~20.04) 11.1.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:5084: $? = 0 configure:5073: g++ -v >&5 Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.1.0-1ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-2V7zgg/gcc-11-11.1.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-2V7zgg/gcc-11-11.1.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.1.0 (Ubuntu 11.1.0-1ubuntu1~20.04) ... rest of stderr output deleted ... configure:5084: $? = 0 configure:5073: g++ -V >&5 g++: error: unrecognized command-line option '-V' g++: fatal error: no input files compilation terminated. configure:5084: $? = 1 configure:5073: g++ -qversion >&5 g++: error: unrecognized command-line option '-qversion'; did you mean '--version'? g++: fatal error: no input files compilation terminated. configure:5084: $? = 1 configure:5088: checking whether we are using the GNU C++ compiler configure:5107: g++ -c conftest.cpp >&5 configure:5107: $? = 0 configure:5116: result: yes configure:5125: checking whether g++ accepts -g configure:5145: g++ -c -g conftest.cpp >&5 configure:5145: $? = 0 configure:5186: result: yes configure:5235: checking whether g++ accepts -static-libstdc++ -static-libgcc configure:5252: g++ -o conftest -g -O2 -static-libstdc++ -static-libgcc conftest.cpp >&5 configure:5252: $? = 0 configure:5253: result: yes configure:5277: checking for x86_64-pc-linux-gnu-gnatbind configure:5307: result: no configure:5317: checking for gnatbind configure:5347: result: no configure:5369: checking for x86_64-pc-linux-gnu-gnatmake configure:5399: result: no configure:5409: checking for gnatmake configure:5439: result: no configure:5458: checking whether compiler driver understands Ada configure:5481: result: no configure:5490: checking how to compare bootstrapped objects configure:5515: result: cmp --ignore-initial=16 $$f1 $$f2 configure:5660: checking for objdir configure:5675: result: .libs configure:6240: checking for isl 0.15 or later configure:6253: gcc -o conftest -g -O2 -lisl -lmpc -lmpfr -lgmp conftest.c -lisl -lgmp >&5 conftest.c:10:10: fatal error: isl/schedule.h: No such file or directory 10 | #include <isl/schedule.h> | ^~~~~~~~~~~~~~~~ compilation terminated. configure:6253: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "" | #define PACKAGE_TARNAME "" | #define PACKAGE_VERSION "" | #define PACKAGE_STRING "" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define LT_OBJDIR ".libs/" | /* end confdefs.h. */ | #include <isl/schedule.h> | int | main () | { | isl_options_set_schedule_serialize_sccs (NULL, 0); | ; | return 0; | } configure:6260: result: no configure:6264: result: required isl version is 0.15 or later configure:7357: checking for default BUILD_CONFIG configure:7389: result: configure:7394: checking for --enable-vtable-verify configure:7407: result: no configure:8028: checking for bison configure:8044: found /usr/bin/bison configure:8055: result: bison -y configure:8075: checking for bison configure:8091: found /usr/bin/bison configure:8102: result: bison configure:8122: checking for gm4 configure:8152: result: no configure:8122: checking for gnum4 configure:8152: result: no configure:8122: checking for m4 configure:8138: found /usr/bin/m4 configure:8149: result: m4 configure:8169: checking for flex configure:8185: found /usr/bin/flex configure:8196: result: flex configure:8217: checking for flex configure:8233: found /usr/bin/flex configure:8244: result: flex configure:8264: checking for makeinfo configure:8280: found /usr/bin/makeinfo configure:8291: result: makeinfo configure:8325: checking for expect configure:8355: result: no configure:8374: checking for runtest configure:8404: result: no configure:8480: checking for x86_64-pc-linux-gnu-ar configure:8510: result: no configure:8519: checking for ar configure:8535: found /usr/bin/ar configure:8546: result: ar configure:8621: checking for x86_64-pc-linux-gnu-as configure:8651: result: no configure:8660: checking for as configure:8676: found /usr/bin/as configure:8687: result: as configure:8762: checking for x86_64-pc-linux-gnu-dlltool configure:8792: result: no configure:8801: checking for dlltool configure:8831: result: no configure:8903: checking for x86_64-pc-linux-gnu-ld configure:8933: result: no configure:8942: checking for ld configure:8958: found /usr/bin/ld configure:8969: result: ld configure:9044: checking for x86_64-pc-linux-gnu-lipo configure:9074: result: no configure:9083: checking for lipo configure:9113: result: no configure:9185: checking for x86_64-pc-linux-gnu-nm configure:9215: result: no configure:9224: checking for nm configure:9240: found /usr/bin/nm configure:9251: result: nm configure:9326: checking for x86_64-pc-linux-gnu-ranlib configure:9356: result: no configure:9365: checking for ranlib configure:9381: found /usr/bin/ranlib configure:9392: result: ranlib configure:9462: checking for x86_64-pc-linux-gnu-strip configure:9492: result: no configure:9501: checking for strip configure:9517: found /usr/bin/strip configure:9528: result: strip configure:9598: checking for x86_64-pc-linux-gnu-windres configure:9628: result: no configure:9637: checking for windres configure:9667: result: no configure:9739: checking for x86_64-pc-linux-gnu-windmc configure:9769: result: no configure:9778: checking for windmc configure:9808: result: no configure:9880: checking for x86_64-pc-linux-gnu-objcopy configure:9910: result: no configure:9919: checking for objcopy configure:9935: found /usr/bin/objcopy configure:9946: result: objcopy configure:10021: checking for x86_64-pc-linux-gnu-objdump configure:10051: result: no configure:10060: checking for objdump configure:10076: found /usr/bin/objdump configure:10087: result: objdump configure:10162: checking for x86_64-pc-linux-gnu-readelf configure:10192: result: no configure:10201: checking for readelf configure:10217: found /usr/bin/readelf configure:10228: result: readelf configure:10254: checking for -plugin option configure:10272: checking for x86_64-pc-linux-gnu-ar configure:10299: result: ar configure:10374: result: --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so configure:10486: checking for x86_64-glibc-linux-gnu-cc configure:10516: result: no configure:10486: checking for x86_64-glibc-linux-gnu-gcc configure:10516: result: no configure:10647: checking for x86_64-glibc-linux-gnu-c++ configure:10677: result: no configure:10647: checking for x86_64-glibc-linux-gnu-g++ configure:10677: result: no configure:10647: checking for x86_64-glibc-linux-gnu-cxx configure:10677: result: no configure:10647: checking for x86_64-glibc-linux-gnu-gxx configure:10677: result: no configure:10808: checking for x86_64-glibc-linux-gnu-gcc configure:10838: result: no configure:10964: checking for x86_64-glibc-linux-gnu-gfortran configure:10994: result: no configure:11125: checking for x86_64-glibc-linux-gnu-gccgo configure:11155: result: no configure:11366: checking for x86_64-glibc-linux-gnu-ar configure:11396: result: no configure:11596: checking for x86_64-glibc-linux-gnu-as configure:11626: result: no configure:11826: checking for x86_64-glibc-linux-gnu-dlltool configure:11856: result: no configure:12056: checking for x86_64-glibc-linux-gnu-ld configure:12086: result: no configure:12286: checking for x86_64-glibc-linux-gnu-lipo configure:12316: result: no configure:12516: checking for x86_64-glibc-linux-gnu-nm configure:12546: result: no configure:12746: checking for x86_64-glibc-linux-gnu-objcopy configure:12776: result: no configure:12976: checking for x86_64-glibc-linux-gnu-objdump configure:13006: result: no configure:13206: checking for x86_64-glibc-linux-gnu-ranlib configure:13236: result: no configure:13436: checking for x86_64-glibc-linux-gnu-readelf configure:13466: result: no configure:13666: checking for x86_64-glibc-linux-gnu-strip configure:13696: result: no configure:13896: checking for x86_64-glibc-linux-gnu-windres configure:13926: result: no configure:14126: checking for x86_64-glibc-linux-gnu-windmc configure:14156: result: no configure:14223: checking where to find the target ar configure:14246: result: just compiled configure:14265: checking where to find the target as configure:14288: result: just compiled configure:14307: checking where to find the target cc configure:14344: result: pre-installed configure:14349: checking where to find the target c++ configure:14389: result: pre-installed configure:14394: checking where to find the target c++ for libstdc++ configure:14434: result: pre-installed configure:14439: checking where to find the target dlltool configure:14462: result: just compiled configure:14481: checking where to find the target gcc configure:14518: result: pre-installed configure:14523: checking where to find the target gfortran configure:14563: result: pre-installed configure:14568: checking where to find the target gccgo configure:14608: result: pre-installed configure:14613: checking where to find the target ld configure:14636: result: just compiled configure:14655: checking where to find the target lipo configure:14681: result: pre-installed configure:14686: checking where to find the target nm configure:14709: result: just compiled configure:14728: checking where to find the target objcopy configure:14751: result: just compiled configure:14770: checking where to find the target objdump configure:14793: result: just compiled configure:14812: checking where to find the target ranlib configure:14835: result: just compiled configure:14854: checking where to find the target readelf configure:14877: result: just compiled configure:14896: checking where to find the target strip configure:14919: result: just compiled configure:14938: checking where to find the target windres configure:14961: result: just compiled configure:14980: checking where to find the target windmc configure:15003: result: just compiled configure:15050: checking whether to enable maintainer-specific portions of Makefiles configure:15059: result: no configure:15294: creating ./config.status ## ---------------------- ## ## Running config.status. ## ## ---------------------- ## This file was extended by config.status, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = CONFIG_HEADERS = CONFIG_LINKS = CONFIG_COMMANDS = $ ./config.status on noah-tigerlake config.status:983: creating Makefile ## ---------------- ## ## Cache variables. ## ## ---------------- ## ac_cv_build=x86_64-pc-linux-gnu ac_cv_c_compiler_gnu=yes ac_cv_cxx_compiler_gnu=yes ac_cv_env_AR_FOR_TARGET_set= ac_cv_env_AR_FOR_TARGET_value= ac_cv_env_AR_set= ac_cv_env_AR_value= ac_cv_env_AS_FOR_TARGET_set= ac_cv_env_AS_FOR_TARGET_value= ac_cv_env_AS_set= ac_cv_env_AS_value= ac_cv_env_CCC_set= ac_cv_env_CCC_value= ac_cv_env_CC_FOR_TARGET_set= ac_cv_env_CC_FOR_TARGET_value= ac_cv_env_CC_set= ac_cv_env_CC_value= ac_cv_env_CFLAGS_set= ac_cv_env_CFLAGS_value= ac_cv_env_CPPFLAGS_set= ac_cv_env_CPPFLAGS_value= ac_cv_env_CXXFLAGS_set= ac_cv_env_CXXFLAGS_value= ac_cv_env_CXX_FOR_TARGET_set= ac_cv_env_CXX_FOR_TARGET_value= ac_cv_env_CXX_set= ac_cv_env_CXX_value= ac_cv_env_DLLTOOL_FOR_TARGET_set= ac_cv_env_DLLTOOL_FOR_TARGET_value= ac_cv_env_DLLTOOL_set= ac_cv_env_DLLTOOL_value= ac_cv_env_GCC_FOR_TARGET_set= ac_cv_env_GCC_FOR_TARGET_value= ac_cv_env_GFORTRAN_FOR_TARGET_set= ac_cv_env_GFORTRAN_FOR_TARGET_value= ac_cv_env_GOC_FOR_TARGET_set= ac_cv_env_GOC_FOR_TARGET_value= ac_cv_env_LDFLAGS_set= ac_cv_env_LDFLAGS_value= ac_cv_env_LD_FOR_TARGET_set= ac_cv_env_LD_FOR_TARGET_value= ac_cv_env_LD_set= ac_cv_env_LD_value= ac_cv_env_LIBS_set= ac_cv_env_LIBS_value= ac_cv_env_LIPO_FOR_TARGET_set= ac_cv_env_LIPO_FOR_TARGET_value= ac_cv_env_LIPO_set= ac_cv_env_LIPO_value= ac_cv_env_NM_FOR_TARGET_set= ac_cv_env_NM_FOR_TARGET_value= ac_cv_env_NM_set= ac_cv_env_NM_value= ac_cv_env_OBJCOPY_FOR_TARGET_set= ac_cv_env_OBJCOPY_FOR_TARGET_value= ac_cv_env_OBJCOPY_set= ac_cv_env_OBJCOPY_value= ac_cv_env_OBJDUMP_FOR_TARGET_set= ac_cv_env_OBJDUMP_FOR_TARGET_value= ac_cv_env_OBJDUMP_set= ac_cv_env_OBJDUMP_value= ac_cv_env_RANLIB_FOR_TARGET_set= ac_cv_env_RANLIB_FOR_TARGET_value= ac_cv_env_RANLIB_set= ac_cv_env_RANLIB_value= ac_cv_env_READELF_FOR_TARGET_set= ac_cv_env_READELF_FOR_TARGET_value= ac_cv_env_READELF_set= ac_cv_env_READELF_value= ac_cv_env_STRIP_FOR_TARGET_set= ac_cv_env_STRIP_FOR_TARGET_value= ac_cv_env_STRIP_set= ac_cv_env_STRIP_value= ac_cv_env_WINDMC_FOR_TARGET_set= ac_cv_env_WINDMC_FOR_TARGET_value= ac_cv_env_WINDMC_set= ac_cv_env_WINDMC_value= ac_cv_env_WINDRES_FOR_TARGET_set= ac_cv_env_WINDRES_FOR_TARGET_value= ac_cv_env_WINDRES_set= ac_cv_env_WINDRES_value= ac_cv_env_build_alias_set=set ac_cv_env_build_alias_value=x86_64-pc-linux-gnu ac_cv_env_build_configargs_set= ac_cv_env_build_configargs_value= ac_cv_env_host_alias_set=set ac_cv_env_host_alias_value=x86_64-pc-linux-gnu ac_cv_env_host_configargs_set= ac_cv_env_host_configargs_value= ac_cv_env_target_alias_set=set ac_cv_env_target_alias_value=x86_64-glibc-linux-gnu ac_cv_env_target_configargs_set= ac_cv_env_target_configargs_value= ac_cv_host=x86_64-pc-linux-gnu ac_cv_objext=o ac_cv_path_SED=/usr/bin/sed ac_cv_path_install='/usr/bin/install -c' ac_cv_prog_AR=ar ac_cv_prog_AS=as ac_cv_prog_AWK=gawk ac_cv_prog_BISON=bison ac_cv_prog_FLEX=flex ac_cv_prog_LD=ld ac_cv_prog_LEX=flex ac_cv_prog_M4=m4 ac_cv_prog_MAKEINFO=makeinfo ac_cv_prog_NM=nm ac_cv_prog_OBJCOPY=objcopy ac_cv_prog_OBJDUMP=objdump ac_cv_prog_RANLIB=ranlib ac_cv_prog_READELF=readelf ac_cv_prog_STRIP=strip ac_cv_prog_YACC='bison -y' ac_cv_prog_ac_ct_CC=gcc ac_cv_prog_ac_ct_CXX=g++ ac_cv_prog_cc_c89= ac_cv_prog_cc_c99= ac_cv_prog_cc_g=yes ac_cv_prog_cxx_g=yes ac_cv_target=x86_64-glibc-linux-gnu acx_cv_cc_gcc_supports_ada=no acx_cv_prog_LN=ln gcc_cv_isl=no gcc_cv_prog_cmp_skip='cmp --ignore-initial=16 $$f1 $$f2' gcc_cv_tool_dirs= gcc_cv_tool_prefix=/some/were/build-many/install/compilers/x86_64-linux-gnu lt_cv_objdir=.libs ## ----------------- ## ## Output variables. ## ## ----------------- ## AR='ar' AR_FOR_BUILD='$(AR)' AR_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/ar' AR_PLUGIN_OPTION='--plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so' AS='as' AS_FOR_BUILD='$(AS)' AS_FOR_TARGET='$$r/$(HOST_SUBDIR)/gas/as-new' AWK='gawk' BISON='bison' BUILD_CONFIG='' CC='gcc' CC_FOR_BUILD='$(CC)' CC_FOR_TARGET='x86_64-glibc-linux-gnu-cc' CFLAGS='-g -O2' CFLAGS_FOR_BUILD='-g -O2' CFLAGS_FOR_TARGET='-g -O2' COMPILER_AS_FOR_TARGET='$(AS_FOR_TARGET)' COMPILER_LD_FOR_TARGET='$(LD_FOR_TARGET)' COMPILER_NM_FOR_TARGET='$(NM_FOR_TARGET)' CONFIGURE_GDB_TK='' CPPFLAGS='' CXX='g++' CXXFLAGS='-g -O2' CXXFLAGS_FOR_BUILD='-g -O2' CXXFLAGS_FOR_TARGET='-g -O2' CXX_FOR_BUILD='$(CXX)' CXX_FOR_TARGET='x86_64-glibc-linux-gnu-c++' DEBUG_PREFIX_CFLAGS_FOR_TARGET='' DEFS='-DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DLT_OBJDIR=\".libs/\"' DLLTOOL='dlltool' DLLTOOL_FOR_BUILD='$(DLLTOOL)' DLLTOOL_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/dlltool' ECHO_C='' ECHO_N='-n' ECHO_T='' EXEEXT='' EXPECT='expect' FLAGS_FOR_TARGET=' -L$$r/$(HOST_SUBDIR)/ld' FLEX='flex' GCC_FOR_TARGET='x86_64-glibc-linux-gnu-gcc' GCC_SHLIB_SUBDIR='' GDB_TK='' GFORTRAN_FOR_BUILD='$(GFORTRAN)' GFORTRAN_FOR_TARGET='x86_64-glibc-linux-gnu-gfortran' GNATBIND='no' GNATMAKE='no' GOC_FOR_BUILD='$(GOC)' GOC_FOR_TARGET='x86_64-glibc-linux-gnu-gccgo' INSTALL_DATA='${INSTALL} -m 644' INSTALL_GDB_TK='' INSTALL_PROGRAM='${INSTALL}' INSTALL_SCRIPT='${INSTALL}' LD='ld' LDFLAGS='' LDFLAGS_FOR_BUILD='' LDFLAGS_FOR_TARGET='' LD_FOR_BUILD='$(LD)' LD_FOR_TARGET='$$r/$(HOST_SUBDIR)/ld/ld-new' LEX='flex' LIBOBJS='' LIBS='' LIPO='lipo' LIPO_FOR_TARGET='x86_64-glibc-linux-gnu-lipo' LN='ln' LN_S='ln -s' LTLIBOBJS='' M4='m4' MAINT='#' MAINTAINER_MODE_FALSE='' MAINTAINER_MODE_TRUE='#' MAKEINFO='makeinfo' NM='nm' NM_FOR_BUILD='$(NM)' NM_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/nm-new' OBJCOPY='objcopy' OBJCOPY_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/objcopy' OBJDUMP='objdump' OBJDUMP_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/objdump' OBJEXT='o' PACKAGE_BUGREPORT='' PACKAGE_NAME='' PACKAGE_STRING='' PACKAGE_TARNAME='' PACKAGE_URL='' PACKAGE_VERSION='' PATH_SEPARATOR=':' PGO_BUILD_GEN_CFLAGS='' PGO_BUILD_LTO_CFLAGS='' PGO_BUILD_USE_CFLAGS='' RANLIB='ranlib' RANLIB_FOR_BUILD='$(RANLIB)' RANLIB_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/ranlib' RANLIB_PLUGIN_OPTION='--plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so' RAW_CXX_FOR_TARGET='x86_64-glibc-linux-gnu-c++' READELF='readelf' READELF_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/readelf' RPATH_ENVVAR='LD_LIBRARY_PATH' RUNTEST='runtest' SED='/usr/bin/sed' SHELL='/bin/bash' STRIP='strip' STRIP_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/strip-new' SYSROOT_CFLAGS_FOR_TARGET='' TOPLEVEL_CONFIGURE_ARGUMENTS='/some/were/build-many/src/binutils/configure --prefix=/some/were/build-many/install/compilers/x86_64-linux-gnu --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-glibc-linux-gnu --with-sysroot=/some/were/build-many/install/compilers/x86_64-linux-gnu/sysroot --disable-gdb --disable-gdbserver --disable-libdecnumber --disable-readline --disable-sim' WINDMC='windmc' WINDMC_FOR_BUILD='$(WINDMC)' WINDMC_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/windmc' WINDRES='windres' WINDRES_FOR_BUILD='$(WINDRES)' WINDRES_FOR_TARGET='$$r/$(HOST_SUBDIR)/binutils/windres' YACC='bison -y' ac_ct_CC='gcc' ac_ct_CXX='g++' bindir='${exec_prefix}/bin' build='x86_64-pc-linux-gnu' build_alias='x86_64-pc-linux-gnu' build_configargs=' --cache-file=./config.cache '\''--prefix=/some/were/build-many/install/compilers/x86_64-linux-gnu'\'' '\''--with-sysroot=/some/were/build-many/install/compilers/x86_64-linux-gnu/sysroot'\'' '\''--disable-gdb'\'' '\''--disable-gdbserver'\'' '\''--disable-libdecnumber'\'' '\''--disable-readline'\'' '\''--disable-sim'\'' --program-transform-name='\''s&^&x86_64-glibc-linux-gnu-&'\'' --disable-option-checking' build_configdirs=' libiberty' build_cpu='x86_64' build_libsubdir='build-x86_64-pc-linux-gnu' build_noncanonical='x86_64-pc-linux-gnu' build_os='linux-gnu' build_subdir='build-x86_64-pc-linux-gnu' build_tooldir='${exec_prefix}/x86_64-glibc-linux-gnu' build_vendor='pc' compare_exclusions='gcc/cc*-checksum$(objext) | gcc/ada/*tools/*' configdirs=' intl libiberty opcodes bfd zlib libctf binutils gas ld gprof etc' datadir='${datarootdir}' datarootdir='${prefix}/share' do_compare='cmp --ignore-initial=16 $$f1 $$f2' docdir='${datarootdir}/doc/${PACKAGE}' dvidir='${docdir}' exec_prefix='${prefix}' extra_host_libiberty_configure_flags='' extra_host_zlib_configure_flags='' extra_isl_gmp_configure_flags='' extra_liboffloadmic_configure_flags='' extra_linker_plugin_configure_flags='' extra_linker_plugin_flags='' extra_mpc_gmp_configure_flags='' extra_mpc_mpfr_configure_flags='' extra_mpfr_configure_flags='' get_gcc_base_ver='cat' gmpinc='' gmplibs='-lmpc -lmpfr -lgmp' host='x86_64-pc-linux-gnu' host_alias='x86_64-pc-linux-gnu' host_configargs=' --cache-file=./config.cache --with-gnu-as --with-gnu-ld '\''--prefix=/some/were/build-many/install/compilers/x86_64-linux-gnu'\'' '\''--with-sysroot=/some/were/build-many/install/compilers/x86_64-linux-gnu/sysroot'\'' '\''--disable-gdb'\'' '\''--disable-gdbserver'\'' '\''--disable-libdecnumber'\'' '\''--disable-readline'\'' '\''--disable-sim'\'' --program-transform-name='\''s&^&x86_64-glibc-linux-gnu-&'\'' --disable-option-checking' host_cpu='x86_64' host_noncanonical='x86_64-pc-linux-gnu' host_os='linux-gnu' host_shared='no' host_subdir='.' host_vendor='pc' htmldir='${docdir}' includedir='${prefix}/include' infodir='${datarootdir}/info' islinc='' isllibs='' libdir='${exec_prefix}/lib' libexecdir='${exec_prefix}/libexec' localedir='${datarootdir}/locale' localstatedir='${prefix}/var' mandir='${datarootdir}/man' oldincludedir='/usr/include' pdfdir='${docdir}' poststage1_ldflags='-static-libstdc++ -static-libgcc' poststage1_libs='' prefix='/some/were/build-many/install/compilers/x86_64-linux-gnu' program_transform_name='s&^&x86_64-glibc-linux-gnu-&' psdir='${docdir}' sbindir='${exec_prefix}/sbin' sharedstatedir='${prefix}/com' stage1_cflags='-g' stage1_checking='--enable-checking=yes,types' stage1_languages=',c,' stage1_ldflags='' stage1_libs='' stage2_werror_flag='' sysconfdir='${prefix}/etc' target='x86_64-glibc-linux-gnu' target_alias='x86_64-glibc-linux-gnu' target_configargs='--cache-file=./config.cache --enable-multilib --with-cross-host=x86_64-pc-linux-gnu '\''--prefix=/some/were/build-many/install/compilers/x86_64-linux-gnu'\'' '\''--with-sysroot=/some/were/build-many/install/compilers/x86_64-linux-gnu/sysroot'\'' '\''--disable-gdb'\'' '\''--disable-gdbserver'\'' '\''--disable-libdecnumber'\'' '\''--disable-readline'\'' '\''--disable-sim'\'' --program-transform-name='\''s&^&x86_64-glibc-linux-gnu-&'\'' --disable-option-checking' target_configdirs='' target_cpu='x86_64' target_noncanonical='x86_64-glibc-linux-gnu' target_os='linux-gnu' target_subdir='x86_64-glibc-linux-gnu' target_vendor='glibc' tooldir='${exec_prefix}/x86_64-glibc-linux-gnu' ## ------------------- ## ## File substitutions. ## ## ------------------- ## alphaieee_frag='/dev/null' host_makefile_frag='/dev/null' ospace_frag='/dev/null' serialization_dependencies='serdep.tmp' target_makefile_frag='/some/were/build-many/src/binutils/config/mt-gnu' ## ----------- ## ## confdefs.h. ## ## ----------- ## /* confdefs.h */ #define PACKAGE_NAME "" #define PACKAGE_TARNAME "" #define PACKAGE_VERSION "" #define PACKAGE_STRING "" #define PACKAGE_BUGREPORT "" #define PACKAGE_URL "" #define LT_OBJDIR ".libs/" configure: exit 0 ``` > > Thanks, > Florian >
* Noah Goldstein: > On Mon, Sep 27, 2021 at 12:56 PM Florian Weimer <fweimer@redhat.com> wrote: >> >> * Noah Goldstein: >> >> > $> cat >> > build-many/logs/compilers/x86_64-linux-gnu/003-compilers-x86_64-linux-gnu-binutils-configure-log.txt >> >> There should be a config.log file in the binutils build directory (under >> build-many/build/compilers). I hope this file contains illuminating >> data. > > Oh sorry. Here is the output of config.log > > ``` > $> cat build-many/build/compilers/x86_64-linux-gnu/binutils/config.log Hmm, is there a binutils/gas/config.log as well? Thanks, Florian
On Mon, Sep 27, 2021 at 1:11 PM Florian Weimer <fweimer@redhat.com> wrote: > > * Noah Goldstein: > > > On Mon, Sep 27, 2021 at 12:56 PM Florian Weimer <fweimer@redhat.com> wrote: > >> > >> * Noah Goldstein: > >> > >> > $> cat > >> > build-many/logs/compilers/x86_64-linux-gnu/003-compilers-x86_64-linux-gnu-binutils-configure-log.txt > >> > >> There should be a config.log file in the binutils build directory (under > >> build-many/build/compilers). I hope this file contains illuminating > >> data. > > > > Oh sorry. Here is the output of config.log > > > > ``` > > $> cat build-many/build/compilers/x86_64-linux-gnu/binutils/config.log > > Hmm, is there a binutils/gas/config.log as well? Here is the dump. Thanks for the help! ``` $> cat build-many/build/compilers/x86_64-linux-gnu/binutils/gas/config.log This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by gas configure 2.37, which was generated by GNU Autoconf 2.69. Invocation command line was $ /some/were/build-many/src/binutils/gas/configure --srcdir=/some/were/build-many/src/binutils/gas --cache-file=./config.cache --with-gnu-as --with-gnu-ld --prefix=/some/were/build-many/install/compilers/x86_64-linux-gnu --with-sysroot=/some/were/build-many/install/compilers/x86_64-linux-gnu/sysroot --disable-gdb --disable-gdbserver --disable-libdecnumber --disable-readline --disable-sim --program-transform-name=s&^&x86_64-glibc-linux-gnu-& --disable-option-checking --build=x86_64-pc-linux-gnu --host=x86_64-pc-linux-gnu --target=x86_64-glibc-linux-gnu ## --------- ## ## Platform. ## ## --------- ## hostname = noah-tigerlake uname -m = x86_64 uname -r = 5.11.0-27-generic uname -s = Linux uname -v = #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021 /usr/bin/uname -p = x86_64 /bin/uname -X = unknown /bin/arch = x86_64 /usr/bin/arch -k = unknown /usr/convex/getsysinfo = unknown /usr/bin/hostinfo = unknown /bin/machine = unknown /usr/bin/oslevel = unknown /bin/universe = unknown PATH: /some/were/build-many/install/compilers/x86_64-linux-gnu/bin PATH: /home/noah/programs/libraries/ PATH: /home/noah/.local/bin PATH: /home/noah/programs/pyscripts PATH: /home/noah/scripts PATH: /home/noah/programs/libraries/ PATH: /home/noah/.local/bin PATH: /home/noah/programs/pyscripts PATH: /home/noah/scripts PATH: /home/noah/.local/bin PATH: /usr/local/sbin PATH: /usr/local/bin PATH: /usr/sbin PATH: /usr/bin PATH: /sbin PATH: /bin PATH: /usr/games PATH: /usr/local/games PATH: /snap/bin ## ----------- ## ## Core tests. ## ## ----------- ## configure:2261: creating cache ./config.cache configure:2372: checking build system type configure:2386: result: x86_64-pc-linux-gnu configure:2406: checking host system type configure:2419: result: x86_64-pc-linux-gnu configure:2439: checking target system type configure:2452: result: x86_64-glibc-linux-gnu configure:2495: checking for a BSD-compatible install configure:2563: result: /usr/bin/install -c configure:2574: checking whether build environment is sane configure:2629: result: yes configure:2778: checking for a thread-safe mkdir -p configure:2817: result: /usr/bin/mkdir -p configure:2824: checking for gawk configure:2851: result: gawk configure:2862: checking whether make sets $(MAKE) configure:2884: result: yes configure:2913: checking whether make supports nested variables configure:2930: result: yes configure:3065: checking for x86_64-pc-linux-gnu-gcc configure:3092: result: gcc configure:3361: checking for C compiler version configure:3370: gcc --version >&5 gcc (Ubuntu 11.1.0-1ubuntu1~20.04) 11.1.0 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. configure:3381: $? = 0 configure:3370: gcc -v >&5 Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.1.0-1ubuntu1~20.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-11-2V7zgg/gcc-11-11.1.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-2V7zgg/gcc-11-11.1.0/debian/tmp-gcn/usr --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 11.1.0 (Ubuntu 11.1.0-1ubuntu1~20.04) ... rest of stderr output deleted ... configure:3381: $? = 0 configure:3370: gcc -V >&5 gcc: error: unrecognized command-line option '-V' gcc: fatal error: no input files compilation terminated. configure:3381: $? = 1 configure:3370: gcc -qversion >&5 gcc: error: unrecognized command-line option '-qversion'; did you mean '--version'? gcc: fatal error: no input files compilation terminated. configure:3381: $? = 1 configure:3401: checking whether the C compiler works configure:3423: gcc -g -O2 conftest.c >&5 configure:3427: $? = 0 configure:3475: result: yes configure:3478: checking for C compiler default output file name configure:3480: result: a.out configure:3486: checking for suffix of executables configure:3493: gcc -o conftest -g -O2 conftest.c >&5 configure:3497: $? = 0 configure:3519: result: configure:3541: checking whether we are cross compiling configure:3549: gcc -o conftest -g -O2 conftest.c >&5 configure:3553: $? = 0 configure:3560: ./conftest configure:3564: $? = 0 configure:3552: result: no configure:3557: checking for suffix of object files configure:3579: gcc -c -g -O2 conftest.c >&5 configure:3583: $? = 0 configure:3604: result: o configure:3608: checking whether we are using the GNU C compiler configure:3627: gcc -c -g -O2 conftest.c >&5 configure:3627: $? = 0 configure:3636: result: yes configure:3645: checking whether gcc accepts -g configure:3665: gcc -c -g conftest.c >&5 configure:3665: $? = 0 configure:3706: result: yes configure:3723: checking for gcc option to accept ISO C89 configure:3786: gcc -c -g -O2 conftest.c >&5 configure:3786: $? = 0 configure:3799: result: none needed configure:3824: checking whether gcc understands -c and -o together configure:3846: gcc -c conftest.c -o conftest2.o configure:3849: $? = 0 configure:3846: gcc -c conftest.c -o conftest2.o configure:3849: $? = 0 configure:3861: result: yes configure:3889: checking for style of include used by make configure:3917: result: GNU configure:3943: checking dependency style of gcc configure:4054: result: gcc3 configure:4075: checking how to run the C preprocessor configure:4106: gcc -E conftest.c configure:4106: $? = 0 configure:4120: gcc -E conftest.c conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory 11 | #include <ac_nonexistent.h> | ^~~~~~~~~~~~~~~~~~ compilation terminated. configure:4120: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | /* end confdefs.h. */ | #include <ac_nonexistent.h> configure:4145: result: gcc -E configure:4165: gcc -E conftest.c configure:4165: $? = 0 configure:4179: gcc -E conftest.c conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory 11 | #include <ac_nonexistent.h> | ^~~~~~~~~~~~~~~~~~ compilation terminated. configure:4179: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | /* end confdefs.h. */ | #include <ac_nonexistent.h> configure:4208: checking for grep that handles long lines and -e configure:4266: result: /usr/bin/grep configure:4271: checking for egrep configure:4333: result: /usr/bin/grep -E configure:4338: checking for ANSI C header files configure:4358: gcc -c -g -O2 conftest.c >&5 configure:4358: $? = 0 configure:4431: gcc -o conftest -g -O2 conftest.c >&5 configure:4431: $? = 0 configure:4431: ./conftest configure:4431: $? = 0 configure:4442: result: yes configure:4455: checking for sys/types.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4455: checking for sys/stat.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4455: checking for stdlib.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4455: checking for string.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4455: checking for memory.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4455: checking for strings.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4455: checking for inttypes.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4455: checking for stdint.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4455: checking for unistd.h configure:4455: gcc -c -g -O2 conftest.c >&5 configure:4455: $? = 0 configure:4455: result: yes configure:4468: checking minix/config.h usability configure:4468: gcc -c -g -O2 conftest.c >&5 conftest.c:54:10: fatal error: minix/config.h: No such file or directory 54 | #include <minix/config.h> | ^~~~~~~~~~~~~~~~ compilation terminated. configure:4468: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | /* end confdefs.h. */ | #include <stdio.h> | #ifdef HAVE_SYS_TYPES_H | # include <sys/types.h> | #endif | #ifdef HAVE_SYS_STAT_H | # include <sys/stat.h> | #endif | #ifdef STDC_HEADERS | # include <stdlib.h> | # include <stddef.h> | #else | # ifdef HAVE_STDLIB_H | # include <stdlib.h> | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include <memory.h> | # endif | # include <string.h> | #endif | #ifdef HAVE_STRINGS_H | # include <strings.h> | #endif | #ifdef HAVE_INTTYPES_H | # include <inttypes.h> | #endif | #ifdef HAVE_STDINT_H | # include <stdint.h> | #endif | #ifdef HAVE_UNISTD_H | # include <unistd.h> | #endif | #include <minix/config.h> configure:4468: result: no configure:4468: checking minix/config.h presence configure:4468: gcc -E conftest.c conftest.c:21:10: fatal error: minix/config.h: No such file or directory 21 | #include <minix/config.h> | ^~~~~~~~~~~~~~~~ compilation terminated. configure:4468: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | /* end confdefs.h. */ | #include <minix/config.h> configure:4468: result: no configure:4468: checking for minix/config.h configure:4468: result: no configure:4489: checking whether it is safe to define __EXTENSIONS__ configure:4507: gcc -c -g -O2 conftest.c >&5 configure:4507: $? = 0 configure:4514: result: yes configure:4577: checking how to print strings configure:4604: result: printf configure:4625: checking for a sed that does not truncate output configure:4689: result: /usr/bin/sed configure:4707: checking for fgrep configure:4769: result: /usr/bin/grep -F configure:4804: checking for ld used by gcc configure:4871: result: ld configure:4878: checking if the linker (ld) is GNU ld configure:4893: result: yes configure:4905: checking for BSD- or MS-compatible name lister (nm) configure:4954: result: nm configure:5084: checking the name lister (nm) interface configure:5091: gcc -c -g -O2 conftest.c >&5 configure:5094: nm "conftest.o" configure:5097: output 0000000000000000 B some_variable configure:5098: result: BSD nm configure:5101: checking whether ln -s works configure:5105: result: yes configure:5113: checking the maximum length of command line arguments configure:5238: result: 1879296 configure:5255: checking whether the shell understands some XSI constructs configure:5264: result: yes configure:5268: checking whether the shell understands "+=" configure:5272: result: yes configure:5307: checking for ld option to reload object files configure:5314: result: -r configure:5343: checking for x86_64-pc-linux-gnu-objdump configure:5370: result: objdump configure:5442: checking how to recognize dependent libraries configure:5643: result: pass_all configure:5676: checking for x86_64-pc-linux-gnu-ar configure:5703: result: ar --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so configure:5794: checking for x86_64-pc-linux-gnu-strip configure:5824: result: no configure:5834: checking for strip configure:5850: found /usr/bin/strip configure:5861: result: strip configure:5893: checking for x86_64-pc-linux-gnu-ranlib configure:5920: result: ranlib --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so configure:6067: checking command to parse nm output from gcc object configure:6185: gcc -c -g -O2 conftest.c >&5 configure:6188: $? = 0 configure:6192: nm conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' \> conftest.nm configure:6195: $? = 0 configure:6249: gcc -o conftest -g -O2 conftest.c conftstm.o >&5 configure:6252: $? = 0 configure:6290: result: ok configure:6385: gcc -c -g -O2 conftest.c >&5 configure:6388: $? = 0 configure:7138: checking for dlfcn.h configure:7138: gcc -c -g -O2 conftest.c >&5 configure:7138: $? = 0 configure:7138: result: yes configure:7325: checking for objdir configure:7340: result: .libs configure:7611: checking if gcc supports -fno-rtti -fno-exceptions configure:7629: gcc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 cc1: warning: command-line option '-fno-rtti' is valid for C++/D/ObjC++ but not for C configure:7633: $? = 0 configure:7646: result: no configure:7666: checking for gcc option to produce PIC configure:7952: result: -fPIC -DPIC configure:7964: checking if gcc PIC flag -fPIC -DPIC works configure:7982: gcc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 configure:7986: $? = 0 configure:7999: result: yes configure:8023: checking if gcc static flag -static works configure:8051: result: yes configure:8066: checking if gcc supports -c -o file.o configure:8087: gcc -c -g -O2 -o out/conftest2.o conftest.c >&5 configure:8091: $? = 0 configure:8113: result: yes configure:8121: checking if gcc supports -c -o file.o configure:8168: result: yes configure:8201: checking whether the gcc linker (ld -m elf_x86_64) supports shared libraries configure:9272: result: yes configure:9309: checking whether -lc should be explicitly linked in configure:9317: gcc -c -g -O2 conftest.c >&5 configure:9320: $? = 0 configure:9335: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /usr/bin/grep -lc \>/dev/null 2\>\&1 configure:9338: $? = 0 configure:9352: result: no configure:9517: checking dynamic linker characteristics configure:9958: gcc -o conftest -g -O2 -Wl,-rpath -Wl,/foo conftest.c >&5 configure:9958: $? = 0 configure:10180: result: GNU/Linux ld.so configure:10287: checking how to hardcode library paths into programs configure:10312: result: immediate configure:10852: checking whether stripping libraries is possible configure:10857: result: yes configure:10892: checking if libtool supports shared libraries configure:10894: result: yes configure:10897: checking whether to build shared libraries configure:10918: result: yes configure:10921: checking whether to build static libraries configure:10925: result: yes configure:8130: checking for dlfcn.h configure:8130: result: yes configure:8143: checking for windows.h configure:8143: gcc -c -g -O2 conftest.c >&5 conftest.c:63:10: fatal error: windows.h: No such file or directory 63 | #include <windows.h> | ^~~~~~~~~~~ compilation terminated. configure:8143: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_DLFCN_H 1 | #define LT_OBJDIR ".libs/" | #define HAVE_DLFCN_H 1 | /* end confdefs.h. */ | #include <stdio.h> | #ifdef HAVE_SYS_TYPES_H | # include <sys/types.h> | #endif | #ifdef HAVE_SYS_STAT_H | # include <sys/stat.h> | #endif | #ifdef STDC_HEADERS | # include <stdlib.h> | # include <stddef.h> | #else | # ifdef HAVE_STDLIB_H | # include <stdlib.h> | # endif | #endif | #ifdef HAVE_STRING_H | # if !defined STDC_HEADERS && defined HAVE_MEMORY_H | # include <memory.h> | # endif | # include <string.h> | #endif | #ifdef HAVE_STRINGS_H | # include <strings.h> | #endif | #ifdef HAVE_INTTYPES_H | # include <inttypes.h> | #endif | #ifdef HAVE_STDINT_H | # include <stdint.h> | #endif | #ifdef HAVE_UNISTD_H | # include <unistd.h> | #endif | | #include <windows.h> configure:8143: result: no configure:8170: checking for library containing dlsym configure:8201: gcc -o conftest -g -O2 conftest.c >&5 /usr/bin/ld: /tmp/ccdjFoMs.o: in function `main': /some/were/build-many/build/compilers/x86_64-linux-gnu/binutils/gas/conftest.c:40: undefined reference to `dlsym' collect2: error: ld returned 1 exit status configure:8201: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_DLFCN_H 1 | #define LT_OBJDIR ".libs/" | #define HAVE_DLFCN_H 1 | /* end confdefs.h. */ | | /* Override any GCC internal prototype to avoid an error. | Use char because int might match the return type of a GCC | builtin and then its argument prototype would still apply. */ | #ifdef __cplusplus | extern "C" | #endif | char dlsym (); | int | main () | { | return dlsym (); | ; | return 0; | } configure:8201: gcc -o conftest -g -O2 conftest.c -ldl >&5 configure:8201: $? = 0 configure:8218: result: -ldl configure:8290: checking for special C compiler options needed for large files configure:8335: result: no configure:8341: checking for _FILE_OFFSET_BITS value needed for large files configure:8366: gcc -c -g -O2 conftest.c >&5 configure:8366: $? = 0 configure:8398: result: no configure:8484: checking how to compare bootstrapped objects configure:8509: result: cmp --ignore-initial=16 $$f1 $$f2 configure:8814: checking whether byte ordering is bigendian configure:8829: gcc -c -g -O2 conftest.c >&5 conftest.c:31:16: error: unknown type name 'not' 31 | not a universal capable compiler | ^~~ conftest.c:31:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'universal' 31 | not a universal capable compiler | ^~~~~~~~~ conftest.c:31:22: error: unknown type name 'universal' configure:8829: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_DLFCN_H 1 | #define LT_OBJDIR ".libs/" | #define HAVE_DLFCN_H 1 | #define ENABLE_CHECKING 1 | /* end confdefs.h. */ | #ifndef __APPLE_CC__ | not a universal capable compiler | #endif | typedef int dummy; | configure:8874: gcc -c -g -O2 conftest.c >&5 configure:8874: $? = 0 configure:8892: gcc -c -g -O2 conftest.c >&5 conftest.c: In function 'main': conftest.c:37:18: error: unknown type name 'not'; did you mean 'ino_t'? 37 | not big endian | ^~~ | ino_t conftest.c:37:26: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'endian' 37 | not big endian | ^~~~~~ configure:8892: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_DLFCN_H 1 | #define LT_OBJDIR ".libs/" | #define HAVE_DLFCN_H 1 | #define ENABLE_CHECKING 1 | /* end confdefs.h. */ | #include <sys/types.h> | #include <sys/param.h> | | int | main () | { | #if BYTE_ORDER != BIG_ENDIAN | not big endian | #endif | | ; | return 0; | } configure:9020: result: no configure:9959: checking for bison configure:9986: result: bison -y configure:10002: checking for flex configure:10029: result: flex configure:10068: flex conftest.l configure:10072: $? = 0 configure:10074: checking lex output file root configure:10088: result: lex.yy configure:10093: checking lex library configure:10107: gcc -o conftest -g -O2 conftest.c -ldl >&5 /usr/bin/ld: /tmp/cc2Y69vh.o: in function `input': /some/were/build-many/build/compilers/x86_64-linux-gnu/binutils/gas/lex.yy.c:1180: undefined reference to `yywrap' /usr/bin/ld: /tmp/cc2Y69vh.o: in function `yylex': /some/were/build-many/build/compilers/x86_64-linux-gnu/binutils/gas/lex.yy.c:871: undefined reference to `yywrap' /usr/bin/ld: /tmp/cc2Y69vh.o: in function `main': /some/were/build-many/build/compilers/x86_64-linux-gnu/binutils/gas/conftest.l:17: undefined reference to `yywrap' collect2: error: ld returned 1 exit status configure:10107: $? = 1 configure: failed program was: | /* confdefs.h */ | #define PACKAGE_NAME "gas" | #define PACKAGE_TARNAME "gas" | #define PACKAGE_VERSION "2.37" | #define PACKAGE_STRING "gas 2.37" | #define PACKAGE_BUGREPORT "" | #define PACKAGE_URL "" | #define PACKAGE "gas" | #define VERSION "2.37" | #define STDC_HEADERS 1 | #define HAVE_SYS_TYPES_H 1 | #define HAVE_SYS_STAT_H 1 | #define HAVE_STDLIB_H 1 | #define HAVE_STRING_H 1 | #define HAVE_MEMORY_H 1 | #define HAVE_STRINGS_H 1 | #define HAVE_INTTYPES_H 1 | #define HAVE_STDINT_H 1 | #define HAVE_UNISTD_H 1 | #define __EXTENSIONS__ 1 | #define _ALL_SOURCE 1 | #define _GNU_SOURCE 1 | #define _POSIX_PTHREAD_SEMANTICS 1 | #define _TANDEM_SOURCE 1 | #define HAVE_DLFCN_H 1 | #define LT_OBJDIR ".libs/" | #define HAVE_DLFCN_H 1 | #define ENABLE_CHECKING 1 | #define DEFAULT_ARCH "x86_64" | #define DEFAULT_GENERATE_X86_RELAX_RELOCATIONS 1 | #define DEFAULT_GENERATE_ELF_STT_COMMON 0 | #define DEFAULT_GENERATE_BUILD_NOTES 0 | #define DEFAULT_X86_USED_NOTE 1 | #define DEFAULT_RISCV_ATTR 0 | #define DEFAULT_MIPS_FIX_LOONGSON3_LLSC 0 | #define DEFAULT_FLAG_COMPRESS_DEBUG 1 | #define EMULATIONS &i386elf, | #define DEFAULT_EMULATION "i386elf" | #define TARGET_ALIAS "x86_64-glibc-linux-gnu" | #define TARGET_CANONICAL "x86_64-glibc-linux-gnu" | #define TARGET_CPU "x86_64" | #define TARGET_VENDOR "glibc" | #define TARGET_OS "linux-gnu" | /* end confdefs.h. */ | | #line 3 "lex.yy.c" | | #define YY_INT_ALIGNED short int | | /* A lexical scanner generated by flex */ | | #define FLEX_SCANNER | #define YY_FLEX_MAJOR_VERSION 2 | #define YY_FLEX_MINOR_VERSION 6 | #define YY_FLEX_SUBMINOR_VERSION 4 | #if YY_FLEX_SUBMINOR_VERSION > 0 | #define FLEX_BETA | #endif | | /* First, we deal with platform-specific or compiler-specific issues. */ | | /* begin standard C headers. */ | #include <stdio.h> | #include <string.h> | #include <errno.h> | #include <stdlib.h> | | /* end standard C headers. */ | | /* flex integer type definitions */ | | #ifndef FLEXINT_H | #define FLEXINT_H | | /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ | | #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L | | /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, | * if you want the limit (max/min) macros for int types. | */ | #ifndef __STDC_LIMIT_MACROS | #define __STDC_LIMIT_MACROS 1 | #endif | | #include <inttypes.h> | typedef int8_t flex_int8_t; | typedef uint8_t flex_uint8_t; | typedef int16_t flex_int16_t; | typedef uint16_t flex_uint16_t; | typedef int32_t flex_int32_t; | typedef uint32_t flex_uint32_t; | #else | typedef signed char flex_int8_t; | typedef short int flex_int16_t; | typedef int flex_int32_t; | typedef unsigned char flex_uint8_t; | typedef unsigned short int flex_uint16_t; | typedef unsigned int flex_uint32_t; | | /* Limits of integral types. */ | #ifndef INT8_MIN | #define INT8_MIN (-128) | #endif | #ifndef INT16_MIN | #define INT16_MIN (-32767-1) | #endif | #ifndef INT32_MIN | #define INT32_MIN (-2147483647-1) | #endif | #ifndef INT8_MAX | #define INT8_MAX (127) | #endif | #ifndef INT16_MAX | #define INT16_MAX (32767) | #endif | #ifndef INT32_MAX | #define INT32_MAX (2147483647) | #endif | #ifndef UINT8_MAX | #define UINT8_MAX (255U) | #endif | #ifndef UINT16_MAX | #define UINT16_MAX (65535U) | #endif | #ifndef UINT32_MAX | #define UINT32_MAX (4294967295U) | #endif | | #ifndef SIZE_MAX | #define SIZE_MAX (~(size_t)0) | #endif | | #endif /* ! C99 */ | | #endif /* ! FLEXINT_H */ | | /* begin standard C++ headers. */ | | /* TODO: this is always defined, so inline it */ | #define yyconst const | | #if defined(__GNUC__) && __GNUC__ >= 3 | #define yynoreturn __attribute__((__noreturn__)) | #else | #define yynoreturn | #endif | | /* Returned upon end-of-file. */ | #define YY_NULL 0 | | /* Promotes a possibly negative, possibly signed char to an | * integer in range [0..255] for use as an array index. | */ | #define YY_SC_TO_UI(c) ((YY_CHAR) (c)) | | /* Enter a start condition. This macro really ought to take a parameter, | * but we do it the disgusting crufty way forced on us by the ()-less | * definition of BEGIN. | */ | #define BEGIN (yy_start) = 1 + 2 * | /* Translate the current start state into a value that can be later handed | * to BEGIN to return to the state. The YYSTATE alias is for lex | * compatibility. | */ | #define YY_START (((yy_start) - 1) / 2) | #define YYSTATE YY_START | /* Action number for EOF rule of a given start state. */ | #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) | /* Special action meaning "start processing a new file". */ | #define YY_NEW_FILE yyrestart( yyin ) | #define YY_END_OF_BUFFER_CHAR 0 | | /* Size of default input buffer. */ | #ifndef YY_BUF_SIZE | #ifdef __ia64__ | /* On IA-64, the buffer size is 16k, not 8k. | * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. | * Ditto for the __ia64__ case accordingly. | */ | #define YY_BUF_SIZE 32768 | #else | #define YY_BUF_SIZE 16384 | #endif /* __ia64__ */ | #endif | | /* The state buf must be large enough to hold one state per character in the main buffer. | */ | #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) | | #ifndef YY_TYPEDEF_YY_BUFFER_STATE | #define YY_TYPEDEF_YY_BUFFER_STATE | typedef struct yy_buffer_state *YY_BUFFER_STATE; | #endif | | #ifndef YY_TYPEDEF_YY_SIZE_T | #define YY_TYPEDEF_YY_SIZE_T | typedef size_t yy_size_t; | #endif | | extern int yyleng; | | extern FILE *yyin, *yyout; | | #define EOB_ACT_CONTINUE_SCAN 0 | #define EOB_ACT_END_OF_FILE 1 | #define EOB_ACT_LAST_MATCH 2 | | #define YY_LESS_LINENO(n) | #define YY_LINENO_REWIND_TO(ptr) | | /* Return all but the first "n" matched characters back to the input stream. */ | #define yyless(n) \ | do \ | { \ | /* Undo effects of setting up yytext. */ \ | int yyless_macro_arg = (n); \ | YY_LESS_LINENO(yyless_macro_arg);\ | *yy_cp = (yy_hold_char); \ | YY_RESTORE_YY_MORE_OFFSET \ | (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ | YY_DO_BEFORE_ACTION; /* set up yytext again */ \ | } \ | while ( 0 ) | #define unput(c) yyunput( c, (yytext_ptr) ) | | #ifndef YY_STRUCT_YY_BUFFER_STATE | #define YY_STRUCT_YY_BUFFER_STATE | struct yy_buffer_state | { | FILE *yy_input_file; | | char *yy_ch_buf; /* input buffer */ | char *yy_buf_pos; /* current position in input buffer */ | | /* Size of input buffer in bytes, not including room for EOB | * characters. | */ | int yy_buf_size; | | /* Number of characters read into yy_ch_buf, not including EOB | * characters. | */ | int yy_n_chars; | | /* Whether we "own" the buffer - i.e., we know we created it, | * and can realloc() it to grow it, and should free() it to | * delete it. | */ | int yy_is_our_buffer; | | /* Whether this is an "interactive" input source; if so, and | * if we're using stdio for input, then we want to use getc() | * instead of fread(), to make sure we stop fetching input after | * each newline. | */ | int yy_is_interactive; | | /* Whether we're considered to be at the beginning of a line. | * If so, '^' rules will be active on the next match, otherwise | * not. | */ | int yy_at_bol; | | int yy_bs_lineno; /**< The line count. */ | int yy_bs_column; /**< The column count. */ | | /* Whether to try to fill the input buffer when we reach the | * end of it. | */ | int yy_fill_buffer; | | int yy_buffer_status; | | #define YY_BUFFER_NEW 0 | #define YY_BUFFER_NORMAL 1 | /* When an EOF's been seen but there's still some text to process | * then we mark the buffer as YY_EOF_PENDING, to indicate that we | * shouldn't try reading from the input source any more. We might | * still have a bunch of tokens to match, though, because of | * possible backing-up. | * | * When we actually see the EOF, we change the status to "new" | * (via yyrestart()), so that the user can continue scanning by | * just pointing yyin at a new input file. | */ | #define YY_BUFFER_EOF_PENDING 2 | | }; | #endif /* !YY_STRUCT_YY_BUFFER_STATE */ | | /* Stack of input buffers. */ | static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ | static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ | static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ | | /* We provide macros for accessing buffer states in case in the | * future we want to put the buffer states in a more general | * "scanner state". | * | * Returns the top of the stack, or NULL. | */ | #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ | ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ | : NULL) | /* Same as previous macro, but useful when we know that the buffer stack is not | * NULL or when we need an lvalue. For internal use only. | */ | #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] | | /* yy_hold_char holds the character lost when yytext is formed. */ | static char yy_hold_char; | static int yy_n_chars; /* number of characters read into yy_ch_buf */ | int yyleng; | | /* Points to current character in buffer. */ | static char *yy_c_buf_p = NULL; | static int yy_init = 0; /* whether we need to initialize */ | static int yy_start = 0; /* start state number */ | | /* Flag which is used to allow yywrap()'s to do buffer switches | * instead of setting up a fresh yyin. A bit of a hack ... | */ | static int yy_did_buffer_switch_on_eof; | | void yyrestart ( FILE *input_file ); | void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); | YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); | void yy_delete_buffer ( YY_BUFFER_STATE b ); | void yy_flush_buffer ( YY_BUFFER_STATE b ); | void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); | void yypop_buffer_state ( void ); | | static void yyensure_buffer_stack ( void ); | static void yy_load_buffer_state ( void ); | static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); | #define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) | | YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); | YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); | YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); | | void *yyalloc ( yy_size_t ); | void *yyrealloc ( void *, yy_size_t ); | void yyfree ( void * ); | | #define yy_new_buffer yy_create_buffer | #define yy_set_interactive(is_interactive) \ | { \ | if ( ! YY_CURRENT_BUFFER ){ \ | yyensure_buffer_stack (); \ | YY_CURRENT_BUFFER_LVALUE = \ | yy_create_buffer( yyin, YY_BUF_SIZE ); \ | } \ | YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ | } | #define yy_set_bol(at_bol) \ | { \ | if ( ! YY_CURRENT_BUFFER ){\ | yyensure_buffer_stack (); \ | YY_CURRENT_BUFFER_LVALUE = \ | yy_create_buffer( yyin, YY_BUF_SIZE ); \ | } \ | YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ | } | #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) | | /* Begin user sect3 */ | typedef flex_uint8_t YY_CHAR; | | FILE *yyin = NULL, *yyout = NULL; | | typedef int yy_state_type; | | extern int yylineno; | int yylineno = 1; | | extern char *yytext; | #ifdef yytext_ptr | #undef yytext_ptr | #endif | #define yytext_ptr yytext | | static yy_state_type yy_get_previous_state ( void ); | static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); | static int yy_get_next_buffer ( void ); | static void yynoreturn yy_fatal_error ( const char* msg ); | | /* Done after the current pattern has been matched and before the | * corresponding action - sets up yytext. | */ | #define YY_DO_BEFORE_ACTION \ | (yytext_ptr) = yy_bp; \ | (yytext_ptr) -= (yy_more_len); \ | yyleng = (int) (yy_cp - (yytext_ptr)); \ | (yy_hold_char) = *yy_cp; \ | *yy_cp = '\0'; \ | (yy_c_buf_p) = yy_cp; | #define YY_NUM_RULES 8 | #define YY_END_OF_BUFFER 9 | /* This struct is not used in this scanner, | but its presence is necessary. */ | struct yy_trans_info | { | flex_int32_t yy_verify; | flex_int32_t yy_nxt; | }; | static const flex_int16_t yy_acclist[23] = | { 0, | 9, 7, 8, 8, 1, 7, 8, 2, 7, 8, | 3, 7, 8, 4, 7, 8, 5, 7, 8, 6, | 7, 8 | } ; | | static const flex_int16_t yy_accept[14] = | { 0, | 1, 1, 1, 2, 4, 5, 8, 11, 14, 17, | 20, 23, 23 | } ; | | static const YY_CHAR yy_ec[256] = | { 0, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 3, 4, 5, 6, | | 7, 8, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | 1, 1, 1, 1, 1 | } ; | | static const YY_CHAR yy_meta[9] = | { 0, | 1, 1, 1, 1, 1, 1, 1, 1 | } ; | | static const flex_int16_t yy_base[13] = | { 0, | 0, 0, 9, 10, 10, 10, 10, 10, 10, 10, | 10, 10 | } ; | | static const flex_int16_t yy_def[13] = | { 0, | 12, 1, 12, 12, 12, 12, 12, 12, 12, 12, | 12, 0 | } ; | | static const flex_int16_t yy_nxt[19] = | { 0, | 4, 5, 6, 7, 8, 9, 10, 11, 12, 3, | 12, 12, 12, 12, 12, 12, 12, 12 | } ; | | static const flex_int16_t yy_chk[19] = | { 0, | 1, 1, 1, 1, 1, 1, 1, 1, 3, 12, | 12, 12, 12, 12, 12, 12, 12, 12 | } ; | | extern int yy_flex_debug; | int yy_flex_debug = 0; | | static yy_state_type *yy_state_buf=0, *yy_state_ptr=0; | static char *yy_full_match; | static int yy_lp; | #define REJECT \ | { \ | *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \ | yy_cp = (yy_full_match); /* restore poss. backed-over text */ \ | ++(yy_lp); \ | goto find_rule; \ | } | | static int yy_more_flag = 0; | static int yy_more_len = 0; | #define yymore() ((yy_more_flag) = 1) | #define YY_MORE_ADJ (yy_more_len) | #define YY_RESTORE_YY_MORE_OFFSET | char *yytext; | #line 1 "conftest.l" | #line 460 "lex.yy.c" | | #define INITIAL 0 | | #ifndef YY_NO_UNISTD_H | /* Special case for "unistd.h", since it is non-ANSI. We include it way | * down here because we want the user's section 1 to have been scanned first. | * The user has a chance to override it with an option. | */ | #include <unistd.h> | #endif | | #ifndef YY_EXTRA_TYPE | #define YY_EXTRA_TYPE void * | #endif | | static int yy_init_globals ( void ); | | /* Accessor methods to globals. | These are made visible to non-reentrant scanners for convenience. */ | | int yylex_destroy ( void ); | | int yyget_debug ( void ); | | void yyset_debug ( int debug_flag ); | | YY_EXTRA_TYPE yyget_extra ( void ); | | void yyset_extra ( YY_EXTRA_TYPE user_defined ); | | FILE *yyget_in ( void ); | | void yyset_in ( FILE * _in_str ); | | FILE *yyget_out ( void ); | | void yyset_out ( FILE * _out_str ); | | int yyget_leng ( void ); | | char *yyget_text ( void ); | | int yyget_lineno ( void ); | | void yyset_lineno ( int _line_number ); | | /* Macros after this point can all be overridden by user definitions in | * section 1. | */ | | #ifndef YY_SKIP_YYWRAP | #ifdef __cplusplus | extern "C" int yywrap ( void ); | #else | extern int yywrap ( void ); | #endif | #endif | | #ifndef YY_NO_UNPUT | | static void yyunput ( int c, char *buf_ptr ); | | #endif | | #ifndef yytext_ptr | static void yy_flex_strncpy ( char *, const char *, int ); | #endif | | #ifdef YY_NEED_STRLEN | static int yy_flex_strlen ( const char * ); | #endif | | #ifndef YY_NO_INPUT | #ifdef __cplusplus | static int yyinput ( void ); | #else | static int input ( void ); | #endif | | #endif | | /* Amount of stuff to slurp up with each read. */ | #ifndef YY_READ_BUF_SIZE | #ifdef __ia64__ | /* On IA-64, the buffer size is 16k, not 8k */ | #define YY_READ_BUF_SIZE 16384 | #else | #define YY_READ_BUF_SIZE 8192 | #endif /* __ia64__ */ | #endif | | /* Copy whatever the last rule matched to the standard output. */ | #ifndef ECHO | /* This used to be an fputs(), but since the string might contain NUL's, | * we now use fwrite(). | */ | #define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) | #endif | | /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, | * is returned in "result". | */ | #ifndef YY_INPUT | #define YY_INPUT(buf,result,max_size) \ | if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ | { \ | int c = '*'; \ | int n; \ | for ( n = 0; n < max_size && \ | (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ | buf[n] = (char) c; \ | if ( c == '\n' ) \ | buf[n++] = (char) c; \ | if ( c == EOF && ferror( yyin ) ) \ | YY_FATAL_ERROR( "input in flex scanner failed" ); \ | result = n; \ | } \ | else \ | { \ | errno=0; \ | while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ | { \ | if( errno != EINTR) \ | { \ | YY_FATAL_ERROR( "input in flex scanner failed" ); \ | break; \ | } \ | errno=0; \ | clearerr(yyin); \ | } \ | }\ | \ | | #endif | | /* No semi-colon after return; correct usage is to write "yyterminate();" - | * we don't want an extra ';' after the "return" because that will cause | * some compilers to complain about unreachable statements. | */ | #ifndef yyterminate | #define yyterminate() return YY_NULL | #endif | | /* Number of entries by which start-condition stack grows. */ | #ifndef YY_START_STACK_INCR | #define YY_START_STACK_INCR 25 | #endif | | /* Report a fatal error. */ | #ifndef YY_FATAL_ERROR | #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) | #endif | | /* end tables serialization structures and prototypes */ | | /* Default declaration of generated scanner - a define so the user can | * easily add parameters. | */ | #ifndef YY_DECL | #define YY_DECL_IS_OURS 1 | | extern int yylex (void); | | #define YY_DECL int yylex (void) | #endif /* !YY_DECL */ | | /* Code executed at the beginning of each rule, after yytext and yyleng | * have been set up. | */ | #ifndef YY_USER_ACTION | #define YY_USER_ACTION | #endif | | /* Code executed at the end of each rule. */ | #ifndef YY_BREAK | #define YY_BREAK /*LINTED*/break; | #endif | | #define YY_RULE_SETUP \ | YY_USER_ACTION | | /** The main scanner function which does all the work. | */ | YY_DECL | { | yy_state_type yy_current_state; | char *yy_cp, *yy_bp; | int yy_act; | | if ( !(yy_init) ) | { | (yy_init) = 1; | | #ifdef YY_USER_INIT | YY_USER_INIT; | #endif | | /* Create the reject buffer large enough to save one state per allowed character. */ | if ( ! (yy_state_buf) ) | (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE ); | if ( ! (yy_state_buf) ) | YY_FATAL_ERROR( "out of dynamic memory in yylex()" ); | | if ( ! (yy_start) ) | (yy_start) = 1; /* first start state */ | | if ( ! yyin ) | yyin = stdin; | | if ( ! yyout ) | yyout = stdout; | | if ( ! YY_CURRENT_BUFFER ) { | yyensure_buffer_stack (); | YY_CURRENT_BUFFER_LVALUE = | yy_create_buffer( yyin, YY_BUF_SIZE ); | } | | yy_load_buffer_state( ); | } | | { | #line 1 "conftest.l" | | #line 685 "lex.yy.c" | | while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ | { | (yy_more_len) = 0; | if ( (yy_more_flag) ) | { | (yy_more_len) = (int) ((yy_c_buf_p) - (yytext_ptr)); | (yy_more_flag) = 0; | } | yy_cp = (yy_c_buf_p); | | /* Support of yytext. */ | *yy_cp = (yy_hold_char); | | /* yy_bp points to the position in yy_ch_buf of the start of | * the current run. | */ | yy_bp = yy_cp; | | yy_current_state = (yy_start); | | (yy_state_ptr) = (yy_state_buf); | *(yy_state_ptr)++ = yy_current_state; | | yy_match: | do | { | YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; | while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) | { | yy_current_state = (int) yy_def[yy_current_state]; | if ( yy_current_state >= 13 ) | yy_c = yy_meta[yy_c]; | } | yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; | *(yy_state_ptr)++ = yy_current_state; | ++yy_cp; | } | while ( yy_base[yy_current_state] != 10 ); | | yy_find_action: | yy_current_state = *--(yy_state_ptr); | (yy_lp) = yy_accept[yy_current_state]; | | find_rule: /* we branch to this label when backing up */ | | for ( ; ; ) /* until we find what rule we matched */ | { | if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] ) | { | yy_act = yy_acclist[(yy_lp)]; | { | (yy_full_match) = yy_cp; | break; | } | } | --yy_cp; | yy_current_state = *--(yy_state_ptr); | (yy_lp) = yy_accept[yy_current_state]; | } | | YY_DO_BEFORE_ACTION; | | do_action: /* This label is used only to access EOF actions. */ | | switch ( yy_act ) | { /* beginning of action switch */ | case 1: | YY_RULE_SETUP | #line 2 "conftest.l" | { ECHO; } | YY_BREAK | case 2: | YY_RULE_SETUP | #line 3 "conftest.l" | { REJECT; } | YY_BREAK | case 3: | YY_RULE_SETUP | #line 4 "conftest.l" | { yymore (); } | YY_BREAK | case 4: | YY_RULE_SETUP | #line 5 "conftest.l" | { yyless (1); } | YY_BREAK | case 5: | YY_RULE_SETUP | #line 6 "conftest.l" | { /* IRIX 6.5 flex 2.5.4 underquotes its yyless argument. */ | yyless ((input () != 0)); } | YY_BREAK | case 6: | YY_RULE_SETUP | #line 8 "conftest.l" | { unput (yytext[0]); } | YY_BREAK | case 7: | YY_RULE_SETUP | #line 9 "conftest.l" | { BEGIN INITIAL; } | YY_BREAK | case 8: | YY_RULE_SETUP | #line 10 "conftest.l" | ECHO; | YY_BREAK | #line 794 "lex.yy.c" | case YY_STATE_EOF(INITIAL): | yyterminate(); | | case YY_END_OF_BUFFER: | { | /* Amount of text matched not including the EOB char. */ | int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; | | /* Undo the effects of YY_DO_BEFORE_ACTION. */ | *yy_cp = (yy_hold_char); | YY_RESTORE_YY_MORE_OFFSET | | if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) | { | /* We're scanning a new file or input source. It's | * possible that this happened because the user | * just pointed yyin at a new source and called | * yylex(). If so, then we have to assure | * consistency between YY_CURRENT_BUFFER and our | * globals. Here is the right place to do so, because | * this is the first action (other than possibly a | * back-up) that will match for the new input source. | */ | (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; | YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; | YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; | } | | /* Note that here we test for yy_c_buf_p "<=" to the position | * of the first EOB in the buffer, since yy_c_buf_p will | * already have been incremented past the NUL character | * (since all states make transitions on EOB to the | * end-of-buffer state). Contrast this with the test | * in input(). | */ | if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) | { /* This was really a NUL. */ | yy_state_type yy_next_state; | | (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; | | yy_current_state = yy_get_previous_state( ); | | /* Okay, we're now positioned to make the NUL | * transition. We couldn't have | * yy_get_previous_state() go ahead and do it | * for us because it doesn't know how to deal | * with the possibility of jamming (and we don't | * want to build jamming into it because then it | * will run more slowly). | */ | | yy_next_state = yy_try_NUL_trans( yy_current_state ); | | yy_bp = (yytext_ptr) + YY_MORE_ADJ; | | if ( yy_next_state ) | { | /* Consume the NUL. */ | yy_cp = ++(yy_c_buf_p); | yy_current_state = yy_next_state; | goto yy_match; | } | | else | { | yy_cp = (yy_c_buf_p); | goto yy_find_action; | } | } | | else switch ( yy_get_next_buffer( ) ) | { | case EOB_ACT_END_OF_FILE: | { | (yy_did_buffer_switch_on_eof) = 0; | | if ( yywrap( ) ) | { | /* Note: because we've taken care in | * yy_get_next_buffer() to have set up | * yytext, we can now set up | * yy_c_buf_p so that if some total | * hoser (like flex itself) wants to | * call the scanner after we return the | * YY_NULL, it'll still work - another | * YY_NULL will get returned. | */ | (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; | | yy_act = YY_STATE_EOF(YY_START); | goto do_action; | } | | else | { | if ( ! (yy_did_buffer_switch_on_eof) ) | YY_NEW_FILE; | } | break; | } | | case EOB_ACT_CONTINUE_SCAN: | (yy_c_buf_p) = | (yytext_ptr) + yy_amount_of_matched_text; | | yy_current_state = yy_get_previous_state( ); | | yy_cp = (yy_c_buf_p); | yy_bp = (yytext_ptr) + YY_MORE_ADJ; | goto yy_match; | | case EOB_ACT_LAST_MATCH: | (yy_c_buf_p) = | &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; | | yy_current_state = yy_get_previous_state( ); | | yy_cp = (yy_c_buf_p); | yy_bp = (yytext_ptr) + YY_MORE_ADJ; | goto yy_find_action; | } | break; | } | | default: | YY_FATAL_ERROR( | "fatal flex scanner internal error--no action found" ); | } /* end of action switch */ | } /* end of scanning one token */ | } /* end of user's declarations */ | } /* end of yylex */ | | /* yy_get_next_buffer - try to read in a new buffer | * | * Returns a code representing an action: | * EOB_ACT_LAST_MATCH - | * EOB_ACT_CONTINUE_SCAN - continue scanning from current position | * EOB_ACT_END_OF_FILE - end of file | */ | static int yy_get_next_buffer (void) | { | char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; | char *source = (yytext_ptr); | int number_to_move, i; | int ret_val; | | if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) | YY_FATAL_ERROR( | "fatal flex scanner internal error--end of buffer missed" ); | | if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) | { /* Don't try to fill the buffer, so this is an EOF. */ | if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) | { | /* We matched a single character, the EOB, so | * treat this as a final EOF. | */ | return EOB_ACT_END_OF_FILE; | } | | else | { | /* We matched some text prior to the EOB, first | * process it. | */ | return EOB_ACT_LAST_MATCH; | } | } | | /* Try to read more data. */ | | /* First move last chars to start of buffer. */ | number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); | | for ( i = 0; i < number_to_move; ++i ) | *(dest++) = *(source++); | | if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) | /* don't do the read, it's not guaranteed to return an EOF, | * just force an EOF | */ | YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; | | else | { | int num_to_read = | YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; | | while ( num_to_read <= 0 ) | { /* Not enough room in the buffer - grow it. */ | | YY_FATAL_ERROR( | "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); | | } | | if ( num_to_read > YY_READ_BUF_SIZE ) | num_to_read = YY_READ_BUF_SIZE; | | /* Read in more data. */ | YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), | (yy_n_chars), num_to_read ); | | YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); | } | | if ( (yy_n_chars) == 0 ) | { | if ( number_to_move == YY_MORE_ADJ ) | { | ret_val = EOB_ACT_END_OF_FILE; | yyrestart( yyin ); | } | | else | { | ret_val = EOB_ACT_LAST_MATCH; | YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = | YY_BUFFER_EOF_PENDING; | } | } | | else | ret_val = EOB_ACT_CONTINUE_SCAN; | | if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { | /* Extend the array by 50%, plus the number we really need. */ | int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); | YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( | (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); | if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) | YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); | /* "- 2" to take care of EOB's */ | YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); | } | | (yy_n_chars) += number_to_move; | YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; | YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; | | (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; | | return ret_val; | } | | /* yy_get_previous_state - get the state just before the EOB char was reached */ | | static yy_state_type yy_get_previous_state (void) | { | yy_state_type yy_current_state; | char *yy_cp; | | yy_current_state = (yy_start); | | (yy_state_ptr) = (yy_state_buf); | *(yy_state_ptr)++ = yy_current_state; | | for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) | { | YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); | while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) | { | yy_current_state = (int) yy_def[yy_current_state]; | if ( yy_current_state >= 13 ) | yy_c = yy_meta[yy_c]; | } | yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; | *(yy_state_ptr)++ = yy_current_state; | } | | return yy_current_state; | } | | /* yy_try_NUL_trans - try to make a transition on the NUL character | * | * synopsis | * next_state = yy_try_NUL_trans( current_state ); | */ | static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) | { | int yy_is_jam; | | YY_CHAR yy_c = 1; | while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) | { | yy_current_state = (int) yy_def[yy_current_state]; | if ( yy_current_state >= 13 ) | yy_c = yy_meta[yy_c]; | } | yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; | yy_is_jam = (yy_current_state == 12); | if ( ! yy_is_jam ) | *(yy_state_ptr)++ = yy_current_state; | | return yy_is_jam ? 0 : yy_current_state; | } | | #ifndef YY_NO_UNPUT | | static void yyunput (int c, char * yy_bp ) | { | char *yy_cp; | | yy_cp = (yy_c_buf_p); | | /* undo effects of setting up yytext */ | *yy_cp = (yy_hold_char); | | if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) | { /* need to shift things up to make room */ | /* +2 for EOB chars. */ | int number_to_move = (yy_n_chars) + 2; | char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ | YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; | char *source = | &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; | | while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) | *--dest = *--source; | | yy_cp += (int) (dest - source); | yy_bp += (int) (dest - source); | YY_CURRENT_BUFFER_LVALUE->yy_n_chars = | (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; | | if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) | YY_FATAL_ERROR( "flex scanner push-back overflow" ); | } | | *--yy_cp = (char) c; | | (yytext_ptr) = yy_bp; | (yy_hold_char) = *yy_cp; | (yy_c_buf_p) = yy_cp; | } | | #endif | | #ifndef YY_NO_INPUT | #ifdef __cplusplus | static int yyinput (void) | #else | static int input (void) | #endif | | { | int c; | | *(yy_c_buf_p) = (yy_hold_char); | | if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) | { | /* yy_c_buf_p now points to the character we want to return. | * If this occurs *before* the EOB characters, then it's a | * valid NUL; if not, then we've hit the end of the buffer. | */ | if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) | /* This was really a NUL. */ | *(yy_c_buf_p) = '\0'; | | else | { /* need more input */ | int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); | ++(yy_c_buf_p); | | switch ( yy_get_next_buffer( ) ) | { | case EOB_ACT_LAST_MATCH: | /* This happens because yy_g_n_b() | * sees that we've accumulated a | * token and flags that we need to | * try matching the token before | * proceeding. But for input(), | * there's no matching to consider. | * So convert the EOB_ACT_LAST_MATCH | * to EOB_ACT_END_OF_FILE. | */ | | /* Reset buffer status. */ | yyrestart( yyin ); | | /*FALLTHROUGH*/ | | case EOB_ACT_END_OF_FILE: | { | if ( yywrap( ) ) | return 0; | | if ( ! (yy_did_buffer_switch_on_eof) ) | YY_NEW_FILE; | #ifdef __cplusplus | return yyinput(); | #else | return input(); | #endif | } | | case EOB_ACT_CONTINUE_SCAN: | (yy_c_buf_p) = (yytext_ptr) + offset; | break; | } | } | } | | c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ | *(yy_c_buf_p) = '\0'; /* preserve yytext */ | (yy_hold_char) = *++(yy_c_buf_p); | | return c; | } | #endif /* ifndef YY_NO_INPUT */ | | /** Immediately switch to a different input stream. | * @param input_file A readable stream. | * | * @note This function does not reset the start condition to @c INITIAL . | */ | void yyrestart (FILE * input_file ) | { | | if ( ! YY_CURRENT_BUFFER ){ | yyensure_buffer_stack (); | YY_CURRENT_BUFFER_LVALUE = | yy_create_buffer( yyin, YY_BUF_SIZE ); | } | | yy_init_buffer( YY_CURRENT_BUFFER, input_file ); | yy_load_buffer_state( ); | } | | /** Switch to a different input buffer. | * @param new_buffer The new input buffer. | * | */ | void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) | { | | /* TODO. We should be able to replace this entire function body | * with | * yypop_buffer_state(); | * yypush_buffer_state(new_buffer); | */ | yyensure_buffer_stack (); | if ( YY_CURRENT_BUFFER == new_buffer ) | return; | | if ( YY_CURRENT_BUFFER ) | { | /* Flush out information for old buffer. */ | *(yy_c_buf_p) = (yy_hold_char); | YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); | YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); | } | | YY_CURRENT_BUFFER_LVALUE = new_buffer; | yy_load_buffer_state( ); | | /* We don't actually know whether we did this switch during | * EOF (yywrap()) processing, but the only time this flag | * is looked at is after yywrap() is called, so it's safe | * to go ahead and always set it. | */ | (yy_did_buffer_switch_on_eof) = 1; | } | | static void yy_load_buffer_state (void) | { | (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; | (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; | yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; | (yy_hold_char) = *(yy_c_buf_p); | } | | /** Allocate and initialize an input buffer state. | * @param file A readable stream. | * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. | * | * @return the allocated buffer state. | */ | YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) | { | YY_BUFFER_STATE b; | | b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); | if ( ! b ) | YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); | | b->yy_buf_size = size; | | /* yy_ch_buf has to be 2 characters longer than the size given because | * we need to put in 2 end-of-buffer characters. | */ | b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); | if ( ! b->yy_ch_buf ) | YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); | | b->yy_is_our_buffer = 1; | | yy_init_buffer( b, file ); | | return b; | } | | /** Destroy the buffer. | * @param b a buffer created with yy_create_buffer() | * | */ | void yy_delete_buffer (YY_BUFFER_STATE b ) | { | | if ( ! b ) | return; | | if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ | YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; | | if ( b->yy_is_our_buffer ) | yyfree( (void *) b->yy_ch_buf ); | | yyfree( (void *) b ); | } | | /* Initializes or reinitializes a buffer. | * This function is sometimes called more than once on the same buffer, | * such as during a yyrestart() or at EOF. | */ | static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) | | { | int oerrno = errno; | | yy_flush_buffer( b ); | | b->yy_input_file = file; | b->yy_fill_buffer = 1; | | /* If b is the current buffer, then yy_init_buffer was _probably_ | * called from yyrestart() or through yy_get_next_buffer. | * In that case, we don't want to reset the lineno or column. | */ | if (b != YY_CURRENT_BUFFER){ | b->yy_bs_lineno = 1; | b->yy_bs_column = 0; | } | | b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; | | errno = oerrno; | } | | /** Discard all buffered characters. On the next scan, YY_INPUT will be called. | * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. | * | */ | void yy_flush_buffer (YY_BUFFER_STATE b ) | { | if ( ! b ) | return; | | b->yy_n_chars = 0; | | /* We always need two end-of-buffer characters. The first causes | * a transition to the end-of-buffer state. The second causes | * a jam in that state. | */ | b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; | b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; | | b->yy_buf_pos = &b->yy_ch_buf[0]; | | b->yy_at_bol = 1; | b->yy_buffer_status = YY_BUFFER_NEW; | | if ( b == YY_CURRENT_BUFFER ) | yy_load_buffer_state( ); | } | | /** Pushes the new state onto the stack. The new state becomes | * the current state. This function will allocate the stack | * if necessary. | * @param new_buffer The new state. | * | */ | void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) | { | if (new_buffer == NULL) | return; | | yyensure_buffer_stack(); | | /* This block is copied from yy_switch_to_buffer. */ | if ( YY_CURRENT_BUFFER ) | { | /* Flush out information for old buffer. */ | *(yy_c_buf_p) = (yy_hold_char); | YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); | YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); | } | | /* Only push if top exists. Otherwise, replace top. */ | if (YY_CURRENT_BUFFER) | (yy_buffer_stack_top)++; | YY_CURRENT_BUFFER_LVALUE = new_buffer; | | /* copied from yy_switch_to_buffer. */ | yy_load_buffer_state( ); | (yy_did_buffer_switch_on_eof) = 1; | } | | /** Removes and deletes the top of the stack, if present. | * The next element becomes the new top. | * | */ | void yypop_buffer_state (void) | { | if (!YY_CURRENT_BUFFER) | return; | | yy_delete_buffer(YY_CURRENT_BUFFER ); | YY_CURRENT_BUFFER_LVALUE = NULL; | if ((yy_buffer_stack_top) > 0) | --(yy_buffer_stack_top); | | if (YY_CURRENT_BUFFER) { | yy_load_buffer_state( ); | (yy_did_buffer_switch_on_eof) = 1; | } | } | | /* Allocates the stack if it does not exist. | * Guarantees space for at least one push. | */ | static void yyensure_buffer_stack (void) | { | yy_size_t num_to_alloc; | | if (!(yy_buffer_stack)) { | | /* First allocation is just for 2 elements, since we don't know if this | * scanner will even need a stack. We use 2 instead of 1 to avoid an | * immediate realloc on the next call. | */ | num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ | (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc | (num_to_alloc * sizeof(struct yy_buffer_state*) | ); | if ( ! (yy_buffer_stack) ) | YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); | | memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); | | (yy_buffer_stack_max) = num_to_alloc; | (yy_buffer_stack_top) = 0; | return; | } | | if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ | | /* Increase the buffer to prepare for a possible push. */ | yy_size_t grow_size = 8 /* arbitrary grow size */; | | num_to_alloc = (yy_buffer_stack_max) + grow_size; | (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc | ((yy_buffer_stack), | num_to_alloc * sizeof(struct yy_buffer_state*) | ); | if ( ! (yy_buffer_stack) ) | YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); | | /* zero only the new slots.*/ | memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); | (yy_buffer_stack_max) = num_to_alloc; | } | } | | /** Setup the input buffer state to scan directly from a user-specified character buffer. | * @param base the character buffer | * @param size the size in bytes of the character buffer | * | * @return the newly allocated buffer state object. | */ | YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) | { | YY_BUFFER_STATE b; | | if ( size < 2 || | base[size-2] != YY_END_OF_BUFFER_CHAR || | base[size-1] != YY_END_OF_BUFFER_CHAR ) | /* They forgot to leave room for the EOB's. */ | return NULL; | | b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); | if ( ! b ) | YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); | | b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ | b->yy_buf_pos = b->yy_ch_buf = base; | b->yy_is_our_buffer = 0; | b->yy_input_file = NULL; | b->yy_n_chars = b->yy_buf_size; | b->yy_is_interactive = 0; | b->yy_at_bol = 1; | b->yy_fill_buffer = 0; | b->yy_buffer_status = YY_BUFFER_NEW; | | yy_switch_to_buffer( b ); | | return b; | } | | /** Setup the input buffer state to scan a string. The next call to yylex() will | * scan from a @e copy of @a str. | * @param yystr a NUL-terminated string to scan | * | * @return the newly allocated buffer state object. | * @note If you want to scan bytes that may contain NUL values, then use | * yy_scan_bytes() instead. | */ | YY_BUFFER_STATE yy_scan_string (const char * yystr ) | { | | return yy_scan_bytes( yystr, (int) strlen(yystr) ); | } | | /** Setup the input buffer state to scan the given bytes. The next call to yylex() will | * scan from a @e copy of @a bytes. | * @param yybytes the byte buffer to scan | * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. | * | * @return the newly allocated buffer state object. | */ | YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) | { | YY_BUFFER_STATE b; | char *buf; | yy_size_t n; | int i; | | /* Get memory for full buffer, including space for trailing EOB's. */ | n = (yy_size_t) (_yybytes_len + 2); | buf = (char *) yyalloc( n ); | if ( ! buf ) | YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); | | for ( i = 0; i < _yybytes_len; ++i ) | buf[i] = yybytes[i]; | | buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; | | b = yy_scan_buffer( buf, n ); | if ( ! b ) | YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); | | /* It's okay to grow etc. this buffer, and we should throw it | * away when we're done. | */ | b->yy_is_our_buffer = 1; | | return b; | } | | #ifndef YY_EXIT_FAILURE | #define YY_EXIT_FAILURE 2 | #endif | | static void yynoreturn yy_fatal_error (const char* msg ) | { | fprintf( stderr, "%s\n", msg ); | exit( YY_EXIT_FAILURE ); | } | | /* Redefine yyless() so it works in section 3 code. */ | | #undef yyless | #define yyless(n) \ | do \ | { \ | /* Undo effects of setting up yytext. */ \ | int yyless_macro_arg = (n); \ | YY_LESS_LINENO(yyless_macro_arg);\ | yytext[yyleng] = (yy_hold_char); \ | (yy_c_buf_p) = yytext + yyless_macro_arg; \ | (yy_hold_char) = *(yy_c_buf_p); \ | *(yy_c_buf_p) = '\0'; \ | yyleng = yyless_macro_arg; \ | } \ | while ( 0 ) | | /* Accessor methods (get/set functions) to struct members. */ | | /** Get the current line number. | * | */ | int yyget_lineno (void) | { | | return yylineno; | } | | /** Get the input stream. | * | */ | FILE *yyget_in (void) | { | return yyin; | } | | /** Get the output stream. | * | */ | FILE *yyget_out (void) | { | return yyout; | } | | /** Get the length of the current token. | * | */ | int yyget_leng (void) | { | return yyleng; | } | | /** Get the current token. | * | */ | | char *yyget_text (void) | { | return yytext; | } | | /** Set the current line number. | * @param _line_number line number | * | */ | void yyset_lineno (int _line_number ) | { | | yylineno = _line_number; | } | | /** Set the input stream. This does not discard the current | * input buffer. | * @param _in_str A readable stream. | * | * @see yy_switch_to_buffer | */ | void yyset_in (FILE * _in_str ) | { | yyin = _in_str ; | } | | void yyset_out (FILE * _out_str ) | { | yyout = _out_str ; | } | | int yyget_debug (void) | { | return yy_flex_debug; | } | | void yyset_debug (int _bdebug ) | { | yy_flex_debug = _bdebug ; | } | | static int yy_init_globals (void) | { | /* Initialization is the same as for the non-reentrant scanner. | * This function is called from yylex_destroy(), so don't allocate here. | */ | | (yy_buffer_stack) = NULL; | (yy_buffer_stack_top) = 0; | (yy_buffer_stack_max) = 0; | (yy_c_buf_p) = NULL; | (yy_init) = 0; | (yy_start) = 0; | | (yy_state_buf) = 0; | (yy_state_ptr) = 0; | (yy_full_match) = 0; | (yy_lp) = 0; | | /* Defined in main.c */ | #ifdef YY_STDINIT | yyin = stdin; | yyout = stdout; | #else | yyin = NULL; | yyout = NULL; | #endif | | /* For future reference: Set errno on error, since we are called by | * yylex_init() | */ | return 0; | } | | /* yylex_destroy is for both reentrant and non-reentrant scanners. */ | int yylex_destroy (void) | { | | /* Pop the buffer stack, destroying each element. */ | while(YY_CURRENT_BUFFER){ | yy_delete_buffer( YY_CURRENT_BUFFER ); | YY_CURRENT_BUFFER_LVALUE = NULL; | yypop_buffer_state(); | } | | /* Destroy the stack itself. */ | yyfree((yy_buffer_stack) ); | (yy_buffer_stack) = NULL; | | yyfree ( (yy_state_buf) ); | (yy_state_buf) = NULL; | | /* Reset the globals. This is important in a non-reentrant scanner so the next time | * yylex() is called, initialization will occur. */ | yy_init_globals( ); | | return 0; | } | | /* | * Internal utility routines. | */ | | #ifndef yytext_ptr | static void yy_flex_strncpy (char* s1, const char * s2, int n ) | { | | int i; | for ( i = 0; i < n; ++i ) | s1[i] = s2[i]; | } | #endif | | #ifdef YY_NEED_STRLEN | static int yy_flex_strlen (const char * s ) | { | int n; | for ( n = 0; s[n]; ++n ) | ; | | return n; | } | #endif | | void *yyalloc (yy_size_t size ) | { | return malloc(size); | } | | void *yyrealloc (void * ptr, yy_size_t size ) | { | | /* The cast to (char *) in the following accommodates both | * implementations that use char* generic pointers, and those | * that use void* generic pointers. It works with the latter | * because both ANSI C and C++ allow castless assignment from | * any pointer type to void*, and deal with argument conversions | * as though doing an assignment. | */ | return realloc(ptr, size); | } | | void yyfree (void * ptr ) | { | free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ | } | | #define YYTABLES_NAME "yytables" | | #line 10 "conftest.l" | | #ifdef YYTEXT_POINTER | extern char *yytext; | #endif | int | main (void) | { | return ! yylex () + ! yywrap (); | } configure:10107: gcc -o conftest -g -O2 conftest.c -lfl -ldl >&5 configure:10107: $? = 0 configure:10117: result: -lfl configure:10123: checking whether yytext is a pointer configure:10140: gcc -o conftest -g -O2 conftest.c -lfl -ldl >&5 configure:10140: $? = 0 configure:10148: result: yes configure:10176: checking whether NLS is requested configure:10182: result: yes configure:10188: checking for catalogs to be installed configure:10220: result: es fi fr id ja ru rw sv tr uk zh_CN configure:10247: checking whether NLS is requested configure:10256: result: yes configure:10294: checking for msgfmt configure:10325: result: /usr/bin/msgfmt configure:10334: checking for gmsgfmt configure:10365: result: /usr/bin/msgfmt configure:10405: checking for xgettext configure:10436: result: /usr/bin/xgettext configure:10476: checking for msgmerge configure:10506: result: /usr/bin/msgmerge configure:10543: checking whether to enable maintainer-specific portions of Makefiles configure:10552: result: no configure:10578: checking for memory.h configure:10578: result: yes configure:10578: checking for sys/stat.h configure:10578: result: yes configure:10578: checking for sys/types.h configure:10578: result: yes configure:10578: checking for unistd.h configure:10578: result: yes configure:10591: checking whether compiling a cross-assembler configure:10601: result: yes configure:10606: checking for strsignal configure:10606: gcc -o conftest -g -O2 conftest.c -ldl >&5 configure:10606: $? = 0 configure:10606: result: yes configure:10617: checking for LC_MESSAGES configure:10633: gcc -o conftest -g -O2 conftest.c -ldl >&5 configure:10633: $? = 0 configure:10641: result: yes configure:10792: checking for working assert macro configure:10817: gcc -o conftest -g -O2 conftest.c -ldl >&5 In file included from conftest.c:54: conftest.c: In function 'main': conftest.c:63:10: warning: implicit declaration of function 'strcmp' [-Wimplicit-function-declaration] 63 | assert (!strcmp(s, "foo bar baz quux")); | ^~~~~~ conftest.c:56:1: note: include '<string.h>' or provide a declaration of 'strcmp' 55 | #include <stdio.h> 56 | int In file included from conftest.c:54: conftest.c:63:10: warning: argument 1 null where non-null expected [-Wnonnull] 63 | assert (!strcmp(s, "foo bar baz quux")); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ conftest.c:63:10: note: in a call to built-in function 'strcmp' configure:10817: $? = 0 configure:10825: result: yes configure:10846: checking for a known getopt prototype in unistd.h configure:10862: gcc -c -g -O2 conftest.c >&5 configure:10862: $? = 0 configure:10870: result: yes configure:10879: checking whether declaration is required for environ configure:10899: gcc -o conftest -g -O2 conftest.c -ldl >&5 configure:10899: $? = 0 configure:10907: result: no configure:10916: checking whether declaration is required for ffs configure:10936: gcc -o conftest -g -O2 conftest.c -ldl >&5 configure:10936: $? = 0 configure:10944: result: no configure:10953: checking whether asprintf is declared configure:10953: gcc -c -g -O2 conftest.c >&5 configure:10953: $? = 0 configure:10953: result: yes configure:10963: checking whether mempcpy is declared configure:10963: gcc -c -g -O2 conftest.c >&5 configure:10963: $? = 0 configure:10963: result: yes configure:10973: checking whether stpcpy is declared configure:10973: gcc -c -g -O2 conftest.c >&5 configure:10973: $? = 0 configure:10973: result: yes configure:11053: checking for struct stat.st_mtim.tv_sec in sys/stat.h configure:11071: gcc -c -g -O2 conftest.c >&5 In file included from /usr/include/x86_64-linux-gnu/sys/stat.h:25, from conftest.c:60: /usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp] 187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" | ^~~~~~~ configure:11071: $? = 0 configure:11085: result: yes configure:11088: checking for struct stat.st_mtim.tv_nsec in sys/stat.h configure:11106: gcc -c -g -O2 conftest.c >&5 In file included from /usr/include/x86_64-linux-gnu/sys/stat.h:25, from conftest.c:61: /usr/include/features.h:187:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" [-Wcpp] 187 | # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" | ^~~~~~~ configure:11106: $? = 0 configure:11120: result: yes configure:11195: updating cache ./config.cache configure:11239: checking that generated files are newer than configure configure:11245: result: done configure:11277: creating ./config.status ## ---------------------- ## ## Running config.status. ## ## ---------------------- ## This file was extended by gas config.status 2.37, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = CONFIG_HEADERS = CONFIG_LINKS = CONFIG_COMMANDS = $ ./config.status on noah-tigerlake config.status:1164: creating .gdbinit config.status:1164: creating Makefile config.status:1164: creating doc/Makefile config.status:1164: creating po/Makefile.in config.status:1164: creating config.h config.status:1378: executing depfiles commands config.status:1378: executing libtool commands config.status:1378: executing default-1 commands config.status:1378: executing default commands ## ---------------- ## ## Cache variables. ## ## ---------------- ## ac_cv_build=x86_64-pc-linux-gnu ac_cv_c_bigendian=no ac_cv_c_compiler_gnu=yes ac_cv_env_CC_set=set ac_cv_env_CC_value=gcc ac_cv_env_CFLAGS_set=set ac_cv_env_CFLAGS_value='-g -O2 ' ac_cv_env_CPPFLAGS_set= ac_cv_env_CPPFLAGS_value= ac_cv_env_CPP_set= ac_cv_env_CPP_value= ac_cv_env_LDFLAGS_set=set ac_cv_env_LDFLAGS_value=' ' ac_cv_env_LIBS_set= ac_cv_env_LIBS_value= ac_cv_env_YACC_set=set ac_cv_env_YACC_value='bison -y' ac_cv_env_YFLAGS_set= ac_cv_env_YFLAGS_value= ac_cv_env_build_alias_set=set ac_cv_env_build_alias_value=x86_64-pc-linux-gnu ac_cv_env_host_alias_set=set ac_cv_env_host_alias_value=x86_64-pc-linux-gnu ac_cv_env_target_alias_set=set ac_cv_env_target_alias_value=x86_64-glibc-linux-gnu ac_cv_func_strsignal=yes ac_cv_have_decl_asprintf=yes ac_cv_have_decl_mempcpy=yes ac_cv_have_decl_stpcpy=yes ac_cv_header_dlfcn_h=yes ac_cv_header_inttypes_h=yes ac_cv_header_memory_h=yes ac_cv_header_minix_config_h=no ac_cv_header_stdc=yes ac_cv_header_stdint_h=yes ac_cv_header_stdlib_h=yes ac_cv_header_string_h=yes ac_cv_header_strings_h=yes ac_cv_header_sys_stat_h=yes ac_cv_header_sys_types_h=yes ac_cv_header_unistd_h=yes ac_cv_header_windows_h=no ac_cv_host=x86_64-pc-linux-gnu ac_cv_lib_lex=-lfl ac_cv_objext=o ac_cv_path_EGREP='/usr/bin/grep -E' ac_cv_path_FGREP='/usr/bin/grep -F' ac_cv_path_GMSGFMT=/usr/bin/msgfmt ac_cv_path_GREP=/usr/bin/grep ac_cv_path_MSGFMT=/usr/bin/msgfmt ac_cv_path_MSGMERGE=/usr/bin/msgmerge ac_cv_path_SED=/usr/bin/sed ac_cv_path_XGETTEXT=/usr/bin/xgettext ac_cv_path_mkdir=/usr/bin/mkdir ac_cv_prog_AR='ar --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so' ac_cv_prog_AWK=gawk ac_cv_prog_CC=gcc ac_cv_prog_CPP='gcc -E' ac_cv_prog_LEX=flex ac_cv_prog_OBJDUMP=objdump ac_cv_prog_RANLIB='ranlib --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so' ac_cv_prog_YACC='bison -y' ac_cv_prog_ac_ct_STRIP=strip ac_cv_prog_cc_c89= ac_cv_prog_cc_g=yes ac_cv_prog_lex_root=lex.yy ac_cv_prog_lex_yytext_pointer=yes ac_cv_prog_make_make_set=yes ac_cv_safe_to_define___extensions__=yes ac_cv_search_dlsym=-ldl ac_cv_sys_file_offset_bits=no ac_cv_sys_largefile_CC=no ac_cv_target=x86_64-glibc-linux-gnu am_cv_CC_dependencies_compiler_type=gcc3 am_cv_make_support_nested_variables=yes am_cv_prog_cc_c_o=yes am_cv_val_LC_MESSAGES=yes gas_cv_assert_ok=yes gas_cv_decl_getopt_unistd_h=yes gas_cv_decl_needed_environ=no gas_cv_decl_needed_ffs=no gas_cv_have_sys_stat_type_member_st_mtim_tv_nsec=yes gas_cv_have_sys_stat_type_member_st_mtim_tv_sec=yes gcc_cv_prog_cmp_skip='cmp --ignore-initial=16 $$f1 $$f2' lt_cv_archive_cmds_need_lc=no lt_cv_deplibs_check_method=pass_all lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_ld_reload_flag=-r lt_cv_nm_interface='BSD nm' lt_cv_objdir=.libs lt_cv_path_LD=ld lt_cv_path_NM=nm lt_cv_prog_compiler_c_o=yes lt_cv_prog_compiler_pic_works=yes lt_cv_prog_compiler_rtti_exceptions=no lt_cv_prog_compiler_static_works=yes lt_cv_prog_gnu_ld=yes lt_cv_shlibpath_overrides_runpath=yes lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\''' lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\) $/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' lt_cv_sys_max_cmd_len=1879296 ## ----------------- ## ## Output variables. ## ## ----------------- ## ACLOCAL='${SHELL} /some/were/build-many/src/binutils/missing aclocal-1.15' AMDEPBACKSLASH='\' AMDEP_FALSE='#' AMDEP_TRUE='' AMTAR='$${TAR-tar}' AM_BACKSLASH='\' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' AM_DEFAULT_VERBOSITY='1' AM_V='$(V)' AR='ar --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so' AUTOCONF='${SHELL} /some/were/build-many/src/binutils/missing autoconf' AUTOHEADER='${SHELL} /some/were/build-many/src/binutils/missing autoheader' AUTOMAKE='${SHELL} /some/were/build-many/src/binutils/missing automake-1.15' AWK='gawk' CATALOGS=' es.gmo fi.gmo fr.gmo id.gmo ja.gmo ru.gmo rw.gmo sv.gmo tr.gmo uk.gmo zh_CN.gmo' CATOBJEXT='.gmo' CC='gcc' CCDEPMODE='depmode=gcc3' CFLAGS='-g -O2 ' CPP='gcc -E' CPPFLAGS='' CYGPATH_W='echo' DATADIRNAME='share' DEFS='-DHAVE_CONFIG_H' DEPDIR='.deps' DSYMUTIL='' DUMPBIN='' ECHO_C='' ECHO_N='-n' ECHO_T='' EGREP='/usr/bin/grep -E' EXEEXT='' FGREP='/usr/bin/grep -F' GDBINIT='.gdbinit' GENCAT='gencat' GENINSRC_NEVER_FALSE='' GENINSRC_NEVER_TRUE='#' GMSGFMT='/usr/bin/msgfmt' GREP='/usr/bin/grep' INCINTL='' INSTALL_DATA='/usr/bin/install -c -m 644' INSTALL_PROGRAM='/usr/bin/install -c' INSTALL_SCRIPT='/usr/bin/install -c' INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' INSTOBJEXT='.mo' LARGEFILE_CPPFLAGS='' LD='ld -m elf_x86_64' LDFLAGS=' ' LEX='flex' LEXLIB='-lfl' LEX_OUTPUT_ROOT='lex.yy' LIBINTL='' LIBINTL_DEP='' LIBM='' LIBOBJS='' LIBS='-ldl ' LIBTOOL='$(SHELL) $(top_builddir)/libtool' LIPO='' LN_S='ln -s' LTLIBOBJS='' MAINT='#' MAINTAINER_MODE_FALSE='' MAINTAINER_MODE_TRUE='#' MAKEINFO='makeinfo --split-size=5000000' MKDIR_P='/usr/bin/mkdir -p' MKINSTALLDIRS='/some/were/build-many/src/binutils/gas/../mkinstalldirs' MSGFMT='/usr/bin/msgfmt' MSGMERGE='/usr/bin/msgmerge' NM='nm' NMEDIT='' NO_WERROR='-Wno-error' OBJDUMP='objdump' OBJEXT='o' OPCODES_LIB='../opcodes/libopcodes.la' OTOOL64='' OTOOL='' PACKAGE='gas' PACKAGE_BUGREPORT='' PACKAGE_NAME='gas' PACKAGE_STRING='gas 2.37' PACKAGE_TARNAME='gas' PACKAGE_URL='' PACKAGE_VERSION='2.37' PATH_SEPARATOR=':' POSUB='po' RANLIB='ranlib --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so --plugin /usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so' SED='/usr/bin/sed' SET_MAKE='' SHELL='/bin/bash' STRIP='strip' USE_NLS='yes' VERSION='2.37' WARN_CFLAGS='-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wstack-usage=262144 -Werror' WARN_CFLAGS_FOR_BUILD='-W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wstack-usage=262144 -Werror' WARN_WRITE_STRINGS='-Wwrite-strings' XGETTEXT='/usr/bin/xgettext' YACC='bison -y' YFLAGS='' ac_ct_CC='' ac_ct_DUMPBIN='' am__EXEEXT_FALSE='' am__EXEEXT_TRUE='#' am__fastdepCC_FALSE='#' am__fastdepCC_TRUE='' am__include='include' am__isrc=' -I$(srcdir)' am__leading_dot='.' am__nodep='_no' am__quote='' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' atof='ieee' bindir='${exec_prefix}/bin' build='x86_64-pc-linux-gnu' build_alias='x86_64-pc-linux-gnu' build_cpu='x86_64' build_os='linux-gnu' build_vendor='pc' cgen_cpu_prefix='' datadir='${datarootdir}' datarootdir='${prefix}/share' do_compare='cmp --ignore-initial=16 $$f1 $$f2' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' dvidir='${docdir}' exec_prefix='${prefix}' extra_objects='' host='x86_64-pc-linux-gnu' host_alias='x86_64-pc-linux-gnu' host_cpu='x86_64' host_os='linux-gnu' host_vendor='pc' htmldir='${docdir}' includedir='${prefix}/include' infodir='${datarootdir}/info' install_sh='${SHELL} /some/were/build-many/src/binutils/install-sh' install_tooldir='install-exec-tooldir' libdir='${exec_prefix}/lib' libexecdir='${exec_prefix}/libexec' localedir='${datarootdir}/locale' localstatedir='${prefix}/var' mandir='${datarootdir}/man' mkdir_p='$(MKDIR_P)' obj_format='elf' oldincludedir='/usr/include' pdfdir='${docdir}' prefix='/some/were/build-many/install/compilers/x86_64-linux-gnu' program_transform_name='s&^&x86_64-glibc-linux-gnu-&' psdir='${docdir}' sbindir='${exec_prefix}/sbin' sharedstatedir='${prefix}/com' sysconfdir='${prefix}/etc' target='x86_64-glibc-linux-gnu' target_alias='x86_64-glibc-linux-gnu' target_cpu='x86_64' target_cpu_type='i386' target_os='linux-gnu' target_vendor='glibc' te_file='linux' zlibdir='-L$(top_builddir)/../zlib' zlibinc='-I$(top_srcdir)/../zlib' ## ----------- ## ## confdefs.h. ## ## ----------- ## /* confdefs.h */ #define PACKAGE_NAME "gas" #define PACKAGE_TARNAME "gas" #define PACKAGE_VERSION "2.37" #define PACKAGE_STRING "gas 2.37" #define PACKAGE_BUGREPORT "" #define PACKAGE_URL "" #define PACKAGE "gas" #define VERSION "2.37" #define STDC_HEADERS 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_STDLIB_H 1 #define HAVE_STRING_H 1 #define HAVE_MEMORY_H 1 #define HAVE_STRINGS_H 1 #define HAVE_INTTYPES_H 1 #define HAVE_STDINT_H 1 #define HAVE_UNISTD_H 1 #define __EXTENSIONS__ 1 #define _ALL_SOURCE 1 #define _GNU_SOURCE 1 #define _POSIX_PTHREAD_SEMANTICS 1 #define _TANDEM_SOURCE 1 #define HAVE_DLFCN_H 1 #define LT_OBJDIR ".libs/" #define HAVE_DLFCN_H 1 #define ENABLE_CHECKING 1 #define DEFAULT_ARCH "x86_64" #define DEFAULT_GENERATE_X86_RELAX_RELOCATIONS 1 #define DEFAULT_GENERATE_ELF_STT_COMMON 0 #define DEFAULT_GENERATE_BUILD_NOTES 0 #define DEFAULT_X86_USED_NOTE 1 #define DEFAULT_RISCV_ATTR 0 #define DEFAULT_MIPS_FIX_LOONGSON3_LLSC 0 #define DEFAULT_FLAG_COMPRESS_DEBUG 1 #define EMULATIONS &i386elf, #define DEFAULT_EMULATION "i386elf" #define TARGET_ALIAS "x86_64-glibc-linux-gnu" #define TARGET_CANONICAL "x86_64-glibc-linux-gnu" #define TARGET_CPU "x86_64" #define TARGET_VENDOR "glibc" #define TARGET_OS "linux-gnu" #define YYTEXT_POINTER 1 #define ENABLE_NLS 1 #define HAVE_MEMORY_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_SYS_TYPES_H 1 #define HAVE_UNISTD_H 1 #define CROSS_COMPILE 1 #define HAVE_STRSIGNAL 1 #define HAVE_LC_MESSAGES 1 #define HAVE_DECL_GETOPT 1 #define HAVE_DECL_ASPRINTF 1 #define HAVE_DECL_MEMPCPY 1 #define HAVE_DECL_STPCPY 1 #define HAVE_ST_MTIM_TV_SEC 1 #define HAVE_ST_MTIM_TV_NSEC 1 configure: exit 0 ``` > > Thanks, > Florian >
* Noah Goldstein: > On Mon, Sep 27, 2021 at 1:11 PM Florian Weimer <fweimer@redhat.com> wrote: >> >> * Noah Goldstein: >> >> > On Mon, Sep 27, 2021 at 12:56 PM Florian Weimer <fweimer@redhat.com> wrote: >> >> >> >> * Noah Goldstein: >> >> >> >> > $> cat >> >> > build-many/logs/compilers/x86_64-linux-gnu/003-compilers-x86_64-linux-gnu-binutils-configure-log.txt >> >> >> >> There should be a config.log file in the binutils build directory (under >> >> build-many/build/compilers). I hope this file contains illuminating >> >> data. >> > >> > Oh sorry. Here is the output of config.log >> > >> > ``` >> > $> cat build-many/build/compilers/x86_64-linux-gnu/binutils/config.log >> >> Hmm, is there a binutils/gas/config.log as well? > > Here is the dump. Thanks for the help! So we clearly have: > #define DEFAULT_GENERATE_ELF_STT_COMMON 0 And yet the build failes with the indicated error? Could you check what as/config.h contains? This is very odd. Thanks, Florian
On Mon, Sep 27, 2021 at 1:22 PM Florian Weimer <fweimer@redhat.com> wrote: > * Noah Goldstein: > > > On Mon, Sep 27, 2021 at 1:11 PM Florian Weimer <fweimer@redhat.com> > wrote: > >> > >> * Noah Goldstein: > >> > >> > On Mon, Sep 27, 2021 at 12:56 PM Florian Weimer <fweimer@redhat.com> > wrote: > >> >> > >> >> * Noah Goldstein: > >> >> > >> >> > $> cat > >> >> > > build-many/logs/compilers/x86_64-linux-gnu/003-compilers-x86_64-linux-gnu-binutils-configure-log.txt > >> >> > >> >> There should be a config.log file in the binutils build directory > (under > >> >> build-many/build/compilers). I hope this file contains illuminating > >> >> data. > >> > > >> > Oh sorry. Here is the output of config.log > >> > > >> > ``` > >> > $> cat build-many/build/compilers/x86_64-linux-gnu/binutils/config.log > >> > >> Hmm, is there a binutils/gas/config.log as well? > > > > Here is the dump. Thanks for the help! > > So we clearly have: > > > #define DEFAULT_GENERATE_ELF_STT_COMMON 0 > > And yet the build failes with the indicated error? > > Could you check what as/config.h contains? This is very odd. > /* Define to 1 if you want to generate ELF common symbols with the STT_COMMON type by default. */ #define DEFAULT_GENERATE_ELF_STT_COMMON 0 is in gas/config.h Include tar file of all logs for the build. Full command / stdout was: ``` rm -rf build-many; python3 src/glibc/scripts/build-many-glibcs.py build-many/ checkout gcc-vcs-11; echo "Host Libraries"; python3 src/glibc/scripts/build-many-glibcs.py build-many host-libraries --keep=all; echo "Compilers"; python3 src/glibc/scripts/build-many-glibcs.py build-many compilers x86_64-linux-gnu --keep=all; python3 src/glibc/scripts/build-many-glibcs.py build-many glibcs --keep=all configure.ac:83: installing 'build-aux/compile' configure.ac:46: installing 'build-aux/config.guess' configure.ac:46: installing 'build-aux/config.sub' configure.ac:26: installing 'build-aux/install-sh' configure.ac:26: installing 'build-aux/missing' Makefile.am: installing './INSTALL' Makefile.am: installing 'build-aux/depcomp' Makefile.am:32: installing 'build-aux/mdate-sh' doc/Makefrag.am:106: warning: user target '$(srcdir)/doc/version.texi' defined here ... Makefile.am:155: 'doc/Makefrag.am' included from here /usr/share/automake-1.16/am/texi-vers.am: ... overrides Automake target '$(srcdir)/doc/version.texi' defined here Makefile.am:32: installing 'build-aux/texinfo.tex' parallel-tests: installing 'build-aux/test-driver' configure.ac:25: installing 'build-aux/compile' configure.ac:9: installing 'build-aux/config.guess' configure.ac:9: installing 'build-aux/config.sub' configure.ac:14: installing 'build-aux/install-sh' configure.ac:14: installing 'build-aux/missing' Makefile.am: installing './INSTALL' Makefile.am: installing 'build-aux/depcomp' configure.ac: installing 'build-aux/ylwrap' parallel-tests: installing 'build-aux/test-driver' Host Libraries PASS: host-libraries gmp rm PASS: host-libraries gmp mkdir PASS: host-libraries gmp configure PASS: host-libraries gmp build PASS: host-libraries gmp check PASS: host-libraries gmp install PASS: host-libraries mpfr rm PASS: host-libraries mpfr mkdir PASS: host-libraries mpfr configure PASS: host-libraries mpfr build PASS: host-libraries mpfr check PASS: host-libraries mpfr install PASS: host-libraries mpc rm PASS: host-libraries mpc mkdir PASS: host-libraries mpc configure PASS: host-libraries mpc build PASS: host-libraries mpc check PASS: host-libraries mpc install PASS: host-libraries done Compilers PASS: compilers-x86_64-linux-gnu check-host-libraries PASS: compilers-x86_64-linux-gnu binutils rm PASS: compilers-x86_64-linux-gnu binutils mkdir PASS: compilers-x86_64-linux-gnu binutils configure FAIL: compilers-x86_64-linux-gnu binutils build UNRESOLVED: compilers-x86_64-linux-gnu binutils install UNRESOLVED: compilers-x86_64-linux-gnu linux rm UNRESOLVED: compilers-x86_64-linux-gnu linux mkdir UNRESOLVED: compilers-x86_64-linux-gnu linux install-headers UNRESOLVED: compilers-x86_64-linux-gnu gcc-first rm UNRESOLVED: compilers-x86_64-linux-gnu gcc-first mkdir UNRESOLVED: compilers-x86_64-linux-gnu gcc-first configure UNRESOLVED: compilers-x86_64-linux-gnu gcc-first build UNRESOLVED: compilers-x86_64-linux-gnu gcc-first install UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu rm UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu mkdir UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu configure UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu build UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu install UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu mkdir-lib UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu-x32 rm UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu-x32 mkdir UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu-x32 configure UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu-x32 build UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu-x32 install UNRESOLVED: compilers-x86_64-linux-gnu glibc x86_64-linux-gnu-x32 mkdir-lib UNRESOLVED: compilers-x86_64-linux-gnu glibc i686-linux-gnu rm UNRESOLVED: compilers-x86_64-linux-gnu glibc i686-linux-gnu mkdir UNRESOLVED: compilers-x86_64-linux-gnu glibc i686-linux-gnu configure UNRESOLVED: compilers-x86_64-linux-gnu glibc i686-linux-gnu build UNRESOLVED: compilers-x86_64-linux-gnu glibc i686-linux-gnu install UNRESOLVED: compilers-x86_64-linux-gnu glibc i686-linux-gnu mkdir-lib UNRESOLVED: compilers-x86_64-linux-gnu gcc rm UNRESOLVED: compilers-x86_64-linux-gnu gcc mkdir UNRESOLVED: compilers-x86_64-linux-gnu gcc configure UNRESOLVED: compilers-x86_64-linux-gnu gcc build UNRESOLVED: compilers-x86_64-linux-gnu gcc install UNRESOLVED: compilers-x86_64-linux-gnu done FAIL: glibcs-arm-linux-gnueabi check-compilers FAIL: glibcs-aarch64-linux-gnu check-compilers FAIL: glibcs-alpha-linux-gnu check-compilers FAIL: glibcs-arceb-linux-gnu check-compilers FAIL: glibcs-aarch64_be-linux-gnu check-compilers FAIL: glibcs-aarch64-linux-gnu-disable-multi-arch check-compilers FAIL: glibcs-arc-linux-gnu check-compilers FAIL: glibcs-arc-linux-gnuhf check-compilers UNRESOLVED: glibcs-arm-linux-gnueabi rm UNRESOLVED: glibcs-alpha-linux-gnu rm UNRESOLVED: glibcs-aarch64_be-linux-gnu rm UNRESOLVED: glibcs-arc-linux-gnu rm UNRESOLVED: glibcs-arceb-linux-gnu rm UNRESOLVED: glibcs-aarch64-linux-gnu-disable-multi-arch rm UNRESOLVED: glibcs-aarch64-linux-gnu rm UNRESOLVED: glibcs-arm-linux-gnueabi mkdir UNRESOLVED: glibcs-alpha-linux-gnu mkdir UNRESOLVED: glibcs-arc-linux-gnu mkdir UNRESOLVED: glibcs-arc-linux-gnuhf rm UNRESOLVED: glibcs-arceb-linux-gnu mkdir UNRESOLVED: glibcs-aarch64_be-linux-gnu mkdir UNRESOLVED: glibcs-aarch64-linux-gnu-disable-multi-arch mkdir UNRESOLVED: glibcs-arc-linux-gnuhf mkdir UNRESOLVED: glibcs-aarch64-linux-gnu mkdir UNRESOLVED: glibcs-arm-linux-gnueabi configure UNRESOLVED: glibcs-arceb-linux-gnu configure UNRESOLVED: glibcs-arm-linux-gnueabi build UNRESOLVED: glibcs-arceb-linux-gnu build UNRESOLVED: glibcs-arc-linux-gnu configure UNRESOLVED: glibcs-arc-linux-gnu build UNRESOLVED: glibcs-arm-linux-gnueabi install UNRESOLVED: glibcs-aarch64-linux-gnu-disable-multi-arch configure UNRESOLVED: glibcs-arceb-linux-gnu install UNRESOLVED: glibcs-alpha-linux-gnu configure UNRESOLVED: glibcs-arc-linux-gnu install UNRESOLVED: glibcs-alpha-linux-gnu build UNRESOLVED: glibcs-aarch64-linux-gnu-disable-multi-arch build UNRESOLVED: glibcs-arm-linux-gnueabi mkdir-lib UNRESOLVED: glibcs-arceb-linux-gnu mkdir-lib UNRESOLVED: glibcs-alpha-linux-gnu install UNRESOLVED: glibcs-aarch64-linux-gnu configure UNRESOLVED: glibcs-aarch64-linux-gnu-disable-multi-arch install UNRESOLVED: glibcs-arc-linux-gnuhf configure UNRESOLVED: glibcs-aarch64_be-linux-gnu configure UNRESOLVED: glibcs-arc-linux-gnu mkdir-lib UNRESOLVED: glibcs-aarch64-linux-gnu build UNRESOLVED: glibcs-arceb-linux-gnu check UNRESOLVED: glibcs-arc-linux-gnuhf build UNRESOLVED: glibcs-arm-linux-gnueabi check PASS: glibcs-arm-linux-gnueabi save-logs UNRESOLVED: glibcs-aarch64_be-linux-gnu build UNRESOLVED: glibcs-aarch64-linux-gnu install UNRESOLVED: glibcs-arc-linux-gnu check FAIL: glibcs-arm-linux-gnueabi-v4t check-compilers PASS: glibcs-arceb-linux-gnu save-logs UNRESOLVED: glibcs-alpha-linux-gnu mkdir-lib UNRESOLVED: glibcs-aarch64-linux-gnu-disable-multi-arch mkdir-lib UNRESOLVED: glibcs-arc-linux-gnuhf install FAIL: glibcs-arm-linux-gnueabihf check-compilers PASS: glibcs-arc-linux-gnu save-logs UNRESOLVED: glibcs-arm-linux-gnueabi-v4t rm UNRESOLVED: glibcs-alpha-linux-gnu check UNRESOLVED: glibcs-aarch64-linux-gnu mkdir-lib UNRESOLVED: glibcs-aarch64-linux-gnu-disable-multi-arch check FAIL: glibcs-arm-linux-gnueabihf-thumb check-compilers UNRESOLVED: glibcs-arm-linux-gnueabihf rm UNRESOLVED: glibcs-aarch64_be-linux-gnu install UNRESOLVED: glibcs-arm-linux-gnueabihf mkdir UNRESOLVED: glibcs-arm-linux-gnueabihf-thumb rm PASS: glibcs-alpha-linux-gnu save-logs UNRESOLVED: glibcs-arm-linux-gnueabi-v4t mkdir UNRESOLVED: glibcs-arc-linux-gnuhf mkdir-lib PASS: glibcs-aarch64-linux-gnu-disable-multi-arch save-logs UNRESOLVED: glibcs-aarch64-linux-gnu check UNRESOLVED: glibcs-aarch64_be-linux-gnu mkdir-lib UNRESOLVED: glibcs-arc-linux-gnuhf check UNRESOLVED: glibcs-arm-linux-gnueabihf-thumb mkdir UNRESOLVED: glibcs-aarch64_be-linux-gnu check PASS: glibcs-arc-linux-gnuhf save-logs FAIL: glibcs-arm-linux-gnueabihf-v7a check-compilers PASS: glibcs-aarch64-linux-gnu save-logs FAIL: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch check-compilers PASS: glibcs-aarch64_be-linux-gnu save-logs FAIL: glibcs-armeb-linux-gnueabi check-compilers UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch rm UNRESOLVED: glibcs-armeb-linux-gnueabi rm FAIL: glibcs-armeb-linux-gnueabi-be8 check-compilers UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch mkdir FAIL: glibcs-armeb-linux-gnueabihf check-compilers UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a rm UNRESOLVED: glibcs-armeb-linux-gnueabi mkdir UNRESOLVED: glibcs-armeb-linux-gnueabi-be8 rm UNRESOLVED: glibcs-armeb-linux-gnueabihf rm UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a mkdir UNRESOLVED: glibcs-arm-linux-gnueabihf configure UNRESOLVED: glibcs-armeb-linux-gnueabi-be8 mkdir UNRESOLVED: glibcs-armeb-linux-gnueabihf mkdir UNRESOLVED: glibcs-arm-linux-gnueabihf build UNRESOLVED: glibcs-arm-linux-gnueabihf install UNRESOLVED: glibcs-armeb-linux-gnueabi-be8 configure UNRESOLVED: glibcs-arm-linux-gnueabi-v4t configure UNRESOLVED: glibcs-armeb-linux-gnueabi-be8 build UNRESOLVED: glibcs-arm-linux-gnueabihf mkdir-lib UNRESOLVED: glibcs-armeb-linux-gnueabihf configure UNRESOLVED: glibcs-arm-linux-gnueabi-v4t build UNRESOLVED: glibcs-armeb-linux-gnueabi-be8 install UNRESOLVED: glibcs-arm-linux-gnueabihf-thumb configure UNRESOLVED: glibcs-armeb-linux-gnueabihf build UNRESOLVED: glibcs-arm-linux-gnueabihf check UNRESOLVED: glibcs-armeb-linux-gnueabi-be8 mkdir-lib UNRESOLVED: glibcs-armeb-linux-gnueabihf install UNRESOLVED: glibcs-arm-linux-gnueabihf-thumb build UNRESOLVED: glibcs-armeb-linux-gnueabi-be8 check UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch configure PASS: glibcs-arm-linux-gnueabihf save-logs PASS: glibcs-armeb-linux-gnueabi-be8 save-logs UNRESOLVED: glibcs-arm-linux-gnueabi-v4t install UNRESOLVED: glibcs-arm-linux-gnueabihf-thumb install UNRESOLVED: glibcs-armeb-linux-gnueabi configure UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch build FAIL: glibcs-csky-linux-gnuabiv2 check-compilers FAIL: glibcs-armeb-linux-gnueabihf-be8 check-compilers UNRESOLVED: glibcs-arm-linux-gnueabi-v4t mkdir-lib UNRESOLVED: glibcs-armeb-linux-gnueabi build UNRESOLVED: glibcs-arm-linux-gnueabihf-thumb mkdir-lib UNRESOLVED: glibcs-armeb-linux-gnueabihf mkdir-lib UNRESOLVED: glibcs-arm-linux-gnueabi-v4t check UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a configure UNRESOLVED: glibcs-arm-linux-gnueabihf-thumb check PASS: glibcs-arm-linux-gnueabi-v4t save-logs UNRESOLVED: glibcs-csky-linux-gnuabiv2 rm UNRESOLVED: glibcs-armeb-linux-gnueabihf-be8 rm UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch install UNRESOLVED: glibcs-armeb-linux-gnueabihf check UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a build PASS: glibcs-arm-linux-gnueabihf-thumb save-logs FAIL: glibcs-csky-linux-gnuabiv2-soft check-compilers PASS: glibcs-armeb-linux-gnueabihf save-logs UNRESOLVED: glibcs-armeb-linux-gnueabi install UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch mkdir-lib UNRESOLVED: glibcs-csky-linux-gnuabiv2 mkdir UNRESOLVED: glibcs-csky-linux-gnuabiv2-soft rm UNRESOLVED: glibcs-armeb-linux-gnueabihf-be8 mkdir FAIL: glibcs-i486-linux-gnu check-compilers UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a install FAIL: glibcs-hppa-linux-gnu check-compilers UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch check UNRESOLVED: glibcs-armeb-linux-gnueabi mkdir-lib PASS: glibcs-arm-linux-gnueabihf-v7a-disable-multi-arch save-logs UNRESOLVED: glibcs-hppa-linux-gnu rm FAIL: glibcs-i586-linux-gnu check-compilers UNRESOLVED: glibcs-csky-linux-gnuabiv2-soft mkdir UNRESOLVED: glibcs-i486-linux-gnu rm UNRESOLVED: glibcs-hppa-linux-gnu mkdir UNRESOLVED: glibcs-armeb-linux-gnueabi check UNRESOLVED: glibcs-i586-linux-gnu rm UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a mkdir-lib PASS: glibcs-armeb-linux-gnueabi save-logs UNRESOLVED: glibcs-i486-linux-gnu mkdir FAIL: glibcs-i686-gnu check-compilers UNRESOLVED: glibcs-i586-linux-gnu mkdir UNRESOLVED: glibcs-arm-linux-gnueabihf-v7a check PASS: glibcs-arm-linux-gnueabihf-v7a save-logs UNRESOLVED: glibcs-i686-gnu rm UNRESOLVED: glibcs-csky-linux-gnuabiv2 configure FAIL: glibcs-i686-linux-gnu check-compilers UNRESOLVED: glibcs-csky-linux-gnuabiv2 build UNRESOLVED: glibcs-armeb-linux-gnueabihf-be8 configure UNRESOLVED: glibcs-i686-gnu mkdir UNRESOLVED: glibcs-csky-linux-gnuabiv2 install UNRESOLVED: glibcs-armeb-linux-gnueabihf-be8 build UNRESOLVED: glibcs-i686-linux-gnu rm UNRESOLVED: glibcs-csky-linux-gnuabiv2 mkdir-lib UNRESOLVED: glibcs-armeb-linux-gnueabihf-be8 install UNRESOLVED: glibcs-csky-linux-gnuabiv2 check UNRESOLVED: glibcs-i686-linux-gnu mkdir PASS: glibcs-csky-linux-gnuabiv2 save-logs UNRESOLVED: glibcs-armeb-linux-gnueabihf-be8 mkdir-lib UNRESOLVED: glibcs-hppa-linux-gnu configure FAIL: glibcs-i686-linux-gnu-disable-multi-arch check-compilers UNRESOLVED: glibcs-i486-linux-gnu configure UNRESOLVED: glibcs-i486-linux-gnu build UNRESOLVED: glibcs-hppa-linux-gnu build UNRESOLVED: glibcs-armeb-linux-gnueabihf-be8 check UNRESOLVED: glibcs-csky-linux-gnuabiv2-soft configure UNRESOLVED: glibcs-i686-linux-gnu-disable-multi-arch rm UNRESOLVED: glibcs-csky-linux-gnuabiv2-soft build PASS: glibcs-armeb-linux-gnueabihf-be8 save-logs UNRESOLVED: glibcs-i486-linux-gnu install UNRESOLVED: glibcs-csky-linux-gnuabiv2-soft install UNRESOLVED: glibcs-i686-gnu configure UNRESOLVED: glibcs-i586-linux-gnu configure UNRESOLVED: glibcs-hppa-linux-gnu install FAIL: glibcs-i686-linux-gnu-static-pie check-compilers UNRESOLVED: glibcs-i686-linux-gnu-disable-multi-arch mkdir UNRESOLVED: glibcs-i586-linux-gnu build UNRESOLVED: glibcs-i686-gnu build UNRESOLVED: glibcs-i486-linux-gnu mkdir-lib UNRESOLVED: glibcs-csky-linux-gnuabiv2-soft mkdir-lib UNRESOLVED: glibcs-i686-linux-gnu-static-pie rm UNRESOLVED: glibcs-i686-gnu install UNRESOLVED: glibcs-i586-linux-gnu install UNRESOLVED: glibcs-i486-linux-gnu check UNRESOLVED: glibcs-hppa-linux-gnu mkdir-lib UNRESOLVED: glibcs-csky-linux-gnuabiv2-soft check UNRESOLVED: glibcs-i686-gnu mkdir-lib UNRESOLVED: glibcs-i686-linux-gnu-static-pie mkdir UNRESOLVED: glibcs-i686-gnu check PASS: glibcs-i486-linux-gnu save-logs PASS: glibcs-i686-gnu save-logs PASS: glibcs-csky-linux-gnuabiv2-soft save-logs UNRESOLVED: glibcs-hppa-linux-gnu check UNRESOLVED: glibcs-i686-linux-gnu-disable-multi-arch configure UNRESOLVED: glibcs-i586-linux-gnu mkdir-lib FAIL: glibcs-m68k-linux-gnu-coldfire check-compilers PASS: glibcs-hppa-linux-gnu save-logs UNRESOLVED: glibcs-i686-linux-gnu configure FAIL: glibcs-m68k-linux-gnu check-compilers FAIL: glibcs-ia64-linux-gnu check-compilers UNRESOLVED: glibcs-i686-linux-gnu-disable-multi-arch build UNRESOLVED: glibcs-i586-linux-gnu check UNRESOLVED: glibcs-m68k-linux-gnu-coldfire rm FAIL: glibcs-m68k-linux-gnu-coldfire-soft check-compilers UNRESOLVED: glibcs-i686-linux-gnu-disable-multi-arch install UNRESOLVED: glibcs-i686-linux-gnu build UNRESOLVED: glibcs-m68k-linux-gnu rm UNRESOLVED: glibcs-ia64-linux-gnu rm PASS: glibcs-i586-linux-gnu save-logs UNRESOLVED: glibcs-m68k-linux-gnu-coldfire-soft rm UNRESOLVED: glibcs-i686-linux-gnu-disable-multi-arch mkdir-lib UNRESOLVED: glibcs-m68k-linux-gnu-coldfire mkdir UNRESOLVED: glibcs-m68k-linux-gnu mkdir FAIL: glibcs-microblaze-linux-gnu check-compilers UNRESOLVED: glibcs-i686-linux-gnu install UNRESOLVED: glibcs-i686-linux-gnu-disable-multi-arch check UNRESOLVED: glibcs-m68k-linux-gnu-coldfire-soft mkdir UNRESOLVED: glibcs-ia64-linux-gnu mkdir UNRESOLVED: glibcs-i686-linux-gnu mkdir-lib PASS: glibcs-i686-linux-gnu-disable-multi-arch save-logs UNRESOLVED: glibcs-microblaze-linux-gnu rm UNRESOLVED: glibcs-i686-linux-gnu check FAIL: glibcs-microblazeel-linux-gnu check-compilers UNRESOLVED: glibcs-microblaze-linux-gnu mkdir PASS: glibcs-i686-linux-gnu save-logs UNRESOLVED: glibcs-i686-linux-gnu-static-pie configure UNRESOLVED: glibcs-m68k-linux-gnu configure UNRESOLVED: glibcs-microblazeel-linux-gnu rm UNRESOLVED: glibcs-m68k-linux-gnu build FAIL: glibcs-mips-linux-gnu check-compilers UNRESOLVED: glibcs-i686-linux-gnu-static-pie build UNRESOLVED: glibcs-m68k-linux-gnu install UNRESOLVED: glibcs-microblazeel-linux-gnu mkdirls UNRESOLVED: glibcs-m68k-linux-gnu mkdir-lib UNRESOLVED: glibcs-mips-linux-gnu rm UNRESOLVED: glibcs-microblaze-linux-gnu configure UNRESOLVED: glibcs-i686-linux-gnu-static-pie install UNRESOLVED: glibcs-microblaze-linux-gnu build UNRESOLVED: glibcs-m68k-linux-gnu check UNRESOLVED: glibcs-mips-linux-gnu mkdir UNRESOLVED: glibcs-m68k-linux-gnu-coldfire-soft configure UNRESOLVED: glibcs-m68k-linux-gnu-coldfire configure PASS: glibcs-m68k-linux-gnu save-logs UNRESOLVED: glibcs-i686-linux-gnu-static-pie mkdir-lib UNRESOLVED: glibcs-ia64-linux-gnu configure FAIL: glibcs-mips-linux-gnu-nan2008 check-compilers UNRESOLVED: glibcs-m68k-linux-gnu-coldfire-soft build UNRESOLVED: glibcs-ia64-linux-gnu build UNRESOLVED: glibcs-microblaze-linux-gnu install UNRESOLVED: glibcs-mips-linux-gnu-nan2008 rm UNRESOLVED: glibcs-m68k-linux-gnu-coldfire build UNRESOLVED: glibcs-i686-linux-gnu-static-pie check UNRESOLVED: glibcs-ia64-linux-gnu install UNRESOLVED: glibcs-m68k-linux-gnu-coldfire-soft install PASS: glibcs-i686-linux-gnu-static-pie save-logs UNRESOLVED: glibcs-microblaze-linux-gnu mkdir-lib UNRESOLVED: glibcs-mips-linux-gnu-nan2008 mkdir UNRESOLVED: glibcs-m68k-linux-gnu-coldfire install UNRESOLVED: glibcs-mips-linux-gnu configure FAIL: glibcs-mips-linux-gnu-nan2008-soft check-compilers UNRESOLVED: glibcs-mips-linux-gnu build UNRESOLVED: glibcs-microblaze-linux-gnu check UNRESOLVED: glibcs-ia64-linux-gnu mkdir-lib UNRESOLVED: glibcs-m68k-linux-gnu-coldfire-soft mkdir-lib UNRESOLVED: glibcs-microblazeel-linux-gnu configure UNRESOLVED: glibcs-mips-linux-gnu install UNRESOLVED: glibcs-m68k-linux-gnu-coldfire-soft check PASS: glibcs-microblaze-linux-gnu save-logs UNRESOLVED: glibcs-m68k-linux-gnu-coldfire mkdir-lib UNRESOLVED: glibcs-mips-linux-gnu-nan2008-soft rm UNRESOLVED: glibcs-microblazeel-linux-gnu build UNRESOLVED: glibcs-ia64-linux-gnu check PASS: glibcs-m68k-linux-gnu-coldfire-soft save-logs UNRESOLVED: glibcs-m68k-linux-gnu-coldfire check FAIL: glibcs-mips-linux-gnu-soft check-compilers FAIL: glibcs-mips64-linux-gnu-n32 check-compilers UNRESOLVED: glibcs-mips-linux-gnu-nan2008-soft mkdir PASS: glibcs-ia64-linux-gnu save-logs PASS: glibcs-m68k-linux-gnu-coldfire save-logs UNRESOLVED: glibcs-mips-linux-gnu mkdir-lib UNRESOLVED: glibcs-microblazeel-linux-gnu install UNRESOLVED: glibcs-microblazeel-linux-gnu mkdir-lib FAIL: glibcs-mips64-linux-gnu-n32-nan2008 check-compilers FAIL: glibcs-mips64-linux-gnu-n32-nan2008-soft check-compilers UNRESOLVED: glibcs-mips-linux-gnu check UNRESOLVED: glibcs-mips-linux-gnu-soft rm UNRESOLVED: glibcs-mips64-linux-gnu-n32 rm UNRESOLVED: glibcs-microblazeel-linux-gnu check PASS: glibcs-microblazeel-linux-gnu save-logs UNRESOLVED: glibcs-mips-linux-gnu-soft mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008 rm PASS: glibcs-mips-linux-gnu save-logs UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008-soft rm FAIL: glibcs-mips64-linux-gnu-n32-soft check-compilers FAIL: glibcs-mips64-linux-gnu-n64 check-compilers UNRESOLVED: glibcs-mips64-linux-gnu-n32-soft rm UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008-soft mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n32 mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008 mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n64 rm UNRESOLVED: glibcs-mips64-linux-gnu-n32-soft mkdir UNRESOLVED: glibcs-mips-linux-gnu-nan2008 configure UNRESOLVED: glibcs-mips-linux-gnu-nan2008 build UNRESOLVED: glibcs-mips-linux-gnu-nan2008-soft configure UNRESOLVED: glibcs-mips-linux-gnu-nan2008 install UNRESOLVED: glibcs-mips64-linux-gnu-n64 mkdir UNRESOLVED: glibcs-mips-linux-gnu-nan2008 mkdir-lib UNRESOLVED: glibcs-mips-linux-gnu-nan2008-soft build UNRESOLVED: glibcs-mips-linux-gnu-nan2008 check PASS: glibcs-mips-linux-gnu-nan2008 save-logs UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008 configure FAIL: glibcs-mips64-linux-gnu-n64-nan2008 check-compilers UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008 build UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008 rm UNRESOLVED: glibcs-mips-linux-gnu-nan2008-soft install UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008 install UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008 mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008 mkdir-lib UNRESOLVED: glibcs-mips-linux-gnu-nan2008-soft mkdir-lib UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008 check UNRESOLVED: glibcs-mips-linux-gnu-soft configure UNRESOLVED: glibcs-mips-linux-gnu-nan2008-soft check PASS: glibcs-mips64-linux-gnu-n32-nan2008 save-logs PASS: glibcs-mips-linux-gnu-nan2008-soft save-logs UNRESOLVED: glibcs-mips-linux-gnu-soft build FAIL: glibcs-mips64-linux-gnu-n64-nan2008-soft check-compilers UNRESOLVED: glibcs-mips64-linux-gnu-n32 configure UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008 configure FAIL: glibcs-mips64-linux-gnu-n64-soft check-compilers UNRESOLVED: glibcs-mips64-linux-gnu-n64 configure UNRESOLVED: glibcs-mips64-linux-gnu-n64 build UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008-soft configure UNRESOLVED: glibcs-mips64-linux-gnu-n32-soft configure UNRESOLVED: glibcs-mips64-linux-gnu-n64-soft rm UNRESOLVED: glibcs-mips64-linux-gnu-n32 build UNRESOLVED: glibcs-mips-linux-gnu-soft install UNRESOLVED: glibcs-mips64-linux-gnu-n64 install UNRESOLVED: glibcs-mips64-linux-gnu-n64-soft mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008 build UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008-soft rm UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008-soft build UNRESOLVED: glibcs-mips64-linux-gnu-n32-soft build UNRESOLVED: glibcs-mips64-linux-gnu-n64 mkdir-lib UNRESOLVED: glibcs-mips64-linux-gnu-n64 check UNRESOLVED: glibcs-mips64-linux-gnu-n32-soft install UNRESOLVED: glibcs-mips-linux-gnu-soft mkdir-lib PASS: glibcs-mips64-linux-gnu-n64 save-logs UNRESOLVED: glibcs-mips64-linux-gnu-n32 install UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008-soft install UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008 install UNRESOLVED: glibcs-mips64-linux-gnu-n32 mkdir-lib UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008-soft mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n32-soft mkdir-lib FAIL: glibcs-mips64el-linux-gnu-n32 check-compilers UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008-soft mkdir-lib UNRESOLVED: glibcs-mips64-linux-gnu-n32 check UNRESOLVED: glibcs-mips-linux-gnu-soft check UNRESOLVED: glibcs-mips64-linux-gnu-n32-nan2008-soft check PASS: glibcs-mips64-linux-gnu-n32 save-logs PASS: glibcs-mips-linux-gnu-soft save-logs PASS: glibcs-mips64-linux-gnu-n32-nan2008-soft save-logs FAIL: glibcs-mips64el-linux-gnu-n32-nan2008-soft check-compilers UNRESOLVED: glibcs-mips64-linux-gnu-n32-soft check FAIL: glibcs-mips64el-linux-gnu-n32-soft check-compilers UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008 mkdir-lib UNRESOLVED: glibcs-mips64el-linux-gnu-n32 rm FAIL: glibcs-mips64el-linux-gnu-n32-nan2008 check-compilers UNRESOLVED: glibcs-mips64el-linux-gnu-n32-soft rm PASS: glibcs-mips64-linux-gnu-n32-soft save-logs UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008 rm UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008-soft rm UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008 check UNRESOLVED: glibcs-mips64el-linux-gnu-n32 mkdir UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008 mkdir PASS: glibcs-mips64-linux-gnu-n64-nan2008 save-logs FAIL: glibcs-mips64el-linux-gnu-n64 check-compilers UNRESOLVED: glibcs-mips64el-linux-gnu-n32-soft mkdir FAIL: glibcs-mips64el-linux-gnu-n64-nan2008 check-compilers UNRESOLVED: glibcs-mips64el-linux-gnu-n64 rm UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008-soft mkdir UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008 rm UNRESOLVED: glibcs-mips64el-linux-gnu-n64 mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n64-soft configure UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008 mkdir UNRESOLVED: glibcs-mips64-linux-gnu-n64-soft build UNRESOLVED: glibcs-mips64-linux-gnu-n64-soft install UNRESOLVED: glibcs-mips64el-linux-gnu-n64 configure UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008 configure UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008-soft configure UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008 build UNRESOLVED: glibcs-mips64-linux-gnu-n64-soft mkdir-lib UNRESOLVED: glibcs-mips64el-linux-gnu-n64 build UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008 install UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008 configure UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008-soft build UNRESOLVED: glibcs-mips64-linux-gnu-n64-soft check UNRESOLVED: glibcs-mips64el-linux-gnu-n64 install UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008 build PASS: glibcs-mips64-linux-gnu-n64-soft save-logs UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008 mkdir-lib UNRESOLVED: glibcs-mips64el-linux-gnu-n32-soft configure UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008-soft install UNRESOLVED: glibcs-mips64el-linux-gnu-n32 configure UNRESOLVED: glibcs-mips64el-linux-gnu-n32 build FAIL: glibcs-mips64el-linux-gnu-n64-nan2008-soft check-compilers UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008-soft configure UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008-soft mkdir-lib UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008 check UNRESOLVED: glibcs-mips64el-linux-gnu-n32 install UNRESOLVED: glibcs-mips64el-linux-gnu-n32-soft build PASS: glibcs-mips64el-linux-gnu-n64-nan2008 save-logs UNRESOLVED: glibcs-mips64el-linux-gnu-n64 mkdir-lib UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008 install UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008-soft rm UNRESOLVED: glibcs-mips64-linux-gnu-n64-nan2008-soft check UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008-soft build UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008 mkdir-lib UNRESOLVED: glibcs-mips64el-linux-gnu-n32 mkdir-lib FAIL: glibcs-mips64el-linux-gnu-n64-soft check-compilers UNRESOLVED: glibcs-mips64el-linux-gnu-n64 check UNRESOLVED: glibcs-mips64el-linux-gnu-n32 check PASS: glibcs-mips64-linux-gnu-n64-nan2008-soft save-logs UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008-soft mkdir PASS: glibcs-mips64el-linux-gnu-n64 save-logs UNRESOLVED: glibcs-mips64el-linux-gnu-n32-soft install UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008-soft install UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008 check FAIL: glibcs-mipsel-linux-gnu-nan2008 check-compilers PASS: glibcs-mips64el-linux-gnu-n32 save-logs UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008 rm FAIL: glibcs-mipsel-linux-gnu check-compilers UNRESOLVED: glibcs-mips64el-linux-gnu-n64-soft rm PASS: glibcs-mips64el-linux-gnu-n32-nan2008 save-logs UNRESOLVED: glibcs-mipsel-linux-gnu rm UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008 mkdir UNRESOLVED: glibcs-mips64el-linux-gnu-n32-soft mkdir-lib FAIL: glibcs-mipsel-linux-gnu-nan2008-soft check-compilers UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008-soft mkdir-lib UNRESOLVED: glibcs-mips64el-linux-gnu-n32-soft check UNRESOLVED: glibcs-mips64el-linux-gnu-n64-soft mkdir FAIL: glibcs-mipsel-linux-gnu-soft check-compilers UNRESOLVED: glibcs-mips64el-linux-gnu-n32-nan2008-soft check PASS: glibcs-mips64el-linux-gnu-n32-soft save-logs UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008-soft rm UNRESOLVED: glibcs-mipsel-linux-gnu mkdir UNRESOLVED: glibcs-mipsel-linux-gnu-soft rm FAIL: glibcs-mipsisa32r6el-linux-gnu check-compilers PASS: glibcs-mips64el-linux-gnu-n32-nan2008-soft save-logs UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008-soft configure UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008-soft mkdir UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008-soft build FAIL: glibcs-mipsisa64r6el-linux-gnu-n32 check-compilers UNRESOLVED: glibcs-mipsel-linux-gnu-soft mkdir UNRESOLVED: glibcs-mipsisa32r6el-linux-gnu rm UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008-soft install UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008 configure UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n32 rm UNRESOLVED: glibcs-mipsisa32r6el-linux-gnu mkdir UNRESOLVED: glibcs-mips64el-linux-gnu-n64-soft configure UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008 build UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n32 mkdir UNRESOLVED: glibcs-mips64el-linux-gnu-n64-soft build UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008 install UNRESOLVED: glibcs-mips64el-linux-gnu-n64-soft install UNRESOLVED: glibcs-mipsel-linux-gnu-soft configure UNRESOLVED: glibcs-mipsel-linux-gnu-soft build UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n32 configure UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008 mkdir-lib UNRESOLVED: glibcs-mipsel-linux-gnu-soft install UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n32 build UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008-soft mkdir-lib UNRESOLVED: glibcs-mips64el-linux-gnu-n64-soft mkdir-lib UNRESOLVED: glibcs-mipsel-linux-gnu-soft mkdir-lib UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n32 install UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008 check UNRESOLVED: glibcs-mipsel-linux-gnu configure UNRESOLVED: glibcs-mipsel-linux-gnu-soft check UNRESOLVED: glibcs-mips64el-linux-gnu-n64-nan2008-soft check UNRESOLVED: glibcs-mipsel-linux-gnu build UNRESOLVED: glibcs-mips64el-linux-gnu-n64-soft check PASS: glibcs-mipsel-linux-gnu-soft save-logs PASS: glibcs-mipsel-linux-gnu-nan2008 save-logs UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n32 mkdir-lib FAIL: glibcs-nios2-linux-gnu check-compilers PASS: glibcs-mips64el-linux-gnu-n64-nan2008-soft save-logs UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008-soft configure UNRESOLVED: glibcs-mipsel-linux-gnu install PASS: glibcs-mips64el-linux-gnu-n64-soft save-logs FAIL: glibcs-mipsisa64r6el-linux-gnu-n64 check-compilers UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008-soft build UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n32 check FAIL: glibcs-powerpc-linux-gnu check-compilers UNRESOLVED: glibcs-nios2-linux-gnu rm UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n64 rm UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008-soft install FAIL: glibcs-powerpc-linux-gnu-power4 check-compilers UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n64 mkdir PASS: glibcs-mipsisa64r6el-linux-gnu-n32 save-logs UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008-soft mkdir-lib UNRESOLVED: glibcs-mipsel-linux-gnu mkdir-lib UNRESOLVED: glibcs-mipsel-linux-gnu-nan2008-soft check UNRESOLVED: glibcs-powerpc-linux-gnu rm UNRESOLVED: glibcs-nios2-linux-gnu mkdir PASS: glibcs-mipsel-linux-gnu-nan2008-soft save-logs FAIL: glibcs-powerpc-linux-gnu-soft check-compilers UNRESOLVED: glibcs-powerpc-linux-gnu-power4 rm FAIL: glibcs-powerpc64-linux-gnu check-compilers UNRESOLVED: glibcs-mipsel-linux-gnu check UNRESOLVED: glibcs-mipsisa32r6el-linux-gnu configure UNRESOLVED: glibcs-powerpc-linux-gnu mkdir UNRESOLVED: glibcs-powerpc64-linux-gnu rm UNRESOLVED: glibcs-mipsisa32r6el-linux-gnu build PASS: glibcs-mipsel-linux-gnu save-logs UNRESOLVED: glibcs-powerpc-linux-gnu-soft rm UNRESOLVED: glibcs-powerpc-linux-gnu-power4 mkdir FAIL: glibcs-powerpc64le-linux-gnu check-compilers UNRESOLVED: glibcs-powerpc64-linux-gnu mkdir UNRESOLVED: glibcs-powerpc-linux-gnu-soft mkdir UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n64 configure UNRESOLVED: glibcs-mipsisa32r6el-linux-gnu install UNRESOLVED: glibcs-powerpc64le-linux-gnu rm UNRESOLVED: glibcs-powerpc-linux-gnu configure UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n64 build UNRESOLVED: glibcs-mipsisa32r6el-linux-gnu mkdir-lib UNRESOLVED: glibcs-powerpc-linux-gnu build UNRESOLVED: glibcs-mipsisa32r6el-linux-gnu check UNRESOLVED: glibcs-powerpc64le-linux-gnu mkdir PASS: glibcs-mipsisa32r6el-linux-gnu save-logs UNRESOLVED: glibcs-nios2-linux-gnu configure UNRESOLVED: glibcs-nios2-linux-gnu build FAIL: glibcs-powerpc64le-linux-gnu-disable-multi-arch check-compilers UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n64 install UNRESOLVED: glibcs-powerpc64le-linux-gnu-disable-multi-arch rm UNRESOLVED: glibcs-nios2-linux-gnu install UNRESOLVED: glibcs-powerpc-linux-gnu install UNRESOLVED: glibcs-powerpc64le-linux-gnu-disable-multi-arch mkdir UNRESOLVED: glibcs-nios2-linux-gnu mkdir-lib UNRESOLVED: glibcs-nios2-linux-gnu check UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n64 mkdir-lib PASS: glibcs-nios2-linux-gnu save-logs UNRESOLVED: glibcs-powerpc-linux-gnu mkdir-lib UNRESOLVED: glibcs-powerpc64-linux-gnu configure UNRESOLVED: glibcs-mipsisa64r6el-linux-gnu-n64 check UNRESOLVED: glibcs-powerpc-linux-gnu-power4 configure FAIL: glibcs-riscv32-linux-gnu-rv32imac-ilp32 check-compilers UNRESOLVED: glibcs-powerpc64-linux-gnu build UNRESOLVED: glibcs-powerpc-linux-gnu check PASS: glibcs-mipsisa64r6el-linux-gnu-n64 save-logs UNRESOLVED: glibcs-powerpc64-linux-gnu install UNRESOLVED: glibcs-powerpc-linux-gnu-power4 build PASS: glibcs-powerpc-linux-gnu save-logs UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imac-ilp32 rm UNRESOLVED: glibcs-powerpc64-linux-gnu mkdir-lib UNRESOLVED: glibcs-powerpc-linux-gnu-soft configure FAIL: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 check-compilers UNRESOLVED: glibcs-powerpc64le-linux-gnu-disable-multi-arch configure UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imac-ilp32 mkdir FAIL: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d check-compilers UNRESOLVED: glibcs-powerpc-linux-gnu-power4 install UNRESOLVED: glibcs-powerpc-linux-gnu-soft build UNRESOLVED: glibcs-powerpc64-linux-gnu check UNRESOLVED: glibcs-powerpc64le-linux-gnu-disable-multi-arch build UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d rm UNRESOLVED: glibcs-powerpc64le-linux-gnu configure PASS: glibcs-powerpc64-linux-gnu save-logs UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 rm UNRESOLVED: glibcs-powerpc-linux-gnu-soft install UNRESOLVED: glibcs-powerpc64le-linux-gnu-disable-multi-arch install UNRESOLVED: glibcs-powerpc-linux-gnu-soft mkdir-lib UNRESOLVED: glibcs-powerpc64le-linux-gnu build UNRESOLVED: glibcs-powerpc64le-linux-gnu-disable-multi-arch mkdir-lib UNRESOLVED: glibcs-powerpc-linux-gnu-power4 mkdir-lib FAIL: glibcs-riscv64-linux-gnu-rv64imac-lp64 check-compilers UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d mkdir UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 mkdir UNRESOLVED: glibcs-powerpc-linux-gnu-power4 check UNRESOLVED: glibcs-powerpc64le-linux-gnu-disable-multi-arch check UNRESOLVED: glibcs-powerpc-linux-gnu-soft check UNRESOLVED: glibcs-powerpc64le-linux-gnu install PASS: glibcs-powerpc-linux-gnu-soft save-logs UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imac-lp64 rm PASS: glibcs-powerpc-linux-gnu-power4 save-logs PASS: glibcs-powerpc64le-linux-gnu-disable-multi-arch save-logs UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imac-lp64 mkdir FAIL: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 check-compilers FAIL: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d check-compilers FAIL: glibcs-s390-linux-gnu check-compilers UNRESOLVED: glibcs-powerpc64le-linux-gnu mkdir-lib UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 rm UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d rm UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d configure UNRESOLVED: glibcs-s390-linux-gnu rm UNRESOLVED: glibcs-powerpc64le-linux-gnu check UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d mkdir UNRESOLVED: glibcs-s390-linux-gnu mkdir UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d build UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 mkdir UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imac-lp64 configure UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imac-ilp32 configure PASS: glibcs-powerpc64le-linux-gnu save-logs UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imac-lp64 build UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 configure UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imac-ilp32 build UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 build UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d install FAIL: glibcs-s390x-linux-gnu check-compilers UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imac-lp64 install UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 install UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 mkdir-lib UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imac-ilp32 install UNRESOLVED: glibcs-s390x-linux-gnu rm UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d mkdir-lib UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imac-lp64 mkdir-lib UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 check PASS: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32 save-logs UNRESOLVED: glibcs-s390x-linux-gnu mkdir UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imac-ilp32 mkdir-lib UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d check UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imac-lp64 check FAIL: glibcs-s390x-linux-gnu-O3 check-compilers UNRESOLVED: glibcs-riscv32-linux-gnu-rv32imac-ilp32 check UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 configure PASS: glibcs-riscv64-linux-gnu-rv64imac-lp64 save-logs UNRESOLVED: glibcs-s390x-linux-gnu-O3 rm PASS: glibcs-riscv32-linux-gnu-rv32imafdc-ilp32d save-logs UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d configure PASS: glibcs-riscv32-linux-gnu-rv32imac-ilp32 save-logs UNRESOLVED: glibcs-s390-linux-gnu configure UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 build UNRESOLVED: glibcs-s390x-linux-gnu-O3 mkdir UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d build FAIL: glibcs-sh3eb-linux-gnu check-compilers UNRESOLVED: glibcs-sh3eb-linux-gnu rm UNRESOLVED: glibcs-s390-linux-gnu build FAIL: glibcs-sh3-linux-gnu check-compilers FAIL: glibcs-sh4-linux-gnu check-compilers UNRESOLVED: glibcs-sh3-linux-gnu rm UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 install UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d install UNRESOLVED: glibcs-sh3-linux-gnu mkdir UNRESOLVED: glibcs-sh3eb-linux-gnu mkdir UNRESOLVED: glibcs-sh4-linux-gnu rm UNRESOLVED: glibcs-s390-linux-gnu install UNRESOLVED: glibcs-s390x-linux-gnu configure UNRESOLVED: glibcs-sh4-linux-gnu mkdir UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d mkdir-lib UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 mkdir-lib UNRESOLVED: glibcs-s390x-linux-gnu build UNRESOLVED: glibcs-s390-linux-gnu mkdir-lib UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 check UNRESOLVED: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d check UNRESOLVED: glibcs-s390x-linux-gnu install UNRESOLVED: glibcs-s390x-linux-gnu-O3 configure UNRESOLVED: glibcs-s390x-linux-gnu-O3 build PASS: glibcs-riscv64-linux-gnu-rv64imafdc-lp64d save-logs UNRESOLVED: glibcs-s390-linux-gnu check PASS: glibcs-riscv64-linux-gnu-rv64imafdc-lp64 save-logs UNRESOLVED: glibcs-s390x-linux-gnu-O3 install UNRESOLVED: glibcs-sh3-linux-gnu configure PASS: glibcs-s390-linux-gnu save-logs FAIL: glibcs-sh4eb-linux-gnu check-compilers FAIL: glibcs-sh4-linux-gnu-soft check-compilers UNRESOLVED: glibcs-s390x-linux-gnu mkdir-lib FAIL: glibcs-sh4eb-linux-gnu-soft check-compilers UNRESOLVED: glibcs-sh3-linux-gnu build UNRESOLVED: glibcs-s390x-linux-gnu-O3 mkdir-lib UNRESOLVED: glibcs-sh4eb-linux-gnu rm UNRESOLVED: glibcs-sh4-linux-gnu-soft rm UNRESOLVED: glibcs-sh4eb-linux-gnu mkdir UNRESOLVED: glibcs-sh4-linux-gnu-soft mkdir UNRESOLVED: glibcs-s390x-linux-gnu-O3 check UNRESOLVED: glibcs-s390x-linux-gnu check UNRESOLVED: glibcs-sh4eb-linux-gnu-soft rm UNRESOLVED: glibcs-sh3-linux-gnu install UNRESOLVED: glibcs-sh3-linux-gnu mkdir-lib UNRESOLVED: glibcs-sh3eb-linux-gnu configure PASS: glibcs-s390x-linux-gnu save-logs UNRESOLVED: glibcs-sh3-linux-gnu check UNRESOLVED: glibcs-sh3eb-linux-gnu build UNRESOLVED: glibcs-sh4-linux-gnu configure PASS: glibcs-sh3-linux-gnu save-logs PASS: glibcs-s390x-linux-gnu-O3 save-logs UNRESOLVED: glibcs-sh4eb-linux-gnu-soft mkdir FAIL: glibcs-sparc64-linux-gnu-disable-multi-arch check-compilers FAIL: glibcs-sparc64-linux-gnu check-compilers UNRESOLVED: glibcs-sh4-linux-gnu build UNRESOLVED: glibcs-sh3eb-linux-gnu install FAIL: glibcs-sparcv8-linux-gnu-leon3 check-compilers UNRESOLVED: glibcs-sparc64-linux-gnu-disable-multi-arch rm UNRESOLVED: glibcs-sparc64-linux-gnu rm UNRESOLVED: glibcs-sparcv8-linux-gnu-leon3 rm UNRESOLVED: glibcs-sh3eb-linux-gnu mkdir-lib UNRESOLVED: glibcs-sh4-linux-gnu install UNRESOLVED: glibcs-sh4-linux-gnu-soft configure UNRESOLVED: glibcs-sparc64-linux-gnu mkdir UNRESOLVED: glibcs-sparc64-linux-gnu-disable-multi-arch mkdir UNRESOLVED: glibcs-sh4eb-linux-gnu configure UNRESOLVED: glibcs-sh4-linux-gnu-soft build UNRESOLVED: glibcs-sh3eb-linux-gnu check UNRESOLVED: glibcs-sparcv8-linux-gnu-leon3 mkdir UNRESOLVED: glibcs-sh4-linux-gnu-soft install UNRESOLVED: glibcs-sh4eb-linux-gnu build UNRESOLVED: glibcs-sh4-linux-gnu mkdir-lib PASS: glibcs-sh3eb-linux-gnu save-logs UNRESOLVED: glibcs-sh4-linux-gnu-soft mkdir-lib UNRESOLVED: glibcs-sh4-linux-gnu-soft check UNRESOLVED: glibcs-sh4-linux-gnu check PASS: glibcs-sh4-linux-gnu-soft save-logs UNRESOLVED: glibcs-sh4eb-linux-gnu install FAIL: glibcs-sparcv9-linux-gnu check-compilers UNRESOLVED: glibcs-sh4eb-linux-gnu mkdir-lib UNRESOLVED: glibcs-sparc64-linux-gnu configure PASS: glibcs-sh4-linux-gnu save-logs FAIL: glibcs-sparcv9-linux-gnu-disable-multi-arch check-compilers UNRESOLVED: glibcs-sparc64-linux-gnu build UNRESOLVED: glibcs-sh4eb-linux-gnu check UNRESOLVED: glibcs-sparcv9-linux-gnu-disable-multi-arch rm UNRESOLVED: glibcs-sparcv9-linux-gnu rm FAIL: glibcs-x86_64-linux-gnu check-compilers PASS: glibcs-sh4eb-linux-gnu save-logs UNRESOLVED: glibcs-sparc64-linux-gnu install FAIL: glibcs-x86_64-linux-gnu-disable-multi-arch check-compilers UNRESOLVED: glibcs-sparcv9-linux-gnu mkdir UNRESOLVED: glibcs-sparcv9-linux-gnu-disable-multi-arch mkdir UNRESOLVED: glibcs-sh4eb-linux-gnu-soft configure UNRESOLVED: glibcs-x86_64-linux-gnu rm UNRESOLVED: glibcs-sparc64-linux-gnu mkdir-lib UNRESOLVED: glibcs-sparc64-linux-gnu check UNRESOLVED: glibcs-sh4eb-linux-gnu-soft build UNRESOLVED: glibcs-x86_64-linux-gnu-disable-multi-arch rm UNRESOLVED: glibcs-x86_64-linux-gnu mkdir PASS: glibcs-sparc64-linux-gnu save-logs UNRESOLVED: glibcs-sparc64-linux-gnu-disable-multi-arch configure UNRESOLVED: glibcs-sh4eb-linux-gnu-soft install UNRESOLVED: glibcs-sparc64-linux-gnu-disable-multi-arch build UNRESOLVED: glibcs-sh4eb-linux-gnu-soft mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu-disable-multi-arch mkdir UNRESOLVED: glibcs-sparc64-linux-gnu-disable-multi-arch install UNRESOLVED: glibcs-sh4eb-linux-gnu-soft check UNRESOLVED: glibcs-sparcv8-linux-gnu-leon3 configure FAIL: glibcs-x86_64-linux-gnu-minimal check-compilers UNRESOLVED: glibcs-sparcv8-linux-gnu-leon3 build PASS: glibcs-sh4eb-linux-gnu-soft save-logs FAIL: glibcs-x86_64-linux-gnu-static-pie check-compilers UNRESOLVED: glibcs-sparcv8-linux-gnu-leon3 install UNRESOLVED: glibcs-x86_64-linux-gnu-static-pie rm UNRESOLVED: glibcs-sparc64-linux-gnu-disable-multi-arch mkdir-lib UNRESOLVED: glibcs-sparcv8-linux-gnu-leon3 mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu-static-pie mkdir UNRESOLVED: glibcs-x86_64-linux-gnu-minimal rm UNRESOLVED: glibcs-sparcv8-linux-gnu-leon3 check PASS: glibcs-sparcv8-linux-gnu-leon3 save-logs UNRESOLVED: glibcs-sparc64-linux-gnu-disable-multi-arch check FAIL: glibcs-x86_64-linux-gnu-x32 check-compilers UNRESOLVED: glibcs-x86_64-linux-gnu-x32 rm PASS: glibcs-sparc64-linux-gnu-disable-multi-arch save-logs UNRESOLVED: glibcs-x86_64-linux-gnu-x32 mkdir UNRESOLVED: glibcs-x86_64-linux-gnu-minimal mkdir FAIL: glibcs-x86_64-linux-gnu-x32-static-pie check-compilers UNRESOLVED: glibcs-sparcv9-linux-gnu configure UNRESOLVED: glibcs-sparcv9-linux-gnu-disable-multi-arch configure UNRESOLVED: glibcs-x86_64-linux-gnu-static-pie configure UNRESOLVED: glibcs-sparcv9-linux-gnu build UNRESOLVED: glibcs-x86_64-linux-gnu-disable-multi-arch configure UNRESOLVED: glibcs-x86_64-linux-gnu-x32-static-pie rm UNRESOLVED: glibcs-x86_64-linux-gnu-disable-multi-arch build UNRESOLVED: glibcs-sparcv9-linux-gnu-disable-multi-arch build UNRESOLVED: glibcs-x86_64-linux-gnu-static-pie build UNRESOLVED: glibcs-x86_64-linux-gnu-x32-static-pie mkdir UNRESOLVED: glibcs-sparcv9-linux-gnu-disable-multi-arch install UNRESOLVED: glibcs-x86_64-linux-gnu configure UNRESOLVED: glibcs-sparcv9-linux-gnu-disable-multi-arch mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu-disable-multi-arch install UNRESOLVED: glibcs-sparcv9-linux-gnu install UNRESOLVED: glibcs-sparcv9-linux-gnu-disable-multi-arch check UNRESOLVED: glibcs-x86_64-linux-gnu build UNRESOLVED: glibcs-x86_64-linux-gnu install UNRESOLVED: glibcs-x86_64-linux-gnu-static-pie install PASS: glibcs-sparcv9-linux-gnu-disable-multi-arch save-logs UNRESOLVED: glibcs-x86_64-linux-gnu-x32 configure UNRESOLVED: glibcs-x86_64-linux-gnu mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu-disable-multi-arch mkdir-lib UNRESOLVED: glibcs-sparcv9-linux-gnu mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu-x32 build UNRESOLVED: glibcs-x86_64-linux-gnu-static-pie mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu check UNRESOLVED: glibcs-x86_64-linux-gnu-static-pie check UNRESOLVED: glibcs-x86_64-linux-gnu-disable-multi-arch check UNRESOLVED: glibcs-sparcv9-linux-gnu check UNRESOLVED: glibcs-x86_64-linux-gnu-x32 install PASS: glibcs-x86_64-linux-gnu save-logs PASS: glibcs-x86_64-linux-gnu-static-pie save-logs UNRESOLVED: glibcs-x86_64-linux-gnu-x32-static-pie configure PASS: glibcs-sparcv9-linux-gnu save-logs UNRESOLVED: glibcs-x86_64-linux-gnu-x32-static-pie build PASS: glibcs-x86_64-linux-gnu-disable-multi-arch save-logs UNRESOLVED: glibcs-x86_64-linux-gnu-x32 mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu-x32-static-pie install UNRESOLVED: glibcs-x86_64-linux-gnu-x32 check UNRESOLVED: glibcs-x86_64-linux-gnu-minimal configure PASS: glibcs-x86_64-linux-gnu-x32 save-logs UNRESOLVED: glibcs-x86_64-linux-gnu-x32-static-pie mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu-minimal build UNRESOLVED: glibcs-x86_64-linux-gnu-x32-static-pie check UNRESOLVED: glibcs-x86_64-linux-gnu-minimal install PASS: glibcs-x86_64-linux-gnu-x32-static-pie save-logs UNRESOLVED: glibcs-x86_64-linux-gnu-minimal mkdir-lib UNRESOLVED: glibcs-x86_64-linux-gnu-minimal check PASS: glibcs-x86_64-linux-gnu-minimal save-logs ``` > Thanks, > Florian > >
* Noah Goldstein: > And yet the build failes with the indicated error? > > Could you check what as/config.h contains? This is very odd. > > /* Define to 1 if you want to generate ELF common symbols with the STT_COMMON > type by default. */ > #define DEFAULT_GENERATE_ELF_STT_COMMON 0 > > is in gas/config.h > > Include tar file of all logs for the build. I must say I'm stumped, sorry. Do you use ccache? NFS or some other unusual file system? I remember seeing something like that before, but I can't remember what the cause was and what I did to fix it. Ohhhh, wait, is . on your path by any chance? Thanks, Florian
On Mon, Sep 27, 2021 at 1:56 PM Florian Weimer <fweimer@redhat.com> wrote: > > * Noah Goldstein: > > > And yet the build failes with the indicated error? > > > > Could you check what as/config.h contains? This is very odd. > > > > /* Define to 1 if you want to generate ELF common symbols with the STT_COMMON > > type by default. */ > > #define DEFAULT_GENERATE_ELF_STT_COMMON 0 > > > > is in gas/config.h > > > > Include tar file of all logs for the build. > > I must say I'm stumped, sorry. No problem. Thank you for taking the time! > > Do you use ccache? NFS or some other unusual file system? Using ext4: /dev/nvme0n1p4 ext4 > > I remember seeing something like that before, but I can't remember what > the cause was and what I did to fix it. > > Ohhhh, wait, is . on your path by any chance? "." is not a complete anywhere path but shows up for example in: /home/noah/.local/bin Could the issue be related to LD_LIBRARY_PATH picking up something from my system maybe? > > Thanks, > Florian >
* Noah Goldstein: >> I remember seeing something like that before, but I can't remember what >> the cause was and what I did to fix it. >> >> Ohhhh, wait, is . on your path by any chance? > > "." is not a complete anywhere path but shows up for example in: > /home/noah/.local/bin Hmm, okay, and that failure is during the gcc stage. > Could the issue be related to LD_LIBRARY_PATH picking up something > from my system maybe? Seem unlikely, but possible. Looking at the environment settings is probably a good idea. Have you installed any compiler wrappers, e.g. ccache, or hardening wrappers? You could also take this command: depbase=`echo as.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I. -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas -I. -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas -I../bfd -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/config -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/../include -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/.. -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/../bfd -DLOCALEDIR="\"/home/noah/programs/opensource/glibc-dev/build-many/install/compilers/x86_64-linux-gnu/share/locale\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wstack-usage=262144 -Werror -Wwrite-strings -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/../zlib -g -O2 -MT as.o -MD -MP -MF $depbase.Tpo -c -o as.o /home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c add --save-temps, and invoke it in the directory /home/noah/programs/opensource/glibc-dev/build-many/build/compilers/x86_64-linux-gnu/binutils/gas. This should produce an as.i file, and from the # lines in it, it should be possible to glean from where the config.h file actually used comes from. Or perhaps use the -H option and hope that the include nesting reveals what's going on. Thanks, Florian
On Mon, Sep 27, 2021 at 2:34 PM Florian Weimer <fweimer@redhat.com> wrote: > > * Noah Goldstein: > > >> I remember seeing something like that before, but I can't remember what > >> the cause was and what I did to fix it. > >> > >> Ohhhh, wait, is . on your path by any chance? > > > > "." is not a complete anywhere path but shows up for example in: > > /home/noah/.local/bin > > Hmm, okay, and that failure is during the gcc stage. > > > Could the issue be related to LD_LIBRARY_PATH picking up something > > from my system maybe? > > Seem unlikely, but possible. Looking at the environment settings is > probably a good idea. > > Have you installed any compiler wrappers, e.g. ccache, or hardening > wrappers? No. > > You could also take this command: > > depbase=`echo as.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; gcc -DHAVE_CONFIG_H -I. -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas -I. -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas -I../bfd -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/config -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/../include -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/.. -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/../bfd -DLOCALEDIR="\"/home/noah/programs/opensource/glibc-dev/build-many/install/compilers/x86_64-linux-gnu/share/locale\"" -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wstack-usage=262144 -Werror -Wwrite-strings -I/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/../zlib -g -O2 -MT as.o -MD -MP -MF $depbase.Tpo -c -o as.o /home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c > > add --save-temps, and invoke it in the directory > /home/noah/programs/opensource/glibc-dev/build-many/build/compilers/x86_64-linux-gnu/binutils/gas. > This should produce an as.i file, and from the # lines in it, it should > be possible to glean from where the config.h file actually used comes > from. Or perhaps use the -H option and hope that the include nesting > reveals what's going on. From as.i # 0 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" # 1 "/home/noah/programs/opensource/glibc-dev/build-many/build/compilers/x86_64-linux-gnu/binutils/gas//" # 0 "<built-in>" # 0 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 0 "<command-line>" 2 # 1 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" # 38 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" # 1 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" 1 # 37 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" # 1 "../bfd/config.h" 1 # 38 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" 2 Seems to be using "../bfd/config.h Which does not contain a define for DEFAULT_GENERATE_ELF_STT_COMMON > > Thanks, > Florian >
* Noah Goldstein: > From as.i > > # 0 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" > # 1 "/home/noah/programs/opensource/glibc-dev/build-many/build/compilers/x86_64-linux-gnu/binutils/gas//" > # 0 "<built-in>" > # 0 "<command-line>" > # 1 "/usr/include/stdc-predef.h" 1 3 4 > # 0 "<command-line>" 2 > # 1 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" > # 38 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" > # 1 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" > 1 > # 37 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" > # 1 "../bfd/config.h" 1 The above corresponds to this source line: #include "config.h" > # 38 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" > 2 > > Seems to be using "../bfd/config.h > > Which does not contain a define for DEFAULT_GENERATE_ELF_STT_COMMON Right, that's wrong. We saw something like this before: <https://sourceware.org/legacy-ml/gdb-patches/2020-01/msg00417.html> But the command line seems to be right this time: -I. should pick up /home/noah/programs/opensource/glibc-dev/build-many/build/compilers/x86_64-linux-gnu/binutils/gas/config.h which hopefully exists on your system. I still haven't got a clue what is going on here. Florian
On Mon, Sep 27, 2021 at 2:59 PM Florian Weimer <fweimer@redhat.com> wrote: > > * Noah Goldstein: > > > From as.i > > > > # 0 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" > > # 1 "/home/noah/programs/opensource/glibc-dev/build-many/build/compilers/x86_64-linux-gnu/binutils/gas//" > > # 0 "<built-in>" > > # 0 "<command-line>" > > # 1 "/usr/include/stdc-predef.h" 1 3 4 > > # 0 "<command-line>" 2 > > # 1 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" > > # 38 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.c" > > # 1 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" > > 1 > > # 37 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" > > # 1 "../bfd/config.h" 1 > > The above corresponds to this source line: #include "config.h" > > > # 38 "/home/noah/programs/opensource/glibc-dev/build-many/src/binutils/gas/as.h" > > 2 > > > > Seems to be using "../bfd/config.h > > > > Which does not contain a define for DEFAULT_GENERATE_ELF_STT_COMMON > > Right, that's wrong. We saw something like this before: > > <https://sourceware.org/legacy-ml/gdb-patches/2020-01/msg00417.html> > > But the command line seems to be right this time: -I. should pick up > > /home/noah/programs/opensource/glibc-dev/build-many/build/compilers/x86_64-linux-gnu/binutils/gas/config.h > > which hopefully exists on your system. It does. > > I still haven't got a clue what is going on here. :/ Either way, thank you for the help! I'm gunna post the patch w.o fully build-many-glibcs.py tests. > > Florian >
* Noah Goldstein:
> I'm gunna post the patch w.o fully build-many-glibcs.py tests.
Right. I can run it through the build for you, I've still got a lab
machine checked out.
Florian
On Mon, Sep 27, 2021 at 3:24 PM Florian Weimer <fweimer@redhat.com> wrote: > > * Noah Goldstein: > > > I'm gunna post the patch w.o fully build-many-glibcs.py tests. > > Right. I can run it through the build for you, I've still got a lab > machine checked out. Thanks :) I just posted the patch. > > Florian >
On Mon, Sep 27, 2021 at 3:38 PM Noah Goldstein <goldstein.w.n@gmail.com> wrote: > > On Mon, Sep 27, 2021 at 3:24 PM Florian Weimer <fweimer@redhat.com> wrote: > > > > * Noah Goldstein: > > > > > I'm gunna post the patch w.o fully build-many-glibcs.py tests. > > > > Right. I can run it through the build for you, I've still got a lab > > machine checked out. > > Thanks :) > > I just posted the patch. > > > > Florian > > Figured it out. I had $C_INCLUDE_PATH as ":" instead of unset. See PASS for build now :) Thank you for your help! I'll run the ABI tests overnight. Will: $> python3 src/glibc/scripts/build-many-glibcs.py build-many/ checkout gcc-vcs-11; echo "Host Libraries"; python3 src/glibc/scripts/build-many-glibcs.py build-many host-libraries --keep=failed; echo "Compilers"; python3 src/glibc/scripts/build-many-glibcs.py build-many compilers x86_64-linux-gnu --keep=failed; python3 src/glibc/scripts/build-many-glibcs.py build-many glibcs --keep=failed be sufficient to test all GLIBC abi builds?
diff --git a/benchtests/Makefile b/benchtests/Makefile index 1530939a8c..5fc495eb57 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -47,7 +47,7 @@ bench := $(foreach B,$(filter bench-%,${BENCHSET}), ${${B}}) endif # String function benchmarks. -string-benchset := memccpy memchr memcmp memcpy memmem memmove \ +string-benchset := bcmp memccpy memchr memcmp memcpy memmem memmove \ mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \ strcat strchr strchrnul strcmp strcpy strcspn strlen \ strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \ diff --git a/benchtests/bench-bcmp.c b/benchtests/bench-bcmp.c new file mode 100644 index 0000000000..1023639787 --- /dev/null +++ b/benchtests/bench-bcmp.c @@ -0,0 +1,20 @@ +/* Measure bcmp functions. + Copyright (C) 2015-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#define TEST_BCMP 1 +#include "bench-memcmp.c" diff --git a/benchtests/bench-memcmp.c b/benchtests/bench-memcmp.c index 744c7ec5ba..4d5f8fb766 100644 --- a/benchtests/bench-memcmp.c +++ b/benchtests/bench-memcmp.c @@ -17,7 +17,9 @@ <https://www.gnu.org/licenses/>. */ #define TEST_MAIN -#ifdef WIDE +#ifdef TEST_BCMP +# define TEST_NAME "bcmp" +#elif defined WIDE # define TEST_NAME "wmemcmp" #else # define TEST_NAME "memcmp" diff --git a/string/Makefile b/string/Makefile index f0fce2a0b8..f1f67ee157 100644 --- a/string/Makefile +++ b/string/Makefile @@ -35,7 +35,7 @@ routines := strcat strchr strcmp strcoll strcpy strcspn \ strncat strncmp strncpy \ strrchr strpbrk strsignal strspn strstr strtok \ strtok_r strxfrm memchr memcmp memmove memset \ - mempcpy bcopy bzero ffs ffsll stpcpy stpncpy \ + mempcpy bcmp bcopy bzero ffs ffsll stpcpy stpncpy \ strcasecmp strncase strcasecmp_l strncase_l \ memccpy memcpy wordcopy strsep strcasestr \ swab strfry memfrob memmem rawmemchr strchrnul \ @@ -52,7 +52,7 @@ strop-tests := memchr memcmp memcpy memmove mempcpy memset memccpy \ stpcpy stpncpy strcat strchr strcmp strcpy strcspn \ strlen strncmp strncpy strpbrk strrchr strspn memmem \ strstr strcasestr strnlen strcasecmp strncasecmp \ - strncat rawmemchr strchrnul bcopy bzero memrchr \ + strncat rawmemchr strchrnul bcmp bcopy bzero memrchr \ explicit_bzero tests := tester inl-tester noinl-tester testcopy test-ffs \ tst-strlen stratcliff tst-svc tst-inlcall \ diff --git a/string/test-bcmp.c b/string/test-bcmp.c new file mode 100644 index 0000000000..6d19a4a87c --- /dev/null +++ b/string/test-bcmp.c @@ -0,0 +1,21 @@ +/* Test and measure bcmp functions. + Copyright (C) 2012-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#define BAD_RESULT(result, expec) ((!(result)) != (!(expec))) +#define TEST_BCMP 1 +#include "test-memcmp.c" diff --git a/string/test-memcmp.c b/string/test-memcmp.c index 6ddbc05d2f..c630e6799d 100644 --- a/string/test-memcmp.c +++ b/string/test-memcmp.c @@ -17,11 +17,14 @@ <https://www.gnu.org/licenses/>. */ #define TEST_MAIN -#ifdef WIDE +#ifdef TEST_BCMP +# define TEST_NAME "bcmp" +#elif defined WIDE # define TEST_NAME "wmemcmp" #else # define TEST_NAME "memcmp" #endif + #include "test-string.h" #ifdef WIDE # include <inttypes.h> @@ -35,6 +38,7 @@ # define CHARBYTES 4 # define CHAR__MIN WCHAR_MIN # define CHAR__MAX WCHAR_MAX + int simple_wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n) { @@ -48,8 +52,11 @@ simple_wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n) } #else # include <limits.h> - -# define MEMCMP memcmp +# ifdef TEST_BCMP +# define MEMCMP bcmp +# else +# define MEMCMP memcmp +# endif # define MEMCPY memcpy # define SIMPLE_MEMCMP simple_memcmp # define CHAR char @@ -69,6 +76,12 @@ simple_memcmp (const char *s1, const char *s2, size_t n) } #endif +# ifndef BAD_RESULT +# define BAD_RESULT(result, expec) \ + (((result) == 0 && (expec)) || ((result) < 0 && (expec) >= 0) || \ + ((result) > 0 && (expec) <= 0)) +# endif + typedef int (*proto_t) (const CHAR *, const CHAR *, size_t); IMPL (SIMPLE_MEMCMP, 0) @@ -79,9 +92,7 @@ check_result (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t len, int exp_result) { int result = CALL (impl, s1, s2, len); - if ((exp_result == 0 && result != 0) - || (exp_result < 0 && result >= 0) - || (exp_result > 0 && result <= 0)) + if (BAD_RESULT(result, exp_result)) { error (0, 0, "Wrong result in function %s %d %d", impl->name, result, exp_result); @@ -186,9 +197,7 @@ do_random_tests (void) { r = CALL (impl, (CHAR *) p1 + align1, (const CHAR *) p2 + align2, len); - if ((r == 0 && result) - || (r < 0 && result >= 0) - || (r > 0 && result <= 0)) + if (BAD_RESULT(r, result)) { error (0, 0, "Iteration %zd - wrong result in function %s (%zd, %zd, %zd, %zd) %ld != %d, p1 %p p2 %p", n, impl->name, align1 * CHARBYTES & 63, align2 * CHARBYTES & 63, len, pos, r, result, p1, p2); diff --git a/sysdeps/x86_64/memcmp.S b/sysdeps/x86_64/memcmp.S index 870e15c5a0..dfd0269db2 100644 --- a/sysdeps/x86_64/memcmp.S +++ b/sysdeps/x86_64/memcmp.S @@ -356,6 +356,4 @@ L(ATR32res): .p2align 4,, 4 END(memcmp) -#undef bcmp -weak_alias (memcmp, bcmp) libc_hidden_builtin_def (memcmp) diff --git a/sysdeps/x86_64/multiarch/Makefile b/sysdeps/x86_64/multiarch/Makefile index 26be40959c..9dd0d8c3ff 100644 --- a/sysdeps/x86_64/multiarch/Makefile +++ b/sysdeps/x86_64/multiarch/Makefile @@ -1,6 +1,7 @@ ifeq ($(subdir),string) sysdep_routines += strncat-c stpncpy-c strncpy-c \ + bcmp-sse2 bcmp-sse4 bcmp-avx2 \ strcmp-sse2 strcmp-sse2-unaligned strcmp-ssse3 \ strcmp-sse4_2 strcmp-avx2 \ strncmp-sse2 strncmp-ssse3 strncmp-sse4_2 strncmp-avx2 \ @@ -40,6 +41,7 @@ sysdep_routines += strncat-c stpncpy-c strncpy-c \ memset-sse2-unaligned-erms \ memset-avx2-unaligned-erms \ memset-avx512-unaligned-erms \ + bcmp-avx2-rtm \ memchr-avx2-rtm \ memcmp-avx2-movbe-rtm \ memmove-avx-unaligned-erms-rtm \ @@ -59,6 +61,7 @@ sysdep_routines += strncat-c stpncpy-c strncpy-c \ strncpy-avx2-rtm \ strnlen-avx2-rtm \ strrchr-avx2-rtm \ + bcmp-evex \ memchr-evex \ memcmp-evex-movbe \ memmove-evex-unaligned-erms \ diff --git a/sysdeps/x86_64/multiarch/bcmp-avx2-rtm.S b/sysdeps/x86_64/multiarch/bcmp-avx2-rtm.S new file mode 100644 index 0000000000..d742257e4e --- /dev/null +++ b/sysdeps/x86_64/multiarch/bcmp-avx2-rtm.S @@ -0,0 +1,12 @@ +#ifndef MEMCMP +# define MEMCMP __bcmp_avx2_rtm +#endif + +#define ZERO_UPPER_VEC_REGISTERS_RETURN \ + ZERO_UPPER_VEC_REGISTERS_RETURN_XTEST + +#define VZEROUPPER_RETURN jmp L(return_vzeroupper) + +#define SECTION(p) p##.avx.rtm + +#include "bcmp-avx2.S" diff --git a/sysdeps/x86_64/multiarch/bcmp-avx2.S b/sysdeps/x86_64/multiarch/bcmp-avx2.S new file mode 100644 index 0000000000..93a9a20b17 --- /dev/null +++ b/sysdeps/x86_64/multiarch/bcmp-avx2.S @@ -0,0 +1,23 @@ +/* bcmp optimized with AVX2. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#ifndef MEMCMP +# define MEMCMP __bcmp_avx2 +#endif + +#include "bcmp-avx2.S" diff --git a/sysdeps/x86_64/multiarch/bcmp-evex.S b/sysdeps/x86_64/multiarch/bcmp-evex.S new file mode 100644 index 0000000000..ade52e8c68 --- /dev/null +++ b/sysdeps/x86_64/multiarch/bcmp-evex.S @@ -0,0 +1,23 @@ +/* bcmp optimized with EVEX. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +#ifndef MEMCMP +# define MEMCMP __bcmp_evex +#endif + +#include "memcmp-evex-movbe.S" diff --git a/sysdeps/x86_64/multiarch/bcmp-sse2.S b/sysdeps/x86_64/multiarch/bcmp-sse2.S new file mode 100644 index 0000000000..b18d570386 --- /dev/null +++ b/sysdeps/x86_64/multiarch/bcmp-sse2.S @@ -0,0 +1,23 @@ +/* bcmp optimized with SSE2 + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +# ifndef memcmp +# define memcmp __bcmp_sse2 +# endif +# define USE_AS_BCMP 1 +#include "memcmp-sse2.S" diff --git a/sysdeps/x86_64/multiarch/bcmp-sse4.S b/sysdeps/x86_64/multiarch/bcmp-sse4.S new file mode 100644 index 0000000000..ed9804053f --- /dev/null +++ b/sysdeps/x86_64/multiarch/bcmp-sse4.S @@ -0,0 +1,23 @@ +/* bcmp optimized with SSE4.1 + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +# ifndef MEMCMP +# define MEMCMP __bcmp_sse4_1 +# endif +# define USE_AS_BCMP 1 +#include "memcmp-sse4.S" diff --git a/sysdeps/x86_64/multiarch/bcmp.c b/sysdeps/x86_64/multiarch/bcmp.c new file mode 100644 index 0000000000..6e26b73ecc --- /dev/null +++ b/sysdeps/x86_64/multiarch/bcmp.c @@ -0,0 +1,35 @@ +/* Multiple versions of bcmp. + All versions must be listed in ifunc-impl-list.c. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +/* Define multiple versions only for the definition in libc. */ +#if IS_IN (libc) +# define bcmp __redirect_bcmp +# include <string.h> +# undef bcmp + +# define SYMBOL_NAME bcmp +# include "ifunc-bcmp.h" + +libc_ifunc_redirected (__redirect_bcmp, bcmp, IFUNC_SELECTOR ()); + +# ifdef SHARED +__hidden_ver1 (bcmp, __GI_bcmp, __redirect_bcmp) + __attribute__ ((visibility ("hidden"))) __attribute_copy__ (bcmp); +# endif +#endif diff --git a/sysdeps/x86_64/multiarch/ifunc-bcmp.h b/sysdeps/x86_64/multiarch/ifunc-bcmp.h new file mode 100644 index 0000000000..b0dacd8526 --- /dev/null +++ b/sysdeps/x86_64/multiarch/ifunc-bcmp.h @@ -0,0 +1,53 @@ +/* Common definition for bcmp ifunc selections. + All versions must be listed in ifunc-impl-list.c. + Copyright (C) 2017-2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <https://www.gnu.org/licenses/>. */ + +# include <init-arch.h> + +extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2) attribute_hidden; +extern __typeof (REDIRECT_NAME) OPTIMIZE (sse4_1) attribute_hidden; +extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2) attribute_hidden; +extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2_rtm) attribute_hidden; +extern __typeof (REDIRECT_NAME) OPTIMIZE (evex) attribute_hidden; + +static inline void * +IFUNC_SELECTOR (void) +{ + const struct cpu_features* cpu_features = __get_cpu_features (); + + if (CPU_FEATURE_USABLE_P (cpu_features, AVX2) + && CPU_FEATURE_USABLE_P (cpu_features, BMI2) + && CPU_FEATURE_USABLE_P (cpu_features, MOVBE) + && CPU_FEATURES_ARCH_P (cpu_features, AVX_Fast_Unaligned_Load)) + { + if (CPU_FEATURE_USABLE_P (cpu_features, AVX512VL) + && CPU_FEATURE_USABLE_P (cpu_features, AVX512BW)) + return OPTIMIZE (evex); + + if (CPU_FEATURE_USABLE_P (cpu_features, RTM)) + return OPTIMIZE (avx2_rtm); + + if (!CPU_FEATURES_ARCH_P (cpu_features, Prefer_No_VZEROUPPER)) + return OPTIMIZE (avx2); + } + + if (CPU_FEATURE_USABLE_P (cpu_features, SSE4_1)) + return OPTIMIZE (sse4_1); + + return OPTIMIZE (sse2); +} diff --git a/sysdeps/x86_64/multiarch/ifunc-impl-list.c b/sysdeps/x86_64/multiarch/ifunc-impl-list.c index 39ab10613b..dd0c393c7d 100644 --- a/sysdeps/x86_64/multiarch/ifunc-impl-list.c +++ b/sysdeps/x86_64/multiarch/ifunc-impl-list.c @@ -38,6 +38,29 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, size_t i = 0; + /* Support sysdeps/x86_64/multiarch/bcmp.c. */ + IFUNC_IMPL (i, name, bcmp, + IFUNC_IMPL_ADD (array, i, bcmp, + (CPU_FEATURE_USABLE (AVX2) + && CPU_FEATURE_USABLE (MOVBE) + && CPU_FEATURE_USABLE (BMI2)), + __bcmp_avx2) + IFUNC_IMPL_ADD (array, i, bcmp, + (CPU_FEATURE_USABLE (AVX2) + && CPU_FEATURE_USABLE (BMI2) + && CPU_FEATURE_USABLE (MOVBE) + && CPU_FEATURE_USABLE (RTM)), + __bcmp_avx2_rtm) + IFUNC_IMPL_ADD (array, i, bcmp, + (CPU_FEATURE_USABLE (AVX512VL) + && CPU_FEATURE_USABLE (AVX512BW) + && CPU_FEATURE_USABLE (MOVBE) + && CPU_FEATURE_USABLE (BMI2)), + __bcmp_evex) + IFUNC_IMPL_ADD (array, i, bcmp, CPU_FEATURE_USABLE (SSE4_1), + __bcmp_sse4_1) + IFUNC_IMPL_ADD (array, i, bcmp, 1, __bcmp_sse2)) + /* Support sysdeps/x86_64/multiarch/memchr.c. */ IFUNC_IMPL (i, name, memchr, IFUNC_IMPL_ADD (array, i, memchr, diff --git a/sysdeps/x86_64/multiarch/memcmp-sse2.S b/sysdeps/x86_64/multiarch/memcmp-sse2.S index b135fa2d40..2a4867ad18 100644 --- a/sysdeps/x86_64/multiarch/memcmp-sse2.S +++ b/sysdeps/x86_64/multiarch/memcmp-sse2.S @@ -17,7 +17,9 @@ <https://www.gnu.org/licenses/>. */ #if IS_IN (libc) -# define memcmp __memcmp_sse2 +# ifndef memcmp +# define memcmp __memcmp_sse2 +# endif # ifdef SHARED # undef libc_hidden_builtin_def diff --git a/sysdeps/x86_64/multiarch/memcmp.c b/sysdeps/x86_64/multiarch/memcmp.c index fe725f3563..1760e045df 100644 --- a/sysdeps/x86_64/multiarch/memcmp.c +++ b/sysdeps/x86_64/multiarch/memcmp.c @@ -27,8 +27,6 @@ # include "ifunc-memcmp.h" libc_ifunc_redirected (__redirect_memcmp, memcmp, IFUNC_SELECTOR ()); -# undef bcmp -weak_alias (memcmp, bcmp) # ifdef SHARED __hidden_ver1 (memcmp, __GI_memcmp, __redirect_memcmp)