This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG04701698ebaf: [lldb/API] Expose Target::CreateBreakpoint(..., move_to_nearest_code) overload (authored by mib).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D93266/new/ https://reviews.llvm.org/D93266 Files: lldb/bindings/interface/SBTarget.i lldb/include/lldb/API/SBTarget.h lldb/source/API/SBTarget.cpp lldb/test/API/functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py
Index: lldb/test/API/functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py =================================================================== --- lldb/test/API/functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py +++ lldb/test/API/functionalities/breakpoint/breakpoint_by_line_and_column/TestBreakpointByLineAndColumn.py @@ -42,3 +42,30 @@ self.assertEqual(b_loc.GetLine(), 11) in_condition |= b_loc.GetColumn() < 30 self.assertTrue(in_condition) + + ## Skip gcc version less 7.1 since it doesn't support -gcolumn-info + @skipIf(compiler="gcc", compiler_version=['<', '7.1']) + def testBreakpointByLineAndColumnNearestCode(self): + self.build() + exe = self.getBuildArtifact("a.out") + + main_c = lldb.SBFileSpec("main.c") + line = line_number("main.c", "// Line 20.") + column = len("// Line 20") # should stop at the period. + indent = 2 + module_list = lldb.SBFileSpecList() + + # Create a target from the debugger. + target = self.dbg.CreateTarget(exe) + self.assertTrue(target, VALID_TARGET) + + valid_bpt = target.BreakpointCreateByLocation(main_c, line, column, + indent, module_list, True) + self.assertTrue(valid_bpt, VALID_BREAKPOINT) + self.assertEqual(valid_bpt.GetNumLocations(), 1) + + invalid_bpt = target.BreakpointCreateByLocation(main_c, line, column, + indent, module_list, False) + self.assertTrue(invalid_bpt, VALID_BREAKPOINT) + self.assertEqual(invalid_bpt.GetNumLocations(), 0) + Index: lldb/source/API/SBTarget.cpp =================================================================== --- lldb/source/API/SBTarget.cpp +++ lldb/source/API/SBTarget.cpp @@ -757,14 +757,10 @@ offset, sb_module_list)); } -SBBreakpoint SBTarget::BreakpointCreateByLocation( - const SBFileSpec &sb_file_spec, uint32_t line, uint32_t column, - lldb::addr_t offset, SBFileSpecList &sb_module_list) { - LLDB_RECORD_METHOD(lldb::SBBreakpoint, SBTarget, BreakpointCreateByLocation, - (const lldb::SBFileSpec &, uint32_t, uint32_t, - lldb::addr_t, lldb::SBFileSpecList &), - sb_file_spec, line, column, offset, sb_module_list); - +SBBreakpoint SBTarget::BreakpointCreateByLocationImpl( + const lldb::SBFileSpec &sb_file_spec, uint32_t line, uint32_t column, + lldb::addr_t offset, SBFileSpecList &sb_module_list, + const LazyBool move_to_nearest_code) { SBBreakpoint sb_bp; TargetSP target_sp(GetSP()); if (target_sp && line != 0) { @@ -774,7 +770,6 @@ const LazyBool skip_prologue = eLazyBoolCalculate; const bool internal = false; const bool hardware = false; - const LazyBool move_to_nearest_code = eLazyBoolCalculate; const FileSpecList *module_list = nullptr; if (sb_module_list.GetSize() > 0) { module_list = sb_module_list.get(); @@ -784,7 +779,34 @@ skip_prologue, internal, hardware, move_to_nearest_code); } - return LLDB_RECORD_RESULT(sb_bp); + return sb_bp; +} + +SBBreakpoint SBTarget::BreakpointCreateByLocation( + const SBFileSpec &sb_file_spec, uint32_t line, uint32_t column, + lldb::addr_t offset, SBFileSpecList &sb_module_list) { + LLDB_RECORD_METHOD(lldb::SBBreakpoint, SBTarget, BreakpointCreateByLocation, + (const lldb::SBFileSpec &, uint32_t, uint32_t, + lldb::addr_t, lldb::SBFileSpecList &), + sb_file_spec, line, column, offset, sb_module_list); + + return LLDB_RECORD_RESULT(BreakpointCreateByLocationImpl( + sb_file_spec, line, column, offset, sb_module_list, eLazyBoolCalculate)); +} + +SBBreakpoint SBTarget::BreakpointCreateByLocation( + const SBFileSpec &sb_file_spec, uint32_t line, uint32_t column, + lldb::addr_t offset, SBFileSpecList &sb_module_list, + bool move_to_nearest_code) { + LLDB_RECORD_METHOD(lldb::SBBreakpoint, SBTarget, BreakpointCreateByLocation, + (const lldb::SBFileSpec &, uint32_t, uint32_t, + lldb::addr_t, lldb::SBFileSpecList &, bool), + sb_file_spec, line, column, offset, sb_module_list, + move_to_nearest_code); + + return LLDB_RECORD_RESULT(BreakpointCreateByLocationImpl( + sb_file_spec, line, column, offset, sb_module_list, + move_to_nearest_code ? eLazyBoolYes : eLazyBoolNo)); } SBBreakpoint SBTarget::BreakpointCreateByName(const char *symbol_name, @@ -2489,6 +2511,9 @@ BreakpointCreateByLocation, (const lldb::SBFileSpec &, uint32_t, uint32_t, lldb::addr_t, lldb::SBFileSpecList &)); + LLDB_REGISTER_METHOD(lldb::SBBreakpoint, SBTarget, BreakpointCreateByLocation, + (const lldb::SBFileSpec &, uint32_t, uint32_t, + lldb::addr_t, lldb::SBFileSpecList &, bool)); LLDB_REGISTER_METHOD(lldb::SBBreakpoint, SBTarget, BreakpointCreateByName, (const char *, const char *)); LLDB_REGISTER_METHOD(lldb::SBBreakpoint, SBTarget, BreakpointCreateByName, Index: lldb/include/lldb/API/SBTarget.h =================================================================== --- lldb/include/lldb/API/SBTarget.h +++ lldb/include/lldb/API/SBTarget.h @@ -9,6 +9,8 @@ #ifndef LLDB_API_SBTARGET_H #define LLDB_API_SBTARGET_H +#include "lldb/lldb-private-enumerations.h" + #include "lldb/API/SBAddress.h" #include "lldb/API/SBAttachInfo.h" #include "lldb/API/SBBreakpoint.h" @@ -560,6 +562,12 @@ uint32_t column, lldb::addr_t offset, SBFileSpecList &module_list); + lldb::SBBreakpoint + BreakpointCreateByLocation(const lldb::SBFileSpec &file_spec, uint32_t line, + uint32_t column, lldb::addr_t offset, + SBFileSpecList &module_list, + bool move_to_nearest_code); + lldb::SBBreakpoint BreakpointCreateByName(const char *symbol_name, const char *module_name = nullptr); @@ -858,6 +866,11 @@ void SetSP(const lldb::TargetSP &target_sp); private: + lldb::SBBreakpoint BreakpointCreateByLocationImpl( + const lldb::SBFileSpec &file_spec, uint32_t line, uint32_t column, + lldb::addr_t offset, SBFileSpecList &module_list, + const lldb_private::LazyBool move_to_nearest_code); + lldb::TargetSP m_opaque_sp; }; Index: lldb/bindings/interface/SBTarget.i =================================================================== --- lldb/bindings/interface/SBTarget.i +++ lldb/bindings/interface/SBTarget.i @@ -579,6 +579,12 @@ uint32_t column, lldb::addr_t offset, SBFileSpecList &module_list); + lldb::SBBreakpoint + BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line, + uint32_t column, lldb::addr_t offset, + SBFileSpecList &module_list, + bool move_to_nearest_code); + lldb::SBBreakpoint BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits