summaryrefslogtreecommitdiffstats
path: root/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
committerpatrick <patrick@openbsd.org>2020-08-03 14:33:06 +0000
commit061da546b983eb767bad15e67af1174fb0bcf31c (patch)
tree83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives
parentImport LLVM 10.0.0 release including clang, lld and lldb. (diff)
downloadwireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.tar.xz
wireguard-openbsd-061da546b983eb767bad15e67af1174fb0bcf31c.zip
Import LLVM 10.0.0 release including clang, lld and lldb.
ok hackroom tested by plenty
Diffstat (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives')
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/Makefile7
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/README62
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/TestBSDArchives.py61
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/a.c18
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/b.c18
-rw-r--r--gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/main.c16
6 files changed, 182 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/Makefile
new file mode 100644
index 00000000000..4d1950cf34a
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/Makefile
@@ -0,0 +1,7 @@
+C_SOURCES := main.c
+
+MAKE_DSYM := NO
+ARCHIVE_NAME := libfoo.a
+ARCHIVE_C_SOURCES := a.c b.c
+
+include Makefile.rules
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/README b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/README
new file mode 100644
index 00000000000..d327f4585c6
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/README
@@ -0,0 +1,62 @@
+a.out file refers to libfoo.a for a.o and b.o, which is what we want to accomplish for
+this test case.
+
+[16:17:44] johnny:/Volumes/data/lldb/svn/latest/test/functionalities/archives $ dsymutil -s a.out
+----------------------------------------------------------------------
+Symbol table for: 'a.out' (x86_64)
+----------------------------------------------------------------------
+Index n_strx n_type n_sect n_desc n_value
+======== -------- ------------------ ------ ------ ----------------
+[ 0] 00000002 64 (N_SO ) 00 0000 0000000000000000 '/Volumes/data/lldb/svn/latest/test/functionalities/archives/'
+[ 1] 0000003f 64 (N_SO ) 00 0000 0000000000000000 'main.c'
+[ 2] 00000046 66 (N_OSO ) 03 0001 000000004f0f780c '/Volumes/data/lldb/svn/latest/test/functionalities/archives/main.o'
+[ 3] 00000001 2e (N_BNSYM ) 01 0000 0000000100000d70
+[ 4] 00000089 24 (N_FUN ) 01 0000 0000000100000d70 '_main'
+[ 5] 00000001 24 (N_FUN ) 00 0000 000000000000005d
+[ 6] 00000001 4e (N_ENSYM ) 01 0000 000000000000005d
+[ 7] 00000001 64 (N_SO ) 01 0000 0000000000000000
+[ 8] 00000002 64 (N_SO ) 00 0000 0000000000000000 '/Volumes/data/lldb/svn/latest/test/functionalities/archives/'
+[ 9] 0000008f 64 (N_SO ) 00 0000 0000000000000000 'a.c'
+[ 10] 00000093 66 (N_OSO ) 03 0001 000000004f0f780c '/Volumes/data/lldb/svn/latest/test/functionalities/archives/libfoo.a(a.o)'
+[ 11] 00000001 2e (N_BNSYM ) 01 0000 0000000100000dd0
+[ 12] 000000dd 24 (N_FUN ) 01 0000 0000000100000dd0 '_a'
+[ 13] 00000001 24 (N_FUN ) 00 0000 0000000000000020
+[ 14] 00000001 4e (N_ENSYM ) 01 0000 0000000000000020
+[ 15] 00000001 2e (N_BNSYM ) 01 0000 0000000100000df0
+[ 16] 000000e0 24 (N_FUN ) 01 0000 0000000100000df0 '_aa'
+[ 17] 00000001 24 (N_FUN ) 00 0000 0000000000000018
+[ 18] 00000001 4e (N_ENSYM ) 01 0000 0000000000000018
+[ 19] 000000e4 20 (N_GSYM ) 00 0000 0000000000000000 '___a_global'
+[ 20] 00000001 64 (N_SO ) 01 0000 0000000000000000
+[ 21] 00000002 64 (N_SO ) 00 0000 0000000000000000 '/Volumes/data/lldb/svn/latest/test/functionalities/archives/'
+[ 22] 000000f0 64 (N_SO ) 00 0000 0000000000000000 'b.c'
+[ 23] 000000f4 66 (N_OSO ) 03 0001 000000004f0f780c '/Volumes/data/lldb/svn/latest/test/functionalities/archives/libfoo.a(b.o)'
+[ 24] 00000001 2e (N_BNSYM ) 01 0000 0000000100000e10
+[ 25] 0000013e 24 (N_FUN ) 01 0000 0000000100000e10 '_b'
+[ 26] 00000001 24 (N_FUN ) 00 0000 0000000000000020
+[ 27] 00000001 4e (N_ENSYM ) 01 0000 0000000000000020
+[ 28] 00000001 2e (N_BNSYM ) 01 0000 0000000100000e30
+[ 29] 00000141 24 (N_FUN ) 01 0000 0000000100000e30 '_bb'
+[ 30] 00000001 24 (N_FUN ) 00 0000 0000000000000018
+[ 31] 00000001 4e (N_ENSYM ) 01 0000 0000000000000018
+[ 32] 00000145 26 (N_STSYM ) 0a 0000 000000010000104c '___b_global'
+[ 33] 00000001 64 (N_SO ) 01 0000 0000000000000000
+[ 34] 00000151 0e ( SECT ) 07 0000 0000000100001000 '_pvars'
+[ 35] 00000158 0e ( SECT ) 0a 0000 000000010000104c '___b_global'
+[ 36] 00000164 0f ( SECT EXT) 0b 0000 0000000100001050 '_NXArgc'
+[ 37] 0000016c 0f ( SECT EXT) 0b 0000 0000000100001058 '_NXArgv'
+[ 38] 00000174 0f ( SECT EXT) 0a 0000 0000000100001048 '___a_global'
+[ 39] 00000180 0f ( SECT EXT) 0b 0000 0000000100001068 '___progname'
+[ 40] 0000018c 03 ( ABS EXT) 01 0010 0000000100000000 '__mh_execute_header'
+[ 41] 000001a0 0f ( SECT EXT) 01 0000 0000000100000dd0 '_a'
+[ 42] 000001a3 0f ( SECT EXT) 01 0000 0000000100000df0 '_aa'
+[ 43] 000001a7 0f ( SECT EXT) 01 0000 0000000100000e10 '_b'
+[ 44] 000001aa 0f ( SECT EXT) 01 0000 0000000100000e30 '_bb'
+[ 45] 000001ae 0f ( SECT EXT) 0b 0000 0000000100001060 '_environ'
+[ 46] 000001b7 0f ( SECT EXT) 01 0000 0000000100000d70 '_main'
+[ 47] 000001bd 0f ( SECT EXT) 01 0000 0000000100000d30 'start'
+[ 48] 000001c3 01 ( UNDF EXT) 00 0100 0000000000000000 '_exit'
+[ 49] 000001c9 01 ( UNDF EXT) 00 0100 0000000000000000 '_printf'
+[ 50] 000001d1 01 ( UNDF EXT) 00 0100 0000000000000000 'dyld_stub_binder'
+
+
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/TestBSDArchives.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/TestBSDArchives.py
new file mode 100644
index 00000000000..b412ac4c135
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/TestBSDArchives.py
@@ -0,0 +1,61 @@
+"""Test breaking inside functions defined within a BSD archive file libfoo.a."""
+
+
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class BSDArchivesTestCase(TestBase):
+
+ mydir = TestBase.compute_mydir(__file__)
+
+ def setUp(self):
+ # Call super's setUp().
+ TestBase.setUp(self)
+ # Find the line number in a(int) to break at.
+ self.line = line_number(
+ 'a.c', '// Set file and line breakpoint inside a().')
+
+ @expectedFailureAll(
+ oslist=["windows"],
+ bugnumber="llvm.org/pr24527. Makefile.rules doesn't know how to build static libs on Windows")
+ def test(self):
+ """Break inside a() and b() defined within libfoo.a."""
+ self.build()
+
+ exe = self.getBuildArtifact("a.out")
+ self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
+
+ # Break inside a() by file and line first.
+ lldbutil.run_break_set_by_file_and_line(
+ self, "a.c", self.line, num_expected_locations=1, loc_exact=True)
+
+ self.runCmd("run", RUN_SUCCEEDED)
+
+ # The stop reason of the thread should be breakpoint.
+ self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
+ substrs=['stopped',
+ 'stop reason = breakpoint'])
+
+ # Break at a(int) first.
+ self.expect("frame variable", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['(int) arg = 1'])
+ self.expect("frame variable __a_global", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['(int) __a_global = 1'])
+
+ # Set breakpoint for b() next.
+ lldbutil.run_break_set_by_symbol(
+ self, "b", num_expected_locations=1, sym_exact=True)
+
+ # Continue the program, we should break at b(int) next.
+ self.runCmd("continue")
+ self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT,
+ substrs=['stopped',
+ 'stop reason = breakpoint'])
+ self.expect("frame variable", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['(int) arg = 2'])
+ self.expect("frame variable __b_global", VARIABLES_DISPLAYED_CORRECTLY,
+ substrs=['(int) __b_global = 2'])
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/a.c b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/a.c
new file mode 100644
index 00000000000..c8d226ab9de
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/a.c
@@ -0,0 +1,18 @@
+//===-- a.c -----------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+int __a_global = 1;
+
+int a(int arg) {
+ int result = arg + __a_global;
+ return result; // Set file and line breakpoint inside a().
+}
+
+int aa(int arg1) {
+ int result1 = arg1 - __a_global;
+ return result1;
+}
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/b.c b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/b.c
new file mode 100644
index 00000000000..6510b978f37
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/b.c
@@ -0,0 +1,18 @@
+//===-- b.c -----------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+static int __b_global = 2;
+
+int b(int arg) {
+ int result = arg + __b_global;
+ return result;
+}
+
+int bb(int arg1) {
+ int result2 = arg1 - __b_global;
+ return result2;
+}
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/main.c b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/main.c
new file mode 100644
index 00000000000..1525a1a5e38
--- /dev/null
+++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/functionalities/archives/main.c
@@ -0,0 +1,16 @@
+//===-- main.c --------------------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#include <stdio.h>
+
+extern int a(int);
+extern int b(int);
+int main (int argc, char const *argv[])
+{
+ printf ("a(1) returns %d\n", a(1));
+ printf ("b(2) returns %d\n", b(2));
+}