Go patch committed: Work around warning to fix bootstrap

11 views
Skip to first unread message

Ian Lance Taylor

unread,
Nov 29, 2024, 4:02:30 PM11/29/24
to gcc-patches, gofrontend-dev
This patch to the Go frontend increases the size of a temporary buffer
to avoid a new warning. The warning was breaking bootstrapping with
Go.

GCC has a new -Wformat-truncation warning that triggers on some Go
frontend code:

../../gcc/go/gofrontend/go-encode-id.cc: In function 'std::string
go_encode_id(const std::string&)':
../../gcc/go/gofrontend/go-encode-id.cc:176:48: error: '%02x'
directive output may be truncated writing between 2 and 8 bytes into a
region of size 6 [-Werror=format-truncation=]
176 | snprintf(buf, sizeof buf, "_x%02x", c);
| ^~~~
../../gcc/go/gofrontend/go-encode-id.cc:176:45: note: directive
argument in the range [128, 4294967295]
176 | snprintf(buf, sizeof buf, "_x%02x", c);
| ^~~~~~~~
../../gcc/go/gofrontend/go-encode-id.cc:176:27: note: 'snprintf'
output between 5 and 11 bytes into a destination of size 8
176 | snprintf(buf, sizeof buf, "_x%02x", c);
| ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The code is safe, because the value of c is known to be >= 0 && <=
0xff. But it's difficult for the compiler to know that. This patch
bumps the buffer size to avoid the warning.

This fixes https://gcc.gnu.org/PR117833.

Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed
to mainline.

Ian
patch.txt
Reply all
Reply to author
Forward
0 new messages