Martin Li��ka changed bug 1141105
What Removed Added
Flags needinfo?(martin.liska@suse.com)  

Comment # 13 on bug 1141105 from
(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, ...)
      | ^~~~~


You are receiving this mail because: