Fixed an issue where a lexical block or inlined function might have bad debug
information generated for it. Say we have a concrete function "foo" which
has inlined function "a" which calls another inlined function "b":
foo
1 {
2 {
a ()
3 {
b ()
4 {
}
}
}
}
Sometimes we see the compiler generate an address range in the DWARF for "foo"
(block 1 above) as say [0x1000-0x1100). Then the range for "a" is something
like [0x1050-0x1060) (note that it is correctly scoped within the "foo"
address range). And then we get "b" which is a child of "a", yet the debug
info says it has a range of [0x1060-0x1080) (not contained within "a"). We now
detect this issue when making our blocks and add an extra range to "a".
Also added a new "lldb" logging category named "symbol" where we can find out
about symbol file errors and warnings.
git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@140822 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/lldb-log.cpp b/source/lldb-log.cpp
index 737cdc4..6dc32f0 100644
--- a/source/lldb-log.cpp
+++ b/source/lldb-log.cpp
@@ -135,6 +135,7 @@
else if (0 == ::strncasecmp(arg, "host", 4)) flag_bits &= ~LIBLLDB_LOG_HOST;
else if (0 == ::strncasecmp(arg, "unwind", 6)) flag_bits &= ~LIBLLDB_LOG_UNWIND;
else if (0 == ::strncasecmp(arg, "types", 5)) flag_bits &= ~LIBLLDB_LOG_TYPES;
+ else if (0 == ::strncasecmp(arg, "symbol", 6)) flag_bits &= ~LIBLLDB_LOG_SYMBOLS;
else
{
feedback_strm->Printf ("error: unrecognized log category '%s'\n", arg);
@@ -202,6 +203,7 @@
else if (0 == ::strncasecmp(arg, "host", 4)) flag_bits |= LIBLLDB_LOG_HOST;
else if (0 == ::strncasecmp(arg, "unwind", 6)) flag_bits |= LIBLLDB_LOG_UNWIND;
else if (0 == ::strncasecmp(arg, "types", 5)) flag_bits |= LIBLLDB_LOG_TYPES;
+ else if (0 == ::strncasecmp(arg, "symbol", 6)) flag_bits |= LIBLLDB_LOG_SYMBOLS;
else
{
feedback_strm->Printf("error: unrecognized log category '%s'\n", arg);
@@ -241,6 +243,7 @@
" step - log step related activities\n"
" unwind - log stack unwind activities\n"
" verbose - enable verbose logging\n"
+ " symbol - log symbol related issues and warnings\n"
" watch - log watchpoint related activities\n"
" types - log type system related activities\n");
}