diff options
author | Greg Clayton <gclayton@apple.com> | 2011-09-29 23:41:34 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2011-09-29 23:41:34 +0000 |
commit | 6c7f56192fa6e689ef14d32e43a785de5692e9c0 (patch) | |
tree | 8846a2853b68e0c5f59e76751ef68d46093cac0c /lldb/source/lldb-log.cpp | |
parent | a3e7ffdae80e06f88191be8ec80d7d21f158ac54 (diff) | |
download | bcm5719-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.cpp | 3 |
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"); } |