[debuginfo-tests] r312265 - Fix debuginfo-tests with GDB on Linux

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 31 11:16:55 PDT 2017


Author: rnk
Date: Thu Aug 31 11:16:55 2017
New Revision: 312265

URL: http://llvm.org/viewvc/llvm-project?rev=312265&view=rev
Log:
Fix debuginfo-tests with GDB on Linux

Summary:
Split asan.c into asan.c and asan-blocks.c, which will be
darwin-specific. I suspect we could make it pass on Linux by adding
cmake to build BlocksRuntime from compiler-rt, but I'm not shaving that
yak yet.

asan.c and safestack.c: GDB and LLDB appear to print aggregates
differently today. Print individual elements instead of the entire
aggregate.

dbg-arg.c: GDB doesn't appear to print leading zeros when printing
pointers.

stack-var.c: Add the optnone attribute so that LLVM won't optimize away
this no-op function call. This should be a cross-platform failure
observable on Mac, so this is surprising.

Reviewers: aprantl, dblaikie

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D37344

Added:
    debuginfo-tests/trunk/asan-blocks.c
Modified:
    debuginfo-tests/trunk/asan.c
    debuginfo-tests/trunk/dbg-arg.c
    debuginfo-tests/trunk/safestack.c
    debuginfo-tests/trunk/stack-var.c

Added: debuginfo-tests/trunk/asan-blocks.c
URL: http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/asan-blocks.c?rev=312265&view=auto
==============================================================================
--- debuginfo-tests/trunk/asan-blocks.c (added)
+++ debuginfo-tests/trunk/asan-blocks.c Thu Aug 31 11:16:55 2017
@@ -0,0 +1,41 @@
+// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64 %s -o %t.out -g -fsanitize=address
+// RUN: %test_debuginfo %s %t.out
+// FIXME: Remove system-darwin when we build BlocksRuntime everywhere.
+// REQUIRES: not_asan, system-darwin
+//           Zorg configures the ASAN stage2 bots to not build the asan
+//           compiler-rt. Only run this test on non-asanified configurations.
+void b();
+struct S {
+  int a[8];
+};
+
+int f(struct S s, unsigned i) {
+  // DEBUGGER: break 17
+  // DEBUGGER: r
+  // DEBUGGER: p s
+  // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6, [7] = 7)
+  return s.a[i];
+}
+
+int main(int argc, const char **argv) {
+  struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
+  if (f(s, 4) == 4) {
+    // DEBUGGER: break 27
+    // DEBUGGER: c
+    // DEBUGGER: p s
+    // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6, [7] = 7)
+    b();
+  }
+  return 0;
+}
+
+void c() {}
+
+void b() {
+  // DEBUGGER: break 40
+  // DEBUGGER: c
+  // DEBUGGER: p x
+  // CHECK: 42
+  __block int x = 42;
+  c();
+}

Modified: debuginfo-tests/trunk/asan.c
URL: http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/asan.c?rev=312265&r1=312264&r2=312265&view=diff
==============================================================================
--- debuginfo-tests/trunk/asan.c (original)
+++ debuginfo-tests/trunk/asan.c Thu Aug 31 11:16:55 2017
@@ -1,40 +1,31 @@
-// RUN: %clang %target_itanium_abi_host_triple -arch x86_64 %s -o %t.out -g -fsanitize=address
+// RUN: %clang -fblocks %target_itanium_abi_host_triple -arch x86_64 %s -o %t.out -g -fsanitize=address
 // RUN: %test_debuginfo %s %t.out
 // REQUIRES: not_asan
 //           Zorg configures the ASAN stage2 bots to not build the asan
 //           compiler-rt. Only run this test on non-asanified configurations.
-void b();
+//
+
 struct S {
   int a[8];
 };
 
 int f(struct S s, unsigned i) {
-  // DEBUGGER: break 16
-  // DEBUGGER: r
-  // DEBUGGER: p s
-  // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6, [7] = 7)
+  // DEBUGGER: break 14
   return s.a[i];
 }
 
 int main(int argc, const char **argv) {
   struct S s = {{0, 1, 2, 3, 4, 5, 6, 7}};
-  if (f(s, 4) == 4) {
-    // DEBUGGER: break 26
-    // DEBUGGER: c
-    // DEBUGGER: p s
-    // CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6, [7] = 7)
-    b();
-  }
+  if (f(s, 4) == 4)
+    return f(s, 0);
   return 0;
 }
 
-void c() {}
-
-void b() {
-  // DEBUGGER: break 39
-  // DEBUGGER: c
-  // DEBUGGER: p x
-  // CHECK: 42
-  __block int x = 42;
-  c();
-}
+// DEBUGGER: r
+// DEBUGGER: p s
+// CHECK: a =
+// DEBUGGER: p s.a[0]
+// CHECK: = 0
+// DEBUGGER: p s.a[1]
+// CHECK: = 1
+// DEBUGGER: p s.a[7]

Modified: debuginfo-tests/trunk/dbg-arg.c
URL: http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/dbg-arg.c?rev=312265&r1=312264&r2=312265&view=diff
==============================================================================
--- debuginfo-tests/trunk/dbg-arg.c (original)
+++ debuginfo-tests/trunk/dbg-arg.c Thu Aug 31 11:16:55 2017
@@ -1,12 +1,12 @@
 // This test case checks debug info during register moves for an argument.
-// RUN: %clang %target_itanium_abi_host_triple -arch x86_64 -mllvm -fast-isel=false  %s -c -o %t.o -g
-// RUN: %clang %target_itanium_abi_host_triple -arch x86_64 %t.o -o %t.out
+// RUN: %clang %target_itanium_abi_host_triple -m64 -mllvm -fast-isel=false  %s -c -o %t.o -g
+// RUN: %clang %target_itanium_abi_host_triple -m64 %t.o -o %t.out
 // RUN: %test_debuginfo %s %t.out
 //
 // DEBUGGER: break 26
 // DEBUGGER: r
 // DEBUGGER: print mutex
-// CHECK:  ={{.*}} 0x0
+// CHECK:  ={{.* 0x[0-9A-Fa-f]+}}
 //
 // Radar 8412415
 

Modified: debuginfo-tests/trunk/safestack.c
URL: http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/safestack.c?rev=312265&r1=312264&r2=312265&view=diff
==============================================================================
--- debuginfo-tests/trunk/safestack.c (original)
+++ debuginfo-tests/trunk/safestack.c Thu Aug 31 11:16:55 2017
@@ -26,10 +26,26 @@ int f(struct S s, unsigned i) {
 
 // DEBUGGER: r
 // DEBUGGER: p s
-// CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6, [7] = 7)
+// CHECK: a =
+// DEBUGGER: p s.a[0]
+// CHECK: = 0
+// DEBUGGER: p s.a[1]
+// CHECK: = 1
+// DEBUGGER: p s.a[7]
+// CHECK: = 7
 // DEBUGGER: c
 // DEBUGGER: p s
-// CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6, [7] = 7)
+// CHECK: a =
+// DEBUGGER: p s.a[0]
+// CHECK: = 0
+// DEBUGGER: p s.a[1]
+// CHECK: = 1
+// DEBUGGER: p s.a[7]
 // DEBUGGER: c
 // DEBUGGER: p s
-// CHECK: a = ([0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6, [7] = 7)
+// CHECK: a =
+// DEBUGGER: p s.a[0]
+// CHECK: = 0
+// DEBUGGER: p s.a[1]
+// CHECK: = 1
+// DEBUGGER: p s.a[7]

Modified: debuginfo-tests/trunk/stack-var.c
URL: http://llvm.org/viewvc/llvm-project/debuginfo-tests/trunk/stack-var.c?rev=312265&r1=312264&r2=312265&view=diff
==============================================================================
--- debuginfo-tests/trunk/stack-var.c (original)
+++ debuginfo-tests/trunk/stack-var.c Thu Aug 31 11:16:55 2017
@@ -1,18 +1,18 @@
 // RUN: %clang %target_itanium_abi_host_triple %s -O -o %t.out -g
 // RUN: %test_debuginfo %s %t.out
 
-void __attribute__((noinline)) bar(int *test) {}
+void __attribute__((noinline, optnone)) bar(int *test) {}
 int main() {
   int test;
   test = 23;
   // DEBUGGER: break 12
   // DEBUGGER: r
   // DEBUGGER: p test
-  // CHECK: 23
+  // CHECK: = 23
   bar(&test);
   // DEBUGGER: break 17
   // DEBUGGER: c
   // DEBUGGER: p test
-  // CHECK: 23
+  // CHECK: = 23
   return test;
 }




More information about the llvm-commits mailing list