From c32bd276c68f5089b7e8ee58a8bc85c9bd543455 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 18 Aug 2017 04:40:42 +0000 Subject: [PATCH] cmd/go: pass -funwind-tables when compiling C code Using -funwind-tables is necessary to permit Go code to correctly throw a panic through C code. This hasn't been necessary in the past as -funwind-tables is the default on x86. However, it is not the default for PPC AIX. Reviewed-on: https://go-review.googlesource.com/56650 From-SVN: r251179 --- gcc/go/gofrontend/MERGE | 2 +- libgo/go/cmd/go/build.go | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 3490c562fcc..f23457d07c6 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -152164a7249ecc5c2bfd4a091450dc7c2855f609 +9ff49c64ea6dbb5e08d1fa859b99b06049413279 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/go/cmd/go/build.go b/libgo/go/cmd/go/build.go index 9623b9c32be..a62bc86c262 100644 --- a/libgo/go/cmd/go/build.go +++ b/libgo/go/cmd/go/build.go @@ -3268,6 +3268,12 @@ func (b *builder) ccompilerCmd(envvar, defcmd, objdir string) []string { a = append(a, "-fno-common") } + // gccgo uses the language-independent exception mechanism to + // handle panics, so it always needs unwind tables. + if _, ok := buildToolchain.(gccgoToolchain); ok { + a = append(a, "-funwind-tables") + } + return a } -- 2.30.2