From c05fceb73cafd642d26660148357a4f60172aa1a Mon Sep 17 00:00:00 2001 From: Egon Elbre Date: Sun, 17 Sep 2023 09:27:41 +0300 Subject: [PATCH] cmd/cgo: silence unaligned-access Clang 14+ introduced a warning when using mixed packed and unpacked structs. This can cause problems when taking an address of the unpacked struct, which may end up having a different alignment than expected. This is not a problem in cgo, which does not take pointers from the packed struct. Updated version of https://go.dev/cl/526915, which includes "-Wunknown-warning-option" for compilers that do not have the specific flag. Fixes #62480 Change-Id: I788c6604d0ed5267949f4367f148fa26d2116f51 Reviewed-on: https://go-review.googlesource.com/c/go/+/528935 LUCI-TryBot-Result: Go LUCI Reviewed-by: Carlos Amedee Run-TryBot: Ian Lance Taylor TryBot-Result: Gopher Robot Reviewed-by: Than McIntosh --- src/cmd/cgo/out.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go index 8e1b5d62fd..2189ad5f41 100644 --- a/src/cmd/cgo/out.go +++ b/src/cmd/cgo/out.go @@ -910,6 +910,8 @@ func (p *Package) writeExports(fgo2, fm, fgcc, fgcch io.Writer) { fmt.Fprintf(fgcc, "#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n") fmt.Fprintf(fgcc, "#pragma GCC diagnostic ignored \"-Wpragmas\"\n") fmt.Fprintf(fgcc, "#pragma GCC diagnostic ignored \"-Waddress-of-packed-member\"\n") + fmt.Fprintf(fgcc, "#pragma GCC diagnostic ignored \"-Wunknown-warning-option\"\n") + fmt.Fprintf(fgcc, "#pragma GCC diagnostic ignored \"-Wunaligned-access\"\n") fmt.Fprintf(fgcc, "extern void crosscall2(void (*fn)(void *), void *, int, size_t);\n") fmt.Fprintf(fgcc, "extern size_t _cgo_wait_runtime_init_done(void);\n") @@ -1522,6 +1524,8 @@ extern char* _cgo_topofstack(void); #pragma GCC diagnostic ignored "-Wunknown-pragmas" #pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Waddress-of-packed-member" +#pragma GCC diagnostic ignored "-Wunknown-warning-option" +#pragma GCC diagnostic ignored "-Wunaligned-access" #include #include -- 2.48.1