What | Removed | Added |
---|---|---|
Flags | needinfo?(martin.liska@suse.com) |
(In reply to J��rg Schiling from comment #10) > (In reply to Martin Li��ka from comment #9) > > > That is still under investigation and since we don't have a reasonable > > test-case, we can't prove that. > > Well you have a test case. mkisofs can be used as a test case, but I guess > that any three liner that calls error() is sufficient. You already have a > 100% prove for my statements in the two bug reports with the same signature > of problems. > > BTW: I do not have access to your environment that causes the problem. > > > > It's not about a previous version of the linker. The issue started when we > > switched to LTO. Even if the problem disappears, it still not proves the bug > > is in the linker. > > I cannot say what exact bug in which exact program is the cause for the > problem, but the message you quoted does not exist anywhere in the whole > schilytools tarball but it exists in glibc.... > > Check this small program: > > cat e.c > main() > { > error("test %s\n", "foo"); > } > > cc -o e e.c > ./e > ./e: P����>��: Unknown error 4195796 > > This program uses the official parameter list for the error() function and > it produces (linked only to your local libc) the same faulty text as you see > as part of two bug reports. If you mean official parameter list from glibc, then the source code is wrong because the signature in glibc is (man error): void error(int status, int errnum, const char *format, ...); Which you can see if you properly include error.h header: e.c:5:15: warning: passing argument 1 of ���error��� makes integer from pointer without a cast [-Wint-conversion] 5 | error("test %s\n", "foo"); | ^~~~~~~~~~~ | | | char * In file included from /usr/include/error.h:57, from e.c:1: /usr/include/bits/error.h:37:12: note: expected ���int��� but argument is of type ���char *��� 37 | error (int __status, int __errnum, const char *__format, ...) | ~~~~^~~~~~~~ e.c:5:28: warning: passing argument 2 of ���error��� makes integer from pointer without a cast [-Wint-conversion] 5 | error("test %s\n", "foo"); | ^~~~~ | | | char * In file included from /usr/include/error.h:57, from e.c:1: /usr/include/bits/error.h:37:26: note: expected ���int��� but argument is of type ���char *��� 37 | error (int __status, int __errnum, const char *__format, ...) | ~~~~^~~~~~~~ e.c:5:9: error: too few arguments to function ���error��� 5 | error("test %s\n", "foo"); | ^~~~~ In file included from /usr/include/error.h:57, from e.c:1: /usr/include/bits/error.h:37:1: note: declared here 37 | error (int __status, int __errnum, const char *__format, ...) | ^~~~~