mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-21 12:30:06 +00:00
Fix iconv build with GCC mainline
Current GCC mainline produces -Wstringop-overflow errors building some iconv converters, as discussed at <https://gcc.gnu.org/pipermail/gcc/2021-July/236943.html>. Add an __builtin_unreachable call as suggested so that GCC can see the case that would involve a buffer overflow is unreachable; because the unreachability depends on valid conversion state being passed into the function from previous conversion steps, it's not something the compiler can reasonably deduce on its own. Tested with build-many-glibcs.py that, together with <https://sourceware.org/pipermail/libc-alpha/2021-August/130244.html>, it restores the glibc build for powerpc-linux-gnu.
This commit is contained in:
parent
a4f5a3103f
commit
c8126360df
@ -436,6 +436,12 @@ SINGLE(LOOPFCT) (struct __gconv_step *step,
|
||||
return __GCONV_FULL_OUTPUT;
|
||||
|
||||
/* Now add characters from the normal input buffer. */
|
||||
if (inlen >= MAX_NEEDED_INPUT)
|
||||
/* Avoid a -Wstringop-overflow= warning when this loop is
|
||||
unrolled. The compiler cannot otherwise see that this is
|
||||
unreachable because it depends on (state->__count & 7) not
|
||||
being too large after a previous conversion step. */
|
||||
__builtin_unreachable ();
|
||||
do
|
||||
bytebuf[inlen++] = *inptr++;
|
||||
while (inlen < MAX_NEEDED_INPUT && inptr < inend);
|
||||
|
Loading…
Reference in New Issue
Block a user