This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: ToT build error with ToT GCC on Aarch64
- From: Andreas Schwab <schwab at suse dot de>
- To: Steve Ellcey <sellcey at cavium dot com>
- Cc: libc-alpha <libc-alpha at sourceware dot org>
- Date: Tue, 24 Jul 2018 18:10:27 +0200
- Subject: Re: ToT build error with ToT GCC on Aarch64
- References: <1532361092.15609.7.camel@cavium.com>
On Jul 23 2018, Steve Ellcey <sellcey@cavium.com> wrote:
> In file included from fnmatch.c:244:
> fnmatch_loop.c: In function ‘internal_fnwmatch’:
> ../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:244:
> fnmatch_loop.c: In function ‘internal_fnwmatch’:
> ../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])
> ~~~~^~~~~~~~~~
> cc1: all warnings being treated as errors
> ../o-iterator.mk:9: recipe for target '/home/sellcey/tot/obj/glibc64/posix/fnmat
> ch.o' failed
I think this is the correct change. The cnt == len check matches what
is done in weight.h, and is needed when nhere - 1 == len and usrc is a
prefix of cp.
Andreas.
* locale/weightwc.h (findidx): Handle the case where usrc is a
prefix of cp but one character too short.
---
locale/weightwc.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/locale/weightwc.h b/locale/weightwc.h
index 36c65b5623..7ee335dc9a 100644
--- a/locale/weightwc.h
+++ b/locale/weightwc.h
@@ -109,7 +109,7 @@ findidx (const int32_t *table,
break;
DIAG_POP_NEEDS_COMMENT;
- if (cnt < nhere - 1)
+ if (cnt < nhere - 1 || cnt == len)
{
cp += 2 * nhere;
continue;
@@ -121,14 +121,14 @@ findidx (const int32_t *table,
same reason as described above. */
DIAG_PUSH_NEEDS_COMMENT;
DIAG_IGNORE_Os_NEEDS_COMMENT (7, "-Wmaybe-uninitialized");
- if (cp[nhere - 1] > usrc[nhere -1])
+ if (cp[nhere - 1] > usrc[nhere - 1])
{
cp += 2 * nhere;
continue;
}
DIAG_POP_NEEDS_COMMENT;
- if (cp[2 * nhere - 1] < usrc[nhere -1])
+ if (cp[2 * nhere - 1] < usrc[nhere - 1])
{
cp += 2 * nhere;
continue;
--
2.18.0
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."