This revision was automatically updated to reflect the committed changes.
Closed by commit rG19d969e340c9: [lldb] Implement SymbolFile::GetCompileOptions
(authored by augusto2112).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D147748/new/
https://reviews.llvm.org/D147748
Files:
lldb/include/lldb/Symbol/SymbolFile.h
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
===================================================================
--- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
+++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
@@ -153,6 +153,9 @@
// Statistics overrides.
lldb_private::ModuleList GetDebugInfoModules() override;
+ void GetCompileOptions(
+ std::unordered_map<lldb::CompUnitSP, lldb_private::Args> &args) override;
+
protected:
enum { kHaveInitializedOSOs = (1 << 0), kNumFlags };
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
===================================================================
--- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
+++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.cpp
@@ -1549,3 +1549,12 @@
}
return Status();
}
+
+void SymbolFileDWARFDebugMap::GetCompileOptions(
+ std::unordered_map<lldb::CompUnitSP, lldb_private::Args> &args) {
+
+ ForEachSymbolFile([&](SymbolFileDWARF *oso_dwarf) -> bool {
+ oso_dwarf->GetCompileOptions(args);
+ return false;
+ });
+}
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
===================================================================
--- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
+++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
@@ -523,6 +523,9 @@
void InitializeFirstCodeAddress();
+ void GetCompileOptions(
+ std::unordered_map<lldb::CompUnitSP, lldb_private::Args> &args) override;
+
lldb::ModuleWP m_debug_map_module_wp;
SymbolFileDWARFDebugMap *m_debug_map_symfile;
Index: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
===================================================================
--- lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -4255,3 +4255,30 @@
return Status("no variable information is available in debug info for this "
"compile unit");
}
+
+void SymbolFileDWARF::GetCompileOptions(
+ std::unordered_map<lldb::CompUnitSP, lldb_private::Args> &args) {
+
+ const uint32_t num_compile_units = GetNumCompileUnits();
+
+ for (uint32_t cu_idx = 0; cu_idx < num_compile_units; ++cu_idx) {
+ lldb::CompUnitSP comp_unit = GetCompileUnitAtIndex(cu_idx);
+ if (!comp_unit)
+ continue;
+
+ DWARFUnit *dwarf_cu = GetDWARFCompileUnit(comp_unit.get());
+ if (!dwarf_cu)
+ continue;
+
+ const DWARFBaseDIE die = dwarf_cu->GetUnitDIEOnly();
+ if (!die)
+ continue;
+
+ const char *flags = die.GetAttributeValueAsString(DW_AT_APPLE_flags, NULL);
+
+ if (!flags)
+ continue;
+ args.insert({comp_unit, Args(flags)});
+ }
+}
+
Index: lldb/include/lldb/Symbol/SymbolFile.h
===================================================================
--- lldb/include/lldb/Symbol/SymbolFile.h
+++ lldb/include/lldb/Symbol/SymbolFile.h
@@ -30,6 +30,7 @@
#include <mutex>
#include <optional>
+#include <unordered_map>
#if defined(LLDB_CONFIGURATION_DEBUG)
#define ASSERT_MODULE_LOCK(expr) (expr->AssertModuleLock())
@@ -435,9 +436,20 @@
virtual lldb::TypeSP CopyType(const lldb::TypeSP &other_type) = 0;
+ /// Returns a map of compilation unit to the compile option arguments
+ /// associated with that compilation unit.
+ std::unordered_map<lldb::CompUnitSP, Args> GetCompileOptions() {
+ std::unordered_map<lldb::CompUnitSP, Args> args;
+ GetCompileOptions(args);
+ return args;
+ }
+
protected:
void AssertModuleLock();
+ virtual void GetCompileOptions(
+ std::unordered_map<lldb::CompUnitSP, lldb_private::Args> &args) {}
+
private:
SymbolFile(const SymbolFile &) = delete;
const SymbolFile &operator=(const SymbolFile &) = delete;
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits