[PATCH 1/1] strings patch for bug 33360

Alice Carlotti alice.carlotti@arm.com
Wed Sep 3 22:02:12 GMT 2025


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?

Alice

>  		  ((buffer[2] & 0x03) << 6) | ((buffer[3] & 0x3f)));
>  	  break;
>  	default:
> -- 
> 2.48.1
> 


More information about the Binutils mailing list