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