[PATCH 1/1] strings patch for bug 33360
Alice Carlotti
alice.carlotti@arm.com
Sat Sep 6 00:58:15 GMT 2025
On Sat, Sep 06, 2025 at 12:12:23AM +0100, Alice Carlotti wrote:
> On Thu, Sep 04, 2025 at 08:27:50AM +0930, Alan Modra wrote:
> > On Wed, Sep 03, 2025 at 11:02:12PM +0100, Alice Carlotti wrote:
> > > On Wed, Sep 03, 2025 at 03:08:33PM +0100, Andrew C Aitchison wrote:
> > > > ---
> > > > binutils/strings.c | 4 ++--
> > > > 1 file changed, 2 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/binutils/strings.c b/binutils/strings.c
> > > > index f5c022b50a1..38da6381edf 100644
> > > > --- a/binutils/strings.c
> > > > +++ b/binutils/strings.c
> > > > @@ -757,8 +757,8 @@ display_utf8_char (const unsigned char * buffer)
> > > >
> > > > case 4:
> > > > printf ("\\u%02x%02x%02x",
> > >
> > > Should 5 digit outputs be allowed?
> > >
> > > > - ((buffer[0] & 0x07) << 6) | ((buffer[1] & 0x3c) >> 2),
> > > > - ((buffer[1] & 0x03) << 6) | ((buffer[2] & 0x3c) >> 2),
> > > > + ((buffer[0] & 0x07) << 2) | ((buffer[1] & 0x30) >> 4),
> > > > + ((buffer[1] & 0x0f) << 4) | ((buffer[2] & 0x3c) >> 2),
> > >
> > > Your updated bit arithmetic looks correct to me, but I do wonder whether we
> > > should simplify things by building the whole value into a 32 bit integer and
> > > printing that. Is there any reason we can't do that?
> >
> > Thanks for reviewing. I'm going to accept the patch as-is.
> > Improvements, if necessary, can come later.
>
> I've discovered some more bugs. Firstly, there's exactly the same bug with
> 4-byte encodings in objdump.c and nm.c. Secondly, we currently accept various
> invalid encodings (overlong encodings, out-of-range codepoints, and UTF-16
> surrogate pair values). There's also other bits of code that are unnecessarily
> complicated that I can simplify, including one typo that only happens to not be
> a bug because swapping two bytes at that point doesn't affect output.
>
> I'm currently working on a patch (series) to fix and simplify the utf-8 code in
> these files.
>
> Alice
Nick, it looks like your original patch [1] was supposed to include some tests,
but none of the testsuite changes were committed and the patch in the email
seems to be missing at least one file. Do you have any idea what happened to
those tests?
[1] https://sourceware.org/pipermail/binutils/2021-November/118453.html
>
> >
> > > Alice
> > >
> > > > ((buffer[2] & 0x03) << 6) | ((buffer[3] & 0x3f)));
> > > > break;
> > > > default:
> > > > --
> > > > 2.48.1
> > > >
> >
> > --
> > Alan Modra
More information about the Binutils
mailing list