mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
nfc: refactor Backtracing/Crash.swift
This test fused both the CHECK directives and the source code into one file, and is sensitive to the line numbers that source code appears on in that file. Thus, any attempts to add new lines to this test would break it. This refactoring moves the source code to a separate file so its line numbers stay stable.
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
// RUN: %empty-directory(%t)
|
||||
// RUN: %target-build-swift %s -parse-as-library -Onone -g -o %t/Crash
|
||||
// RUN: %target-build-swift %s -parse-as-library -Onone -o %t/CrashNoDebug
|
||||
// RUN: %target-build-swift %s -parse-as-library -O -g -o %t/CrashOpt
|
||||
// RUN: %target-build-swift %s -parse-as-library -O -o %t/CrashOptNoDebug
|
||||
// RUN: %target-build-swift %S/Inputs/Crash.swift -parse-as-library -Onone -g -o %t/Crash
|
||||
// RUN: %target-build-swift %S/Inputs/Crash.swift -parse-as-library -Onone -o %t/CrashNoDebug
|
||||
// RUN: %target-build-swift %S/Inputs/Crash.swift -parse-as-library -O -g -o %t/CrashOpt
|
||||
// RUN: %target-build-swift %S/Inputs/Crash.swift -parse-as-library -O -o %t/CrashOptNoDebug
|
||||
// RUN: %target-codesign %t/Crash
|
||||
// RUN: %target-codesign %t/CrashNoDebug
|
||||
// RUN: %target-codesign %t/CrashOpt
|
||||
@@ -20,45 +20,17 @@
|
||||
// REQUIRES: backtracing
|
||||
// REQUIRES: OS=macosx || OS=linux-gnu
|
||||
|
||||
func level1() {
|
||||
level2()
|
||||
}
|
||||
|
||||
func level2() {
|
||||
level3()
|
||||
}
|
||||
|
||||
func level3() {
|
||||
level4()
|
||||
}
|
||||
|
||||
func level4() {
|
||||
level5()
|
||||
}
|
||||
|
||||
func level5() {
|
||||
print("About to crash")
|
||||
let ptr = UnsafeMutablePointer<Int>(bitPattern: 4)!
|
||||
ptr.pointee = 42
|
||||
}
|
||||
|
||||
@main
|
||||
struct Crash {
|
||||
static func main() {
|
||||
level1()
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK: *** Program crashed: Bad pointer dereference at 0x{{0+}}4 ***
|
||||
|
||||
// CHECK: Thread 0 {{(".*" )?}}crashed:
|
||||
|
||||
// CHECK: 0 0x{{[0-9a-f]+}} level5() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:42:15
|
||||
// CHECK-NEXT: 1 [ra] 0x{{[0-9a-f]+}} level4() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:36:3
|
||||
// CHECK-NEXT: 2 [ra] 0x{{[0-9a-f]+}} level3() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:32:3
|
||||
// CHECK-NEXT: 3 [ra] 0x{{[0-9a-f]+}} level2() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:28:3
|
||||
// CHECK-NEXT: 4 [ra] 0x{{[0-9a-f]+}} level1() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:24:3
|
||||
// CHECK-NEXT: 5 [ra] 0x{{[0-9a-f]+}} static Crash.main() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:48:5
|
||||
// CHECK: 0 0x{{[0-9a-f]+}} level5() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:20:15
|
||||
// CHECK-NEXT: 1 [ra] 0x{{[0-9a-f]+}} level4() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:14:3
|
||||
// CHECK-NEXT: 2 [ra] 0x{{[0-9a-f]+}} level3() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:10:3
|
||||
// CHECK-NEXT: 3 [ra] 0x{{[0-9a-f]+}} level2() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:6:3
|
||||
// CHECK-NEXT: 4 [ra] 0x{{[0-9a-f]+}} level1() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:2:3
|
||||
// CHECK-NEXT: 5 [ra] 0x{{[0-9a-f]+}} static Crash.main() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:26:5
|
||||
// CHECK-NEXT: 6 [ra] [system] 0x{{[0-9a-f]+}} static Crash.$main() + {{[0-9]+}} in Crash at {{.*}}/<compiler-generated>
|
||||
// CHECK-NEXT: 7 [ra] [system] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in Crash at {{.*}}/Crash.swift
|
||||
|
||||
@@ -72,59 +44,57 @@ struct Crash {
|
||||
|
||||
// FRIENDLY: Thread 0 {{(".*" )?}}crashed:
|
||||
|
||||
// FRIENDLY: 0 level5() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:42:15
|
||||
// FRIENDLY: 0 level5() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:20:15
|
||||
|
||||
// FRIENDLY: 40| print("About to crash")
|
||||
// FRIENDLY-NEXT: 41| let ptr = UnsafeMutablePointer<Int>(bitPattern: 4)!
|
||||
// FRIENDLY-NEXT: 42| ptr.pointee = 42
|
||||
// FRIENDLY: 18| print("About to crash")
|
||||
// FRIENDLY-NEXT: 19| let ptr = UnsafeMutablePointer<Int>(bitPattern: 4)!
|
||||
// FRIENDLY-NEXT: 20| ptr.pointee = 42
|
||||
// FRIENDLY-NEXT: | ^
|
||||
// FRIENDLY-NEXT: 43| }
|
||||
// FRIENDLY-NEXT: 44|
|
||||
// FRIENDLY-NEXT: 21| }
|
||||
// FRIENDLY-NEXT: 22|
|
||||
|
||||
// FRIENDLY: 1 level4() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:36:3
|
||||
// FRIENDLY: 1 level4() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:14:3
|
||||
|
||||
// FRIENDLY: 34|
|
||||
// FRIENDLY-NEXT: 35| func level4() {
|
||||
// FRIENDLY-NEXT: 36| level5()
|
||||
// FRIENDLY: 12|
|
||||
// FRIENDLY-NEXT: 13| func level4() {
|
||||
// FRIENDLY-NEXT: 14| level5()
|
||||
// FRIENDLY-NEXT: | ^
|
||||
// FRIENDLY-NEXT: 37| }
|
||||
// FRIENDLY-NEXT: 38|
|
||||
// FRIENDLY-NEXT: 15| }
|
||||
// FRIENDLY-NEXT: 16|
|
||||
|
||||
// FRIENDLY: 2 level3() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:32:3
|
||||
// FRIENDLY: 2 level3() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:10:3
|
||||
|
||||
// FRIENDLY: 30|
|
||||
// FRIENDLY-NEXT: 31| func level3() {
|
||||
// FRIENDLY-NEXT: 32| level4()
|
||||
// FRIENDLY: 8|
|
||||
// FRIENDLY-NEXT: 9| func level3() {
|
||||
// FRIENDLY-NEXT: 10| level4()
|
||||
// FRIENDLY-NEXT: | ^
|
||||
// FRIENDLY-NEXT: 33| }
|
||||
// FRIENDLY-NEXT: 34|
|
||||
// FRIENDLY-NEXT: 11| }
|
||||
// FRIENDLY-NEXT: 12|
|
||||
|
||||
// FRIENDLY: 3 level2() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:28:3
|
||||
// FRIENDLY: 3 level2() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:6:3
|
||||
|
||||
// FRIENDLY: 26|
|
||||
// FRIENDLY-NEXT: 27| func level2() {
|
||||
// FRIENDLY-NEXT: 28| level3()
|
||||
// FRIENDLY: 4|
|
||||
// FRIENDLY-NEXT: 5| func level2() {
|
||||
// FRIENDLY-NEXT: 6| level3()
|
||||
// FRIENDLY-NEXT: | ^
|
||||
// FRIENDLY-NEXT: 29| }
|
||||
// FRIENDLY-NEXT: 30|
|
||||
// FRIENDLY-NEXT: 7| }
|
||||
// FRIENDLY-NEXT: 8|
|
||||
|
||||
// FRIENDLY: 4 level1() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:24:3
|
||||
// FRIENDLY: 4 level1() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:2:3
|
||||
|
||||
// FRIENDLY: 22|
|
||||
// FRIENDLY-NEXT: 23| func level1() {
|
||||
// FRIENDLY-NEXT: 24| level2()
|
||||
// FRIENDLY: 1| func level1() {
|
||||
// FRIENDLY-NEXT: 2| level2()
|
||||
// FRIENDLY-NEXT: | ^
|
||||
// FRIENDLY-NEXT: 25| }
|
||||
// FRIENDLY-NEXT: 26|
|
||||
// FRIENDLY-NEXT: 3| }
|
||||
|
||||
// FRIENDLY: 5 static Crash.main() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:48:5
|
||||
// FRIENDLY: 5 static Crash.main() + {{[0-9]+}} in Crash at {{.*}}/Crash.swift:26:5
|
||||
|
||||
// FRIENDLY: 46| struct Crash {
|
||||
// FRIENDLY-NEXT: 47| static func main() {
|
||||
// FRIENDLY-NEXT: 48| level1()
|
||||
// FRIENDLY: 24| struct Crash {
|
||||
// FRIENDLY-NEXT: 25| static func main() {
|
||||
// FRIENDLY-NEXT: 26| level1()
|
||||
// FRIENDLY-NEXT: | ^
|
||||
// FRIENDLY-NEXT: 49| }
|
||||
// FRIENDLY-NEXT: 50| }
|
||||
// FRIENDLY-NEXT: 27| }
|
||||
// FRIENDLY-NEXT: 28| }
|
||||
|
||||
// NODEBUG: *** Program crashed: Bad pointer dereference at 0x{{0*}}4 ***
|
||||
|
||||
@@ -149,12 +119,12 @@ struct Crash {
|
||||
|
||||
// OPTIMIZED: Thread 0 {{(".*" )?}}crashed:
|
||||
|
||||
// OPTIMIZED: 0 [inlined] 0x{{[0-9a-f]+}} level5() in CrashOpt at {{.*}}/Crash.swift:42:15
|
||||
// OPTIMIZED-NEXT: 1 [inlined] 0x{{[0-9a-f]+}} level4() in CrashOpt at {{.*}}/Crash.swift:36:3
|
||||
// OPTIMIZED-NEXT: 2 [inlined] 0x{{[0-9a-f]+}} level3() in CrashOpt at {{.*}}/Crash.swift:32:3
|
||||
// OPTIMIZED-NEXT: 3 [inlined] 0x{{[0-9a-f]+}} level2() in CrashOpt at {{.*}}/Crash.swift:28:3
|
||||
// OPTIMIZED-NEXT: 4 [inlined] 0x{{[0-9a-f]+}} level1() in CrashOpt at {{.*}}/Crash.swift:24:3
|
||||
// OPTIMIZED-NEXT: 5 [inlined] 0x{{[0-9a-f]+}} static Crash.main() in CrashOpt at {{.*}}/Crash.swift:48:5
|
||||
// OPTIMIZED: 0 [inlined] 0x{{[0-9a-f]+}} level5() in CrashOpt at {{.*}}/Crash.swift:20:15
|
||||
// OPTIMIZED-NEXT: 1 [inlined] 0x{{[0-9a-f]+}} level4() in CrashOpt at {{.*}}/Crash.swift:14:3
|
||||
// OPTIMIZED-NEXT: 2 [inlined] 0x{{[0-9a-f]+}} level3() in CrashOpt at {{.*}}/Crash.swift:10:3
|
||||
// OPTIMIZED-NEXT: 3 [inlined] 0x{{[0-9a-f]+}} level2() in CrashOpt at {{.*}}/Crash.swift:6:3
|
||||
// OPTIMIZED-NEXT: 4 [inlined] 0x{{[0-9a-f]+}} level1() in CrashOpt at {{.*}}/Crash.swift:2:3
|
||||
// OPTIMIZED-NEXT: 5 [inlined] 0x{{[0-9a-f]+}} static Crash.main() in CrashOpt at {{.*}}/Crash.swift:26:5
|
||||
// OPTIMIZED: {{6|7}} [system] 0x{{[0-9a-f]+}} main + {{[0-9]+}} in CrashOpt at {{.*}}
|
||||
|
||||
// OPTIMIZED: Registers:
|
||||
28
test/Backtracing/Inputs/Crash.swift
Normal file
28
test/Backtracing/Inputs/Crash.swift
Normal file
@@ -0,0 +1,28 @@
|
||||
func level1() {
|
||||
level2()
|
||||
}
|
||||
|
||||
func level2() {
|
||||
level3()
|
||||
}
|
||||
|
||||
func level3() {
|
||||
level4()
|
||||
}
|
||||
|
||||
func level4() {
|
||||
level5()
|
||||
}
|
||||
|
||||
func level5() {
|
||||
print("About to crash")
|
||||
let ptr = UnsafeMutablePointer<Int>(bitPattern: 4)!
|
||||
ptr.pointee = 42
|
||||
}
|
||||
|
||||
@main
|
||||
struct Crash {
|
||||
static func main() {
|
||||
level1()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user