On Wed, Dec 07, 2022 at 08:57:45PM +0000, Sam James wrote: > ../gnulib/lib/error.h:33:13: error: type of ‘error’ does not match original > declaration [-Werror=lto-type-mismatch] > 33 | extern void error (int __status, int __errnum, const char *__format, > ...) > | ^ > install-info.c:218:1: note: type mismatch in parameter 1 > 218 | error (const char *fmt, ...) > | ^ > install-info.c:218:1: note: ‘error’ was previously declared here > install-info.c:218:1: note: code may be misoptimized unless > ‘-fno-strict-aliasing’ is used > lto1: some warnings being treated as errors > lto-wrapper: fatal error: //usr/bin/x86_64-pc-linux-gnu-gcc returned 1 exit > status > compilation terminated. > /usr/lib/gcc/x86_64-pc-linux-gnu/12/../../../../x86_64-pc-linux-gnu/bin/ld: > error: lto-wrapper failed > collect2: error: ld returned 1 exit status > make[3]: *** [Makefile:1514: ginstall-info] Error 1 > ``` > > This is with GCC 12.2.1 20221203. > > We've also seen this in GNU make, so not sure if it's a > gnulib problem or not, as it may be in lib/error.h (hence CCing bug-gnulib): > - https://bugs.gentoo.org/863713 (texinfo) > - https://bugs.gentoo.org/863824 (make)
I expect it is not a gnulib problem. install-info/install-info.c declares a function called "error" which appears to clash with a function from glibc. The function called "error" in install-info is correctly used when e.g. "install-info one two three" is run, printing install-info: excess command line argument `three' It may depend on the configuration process and what parts of gnulib are being used. The "error" module is brought in by "xalloc" (which we ask for explicitly). >From the Gentoo bug report > -Werror=lto-type-mismatch: > User to find possible runtime issues in packages. It likely means the package > is unsafe to build & use with LTO. > For projects using the same identifier but with different types across > different files, they must be fixed to be consistent across the codebase. The simplest way to fix this problem would probably be to rename the "error" function in install-info.c. Perhaps this issue has never come up before because people have not used the LTO options for building.