This patch by Cherry Zhang skips the testSetPanicOnFault tests when using gollvm. LLVM doesn't support non-call exceptions. This test was passing more or less by luck: if the faulting instruction is between two calls with the same landing pad (in instruction layout order, not the program's logic order), it generates a merged PC range that covers the faulting instruction. If the instruction layout order changes, or it uses two different (but may be degenerate) landing pads, this doesn't work. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 264932) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -a9da4d34a2f878a5058f7e7d2beef52aa62471a1 +e32e9aaee598eeb43f9616cf6ca1d11acaa9d167 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/go/runtime/runtime_test.go =================================================================== --- libgo/go/runtime/runtime_test.go (revision 264813) +++ libgo/go/runtime/runtime_test.go (working copy) @@ -166,6 +166,9 @@ func TestSetPanicOnFault(t *testing.T) { } func testSetPanicOnFault(t *testing.T, addr uintptr, nfault *int) { + if strings.Contains(Version(), "llvm") { + t.Skip("LLVM doesn't support non-call exception") + } if GOOS == "nacl" { t.Skip("nacl doesn't seem to fault on high addresses") }