runtime: fix lldb test after DWARF compression

Most (all?) released versions of lldb don't support compressed DWARF.
For now, skip the test if lldb can't find where to put the breakpoint.

This is the best I could think of -- there is no explicit error that I
can find that indicates it couldn't load the DWARF.

Fixes #25925.

Change-Id: Ib8fa486a04940cee5959ba7aab7bdbbaa3b2974e
Reviewed-on: https://go-review.googlesource.com/119535
Run-TryBot: Heschi Kreinick <heschi@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
diff --git a/src/runtime/runtime-lldb_test.go b/src/runtime/runtime-lldb_test.go
index 9a28705..a036fd8 100644
--- a/src/runtime/runtime-lldb_test.go
+++ b/src/runtime/runtime-lldb_test.go
@@ -10,6 +10,7 @@
 	"os"
 	"os/exec"
 	"path/filepath"
+	"regexp"
 	"runtime"
 	"strings"
 	"testing"
@@ -82,8 +83,12 @@
 if target:
   print "Created target"
   main_bp = target.BreakpointCreateByLocation("main.go", 10)
-  if main_bp:
+  if main_bp.GetNumLocations() != 0:
     print "Created breakpoint"
+  else:
+    # This happens if lldb can't read the program's DWARF. See https://golang.org/issue/25925.
+    print "SKIP: no matching locations for breakpoint"
+    exit(1)
   process = target.LaunchSimple(None, None, os.getcwd())
   if process:
     print "Process launched"
@@ -98,7 +103,7 @@
         if state in [lldb.eStateUnloaded, lldb.eStateLaunching, lldb.eStateRunning]:
           continue
       else:
-        print "Timeout launching"
+        print "SKIP: Timeout launching"
       break
     if state == lldb.eStateStopped:
       for t in process.threads:
@@ -172,8 +177,9 @@
 	got, _ := cmd.CombinedOutput()
 
 	if string(got) != expectedLldbOutput {
-		if strings.Contains(string(got), "Timeout launching") {
-			t.Skip("Timeout launching")
+		skipReason := regexp.MustCompile("SKIP: .*\n").Find(got)
+		if skipReason != nil {
+			t.Skip(string(skipReason))
 		}
 		t.Fatalf("Unexpected lldb output:\n%s", got)
 	}