]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix lldb test after DWARF compression
authorHeschi Kreinick <heschi@google.com>
Mon, 18 Jun 2018 20:29:16 +0000 (16:29 -0400)
committerHeschi Kreinick <heschi@google.com>
Mon, 18 Jun 2018 23:20:57 +0000 (23:20 +0000)
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>
src/runtime/runtime-lldb_test.go

index 9a287052eaf0e4fbd9b4d1fc19af9f6adfe2239a..a036fd8480434d155281d33981df27666da1349e 100644 (file)
@@ -10,6 +10,7 @@ import (
        "os"
        "os/exec"
        "path/filepath"
+       "regexp"
        "runtime"
        "strings"
        "testing"
@@ -82,8 +83,12 @@ target = debugger.CreateTargetWithFileAndArch("a.exe", None)
 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 target:
         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 @@ func TestLldbPython(t *testing.T) {
        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)
        }