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:51 PM, Martin Sebor wrote:
> 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;
And it gets even more interesting if you dig into the history of this code.

https://sourceware.org/ml/libc-alpha/2014-11/msg00459.html

The implication is this is dead code in the case we're looking at.

I wonder if the solution here is to disable the oob warning along with
the uninit warning.

jeff


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