aboutsummaryrefslogtreecommitdiff
path: root/source/Breakpoint
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2011-07-12 17:06:17 +0000
committerGreg Clayton <gclayton@apple.com>2011-07-12 17:06:17 +0000
commit7dd98df0d69447d3f42b8044b7cda2c089aea653 (patch)
tree4f933553088f686c077634c7f79c26a2e8f6f8b8 /source/Breakpoint
parent6247dbee41ec51e9a082df7e86269c0f47f28160 (diff)
downloadlldb-7dd98df0d69447d3f42b8044b7cda2c089aea653.tar.gz
Added the ability to _not_ skip the prologue when settings breakpoints
by name by adding an extra parameter to the lldb_private::Target breakpoint setting functions. Added a function in the DWARF symbol file plug-in that can dump errors and prints out which DWARF file the error is happening in so we can track down what used to be assertions easily. Fixed the MacOSX kernel plug-in to properly read the kext images and set the kext breakpoint to watch for kexts as they are loaded. git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@134990 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'source/Breakpoint')
-rw-r--r--source/Breakpoint/BreakpointResolverName.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/source/Breakpoint/BreakpointResolverName.cpp b/source/Breakpoint/BreakpointResolverName.cpp
index 87acb521b..37054d4af 100644
--- a/source/Breakpoint/BreakpointResolverName.cpp
+++ b/source/Breakpoint/BreakpointResolverName.cpp
@@ -26,7 +26,8 @@ BreakpointResolverName::BreakpointResolverName
Breakpoint *bkpt,
const char *func_name,
uint32_t func_name_type_mask,
- Breakpoint::MatchType type
+ Breakpoint::MatchType type,
+ bool skip_prologue
) :
BreakpointResolver (bkpt, BreakpointResolver::NameResolver),
m_func_name (),
@@ -34,7 +35,8 @@ BreakpointResolverName::BreakpointResolverName
m_func_name_type_mask (func_name_type_mask),
m_class_name (),
m_regex (),
- m_match_type (type)
+ m_match_type (type),
+ m_skip_prologue (skip_prologue)
{
if (func_name_type_mask == eFunctionNameTypeAuto)
{
@@ -92,13 +94,15 @@ BreakpointResolverName::BreakpointResolverName
BreakpointResolverName::BreakpointResolverName
(
Breakpoint *bkpt,
- RegularExpression &func_regex
+ RegularExpression &func_regex,
+ bool skip_prologue
) :
BreakpointResolver (bkpt, BreakpointResolver::NameResolver),
m_func_name (NULL),
m_class_name (NULL),
m_regex (func_regex),
- m_match_type (Breakpoint::Regexp)
+ m_match_type (Breakpoint::Regexp),
+ m_skip_prologue (skip_prologue)
{
}
@@ -108,13 +112,15 @@ BreakpointResolverName::BreakpointResolverName
Breakpoint *bkpt,
const char *class_name,
const char *method,
- Breakpoint::MatchType type
+ Breakpoint::MatchType type,
+ bool skip_prologue
) :
BreakpointResolver (bkpt, BreakpointResolver::NameResolver),
m_func_name (method),
m_class_name (class_name),
m_regex (),
- m_match_type (type)
+ m_match_type (type),
+ m_skip_prologue (skip_prologue)
{
}
@@ -139,18 +145,12 @@ BreakpointResolverName::SearchCallback
SymbolContextList func_list;
SymbolContextList sym_list;
- bool skip_prologue = true;
uint32_t i;
bool new_location;
SymbolContext sc;
Address break_addr;
assert (m_breakpoint != NULL);
- if (context.target_sp)
- {
- skip_prologue = context.target_sp->GetSkipPrologue();
- }
-
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_BREAKPOINTS));
if (m_class_name)
@@ -294,7 +294,7 @@ BreakpointResolverName::SearchCallback
else if (sc.function)
{
break_addr = sc.function->GetAddressRange().GetBaseAddress();
- if (skip_prologue)
+ if (m_skip_prologue)
{
if (break_addr.IsValid())
{
@@ -333,7 +333,7 @@ BreakpointResolverName::SearchCallback
{
break_addr = sc.symbol->GetAddressRangePtr()->GetBaseAddress();
- if (skip_prologue)
+ if (m_skip_prologue)
{
const uint32_t prologue_byte_size = sc.symbol->GetPrologueByteSize();
if (prologue_byte_size)