From 8ca524ab206323ebe70a929f3dea1e016af00adf Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Fri, 24 May 2019 21:04:49 -0400 Subject: [PATCH] cmd/link: new test case for Darwin/DWARF Test case for issue 32233. Updates #32233. Change-Id: I0e3b4a46832f39de4ef36d8fd8c6070bf9b1a019 Reviewed-on: https://go-review.googlesource.com/c/go/+/178726 Reviewed-by: Cherry Zhang Run-TryBot: Cherry Zhang TryBot-Result: Gobot Gobot --- src/cmd/link/internal/ld/dwarf_test.go | 23 +++++++++++++++++++ .../ld/testdata/issue32233/lib/ObjC.m | 14 +++++++++++ .../ld/testdata/issue32233/lib/lib.go | 19 +++++++++++++++ .../ld/testdata/issue32233/main/main.go | 11 +++++++++ 4 files changed, 67 insertions(+) create mode 100644 src/cmd/link/internal/ld/testdata/issue32233/lib/ObjC.m create mode 100644 src/cmd/link/internal/ld/testdata/issue32233/lib/lib.go create mode 100644 src/cmd/link/internal/ld/testdata/issue32233/main/main.go diff --git a/src/cmd/link/internal/ld/dwarf_test.go b/src/cmd/link/internal/ld/dwarf_test.go index 190a54c4c3..df193e5d3d 100644 --- a/src/cmd/link/internal/ld/dwarf_test.go +++ b/src/cmd/link/internal/ld/dwarf_test.go @@ -1195,3 +1195,26 @@ func TestPackageNameAttr(t *testing.T) { } } } + +func TestMachoIssue32233(t *testing.T) { + testenv.MustHaveGoBuild(t) + testenv.MustHaveCGO(t) + + if runtime.GOOS != "darwin" { + t.Skip("skipping; test only interesting on darwin") + } + + tmpdir, err := ioutil.TempDir("", "TestMachoIssue32233") + if err != nil { + t.Fatalf("could not create directory: %v", err) + } + defer os.RemoveAll(tmpdir) + + wd, err2 := os.Getwd() + if err2 != nil { + t.Fatalf("where am I? %v", err) + } + pdir := filepath.Join(wd, "testdata", "issue32233", "main") + f := gobuildTestdata(t, tmpdir, pdir, DefaultOpt) + f.Close() +} diff --git a/src/cmd/link/internal/ld/testdata/issue32233/lib/ObjC.m b/src/cmd/link/internal/ld/testdata/issue32233/lib/ObjC.m new file mode 100644 index 0000000000..78e6e9e252 --- /dev/null +++ b/src/cmd/link/internal/ld/testdata/issue32233/lib/ObjC.m @@ -0,0 +1,14 @@ +// Copyright 2019 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. + +#import +#import + +BOOL function(void) { + if (@available(macOS 10.14, *)) { + UNUserNotificationCenter *center = + [UNUserNotificationCenter currentNotificationCenter]; + } + return NO; +} diff --git a/src/cmd/link/internal/ld/testdata/issue32233/lib/lib.go b/src/cmd/link/internal/ld/testdata/issue32233/lib/lib.go new file mode 100644 index 0000000000..efd56fb340 --- /dev/null +++ b/src/cmd/link/internal/ld/testdata/issue32233/lib/lib.go @@ -0,0 +1,19 @@ +// Copyright 2019 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. + +package lib + +/* +#cgo darwin CFLAGS: -mmacosx-version-min=10.10 -D__MAC_OS_X_VERSION_MAX_ALLOWED=101450 -Wunguarded-availability-new +#cgo darwin LDFLAGS: -framework Foundation -framework UserNotifications +#include "stdlib.h" +int function(void); +*/ +import "C" +import "fmt" + +func DoC() { + C.function() + fmt.Println("called c function") +} diff --git a/src/cmd/link/internal/ld/testdata/issue32233/main/main.go b/src/cmd/link/internal/ld/testdata/issue32233/main/main.go new file mode 100644 index 0000000000..ed0838afab --- /dev/null +++ b/src/cmd/link/internal/ld/testdata/issue32233/main/main.go @@ -0,0 +1,11 @@ +// Copyright 2019 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. + +package main + +import "cmd/link/internal/ld/testdata/issue32233/lib" + +func main() { + lib.DoC() +} -- 2.50.0