This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ToT build error with ToT GCC on Aarch64


On 07/23/2018 12:29 PM, Martin Sebor wrote:
On 07/23/2018 11:26 AM, Florian Weimer wrote:
On 07/23/2018 06:19 PM, Jeff Law wrote:
On 07/23/2018 09:51 AM, Steve Ellcey wrote:
I have run into a problem when building the ToT glibc with the ToT
GCC on
Aarch64.  I haven't dug into this enough to know if this is a GCC
problem,
a glibc problem, or just a message that needs to be ignored but I
wanted to
send out an email in case this is something that needs to be addressed
before GCC 2.28 is released.

Martin S. and I are already looking at this and I've already asked
Martin to bring in Carlos and Florian.

Would it be possible to print the full inlining stack for these GCC
warnings?  I don't see a %K format specifier (or whatever is used for
this).

I think it would make it a bit easier to track these down.

It's one of my own pet peeves with the -Warray-bounds warnings
that they don't do that.  I've quickly hacked GCC to print
the inlining stack.  It doesn't look to me like it helps that
much but I'll let you be the judge:

In file included from fnmatch.c:244:
In function ‘findidxwc’,
    inlined from ‘internal_fnwmatch’ at fnmatch_loop.c:404:10:
../locale/weightwc.h:124:28: warning: array subscript 1 is outside array
bounds of ‘wint_t[1]’ {aka ‘unsigned int[1]’} [-Warray-bounds]

Here's a bit more context showing the variable being referenced
(for simplicity, GCC takes singleton objects as arrays of one
element):

In file included from fnmatch.c:244:
In function ‘findidxwc’,
    inlined from ‘internal_fnwmatch’ at fnmatch_loop.c:404:10:
../locale/weightwc.h:124:28: error: array subscript 1 is outside array bounds of ‘wint_t[1]’ {aka ‘unsigned int[1]’} [-Werror=array-bounds]
    if (cp[nhere - 1] > usrc[nhere -1])
                        ~~~~^~~~~~~~~~
In file included from fnmatch.c:315:
fnmatch_loop.c: In function ‘internal_fnwmatch’:
fnmatch_loop.c:342:13: note: while referencing ‘str’
       UCHAR str;
             ^~~

There's an interesting comment above the declaration:

    /* It's important that STR be a scalar variable rather
       than a one-element array, because GCC (at least 4.9.2
       -O2 on x86-64) can be confused by the array and
       diagnose a "used initialized" in a dead branch in the
       findidx function.  */
    UCHAR str;

Martin


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]