From 5534f04498cfa71a69a78b9065e7f9138b48f05f Mon Sep 17 00:00:00 2001 From: Mateusz Poliwczak Date: Thu, 11 May 2023 08:21:21 +0000 Subject: [PATCH] net: use and assert correct res state size at compile time when cgo available on darwin Change-Id: I961bb18604dd1568ea21431545f43aa6a417b3d9 GitHub-Last-Rev: 735f3364a4f2182f3e3e1b84f39a042e86987967 GitHub-Pull-Request: golang/go#60046 Reviewed-on: https://go-review.googlesource.com/c/go/+/493415 Auto-Submit: Ian Lance Taylor Run-TryBot: Mateusz Poliwczak Reviewed-by: Ian Lance Taylor TryBot-Result: Gopher Robot Run-TryBot: Ian Lance Taylor Reviewed-by: Heschi Kreinick --- src/internal/syscall/unix/net_darwin.go | 2 +- src/net/cgo_unix_cgo_darwin.go | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 src/net/cgo_unix_cgo_darwin.go diff --git a/src/internal/syscall/unix/net_darwin.go b/src/internal/syscall/unix/net_darwin.go index 8b908ae600..5601b49750 100644 --- a/src/internal/syscall/unix/net_darwin.go +++ b/src/internal/syscall/unix/net_darwin.go @@ -119,7 +119,7 @@ func syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err func syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) type ResState struct { - unexported [70]uintptr + unexported [69]uintptr } //go:cgo_import_dynamic libresolv_res_9_ninit res_9_ninit "/usr/lib/libresolv.9.dylib" diff --git a/src/net/cgo_unix_cgo_darwin.go b/src/net/cgo_unix_cgo_darwin.go new file mode 100644 index 0000000000..40d5e426f2 --- /dev/null +++ b/src/net/cgo_unix_cgo_darwin.go @@ -0,0 +1,21 @@ +// Copyright 2023 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !netgo && cgo && darwin + +package net + +/* +#include +*/ +import "C" + +import ( + "internal/syscall/unix" + "unsafe" +) + +// This will cause a compile error when the size of +// unix.ResState is too small. +type _ [unsafe.Sizeof(unix.ResState{}) - unsafe.Sizeof(C.struct___res_state{})]byte -- 2.50.0