Skip to content

Commit

Permalink
Merged master:0b0dca9f6fe into amd-gfx:572453d9582
Browse files Browse the repository at this point in the history
Local branch amd-gfx 572453d Merged master:b9a26a80c81 into amd-gfx:64a41bc33bd
Remote branch master 0b0dca9 [lldb] Fix exception breakpoint not being resolved when set on dummy target
  • Loading branch information
Sw authored and Sw committed Nov 22, 2019
2 parents 572453d + 0b0dca9 commit 36a5978
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ def test_cpp_exception_breakpoint(self):
self.build()
self.do_cpp_exception_bkpt()

@add_test_categories(['pyapi'])
@expectedFailureAll(oslist=["windows"], bugnumber="llvm.org/pr24538")
@expectedFailureNetBSD
def test_dummy_target_cpp_exception_breakpoint(self):
"""Test setting and hitting the C++ exception breakpoint from dummy target."""
self.build()
self.do_dummy_target_cpp_exception_bkpt()

def setUp(self):
TestBase.setUp(self)
self.main_source = "main.c"
Expand All @@ -50,3 +58,30 @@ def do_cpp_exception_bkpt(self):
process, exception_bkpt)
self.assertTrue(len(thread_list) == 1,
"One thread stopped at the exception breakpoint.")

def do_dummy_target_cpp_exception_bkpt(self):
exe = self.getBuildArtifact("a.out")
error = lldb.SBError()

dummy_exception_bkpt = self.dbg.GetDummyTarget().BreakpointCreateForException(
lldb.eLanguageTypeC_plus_plus, False, True)
self.assertTrue(
dummy_exception_bkpt.IsValid(),
"Created exception breakpoint in dummy target.")

self.target = self.dbg.CreateTarget(exe)
self.assertTrue(self.target, VALID_TARGET)

exception_bkpt = self.target.GetBreakpointAtIndex(0)
self.assertTrue(
exception_bkpt.IsValid(),
"Target primed with exception breakpoint from dummy target.")

process = self.target.LaunchSimple(
None, None, self.get_process_working_directory())
self.assertTrue(process, PROCESS_IS_VALID)

thread_list = lldbutil.get_threads_stopped_at_breakpoint(
process, exception_bkpt)
self.assertTrue(len(thread_list) == 1,
"One thread stopped at the exception breakpoint.")
4 changes: 3 additions & 1 deletion lldb/source/Target/LanguageRuntime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,8 +155,10 @@ class ExceptionBreakpointResolver : public BreakpointResolver {

protected:
BreakpointResolverSP CopyForBreakpoint(Breakpoint &breakpoint) override {
return BreakpointResolverSP(
BreakpointResolverSP ret_sp(
new ExceptionBreakpointResolver(m_language, m_catch_bp, m_throw_bp));
ret_sp->SetBreakpoint(&breakpoint);
return ret_sp;
}

bool SetActualResolver() {
Expand Down

0 comments on commit 36a5978

Please sign in to comment.