This bug is discussed at https://sourceware.org/ml/libc-alpha/2019-08/msg00774.html. The GCC folks think that the Glibc sources should be changed to avoid this warning/error. From email string: I am building the latest glibc with the latest GCC and getting an error. I see where, in locale/programs/charmap.h we declare bytes as a zero length array in charseq but I am not sure where the write in locale/programs/ld-ctype.c is. The only line references that GCC seems to be outputing refer to the declaration. cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] In file included from programs/repertoire.h:24, from programs/localedef.h:32, from programs/ld-ctype.c:35: programs/charmap.h:63:17: note: destination object declared here 63 | unsigned char bytes[0]; | ^~~~~ cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here cc1: all warnings being treated as errors ../o-iterator.mk:9: recipe for target '/home/sellcey/tot/obj/glibc64/locale/ld- ctype.o' failed make[2]: *** [/home/sellcey/tot/obj/glibc64/locale/ld-ctype.o] Error 1
The master branch has been updated by Florian Weimer <fw@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1471fa556afb428c4a4c46cf5543a4101d5bcf91 commit 1471fa556afb428c4a4c46cf5543a4101d5bcf91 Author: Florian Weimer <fweimer@redhat.com> Date: Tue Sep 3 14:01:39 2019 +0200 localedef: Use initializer for flexible array member [BZ #24950] struct charseq used a zero-length array instead of a flexible array member. This required a strange construct to initialize struct charseq objects, and GCC 10 warns about that: cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] In file included from programs/repertoire.h:24, from programs/localedef.h:32, from programs/ld-ctype.c:35: programs/charmap.h:63:17: note: destination object declared here 63 | unsigned char bytes[0]; | ^~~~~ cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here cc1: error: writing 1 byte into a region of size 0 [-Werror=stringop-overflow=] programs/charmap.h:63:17: note: destination object declared here The change makes the object physically const, but it is not expected to be modified.
Fixed in glibc 2.31.
.