On 7/30/21 9:30 AM, Joseph Myers wrote:
There are a lot of failures building glibc with mainline GCC right now
<https://sourceware.org/pipermail/libc-testresults/2021q3/008335.html>
(previously, there were ICEs building glibc on various architectures, so
these might be hard to bisect):


* x86_64-linux-gnu: "error: array subscript 0 is outside array bounds of
'__seg_fs struct pthread * __seg_fs[0]' [-Werror=array-bounds]".  This is
the one discussed in
<https://gcc.gnu.org/pipermail/gcc/2021-July/236922.html>.

I submitted a patch for this warning to Glibc:
https://sourceware.org/pipermail/libc-alpha/2021-July/128829.html
which is what ultimately precipitated Florian's question.  If null
pointers to named address spaces are valid I'll adjust GCC to
avoid the warning for now (as has been discussed, for GCC 12 I'd
like to redo the logic to detect the problematic null pointer
arithmetic instead).

I haven't seen the rest of the warnings in my tests but
the uninit one could be due to the interaction of the recent
threader changes and a -Wuninitialized enhancement I committed
earlier this week that I didn't test with the new threader (but
did with Glibc with no new warnings).  I'll look into the warnings
if I can quickly reproduce them with a native x86_64-linux build
or get the translation units for other targets.

Martin


In file included from ../sysdeps/generic/libc-tsd.h:44,
                  from ../include/../locale/localeinfo.h:224,
                  from ../include/ctype.h:26,
                  from loadmsgcat.c:29:
loadmsgcat.c: In function '_nl_load_domain':
../sysdeps/x86_64/nptl/tls.h:185:4: error: array subscript 0 is outside array 
bounds of '__seg_fs struct pthread * __seg_fs[0]' [-Werror=array-bounds]
   185 |   (*(struct pthread *__seg_fs *) offsetof (struct pthread, 
header.self))
       |   
~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../sysdeps/nptl/libc-lock.h:92:18: note: in expansion of macro 'THREAD_SELF'
    92 |     void *self = THREAD_SELF;                                          
       \
       |                  ^~~~~~~~~~~
loadmsgcat.c:770:3: note: in expansion of macro '__libc_lock_lock_recursive'
   770 |   __libc_lock_lock_recursive (lock);
       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~


* i686-gnu:

hurdselect.c: In function '_hurd_select':
hurdselect.c:555:7: error: 'ss' may be used uninitialized in this function 
[-Werror=maybe-uninitialized]
   555 |       _hurd_sigstate_unlock (ss);
       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~

As far as I can tell, this is a false positive from the compiler (this
code is only reached if (sigport != MACH_PORT_NULL), in which case ss has
been initialized).


* Several architectures (all of them 32-bit), powerpc-linux-gnu for
example:

In file included from t.61.c:437:
In function 'from_t_61_single',
     inlined from 'gconv' at ../iconv/skeleton.c:568:15:
../iconv/loop.c:440:22: error: writing 1 byte into a region of size 0 
[-Werror=stringop-overflow=]
   440 |     bytebuf[inlen++] = *inptr++;
       |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~
../iconv/loop.c: In function 'gconv':
../iconv/loop.c:382:17: note: at offset 2 into destination object 'bytebuf' of 
size 2
   382 |   unsigned char bytebuf[MAX_NEEDED_INPUT];
       |                 ^~~~~~~

I don't know if this is a false positive or not.


* powerpc64-linux-gnu:

In file included from ../sysdeps/powerpc/dl-tls.c:20:
In function '_dl_allocate_tls_init',
     inlined from '_dl_allocate_tls' at ../elf/dl-tls.c:621:10:
../elf/dl-tls.c:529:10: error: array subscript -1 is outside array bounds of 
'void[9223372036854775807]' [-Werror=array-bounds]
   529 |   dtv_t *dtv = GET_DTV (result);
       |          ^~~
In file included from ../elf/dl-tls.c:28,
                  from ../sysdeps/powerpc/dl-tls.c:20:
../sysdeps/powerpc/nptl/tls.h:136:34: error: array subscript -1 is outside 
array bounds of 'void[9223372036854775807]' [-Werror=array-bounds]
   136 |   ((tcbhead_t *) (tcbp))[-1].dtv = dtvp + 1
       |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
../elf/dl-tls.c:544:7: note: in expansion of macro 'INSTALL_DTV'
   544 |       INSTALL_DTV (result, &dtv[-1]);
       |       ^~~~~~~~~~~


* powerpc64le-linux-gnu: "error: '-mabi=ibmlongdouble' requires
'-mlong-double-128'".  See
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100909>.



Reply via email to