![](https://seccdn.libravatar.org/avatar/3035b38ff33cf86f480bb169b8500b80.jpg?s=120&d=mm&r=g)
http://bugzilla.suse.com/show_bug.cgi?id=1141105
http://bugzilla.suse.com/show_bug.cgi?id=1141105#c13
Martin Liška
(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, ...) | ^~~~~ -- You are receiving this mail because: You are on the CC list for the bug.