summaryrefslogtreecommitdiffstats
path: root/lldb/source/lldb-log.cpp
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2011-09-29 23:41:34 +0000
committerGreg Clayton <gclayton@apple.com>2011-09-29 23:41:34 +0000
commit6c7f56192fa6e689ef14d32e43a785de5692e9c0 (patch)
tree8846a2853b68e0c5f59e76751ef68d46093cac0c /lldb/source/lldb-log.cpp
parenta3e7ffdae80e06f88191be8ec80d7d21f158ac54 (diff)
downloadbcm5719-llvm-6c7f56192fa6e689ef14d32e43a785de5692e9c0.tar.gz
bcm5719-llvm-6c7f56192fa6e689ef14d32e43a785de5692e9c0.zip
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. llvm-svn: 140822
Diffstat (limited to 'lldb/source/lldb-log.cpp')
-rw-r--r--lldb/source/lldb-log.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/lldb/source/lldb-log.cpp b/lldb/source/lldb-log.cpp
index 737cdc4edfa..6dc32f0d378 100644
--- a/lldb/source/lldb-log.cpp
+++ b/lldb/source/lldb-log.cpp
@@ -135,6 +135,7 @@ lldb_private::DisableLog (Args &args, Stream *feedback_strm)
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 @@ lldb_private::EnableLog (StreamSP &log_stream_sp, uint32_t log_options, Args &ar
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 @@ lldb_private::ListLogCategories (Stream *strm)
" 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");
}
OpenPOWER on IntegriCloud