[Lldb-commits] [lldb] da45904 - Revert "[lldb][DWARF5] Enable macro evaluation"

Stella Stamenova via lldb-commits lldb-commits at lists.llvm.org
Wed Sep 14 09:32:59 PDT 2022


Author: Stella Stamenova
Date: 2022-09-14T09:30:49-07:00
New Revision: da459043f8c5d4187c798cc13a48bc7f7c1bd81a

URL: https://github.com/llvm/llvm-project/commit/da459043f8c5d4187c798cc13a48bc7f7c1bd81a
DIFF: https://github.com/llvm/llvm-project/commit/da459043f8c5d4187c798cc13a48bc7f7c1bd81a.diff

LOG: Revert "[lldb][DWARF5] Enable macro evaluation"

This reverts commit a0fb69d17b4d7501a85554010727837340e7b52f.

This broke the windows lldb bot: https://lab.llvm.org/buildbot/#/builders/83/builds/23666

Added: 
    

Modified: 
    lldb/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp
    lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.cpp
    lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.h
    lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
    lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
    lldb/test/API/commands/expression/macros/Makefile
    lldb/test/API/commands/expression/macros/TestMacros.py

Removed: 
    lldb/test/API/lang/c/macro/Makefile
    lldb/test/API/lang/c/macro/TestMacro.py
    lldb/test/API/lang/c/macro/main.c


################################################################################
diff  --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp
index c357033aa91d7..37e28a09f3c45 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFContext.cpp
@@ -92,8 +92,8 @@ const DWARFDataExtractor &DWARFContext::getOrLoadLocListsData() {
 }
 
 const DWARFDataExtractor &DWARFContext::getOrLoadMacroData() {
-  return LoadOrGetSection(eSectionTypeDWARFDebugMacro,
-                          eSectionTypeDWARFDebugMacro, m_data_debug_macro);
+  return LoadOrGetSection(eSectionTypeDWARFDebugMacro, llvm::None,
+                          m_data_debug_macro);
 }
 
 const DWARFDataExtractor &DWARFContext::getOrLoadRangesData() {

diff  --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.cpp
index d7a43a3f9c68b..19c6448c4e74a 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.cpp
@@ -16,11 +16,6 @@
 using namespace lldb_private;
 using namespace lldb_private::dwarf;
 
-uint64_t DWARFStrOffsetsInfo::GetOffset(uint64_t index) const {
-  uint64_t offset = cu_str_offset + data.GetDWARFSizeOfOffset() * index;
-  return data.GetU32(&offset);
-}
-
 DWARFDebugMacroHeader
 DWARFDebugMacroHeader::ParseHeader(const DWARFDataExtractor &debug_macro_data,
                                    lldb::offset_t *offset) {
@@ -64,8 +59,7 @@ void DWARFDebugMacroHeader::SkipOperandTable(
 
 void DWARFDebugMacroEntry::ReadMacroEntries(
     const DWARFDataExtractor &debug_macro_data,
-    const DWARFDataExtractor &debug_str_data,
-    const DWARFStrOffsetsInfo *str_offsets_info, const bool offset_is_64_bit,
+    const DWARFDataExtractor &debug_str_data, const bool offset_is_64_bit,
     lldb::offset_t *offset, SymbolFileDWARF *sym_file_dwarf,
     DebugMacrosSP &debug_macros_sp) {
   llvm::dwarf::MacroEntryType type =
@@ -103,22 +97,6 @@ void DWARFDebugMacroEntry::ReadMacroEntries(
         debug_macros_sp->AddMacroEntry(
             DebugMacroEntry::CreateUndefEntry(line, macro_str));
       break;
-    case DW_MACRO_define_strx:
-    case DW_MACRO_undef_strx:
-      line = debug_macro_data.GetULEB128(offset);
-      str_offset = debug_macro_data.GetULEB128(offset);
-      if (!str_offsets_info)
-        // Can't do much in this case, skip all such entries
-        continue;
-      str_offset = str_offsets_info->GetOffset(str_offset);
-      macro_str = debug_str_data.GetCStr(&str_offset);
-      if (type == DW_MACRO_define_strx)
-        debug_macros_sp->AddMacroEntry(
-            DebugMacroEntry::CreateDefineEntry(line, macro_str));
-      else
-        debug_macros_sp->AddMacroEntry(
-            DebugMacroEntry::CreateUndefEntry(line, macro_str));
-      break;
     case DW_MACRO_start_file:
       line = debug_macro_data.GetULEB128(offset);
       debug_line_file_idx = debug_macro_data.GetULEB128(offset);
@@ -135,7 +113,7 @@ void DWARFDebugMacroEntry::ReadMacroEntries(
       else
         new_offset = debug_macro_data.GetU32(offset);
       debug_macros_sp->AddMacroEntry(DebugMacroEntry::CreateIndirectEntry(
-          sym_file_dwarf->ParseDebugMacros(&new_offset, str_offsets_info)));
+          sym_file_dwarf->ParseDebugMacros(&new_offset)));
       break;
     default:
       // TODO: Add support for other standard operations.

diff  --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.h
index 27be105b5949a..cbf762458331b 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFDebugMacro.h
@@ -24,17 +24,6 @@ class DWARFDataExtractor;
 
 class SymbolFileDWARF;
 
-class DWARFStrOffsetsInfo {
-  lldb::offset_t cu_str_offset;
-  const lldb_private::DWARFDataExtractor &data;
-
-public:
-  DWARFStrOffsetsInfo(lldb::offset_t cu_str_offset,
-                      const lldb_private::DWARFDataExtractor &data)
-      : cu_str_offset(cu_str_offset), data(data) {}
-  uint64_t GetOffset(uint64_t index) const;
-};
-
 class DWARFDebugMacroHeader {
 public:
   enum HeaderFlagMask {
@@ -64,7 +53,6 @@ class DWARFDebugMacroEntry {
   static void
   ReadMacroEntries(const lldb_private::DWARFDataExtractor &debug_macro_data,
                    const lldb_private::DWARFDataExtractor &debug_str_data,
-                   const DWARFStrOffsetsInfo *str_offsets_info,
                    const bool offset_is_64_bit, lldb::offset_t *sect_offset,
                    SymbolFileDWARF *sym_file_dwarf,
                    lldb_private::DebugMacrosSP &debug_macros_sp);

diff  --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
index fdc0ef16d4eed..237b3fea716a8 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
@@ -1194,8 +1194,7 @@ bool SymbolFileDWARF::ParseLineTable(CompileUnit &comp_unit) {
 }
 
 lldb_private::DebugMacrosSP
-SymbolFileDWARF::ParseDebugMacros(lldb::offset_t *offset,
-                                  const DWARFStrOffsetsInfo *str_offsets_info) {
+SymbolFileDWARF::ParseDebugMacros(lldb::offset_t *offset) {
   auto iter = m_debug_macros_map.find(*offset);
   if (iter != m_debug_macros_map.end())
     return iter->second;
@@ -1211,8 +1210,8 @@ SymbolFileDWARF::ParseDebugMacros(lldb::offset_t *offset,
   const DWARFDebugMacroHeader &header =
       DWARFDebugMacroHeader::ParseHeader(debug_macro_data, offset);
   DWARFDebugMacroEntry::ReadMacroEntries(
-      debug_macro_data, m_context.getOrLoadStrData(), str_offsets_info,
-      header.OffsetIs64Bit(), offset, this, debug_macros_sp);
+      debug_macro_data, m_context.getOrLoadStrData(), header.OffsetIs64Bit(),
+      offset, this, debug_macros_sp);
 
   return debug_macros_sp;
 }
@@ -1220,7 +1219,7 @@ SymbolFileDWARF::ParseDebugMacros(lldb::offset_t *offset,
 bool SymbolFileDWARF::ParseDebugMacros(CompileUnit &comp_unit) {
   std::lock_guard<std::recursive_mutex> guard(GetModuleMutex());
 
-  DWARFUnit *dwarf_cu = &GetDWARFCompileUnit(&comp_unit)->GetNonSkeletonUnit();
+  DWARFUnit *dwarf_cu = GetDWARFCompileUnit(&comp_unit);
   if (dwarf_cu == nullptr)
     return false;
 
@@ -1236,15 +1235,8 @@ bool SymbolFileDWARF::ParseDebugMacros(CompileUnit &comp_unit) {
   if (sect_offset == DW_INVALID_OFFSET)
     return false;
 
-  std::unique_ptr<DWARFStrOffsetsInfo> str_offsets_info;
-  lldb::offset_t cu_str_offset = dwarf_cu->GetStrOffsetsBase();
-  SymbolFileDWARF &symfile = dwarf_cu->GetSymbolFileDWARF();
-  if (cu_str_offset && cu_str_offset != DW_INVALID_OFFSET)
-    str_offsets_info = std::make_unique<DWARFStrOffsetsInfo>(
-        cu_str_offset, symfile.GetDWARFContext().getOrLoadStrOffsetsData());
+  comp_unit.SetDebugMacros(ParseDebugMacros(&sect_offset));
 
-  comp_unit.SetDebugMacros(
-      symfile.ParseDebugMacros(&sect_offset, str_offsets_info.get()));
   return true;
 }
 

diff  --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
index 22f939cba1c30..7bab17c783d5f 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
@@ -55,8 +55,6 @@ class SymbolFileDWARFDebugMap;
 class SymbolFileDWARFDwo;
 class SymbolFileDWARFDwp;
 
-class DWARFStrOffsetsInfo;
-
 #define DIE_IS_BEING_PARSED ((lldb_private::Type *)1)
 
 class SymbolFileDWARF : public lldb_private::SymbolFileCommon,
@@ -248,9 +246,7 @@ class SymbolFileDWARF : public lldb_private::SymbolFileCommon,
 
   bool Supports_DW_AT_APPLE_objc_complete_type(DWARFUnit *cu);
 
-  lldb_private::DebugMacrosSP
-  ParseDebugMacros(lldb::offset_t *offset,
-                   const DWARFStrOffsetsInfo *str_offsets_info);
+  lldb_private::DebugMacrosSP ParseDebugMacros(lldb::offset_t *offset);
 
   static DWARFDIE GetParentSymbolContextDIE(const DWARFDIE &die);
 

diff  --git a/lldb/test/API/commands/expression/macros/Makefile b/lldb/test/API/commands/expression/macros/Makefile
index 4303bb0e9444c..a2af5c4ce70fb 100644
--- a/lldb/test/API/commands/expression/macros/Makefile
+++ b/lldb/test/API/commands/expression/macros/Makefile
@@ -5,6 +5,5 @@ DEBUG_INFO_FLAG = -g3 -gdwarf-5
 # GCC produces incorrect .debug_macro section when "-include" option is used:
 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93075.
 NO_TEST_COMMON_H := 1
-CFLAGS_EXTRAS := -fdebug-macro
 
 include Makefile.rules

diff  --git a/lldb/test/API/commands/expression/macros/TestMacros.py b/lldb/test/API/commands/expression/macros/TestMacros.py
index db0d83a21a4d2..3e5d720aef77b 100644
--- a/lldb/test/API/commands/expression/macros/TestMacros.py
+++ b/lldb/test/API/commands/expression/macros/TestMacros.py
@@ -8,6 +8,12 @@
 
 class TestMacros(TestBase):
 
+    @expectedFailureAll(
+        compiler="clang",
+        bugnumber="clang does not emit .debug_macro[.dwo] sections.")
+    @expectedFailureAll(
+        debug_info="dwo",
+        bugnumber="GCC produces multiple .debug_macro.dwo sections and the spec is unclear as to what it means")
     @expectedFailureAll(
         hostoslist=["windows"],
         compiler="gcc",

diff  --git a/lldb/test/API/lang/c/macro/Makefile b/lldb/test/API/lang/c/macro/Makefile
deleted file mode 100644
index 563d43a871343..0000000000000
--- a/lldb/test/API/lang/c/macro/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-C_SOURCES := main.c
-CFLAGS_EXTRAS := -fdebug-macro
-
-include Makefile.rules

diff  --git a/lldb/test/API/lang/c/macro/TestMacro.py b/lldb/test/API/lang/c/macro/TestMacro.py
deleted file mode 100644
index 6713f9fa857e4..0000000000000
--- a/lldb/test/API/lang/c/macro/TestMacro.py
+++ /dev/null
@@ -1,31 +0,0 @@
-"""Tests lldb macro evaluation."""
-
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-
-
-class MacroTestCase(TestBase):
-
-    mydir = TestBase.compute_mydir(__file__)
-
-    def setUp(self):
-        # Call super's setUp().
-        TestBase.setUp(self)
-        # Find the line number to break inside main().
-        self.line = line_number('main.c', '// Set break point at this line.')
-
-    def test(self):
-        self.build()
-        exe = self.getBuildArtifact("a.out")
-        self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
-
-        # Break inside the main.
-        lldbutil.run_break_set_by_file_and_line(
-            self, "main.c", self.line, num_expected_locations=1, loc_exact=True)
-
-        self.runCmd("run", RUN_SUCCEEDED)
-        self.expect("expr DM + DF(10)", VARIABLES_DISPLAYED_CORRECTLY,
-                    substrs=['int', '62'])
-

diff  --git a/lldb/test/API/lang/c/macro/main.c b/lldb/test/API/lang/c/macro/main.c
deleted file mode 100644
index 3810d6065aaeb..0000000000000
--- a/lldb/test/API/lang/c/macro/main.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#define DM 10
-#define DF(x) (42 + (x))
-
-int main (int argc, char const *argv[])
-{
-    return 0; //// Set break point at this line.
-}


        


More information about the lldb-commits mailing list