https://github.com/Michael137 updated 
https://github.com/llvm/llvm-project/pull/160132

>From 6293105c42e29cc9151eaac33a4208a91e40a0e9 Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuc...@gmail.com>
Date: Mon, 22 Sep 2025 16:02:35 +0100
Subject: [PATCH 1/4] Init

---
 .../SymbolFile/DWARF/DWARFASTParserClang.cpp  | 40 ++++---------------
 1 file changed, 8 insertions(+), 32 deletions(-)

diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp 
b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
index 5ffb4423969ca..dd51c02ff4bd1 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -3126,38 +3126,14 @@ void DWARFASTParserClang::ParseSingleMember(
   if (!member_clang_type.IsCompleteType())
     member_clang_type.GetCompleteType();
 
-  {
-    // Older versions of clang emit the same DWARF for array[0] and array[1]. 
If
-    // the current field is at the end of the structure, then there is
-    // definitely no room for extra elements and we override the type to
-    // array[0]. This was fixed by f454dfb6b5af.
-    CompilerType member_array_element_type;
-    uint64_t member_array_size;
-    bool member_array_is_incomplete;
-
-    if (member_clang_type.IsArrayType(&member_array_element_type,
-                                      &member_array_size,
-                                      &member_array_is_incomplete) &&
-        !member_array_is_incomplete) {
-      uint64_t parent_byte_size =
-          parent_die.GetAttributeValueAsUnsigned(DW_AT_byte_size, UINT64_MAX);
-
-      if (attrs.member_byte_offset >= parent_byte_size) {
-        if (member_array_size != 1 &&
-            (member_array_size != 0 ||
-             attrs.member_byte_offset > parent_byte_size)) {
-          module_sp->ReportError(
-              "{0:x8}: DW_TAG_member '{1}' refers to type {2:x16}"
-              " which extends beyond the bounds of {3:x8}",
-              die.GetID(), attrs.name,
-              attrs.encoding_form.Reference().GetOffset(), parent_die.GetID());
-        }
-
-        member_clang_type =
-            m_ast.CreateArrayType(member_array_element_type, 0, false);
-      }
-    }
-  }
+  if (attrs.member_byte_offset != UINT32_MAX
+      && attrs.member_byte_offset > parent_byte_size
+      && 
llvm::expectedToOptional(member_clang_type.GetByteSize(nullptr)).value_or(0) > 
0)
+    module_sp->ReportError(
+        "{0:x8}: DW_TAG_member '{1}' refers to type {2:x16}"
+        " which extends beyond the bounds of {3:x8}",
+        die.GetID(), attrs.name,
+        attrs.encoding_form.Reference().GetOffset(), parent_die.GetID());
 
   TypeSystemClang::RequireCompleteType(member_clang_type);
 

>From 9dc1fa8a2143c4fe3fe26ea084e2670b7617683e Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuc...@gmail.com>
Date: Mon, 22 Sep 2025 16:37:56 +0100
Subject: [PATCH 2/4] Init

---
 lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp 
b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
index dd51c02ff4bd1..f47722c027470 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -3127,7 +3127,7 @@ void DWARFASTParserClang::ParseSingleMember(
     member_clang_type.GetCompleteType();
 
   if (attrs.member_byte_offset != UINT32_MAX
-      && attrs.member_byte_offset > parent_byte_size
+      && attrs.member_byte_offset >= parent_byte_size
       && 
llvm::expectedToOptional(member_clang_type.GetByteSize(nullptr)).value_or(0) > 
0)
     module_sp->ReportError(
         "{0:x8}: DW_TAG_member '{1}' refers to type {2:x16}"

>From 4775a63360110eec1dc8aabd46b786369d10ee8c Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuc...@gmail.com>
Date: Mon, 22 Sep 2025 16:38:15 +0100
Subject: [PATCH 3/4] fixup! clang-format

---
 .../Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp       | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp 
b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
index f47722c027470..39ef3f77ca218 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -3126,9 +3126,10 @@ void DWARFASTParserClang::ParseSingleMember(
   if (!member_clang_type.IsCompleteType())
     member_clang_type.GetCompleteType();
 
-  if (attrs.member_byte_offset != UINT32_MAX
-      && attrs.member_byte_offset >= parent_byte_size
-      && 
llvm::expectedToOptional(member_clang_type.GetByteSize(nullptr)).value_or(0) > 
0)
+  if (attrs.member_byte_offset != UINT32_MAX &&
+      attrs.member_byte_offset >= parent_byte_size &&
+      llvm::expectedToOptional(member_clang_type.GetByteSize(nullptr))
+              .value_or(0) > 0)
     module_sp->ReportError(
         "{0:x8}: DW_TAG_member '{1}' refers to type {2:x16}"
         " which extends beyond the bounds of {3:x8}",

>From dbffe4bbad32fb867d6b9b5fc8b8d7876c96d08f Mon Sep 17 00:00:00 2001
From: Michael Buch <michaelbuc...@gmail.com>
Date: Mon, 22 Sep 2025 16:38:28 +0100
Subject: [PATCH 4/4] fixup! clang-format

---
 .../Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp   | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp 
b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
index 39ef3f77ca218..8f52242fd387d 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
@@ -3130,11 +3130,11 @@ void DWARFASTParserClang::ParseSingleMember(
       attrs.member_byte_offset >= parent_byte_size &&
       llvm::expectedToOptional(member_clang_type.GetByteSize(nullptr))
               .value_or(0) > 0)
-    module_sp->ReportError(
-        "{0:x8}: DW_TAG_member '{1}' refers to type {2:x16}"
-        " which extends beyond the bounds of {3:x8}",
-        die.GetID(), attrs.name,
-        attrs.encoding_form.Reference().GetOffset(), parent_die.GetID());
+    module_sp->ReportError("{0:x8}: DW_TAG_member '{1}' refers to type {2:x16}"
+                           " which extends beyond the bounds of {3:x8}",
+                           die.GetID(), attrs.name,
+                           attrs.encoding_form.Reference().GetOffset(),
+                           parent_die.GetID());
 
   TypeSystemClang::RequireCompleteType(member_clang_type);
 

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to