aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp30
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFProperties.td4
2 files changed, 23 insertions, 11 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index 7e0cf36..cb2625a 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -87,7 +87,7 @@
#include <cctype>
#include <cstring>
-//#define ENABLE_DEBUG_PRINTF // COMMENT OUT THIS LINE PRIOR TO CHECKIN
+// #define ENABLE_DEBUG_PRINTF // COMMENT OUT THIS LINE PRIOR TO CHECKIN
#ifdef ENABLE_DEBUG_PRINTF
#include <cstdio>
@@ -129,6 +129,11 @@ public:
bool IgnoreFileIndexes() const {
return GetPropertyAtIndexAs<bool>(ePropertyIgnoreIndexes, false);
}
+
+ bool EmitUnsupportedDWFormValueWarning() const {
+ return GetPropertyAtIndexAs<bool>(
+ ePropertyEmitUnsupportedDWFormValueWarning, true);
+ }
};
} // namespace
@@ -624,12 +629,14 @@ uint32_t SymbolFileDWARF::CalculateAbilities() {
llvm::DWARFDebugAbbrev *abbrev = DebugAbbrev();
std::set<dw_form_t> unsupported_forms = GetUnsupportedForms(abbrev);
if (!unsupported_forms.empty()) {
- StreamString error;
- error.Printf("unsupported DW_FORM value%s:",
- unsupported_forms.size() > 1 ? "s" : "");
- for (auto form : unsupported_forms)
- error.Printf(" %#x", form);
- m_objfile_sp->GetModule()->ReportWarning("{0}", error.GetString());
+ if (GetGlobalPluginProperties().EmitUnsupportedDWFormValueWarning()) {
+ StreamString error;
+ error.Printf("unsupported DW_FORM value%s:",
+ unsupported_forms.size() > 1 ? "s" : "");
+ for (auto form : unsupported_forms)
+ error.Printf(" %#x", form);
+ m_objfile_sp->GetModule()->ReportWarning("{0}", error.GetString());
+ }
return 0;
}
@@ -1770,16 +1777,17 @@ SymbolFileDWARF *SymbolFileDWARF::GetDIERefSymbolFile(const DIERef &die_ref) {
return this;
if (file_index) {
- // We have a SymbolFileDWARFDebugMap, so let it find the right file
+ // We have a SymbolFileDWARFDebugMap, so let it find the right file
if (SymbolFileDWARFDebugMap *debug_map = GetDebugMapSymfile())
return debug_map->GetSymbolFileByOSOIndex(*file_index);
-
+
// Handle the .dwp file case correctly
if (*file_index == DIERef::k_file_index_mask)
return GetDwpSymbolFile().get(); // DWP case
// Handle the .dwo file case correctly
- return DebugInfo().GetUnitAtIndex(*die_ref.file_index())
+ return DebugInfo()
+ .GetUnitAtIndex(*die_ref.file_index())
->GetDwoSymbolFile(); // DWO case
}
return this;
@@ -3594,7 +3602,7 @@ VariableSP SymbolFileDWARF::ParseVariableDIE(const SymbolContext &sc,
lldb::addr_t location_DW_OP_addr = LLDB_INVALID_ADDRESS;
if (!location_is_const_value_data) {
bool op_error = false;
- const DWARFExpression* location = location_list.GetAlwaysValidExpr();
+ const DWARFExpression *location = location_list.GetAlwaysValidExpr();
if (location)
location_DW_OP_addr =
location->GetLocation_DW_OP_addr(location_form.GetUnit(), op_error);
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFProperties.td b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFProperties.td
index 2f1ce88..0f980a5 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFProperties.td
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFProperties.td
@@ -5,4 +5,8 @@ let Definition = "symbolfiledwarf" in {
Global,
DefaultFalse,
Desc<"Ignore indexes present in the object files and always index DWARF manually.">;
+ def EmitUnsupportedDWFormValueWarning: Property<"emit-unsupported-dwform-value", "Boolean">,
+ Global,
+ DefaultTrue,
+ Desc<"Emit warnings about unsupported DW_Form values.">;
}