glibc/sysdeps
Joseph Myers 6900d2ca74 Fix s390 -Os iconv build.
Building glibc for s390 with -Os (32-bit only, with GCC 7) fails with:

In file included from ../sysdeps/s390/multiarch/8bit-generic.c:370:0,
                 from ebcdic-at-de.c:28:
../iconv/loop.c: In function '__to_generic_vx':
../iconv/loop.c:264:22: error: 'ch' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     if (((Character) >> 7) == (0xe0000 >> 7))          \
                      ^~
In file included from ebcdic-at-de.c:28:0:
../sysdeps/s390/multiarch/8bit-generic.c:340:15: note: 'ch' was declared here
      uint32_t ch;      \
               ^
../iconv/loop.c:325:7: note: in expansion of macro 'BODY'
       BODY
       ^~~~

It's fairly easy to see, looking at the (long) expansion of the BODY
macro, that this is a false positive and the relevant variable 'ch' is
always initialized before use, in one of two possible places.  As
such, disabling the warning for -Os with the DIAG_* macros is the
natural approach to fix this build failure.  However, because of the
location at which the warning is reported, the disabling needs to go
in iconv/loop.c, around the definition of UNICODE_TAG_HANDLER (not
inside the definition), as that macro definition is where the
uninitialized use is reported, whereas the code that needs to be
reasoned about to see that the warning is a false positive is in the
definition of BODY elsewhere.

Thus, the patch adds such disabling in iconv/loop.c, with a comment
pointing to the s390-specific code and a comment in the s390-specific
code pointing to the generic file to alert people to the possible need
to update one place when changing the other.  It would be possible if
desired to use #ifdef __s390__ around the disabling, though in general
we try to avoid that sort of thing in generic files.  (Or some
extremely specialized macros for "disable -Wmaybe-uninitialized in
this particular place" could be specified, defined to 0 in a lot of
different files that include iconv/loop.c and to 1 in that particular
s390 file.)

Tested that this fixed -Os compilation for s390-linux-gnu with
build-many-glibcs.py.

	* iconv/loop.c (UNICODE_TAG_HANDLER): Disable
	-Wmaybe-uninitialized for -Os.
	* sysdeps/s390/multiarch/8bit-generic.c (BODY): Add comment about
	this disabling.
2018-03-05 21:46:55 +00:00
..
aarch64 aarch64/strcmp: fix misaligned loop jump target 2018-02-22 23:48:14 +05:30
alpha Update Alpha libm-test-ulps 2018-01-27 13:31:38 +01:00
arm Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
generic Rename nptl-signals.h to internal-signals.h 2018-02-22 16:43:59 -03:00
gnu Add TCP_FASTOPEN_KEY, TCP_FASTOPEN_NO_COOKIE from Linux 4.15. 2018-02-06 00:42:22 +00:00
hppa Fix ulps for pow on hppa. 2018-02-17 13:46:50 -05:00
i386 Fix i386 fenv_private.h float128 for 32-bit --with-fpmath=sse (bug 22902). 2018-02-28 21:55:51 +00:00
ia64 Remove mplog and mpexp 2018-02-15 12:41:05 +00:00
ieee754 Mechanically remove _IO_ name aliases for types and constants. 2018-02-21 14:11:05 -05:00
init_array sysdeps/init_array: Add PREINIT_FUNCTION to crti.S 2018-01-29 10:22:26 -08:00
m68k Remove mplog and mpexp 2018-02-15 12:41:05 +00:00
mach hurd: Add futimens support 2018-03-04 22:39:47 +01:00
microblaze Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
mips Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
nios2 Move LDBL_CLASSIFY_COMPAT to its own header. 2018-02-01 21:01:00 +00:00
nptl nptl: Move pthread_atfork to libc_nonshared.a 2018-03-01 08:18:48 +01:00
posix Fix -Os feof_unlocked linknamespace, localplt issues (bug 15105, bug 19463). 2018-02-15 20:57:15 +00:00
powerpc Fix powerpc ifunc-sel.h build for -Os. 2018-03-02 22:27:56 +00:00
pthread hurd: fix timer_routines.c build 2018-02-27 01:15:39 +01:00
riscv RISC-V: fmax/fmin: Handle signalling NaNs correctly. 2018-02-22 14:31:54 -05:00
s390 Fix s390 -Os iconv build. 2018-03-05 21:46:55 +00:00
sh Update SH libm-tests-ulps 2018-02-14 14:03:40 -02:00
sparc Update sparc ulps 2018-02-22 16:44:58 -03:00
tile Unify and simplify bits/byteswap.h, bits/byteswap-16.h headers (bug 14508, bug 15512, bug 17082, bug 20530). 2018-02-06 21:55:08 +00:00
unix Define _DIRENT_MATCHES_DIRENT64 regardless 2018-03-05 18:10:04 -03:00
wordsize-32 Use libc_hidden_* for strtoumax (bug 15105). 2018-02-28 14:16:21 +00:00
wordsize-64 Use libc_hidden_* for strtoumax (bug 15105). 2018-02-28 14:16:21 +00:00
x86 Unify and simplify bits/byteswap.h, bits/byteswap-16.h headers (bug 14508, bug 15512, bug 17082, bug 20530). 2018-02-06 21:55:08 +00:00
x86_64 Remove mplog and mpexp 2018-02-15 12:41:05 +00:00