diff options
author | 2020-08-03 14:33:06 +0000 | |
---|---|---|
committer | 2020-08-03 14:33:06 +0000 | |
commit | 061da546b983eb767bad15e67af1174fb0bcf31c (patch) | |
tree | 83c78b820819d70aa40c36d90447978b300078c5 /gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap | |
parent | Import LLVM 10.0.0 release including clang, lld and lldb. (diff) | |
download | wireguard-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/linux/builtin_trap')
3 files changed, 70 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/Makefile b/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/Makefile new file mode 100644 index 00000000000..99998b20bcb --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/Makefile @@ -0,0 +1,3 @@ +CXX_SOURCES := main.cpp + +include Makefile.rules diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/TestBuiltinTrap.py b/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/TestBuiltinTrap.py new file mode 100644 index 00000000000..22de873e29f --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/TestBuiltinTrap.py @@ -0,0 +1,51 @@ +""" +Test lldb ability to unwind a stack with a function containing a call to the +'__builtin_trap' intrinsic, which GCC (4.6) encodes to an illegal opcode. +""" + + + +import lldb +from lldbsuite.test.decorators import * +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class BuiltinTrapTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + + def setUp(self): + # Call super's setUp(). + TestBase.setUp(self) + # Find the line number to break at. + self.line = line_number('main.cpp', '// Set break point at this line.') + + # gcc generates incorrect linetable + @expectedFailureAll(archs="arm", compiler="gcc", triple=".*-android") + @expectedFailureAll(oslist=['linux'], archs=['arm', 'aarch64']) + @skipIfWindows + def test_with_run_command(self): + """Test that LLDB handles a function with __builtin_trap correctly.""" + self.build() + self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) + + lldbutil.run_break_set_by_file_and_line(self, "main.cpp", 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']) + + # print backtrace, expect both 'bar' and 'main' functions to be listed + self.expect('bt', substrs=['bar', 'main']) + + # go up one frame + self.runCmd("up", RUN_SUCCEEDED) + + # evaluate a local + self.expect('p foo', substrs=['= 5']) diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/main.cpp b/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/main.cpp new file mode 100644 index 00000000000..f005e697c8e --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/linux/builtin_trap/main.cpp @@ -0,0 +1,16 @@ +//===-- main.cpp ------------------------------------------------*- 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 +// +//===----------------------------------------------------------------------===// + +void bar(int const *foo) { + __builtin_trap(); // Set break point at this line. +} + +int main() { + int foo = 5; + bar(&foo); +} |