[PATCH] D143458: [llvm][dsymutil] Add DW_TAG_imported_declaration to accelerator table
Michael Buch via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 9 17:34:39 PST 2023
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGccee9b7839a1: [llvm][dsymutil] Add DW_TAG_imported_declaration to accelerator table (authored by Michael137).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D143458/new/
https://reviews.llvm.org/D143458
Files:
llvm/lib/DWARFLinker/DWARFLinker.cpp
llvm/test/tools/dsymutil/ARM/accel-imported-declarations.test
llvm/test/tools/dsymutil/Inputs/accel-imported-declaration.cpp
llvm/test/tools/dsymutil/Inputs/accel-imported-declaration.macho-arm64
Index: llvm/test/tools/dsymutil/Inputs/accel-imported-declaration.cpp
===================================================================
--- /dev/null
+++ llvm/test/tools/dsymutil/Inputs/accel-imported-declaration.cpp
@@ -0,0 +1,17 @@
+// Compiled on macOS using:
+// clang++ -c -std=c++2a -gdwarf-4 -O0 -o accel-imported-declaration.macho-arm64.o
+
+namespace A {
+namespace B {
+namespace C {
+int a = -1;
+} // namespace C
+} // namespace B
+
+namespace C = B::C;
+
+using namespace B::C;
+using B::C::a;
+} // namespace A
+
+int main() { return A::a; }
Index: llvm/test/tools/dsymutil/ARM/accel-imported-declarations.test
===================================================================
--- /dev/null
+++ llvm/test/tools/dsymutil/ARM/accel-imported-declarations.test
@@ -0,0 +1,47 @@
+RUN: dsymutil -accelerator=Dwarf %p/../Inputs/accel-imported-declaration.macho-arm64 -o %t.dwarf.dSYM
+RUN: dsymutil -accelerator=Apple %p/../Inputs/accel-imported-declaration.macho-arm64 -o %t.apple.dSYM
+
+RUN: llvm-dwarfdump -v %t.dwarf.dSYM | FileCheck %s -check-prefixes=DWARF,COMMON
+RUN: llvm-dwarfdump -v %t.apple.dSYM | FileCheck %s -check-prefixes=APPLE,COMMON
+
+COMMON: .debug_info contents
+COMMON: {{.*}}DW_TAG_namespace
+COMMON: DW_AT_name{{.*}}"A"
+COMMON: {{.*}}DW_TAG_namespace
+COMMON: DW_AT_name{{.*}}"B"
+COMMON: [[NAMESPACE:0x[0-9a-f]*]]:{{.*}}DW_TAG_namespace
+COMMON: DW_AT_name{{.*}}"C"
+COMMON: [[IMPORTED:0x[0-9a-f]*]]:{{.*}}DW_TAG_imported_declaration
+COMMON: DW_AT_name{{.*}}"C"
+
+DWARF: .debug_names contents:
+DWARF: Bucket 0 [
+DWARF-NEXT: Name {{.*}} {
+DWARF-NEXT: Hash: {{.*}}
+DWARF-NEXT: String: {{.*}} "C"
+DWARF-NEXT: Entry {{.*}} {
+DWARF-NEXT: Abbrev: {{.*}}
+DWARF-NEXT: Tag: DW_TAG_namespace
+DWARF-NEXT: DW_IDX_die_offset: [[NAMESPACE]]
+DWARF-NEXT: }
+DWARF-NEXT: Entry {{.*}} {
+DWARF-NEXT: Abbrev: {{.*}}
+DWARF-NEXT: Tag: DW_TAG_imported_declaration
+DWARF-NEXT: DW_IDX_die_offset: [[IMPORTED]]
+DWARF-NEXT: }
+DWARF-NEXT: }
+
+APPLE: .apple_namespaces contents:
+APPLE: Bucket 1 [
+APPLE-NEXT: Hash {{.*}} [
+APPLE-NEXT: Name@{{.*}} {
+APPLE-NEXT: String: {{.*}} "C"
+APPLE-NEXT: Data 0 [
+APPLE-NEXT: Atom[0]: [[NAMESPACE]]
+APPLE-NEXT: ]
+APPLE-NEXT: Data 1 [
+APPLE-NEXT: Atom[0]: [[IMPORTED]]
+APPLE-NEXT: ]
+APPLE-NEXT: }
+APPLE-NEXT: ]
+APPLE-NEXT: ]
Index: llvm/lib/DWARFLinker/DWARFLinker.cpp
===================================================================
--- llvm/lib/DWARFLinker/DWARFLinker.cpp
+++ llvm/lib/DWARFLinker/DWARFLinker.cpp
@@ -1589,6 +1589,8 @@
if (!AttrInfo.Name)
AttrInfo.Name = StringPool.getEntry("(anonymous namespace)");
Unit.addNamespaceAccelerator(Die, AttrInfo.Name);
+ } else if (Tag == dwarf::DW_TAG_imported_declaration && AttrInfo.Name) {
+ Unit.addNamespaceAccelerator(Die, AttrInfo.Name);
} else if (isTypeTag(Tag) && !AttrInfo.IsDeclaration &&
getDIENames(InputDIE, AttrInfo, StringPool) && AttrInfo.Name &&
AttrInfo.Name.getString()[0]) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D143458.496295.patch
Type: text/x-patch
Size: 3130 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230210/25f1bfef/attachment-0001.bin>
More information about the llvm-commits
mailing list