summaryrefslogtreecommitdiffstats
path: root/build/build-clang
diff options
context:
space:
mode:
Diffstat (limited to 'build/build-clang')
-rw-r--r--build/build-clang/README2
-rw-r--r--build/build-clang/clang-17.json1
-rw-r--r--build/build-clang/clang-18.json1
-rw-r--r--build/build-clang/llvm-symbolizer-17.json4
-rw-r--r--build/build-clang/llvm-symbolizer-18.json4
-rw-r--r--build/build-clang/llvm-symbolizer-trunk.json8
-rw-r--r--build/build-clang/llvmorg-19-init-7654-gc23135c5488f.patch155
-rw-r--r--build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch35
-rw-r--r--build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch35
-rw-r--r--build/build-clang/partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch33
-rw-r--r--build/build-clang/revert-llvmorg-15-init-11205-gcead4eceb01b_clang_16.patch1027
-rw-r--r--build/build-clang/revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch972
-rw-r--r--build/build-clang/revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_19.patch2
-rw-r--r--build/build-clang/revert-llvmorg-17-init-4120-g02e8eb1a438b.patch118
-rw-r--r--build/build-clang/revert-llvmorg-17-init-4120-g02e8eb1a438b_clang_18.patch115
-rw-r--r--build/build-clang/revert-llvmorg-19-init-6891-ga4de589d117a.patch547
-rw-r--r--build/build-clang/revert-llvmorg-19-init-6898-g60deb8b39afe.patch66
-rw-r--r--build/build-clang/revert-llvmorg-19-init-6902-gbdb60e6f0c8e.patch24
-rw-r--r--build/build-clang/revert-llvmorg-19-init-7044-g30fd099d5062.patch58
19 files changed, 232 insertions, 2975 deletions
diff --git a/build/build-clang/README b/build/build-clang/README
index 5b13edeeb9..6badf9c59e 100644
--- a/build/build-clang/README
+++ b/build/build-clang/README
@@ -43,7 +43,7 @@ build-clang.py accepts a JSON config format with the following fields:
* assertions: Whether to enable LLVM assertions. The default is false.
* pgo: Whether to build with PGO (requires stages == 4). The default is false.
-The revisions are defined in taskcluster/ci/fetch/toolchains.yml. They are usually commit sha1s corresponding to upstream tags.
+The revisions are defined in taskcluster/kinds/fetch/toolchains.yml. They are usually commit sha1s corresponding to upstream tags.
Environment Variables
---------------------
diff --git a/build/build-clang/clang-17.json b/build/build-clang/clang-17.json
index 3d855cbec8..7845af0dd8 100644
--- a/build/build-clang/clang-17.json
+++ b/build/build-clang/clang-17.json
@@ -9,6 +9,7 @@
"revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_17.patch",
"revert-llvmorg-15-init-13446-g7524fe962e47.patch",
"llvmorg-18-init-8471-g160e8eb44961.patch",
+ "llvmorg-19-init-7654-gc23135c5488f.patch",
"D146664.patch",
"win64-ret-null-on-commitment-limit_clang_14.patch",
"arm64e-hack.patch",
diff --git a/build/build-clang/clang-18.json b/build/build-clang/clang-18.json
index 8290f31048..72375ebd10 100644
--- a/build/build-clang/clang-18.json
+++ b/build/build-clang/clang-18.json
@@ -12,6 +12,7 @@
"partial-revert-llvmorg-16-init-17151-gaa0883b59ae1_clang_17.patch",
"revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_18.patch",
"revert-llvmorg-15-init-13446-g7524fe962e47.patch",
+ "llvmorg-19-init-7654-gc23135c5488f.patch",
"win64-ret-null-on-commitment-limit_clang_14.patch",
"arm64e-hack.patch",
"compiler-rt-rss-limit-heap-profile.patch"
diff --git a/build/build-clang/llvm-symbolizer-17.json b/build/build-clang/llvm-symbolizer-17.json
index 211c613d3d..b33b2081c5 100644
--- a/build/build-clang/llvm-symbolizer-17.json
+++ b/build/build-clang/llvm-symbolizer-17.json
@@ -1,7 +1,5 @@
{
"patches": [
- "partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch",
- "revert-llvmorg-17-init-4120-g02e8eb1a438b.patch",
- "revert-llvmorg-15-init-11205-gcead4eceb01b_clang_16.patch"
+ "partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch"
]
}
diff --git a/build/build-clang/llvm-symbolizer-18.json b/build/build-clang/llvm-symbolizer-18.json
index 357eab9792..1afe63ef95 100644
--- a/build/build-clang/llvm-symbolizer-18.json
+++ b/build/build-clang/llvm-symbolizer-18.json
@@ -1,7 +1,5 @@
{
"patches": [
- "partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch",
- "revert-llvmorg-17-init-4120-g02e8eb1a438b.patch",
- "revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch"
+ "partial-revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch"
]
}
diff --git a/build/build-clang/llvm-symbolizer-trunk.json b/build/build-clang/llvm-symbolizer-trunk.json
index 8aa80eff8c..1afe63ef95 100644
--- a/build/build-clang/llvm-symbolizer-trunk.json
+++ b/build/build-clang/llvm-symbolizer-trunk.json
@@ -1,11 +1,5 @@
{
"patches": [
- "revert-llvmorg-19-init-7044-g30fd099d5062.patch",
- "revert-llvmorg-19-init-6902-gbdb60e6f0c8e.patch",
- "revert-llvmorg-19-init-6898-g60deb8b39afe.patch",
- "revert-llvmorg-19-init-6891-ga4de589d117a.patch",
- "partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch",
- "revert-llvmorg-17-init-4120-g02e8eb1a438b.patch",
- "revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch"
+ "partial-revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch"
]
}
diff --git a/build/build-clang/llvmorg-19-init-7654-gc23135c5488f.patch b/build/build-clang/llvmorg-19-init-7654-gc23135c5488f.patch
new file mode 100644
index 0000000000..9609de0bc0
--- /dev/null
+++ b/build/build-clang/llvmorg-19-init-7654-gc23135c5488f.patch
@@ -0,0 +1,155 @@
+From 7db340bcc57fb7f4fabbae34b30065fbd77b0174 Mon Sep 17 00:00:00 2001
+From: Leonard Grey <lgrey@chromium.org>
+Date: Mon, 8 Apr 2024 16:05:52 -0400
+Subject: [PATCH] -fsanitize=function: fix .subsections_via_symbols (#87527)
+
+-fsanitize=function emits a signature and function hash before a
+function. Similar to 7f6e2c9, these can be sheared off when
+`.subsections_via_symbols` is used.
+
+This change uses the same technique 7f6e2c9 introduced for prefixes:
+emitting a symbol for the metadata, then marking the actual function
+entry as an .alt_entry symbol.
+---
+ llvm/include/llvm/CodeGen/AsmPrinter.h | 3 ++
+ llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 43 ++++++++++++---------
+ llvm/test/CodeGen/AArch64/func-sanitizer.ll | 9 +++++
+ llvm/test/CodeGen/X86/func-sanitizer.ll | 10 +++++
+ 4 files changed, 46 insertions(+), 19 deletions(-)
+
+diff --git a/llvm/include/llvm/CodeGen/AsmPrinter.h b/llvm/include/llvm/CodeGen/AsmPrinter.h
+index 0ac497c5f8ef..96e302859f44 100644
+--- a/llvm/include/llvm/CodeGen/AsmPrinter.h
++++ b/llvm/include/llvm/CodeGen/AsmPrinter.h
+@@ -840,6 +840,9 @@ private:
+ /// This method emits a comment next to header for the current function.
+ virtual void emitFunctionHeaderComment();
+
++ /// This method emits prefix-like data before the current function.
++ void emitFunctionPrefix(ArrayRef<const Constant *> Prefix);
++
+ /// Emit a blob of inline asm to the output streamer.
+ void
+ emitInlineAsm(StringRef Str, const MCSubtargetInfo &STI,
+diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+index 5381dfdd184c..a1d4c72d2899 100644
+--- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
++++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+@@ -896,6 +896,27 @@ void AsmPrinter::emitDebugValue(const MCExpr *Value, unsigned Size) const {
+
+ void AsmPrinter::emitFunctionHeaderComment() {}
+
++void AsmPrinter::emitFunctionPrefix(ArrayRef<const Constant *> Prefix) {
++ const Function &F = MF->getFunction();
++ if (!MAI->hasSubsectionsViaSymbols()) {
++ for (auto &C : Prefix)
++ emitGlobalConstant(F.getParent()->getDataLayout(), C);
++ return;
++ }
++ // Preserving prefix-like data on platforms which use subsections-via-symbols
++ // is a bit tricky. Here we introduce a symbol for the prefix-like data
++ // and use the .alt_entry attribute to mark the function's real entry point
++ // as an alternative entry point to the symbol that precedes the function..
++ OutStreamer->emitLabel(OutContext.createLinkerPrivateTempSymbol());
++
++ for (auto &C : Prefix) {
++ emitGlobalConstant(F.getParent()->getDataLayout(), C);
++ }
++
++ // Emit an .alt_entry directive for the actual function symbol.
++ OutStreamer->emitSymbolAttribute(CurrentFnSym, MCSA_AltEntry);
++}
++
+ /// EmitFunctionHeader - This method emits the header for the current
+ /// function.
+ void AsmPrinter::emitFunctionHeader() {
+@@ -935,23 +956,8 @@ void AsmPrinter::emitFunctionHeader() {
+ OutStreamer->emitSymbolAttribute(CurrentFnSym, MCSA_Cold);
+
+ // Emit the prefix data.
+- if (F.hasPrefixData()) {
+- if (MAI->hasSubsectionsViaSymbols()) {
+- // Preserving prefix data on platforms which use subsections-via-symbols
+- // is a bit tricky. Here we introduce a symbol for the prefix data
+- // and use the .alt_entry attribute to mark the function's real entry point
+- // as an alternative entry point to the prefix-data symbol.
+- MCSymbol *PrefixSym = OutContext.createLinkerPrivateTempSymbol();
+- OutStreamer->emitLabel(PrefixSym);
+-
+- emitGlobalConstant(F.getParent()->getDataLayout(), F.getPrefixData());
+-
+- // Emit an .alt_entry directive for the actual function symbol.
+- OutStreamer->emitSymbolAttribute(CurrentFnSym, MCSA_AltEntry);
+- } else {
+- emitGlobalConstant(F.getParent()->getDataLayout(), F.getPrefixData());
+- }
+- }
++ if (F.hasPrefixData())
++ emitFunctionPrefix({F.getPrefixData()});
+
+ // Emit KCFI type information before patchable-function-prefix nops.
+ emitKCFITypeId(*MF);
+@@ -983,8 +989,7 @@ void AsmPrinter::emitFunctionHeader() {
+
+ auto *PrologueSig = mdconst::extract<Constant>(MD->getOperand(0));
+ auto *TypeHash = mdconst::extract<Constant>(MD->getOperand(1));
+- emitGlobalConstant(F.getParent()->getDataLayout(), PrologueSig);
+- emitGlobalConstant(F.getParent()->getDataLayout(), TypeHash);
++ emitFunctionPrefix({PrologueSig, TypeHash});
+ }
+
+ if (isVerbose()) {
+diff --git a/llvm/test/CodeGen/AArch64/func-sanitizer.ll b/llvm/test/CodeGen/AArch64/func-sanitizer.ll
+index 89f23e7ed80e..de83d70a5784 100644
+--- a/llvm/test/CodeGen/AArch64/func-sanitizer.ll
++++ b/llvm/test/CodeGen/AArch64/func-sanitizer.ll
+@@ -1,4 +1,5 @@
+ ; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
++; RUN: llc -mtriple=arm64-apple-darwin < %s | FileCheck %s --check-prefix=MACHO
+
+ ; CHECK-LABEL: .type _Z3funv,@function
+ ; CHECK-NEXT: .word 3238382334 // 0xc105cafe
+@@ -7,6 +8,14 @@
+ ; CHECK-NEXT: // %bb.0:
+ ; CHECK-NEXT: ret
+
++; MACHO: ltmp0:
++; MACHO-NEXT: .long 3238382334 ; 0xc105cafe
++; MACHO-NEXT: .long 42 ; 0x2a
++; MACHO-NEXT: .alt_entry __Z3funv
++; MACHO-NEXT: __Z3funv:
++; MACHO-NEXT: ; %bb.0:
++; MACHO-NEXT: ret
++
+ define dso_local void @_Z3funv() nounwind !func_sanitize !0 {
+ ret void
+ }
+diff --git a/llvm/test/CodeGen/X86/func-sanitizer.ll b/llvm/test/CodeGen/X86/func-sanitizer.ll
+index b421cb53ddfe..71f062ae2f8c 100644
+--- a/llvm/test/CodeGen/X86/func-sanitizer.ll
++++ b/llvm/test/CodeGen/X86/func-sanitizer.ll
+@@ -1,4 +1,5 @@
+ ; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
++; RUN: llc -mtriple=x86_64-apple-darwin < %s | FileCheck %s --check-prefix=MACHO
+
+ ; CHECK: .type _Z3funv,@function
+ ; CHECK-NEXT: .long 3238382334 # 0xc105cafe
+@@ -8,6 +9,15 @@
+ ; CHECK-NEXT: # %bb.0:
+ ; CHECK-NEXT: retq
+
++; MACHO: ltmp0:
++; MACHO-NEXT: .long 3238382334 ## 0xc105cafe
++; MACHO-NEXT: .long 42 ## 0x2a
++; MACHO-NEXT: .alt_entry __Z3funv
++; MACHO-NEXT: __Z3funv:
++; MACHO-NEXT: .cfi_startproc
++; MACHO-NEXT: # %bb.0:
++; MACHO-NEXT: retq
++
+ define dso_local void @_Z3funv() !func_sanitize !0 {
+ ret void
+ }
+--
+2.44.0.1.g9765aa7075
+
diff --git a/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch b/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch
new file mode 100644
index 0000000000..85621ab450
--- /dev/null
+++ b/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch
@@ -0,0 +1,35 @@
+This partially reverts commit cead4eceb01b935fae07bf4a7e91911b344d2fec for
+causing timeouts on some webrtc tests under TSan (bug 1798613), presumably
+because the change made llvm-symbolizer too slow.
+
+diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+index 33168abbdc38..7729d2b91c8a 100644
+--- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
++++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+@@ -1173,25 +1173,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForCodeAddress(uint64_t Address) {
+
+ DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) {
+ uint64_t CUOffset = getDebugAranges()->findAddress(Address);
+- if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset))
+- return OffsetCU;
+-
+- // Global variables are often missed by the above search, for one of two
+- // reasons:
+- // 1. .debug_aranges may not include global variables. On clang, it seems we
+- // put the globals in the aranges, but this isn't true for gcc.
+- // 2. Even if the global variable is in a .debug_arange, global variables
+- // may not be captured in the [start, end) addresses described by the
+- // parent compile unit.
+- //
+- // So, we walk the CU's and their child DI's manually, looking for the
+- // specific global variable.
+- for (std::unique_ptr<DWARFUnit> &CU : compile_units()) {
+- if (DWARFDie Die = CU->getVariableForAddress(Address)) {
+- return static_cast<DWARFCompileUnit *>(CU.get());
+- }
+- }
+- return nullptr;
++ return getCompileUnitForOffset(CUOffset);
+ }
+
+ DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address) {
diff --git a/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch b/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch
new file mode 100644
index 0000000000..457120e78d
--- /dev/null
+++ b/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch
@@ -0,0 +1,35 @@
+This partially reverts commit cead4eceb01b935fae07bf4a7e91911b344d2fec for
+causing timeouts on some webrtc tests under TSan (bug 1798613), presumably
+because the change made llvm-symbolizer too slow.
+
+diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+index 792df53d304a..75692d56ee55 100644
+--- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
++++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+@@ -1520,25 +1520,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForCodeAddress(uint64_t Address) {
+
+ DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) {
+ uint64_t CUOffset = getDebugAranges()->findAddress(Address);
+- if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset))
+- return OffsetCU;
+-
+- // Global variables are often missed by the above search, for one of two
+- // reasons:
+- // 1. .debug_aranges may not include global variables. On clang, it seems we
+- // put the globals in the aranges, but this isn't true for gcc.
+- // 2. Even if the global variable is in a .debug_arange, global variables
+- // may not be captured in the [start, end) addresses described by the
+- // parent compile unit.
+- //
+- // So, we walk the CU's and their child DI's manually, looking for the
+- // specific global variable.
+- for (std::unique_ptr<DWARFUnit> &CU : compile_units()) {
+- if (CU->getVariableForAddress(Address)) {
+- return static_cast<DWARFCompileUnit *>(CU.get());
+- }
+- }
+- return nullptr;
++ return getCompileUnitForOffset(CUOffset);
+ }
+
+ DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address,
diff --git a/build/build-clang/partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch b/build/build-clang/partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch
deleted file mode 100644
index 96ac988380..0000000000
--- a/build/build-clang/partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Revert the parts of c8e055d485eabf1c8830d77797e3686ced0f7754 that require
-cead4eceb01b935fae07bf4a7e91911b344d2fec, which we revert.
-
-diff --git a/llvm/include/llvm/DebugInfo/BTF/BTFContext.h b/llvm/include/llvm/DebugInfo/BTF/BTFContext.h
-index c16bee613322..7b0412b91c2e 100644
---- a/llvm/include/llvm/DebugInfo/BTF/BTFContext.h
-+++ b/llvm/include/llvm/DebugInfo/BTF/BTFContext.h
-@@ -34,9 +34,6 @@ public:
- object::SectionedAddress Address,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-
-- DILineInfo
-- getLineInfoForDataAddress(object::SectionedAddress Address) override;
--
- DILineInfoTable getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-diff --git a/llvm/lib/DebugInfo/BTF/BTFContext.cpp b/llvm/lib/DebugInfo/BTF/BTFContext.cpp
-index 24898739b824..da0f9982881f 100644
---- a/llvm/lib/DebugInfo/BTF/BTFContext.cpp
-+++ b/llvm/lib/DebugInfo/BTF/BTFContext.cpp
-@@ -34,11 +34,6 @@ DILineInfo BTFContext::getLineInfoForAddress(SectionedAddress Address,
- return Result;
- }
-
--DILineInfo BTFContext::getLineInfoForDataAddress(SectionedAddress Address) {
-- // BTF does not convey such information.
-- return {};
--}
--
- DILineInfoTable
- BTFContext::getLineInfoForAddressRange(SectionedAddress Address, uint64_t Size,
- DILineInfoSpecifier Specifier) {
diff --git a/build/build-clang/revert-llvmorg-15-init-11205-gcead4eceb01b_clang_16.patch b/build/build-clang/revert-llvmorg-15-init-11205-gcead4eceb01b_clang_16.patch
deleted file mode 100644
index 93c7e7d767..0000000000
--- a/build/build-clang/revert-llvmorg-15-init-11205-gcead4eceb01b_clang_16.patch
+++ /dev/null
@@ -1,1027 +0,0 @@
-From cb411520cb7cd5e6e25966911ca55feb5de779e0 Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Fri, 4 Nov 2022 14:51:38 +0900
-Subject: [PATCH] Revert "[symbolizer] Parse DW_TAG_variable DIs to show line
- info for globals"
-
-This reverts commit cead4eceb01b935fae07bf4a7e91911b344d2fec for causing
-yet unidentified problems on some webrtc tests under TSan (bug 1798613).
----
- llvm/include/llvm/DebugInfo/DIContext.h | 4 -
- .../llvm/DebugInfo/DWARF/DWARFContext.h | 2 -
- llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h | 7 -
- llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h | 14 -
- llvm/include/llvm/DebugInfo/PDB/PDBContext.h | 2 -
- llvm/lib/DebugInfo/DWARF/DWARFContext.cpp | 97 ++--
- llvm/lib/DebugInfo/DWARF/DWARFDie.cpp | 60 ---
- llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp | 97 ----
- llvm/lib/DebugInfo/PDB/PDBContext.cpp | 7 -
- llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp | 4 -
- .../Symbolize/SymbolizableObjectFile.cpp | 8 -
- .../Symbolize/ELF/data-command-symtab.yaml | 3 -
- .../tools/llvm-symbolizer/data-location.yaml | 450 ------------------
- llvm/test/tools/llvm-symbolizer/data.s | 3 -
- 14 files changed, 61 insertions(+), 697 deletions(-)
- delete mode 100644 llvm/test/tools/llvm-symbolizer/data-location.yaml
-
-diff --git a/llvm/include/llvm/DebugInfo/DIContext.h b/llvm/include/llvm/DebugInfo/DIContext.h
-index 9b278b696073..a9f98588cf2d 100644
---- a/llvm/include/llvm/DebugInfo/DIContext.h
-+++ b/llvm/include/llvm/DebugInfo/DIContext.h
-@@ -114,8 +114,6 @@ struct DIGlobal {
- std::string Name;
- uint64_t Start = 0;
- uint64_t Size = 0;
-- std::string DeclFile;
-- uint64_t DeclLine = 0;
-
- DIGlobal() : Name(DILineInfo::BadString) {}
- };
-@@ -241,8 +239,6 @@ public:
- virtual DILineInfo getLineInfoForAddress(
- object::SectionedAddress Address,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) = 0;
-- virtual DILineInfo
-- getLineInfoForDataAddress(object::SectionedAddress Address) = 0;
- virtual DILineInfoTable getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) = 0;
-diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-index bf591ed554c6..3365ef8d8ee3 100644
---- a/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-@@ -364,8 +364,6 @@ public:
- DILineInfo getLineInfoForAddress(
- object::SectionedAddress Address,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-- DILineInfo
-- getLineInfoForDataAddress(object::SectionedAddress Address) override;
- DILineInfoTable getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
-index 149c5ef4e493..4a4d105a2b23 100644
---- a/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
-+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
-@@ -280,13 +280,6 @@ public:
- /// \returns an iterator range for the attributes of the current DIE.
- iterator_range<attribute_iterator> attributes() const;
-
-- /// Gets the type size (in bytes) for this DIE.
-- ///
-- /// \param PointerSize the pointer size of the containing CU.
-- /// \returns if this is a type DIE, or this DIE contains a DW_AT_type, returns
-- /// the size of the type.
-- std::optional<uint64_t> getTypeSize(uint64_t PointerSize);
--
- class iterator;
-
- iterator begin() const;
-diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
-index 9188865b4d77..0341344bc7b8 100644
---- a/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
-+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
-@@ -9,7 +9,6 @@
- #ifndef LLVM_DEBUGINFO_DWARF_DWARFUNIT_H
- #define LLVM_DEBUGINFO_DWARF_DWARFUNIT_H
-
--#include "llvm/ADT/DenseSet.h"
- #include "llvm/ADT/STLExtras.h"
- #include "llvm/ADT/SmallVector.h"
- #include "llvm/ADT/StringRef.h"
-@@ -28,7 +27,6 @@
- #include <cstdint>
- #include <map>
- #include <memory>
--#include <set>
- #include <utility>
- #include <vector>
-
-@@ -242,11 +240,6 @@ class DWARFUnit {
- /// std::map::upper_bound for address range lookup.
- std::map<uint64_t, std::pair<uint64_t, DWARFDie>> AddrDieMap;
-
-- /// Map from the location (interpreted DW_AT_location) of a DW_TAG_variable,
-- /// to the end address and the corresponding DIE.
-- std::map<uint64_t, std::pair<uint64_t, DWARFDie>> VariableDieMap;
-- DenseSet<uint64_t> RootsParsedForVariables;
--
- using die_iterator_range =
- iterator_range<std::vector<DWARFDebugInfoEntry>::iterator>;
-
-@@ -329,9 +322,6 @@ public:
- /// Recursively update address to Die map.
- void updateAddressDieMap(DWARFDie Die);
-
-- /// Recursively update address to variable Die map.
-- void updateVariableDieMap(DWARFDie Die);
--
- void setRangesSection(const DWARFSection *RS, uint64_t Base) {
- RangeSection = RS;
- RangeSectionBase = Base;
-@@ -446,10 +436,6 @@ public:
- /// cleared.
- DWARFDie getSubroutineForAddress(uint64_t Address);
-
-- /// Returns variable DIE for the address provided. The pointer is alive as
-- /// long as parsed compile unit DIEs are not cleared.
-- DWARFDie getVariableForAddress(uint64_t Address);
--
- /// getInlinedChainForAddress - fetches inlined chain for a given address.
- /// Returns empty chain if there is no subprogram containing address. The
- /// chain is valid as long as parsed compile unit DIEs are not cleared.
-diff --git a/llvm/include/llvm/DebugInfo/PDB/PDBContext.h b/llvm/include/llvm/DebugInfo/PDB/PDBContext.h
-index 3163c0a1dae0..7b6793f0a639 100644
---- a/llvm/include/llvm/DebugInfo/PDB/PDBContext.h
-+++ b/llvm/include/llvm/DebugInfo/PDB/PDBContext.h
-@@ -45,8 +45,6 @@ namespace pdb {
- DILineInfo getLineInfoForAddress(
- object::SectionedAddress Address,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-- DILineInfo
-- getLineInfoForDataAddress(object::SectionedAddress Address) override;
- DILineInfoTable getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-index 19d7d659a86a..1bcfdecfd588 100644
---- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-+++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-@@ -1053,25 +1053,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForAddress(uint64_t Address) {
- // First, get the offset of the compile unit.
- uint64_t CUOffset = getDebugAranges()->findAddress(Address);
- // Retrieve the compile unit.
-- if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset))
-- return OffsetCU;
--
-- // Global variables are often not found by the above search, for one of two
-- // reasons:
-- // 1. .debug_aranges may not include global variables. On clang, it seems we
-- // put the globals in the aranges, but this isn't true for gcc.
-- // 2. Even if the global variable is in a .debug_arange, global variables
-- // may not be captured in the [start, end) addresses described by the
-- // parent compile unit.
-- //
-- // So, we walk the CU's and their child DI's manually, looking for the
-- // specific global variable.
-- for (std::unique_ptr<DWARFUnit> &CU : compile_units()) {
-- if (DWARFDie Die = CU->getVariableForAddress(Address)) {
-- return static_cast<DWARFCompileUnit *>(CU.get());
-- }
-- }
-- return nullptr;
-+ return getCompileUnitForOffset(CUOffset);
- }
-
- DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address) {
-@@ -1141,6 +1123,64 @@ static bool getFunctionNameAndStartLineForAddress(
- return FoundResult;
- }
-
-+static std::optional<uint64_t> getTypeSize(DWARFDie Type, uint64_t PointerSize) {
-+ if (auto SizeAttr = Type.find(DW_AT_byte_size))
-+ if (std::optional<uint64_t> Size = SizeAttr->getAsUnsignedConstant())
-+ return Size;
-+
-+ switch (Type.getTag()) {
-+ case DW_TAG_pointer_type:
-+ case DW_TAG_reference_type:
-+ case DW_TAG_rvalue_reference_type:
-+ return PointerSize;
-+ case DW_TAG_ptr_to_member_type: {
-+ if (DWARFDie BaseType = Type.getAttributeValueAsReferencedDie(DW_AT_type))
-+ if (BaseType.getTag() == DW_TAG_subroutine_type)
-+ return 2 * PointerSize;
-+ return PointerSize;
-+ }
-+ case DW_TAG_const_type:
-+ case DW_TAG_immutable_type:
-+ case DW_TAG_volatile_type:
-+ case DW_TAG_restrict_type:
-+ case DW_TAG_typedef: {
-+ if (DWARFDie BaseType = Type.getAttributeValueAsReferencedDie(DW_AT_type))
-+ return getTypeSize(BaseType, PointerSize);
-+ break;
-+ }
-+ case DW_TAG_array_type: {
-+ DWARFDie BaseType = Type.getAttributeValueAsReferencedDie(DW_AT_type);
-+ if (!BaseType)
-+ return std::optional<uint64_t>();
-+ std::optional<uint64_t> BaseSize = getTypeSize(BaseType, PointerSize);
-+ if (!BaseSize)
-+ return std::optional<uint64_t>();
-+ uint64_t Size = *BaseSize;
-+ for (DWARFDie Child : Type) {
-+ if (Child.getTag() != DW_TAG_subrange_type)
-+ continue;
-+
-+ if (auto ElemCountAttr = Child.find(DW_AT_count))
-+ if (std::optional<uint64_t> ElemCount =
-+ ElemCountAttr->getAsUnsignedConstant())
-+ Size *= *ElemCount;
-+ if (auto UpperBoundAttr = Child.find(DW_AT_upper_bound))
-+ if (std::optional<int64_t> UpperBound =
-+ UpperBoundAttr->getAsSignedConstant()) {
-+ int64_t LowerBound = 0;
-+ if (auto LowerBoundAttr = Child.find(DW_AT_lower_bound))
-+ LowerBound = LowerBoundAttr->getAsSignedConstant().value_or(0);
-+ Size *= *UpperBound - LowerBound + 1;
-+ }
-+ }
-+ return Size;
-+ }
-+ default:
-+ break;
-+ }
-+ return std::optional<uint64_t>();
-+}
-+
- static std::optional<int64_t>
- getExpressionFrameOffset(ArrayRef<uint8_t> Expr,
- std::optional<unsigned> FrameBaseReg) {
-@@ -1201,7 +1241,7 @@ void DWARFContext::addLocalsForDie(DWARFCompileUnit *CU, DWARFDie Subprogram,
- if (std::optional<const char *> Name = dwarf::toString(*NameAttr))
- Local.Name = *Name;
- if (auto Type = Die.getAttributeValueAsReferencedDie(DW_AT_type))
-- Local.Size = Type.getTypeSize(getCUAddrSize());
-+ Local.Size = getTypeSize(Type, getCUAddrSize());
- if (auto DeclFileAttr = Die.find(DW_AT_decl_file)) {
- if (const auto *LT = CU->getContext().getLineTableForUnit(CU))
- LT->getFileNameByIndex(
-@@ -1242,6 +1282,7 @@ DWARFContext::getLocalsForAddress(object::SectionedAddress Address) {
- DILineInfo DWARFContext::getLineInfoForAddress(object::SectionedAddress Address,
- DILineInfoSpecifier Spec) {
- DILineInfo Result;
-+
- DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Result;
-@@ -1256,22 +1297,6 @@ DILineInfo DWARFContext::getLineInfoForAddress(object::SectionedAddress Address,
- Spec.FLIKind, Result);
- }
- }
--
-- return Result;
--}
--
--DILineInfo
--DWARFContext::getLineInfoForDataAddress(object::SectionedAddress Address) {
-- DILineInfo Result;
-- DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
-- if (!CU)
-- return Result;
--
-- if (DWARFDie Die = CU->getVariableForAddress(Address.Address)) {
-- Result.FileName = Die.getDeclFile(FileLineInfoKind::AbsoluteFilePath);
-- Result.Line = Die.getDeclLine();
-- }
--
- return Result;
- }
-
-diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
-index 15a2d23c4fd2..9bf15c30f714 100644
---- a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
-+++ b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
-@@ -492,66 +492,6 @@ void DWARFDie::getCallerFrame(uint32_t &CallFile, uint32_t &CallLine,
- CallDiscriminator = toUnsigned(find(DW_AT_GNU_discriminator), 0);
- }
-
--std::optional<uint64_t> DWARFDie::getTypeSize(uint64_t PointerSize) {
-- if (auto SizeAttr = find(DW_AT_byte_size))
-- if (std::optional<uint64_t> Size = SizeAttr->getAsUnsignedConstant())
-- return Size;
--
-- switch (getTag()) {
-- case DW_TAG_pointer_type:
-- case DW_TAG_reference_type:
-- case DW_TAG_rvalue_reference_type:
-- return PointerSize;
-- case DW_TAG_ptr_to_member_type: {
-- if (DWARFDie BaseType = getAttributeValueAsReferencedDie(DW_AT_type))
-- if (BaseType.getTag() == DW_TAG_subroutine_type)
-- return 2 * PointerSize;
-- return PointerSize;
-- }
-- case DW_TAG_const_type:
-- case DW_TAG_immutable_type:
-- case DW_TAG_volatile_type:
-- case DW_TAG_restrict_type:
-- case DW_TAG_typedef: {
-- if (DWARFDie BaseType = getAttributeValueAsReferencedDie(DW_AT_type))
-- return BaseType.getTypeSize(PointerSize);
-- break;
-- }
-- case DW_TAG_array_type: {
-- DWARFDie BaseType = getAttributeValueAsReferencedDie(DW_AT_type);
-- if (!BaseType)
-- return std::nullopt;
-- std::optional<uint64_t> BaseSize = BaseType.getTypeSize(PointerSize);
-- if (!BaseSize)
-- return std::nullopt;
-- uint64_t Size = *BaseSize;
-- for (DWARFDie Child : *this) {
-- if (Child.getTag() != DW_TAG_subrange_type)
-- continue;
--
-- if (auto ElemCountAttr = Child.find(DW_AT_count))
-- if (std::optional<uint64_t> ElemCount =
-- ElemCountAttr->getAsUnsignedConstant())
-- Size *= *ElemCount;
-- if (auto UpperBoundAttr = Child.find(DW_AT_upper_bound))
-- if (std::optional<int64_t> UpperBound =
-- UpperBoundAttr->getAsSignedConstant()) {
-- int64_t LowerBound = 0;
-- if (auto LowerBoundAttr = Child.find(DW_AT_lower_bound))
-- LowerBound = LowerBoundAttr->getAsSignedConstant().value_or(0);
-- Size *= *UpperBound - LowerBound + 1;
-- }
-- }
-- return Size;
-- }
-- default:
-- if (DWARFDie BaseType = getAttributeValueAsReferencedDie(DW_AT_type))
-- return BaseType.getTypeSize(PointerSize);
-- break;
-- }
-- return std::nullopt;
--}
--
- /// Helper to dump a DIE with all of its parents, but no siblings.
- static unsigned dumpParentChain(DWARFDie Die, raw_ostream &OS, unsigned Indent,
- DIDumpOptions DumpOpts, unsigned Depth = 0) {
-diff --git a/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp b/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
-index 74667fcb92bc..148711f0246f 100644
---- a/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
-+++ b/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
-@@ -9,7 +9,6 @@
- #include "llvm/DebugInfo/DWARF/DWARFUnit.h"
- #include "llvm/ADT/SmallString.h"
- #include "llvm/ADT/StringRef.h"
--#include "llvm/BinaryFormat/Dwarf.h"
- #include "llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h"
- #include "llvm/DebugInfo/DWARF/DWARFCompileUnit.h"
- #include "llvm/DebugInfo/DWARF/DWARFContext.h"
-@@ -19,13 +18,11 @@
- #include "llvm/DebugInfo/DWARF/DWARFDebugRangeList.h"
- #include "llvm/DebugInfo/DWARF/DWARFDebugRnglists.h"
- #include "llvm/DebugInfo/DWARF/DWARFDie.h"
--#include "llvm/DebugInfo/DWARF/DWARFExpression.h"
- #include "llvm/DebugInfo/DWARF/DWARFFormValue.h"
- #include "llvm/DebugInfo/DWARF/DWARFListTable.h"
- #include "llvm/DebugInfo/DWARF/DWARFObject.h"
- #include "llvm/DebugInfo/DWARF/DWARFSection.h"
- #include "llvm/DebugInfo/DWARF/DWARFTypeUnit.h"
--#include "llvm/Object/ObjectFile.h"
- #include "llvm/Support/DataExtractor.h"
- #include "llvm/Support/Errc.h"
- #include "llvm/Support/Path.h"
-@@ -752,100 +749,6 @@ DWARFDie DWARFUnit::getSubroutineForAddress(uint64_t Address) {
- return R->second.second;
- }
-
--void DWARFUnit::updateVariableDieMap(DWARFDie Die) {
-- for (DWARFDie Child : Die) {
-- if (isType(Child.getTag()))
-- continue;
-- updateVariableDieMap(Child);
-- }
--
-- if (Die.getTag() != DW_TAG_variable)
-- return;
--
-- Expected<DWARFLocationExpressionsVector> Locations =
-- Die.getLocations(DW_AT_location);
-- if (!Locations) {
-- // Missing DW_AT_location is fine here.
-- consumeError(Locations.takeError());
-- return;
-- }
--
-- uint64_t Address = UINT64_MAX;
--
-- for (const DWARFLocationExpression &Location : *Locations) {
-- uint8_t AddressSize = getAddressByteSize();
-- DataExtractor Data(Location.Expr, /*IsLittleEndian=*/true, AddressSize);
-- DWARFExpression Expr(Data, AddressSize);
-- auto It = Expr.begin();
-- if (It == Expr.end())
-- continue;
--
-- // Match exactly the main sequence used to describe global variables:
-- // `DW_OP_addr[x] [+ DW_OP_plus_uconst]`. Currently, this is the sequence
-- // that LLVM produces for DILocalVariables and DIGlobalVariables. If, in
-- // future, the DWARF producer (`DwarfCompileUnit::addLocationAttribute()` is
-- // a good starting point) is extended to use further expressions, this code
-- // needs to be updated.
-- uint64_t LocationAddr;
-- if (It->getCode() == dwarf::DW_OP_addr) {
-- LocationAddr = It->getRawOperand(0);
-- } else if (It->getCode() == dwarf::DW_OP_addrx) {
-- uint64_t DebugAddrOffset = It->getRawOperand(0);
-- if (auto Pointer = getAddrOffsetSectionItem(DebugAddrOffset)) {
-- LocationAddr = Pointer->Address;
-- }
-- } else {
-- continue;
-- }
--
-- // Read the optional 2nd operand, a DW_OP_plus_uconst.
-- if (++It != Expr.end()) {
-- if (It->getCode() != dwarf::DW_OP_plus_uconst)
-- continue;
--
-- LocationAddr += It->getRawOperand(0);
--
-- // Probe for a 3rd operand, if it exists, bail.
-- if (++It != Expr.end())
-- continue;
-- }
--
-- Address = LocationAddr;
-- break;
-- }
--
-- // Get the size of the global variable. If all else fails (i.e. the global has
-- // no type), then we use a size of one to still allow symbolization of the
-- // exact address.
-- uint64_t GVSize = 1;
-- if (DWARFDie BaseType = Die.getAttributeValueAsReferencedDie(DW_AT_type))
-- if (std::optional<uint64_t> Size = Die.getTypeSize(getAddressByteSize()))
-- GVSize = *Size;
--
-- if (Address != UINT64_MAX)
-- VariableDieMap[Address] = {Address + GVSize, Die};
--}
--
--DWARFDie DWARFUnit::getVariableForAddress(uint64_t Address) {
-- extractDIEsIfNeeded(false);
--
-- auto RootDie = getUnitDIE();
--
-- auto RootLookup = RootsParsedForVariables.insert(RootDie.getOffset());
-- if (RootLookup.second)
-- updateVariableDieMap(RootDie);
--
-- auto R = VariableDieMap.upper_bound(Address);
-- if (R == VariableDieMap.begin())
-- return DWARFDie();
--
-- // upper_bound's previous item contains Address.
-- --R;
-- if (Address >= R->second.first)
-- return DWARFDie();
-- return R->second.second;
--}
--
- void
- DWARFUnit::getInlinedChainForAddress(uint64_t Address,
- SmallVectorImpl<DWARFDie> &InlinedChain) {
-diff --git a/llvm/lib/DebugInfo/PDB/PDBContext.cpp b/llvm/lib/DebugInfo/PDB/PDBContext.cpp
-index e600fb7385f1..0444093d7622 100644
---- a/llvm/lib/DebugInfo/PDB/PDBContext.cpp
-+++ b/llvm/lib/DebugInfo/PDB/PDBContext.cpp
-@@ -64,13 +64,6 @@ DILineInfo PDBContext::getLineInfoForAddress(object::SectionedAddress Address,
- return Result;
- }
-
--DILineInfo
--PDBContext::getLineInfoForDataAddress(object::SectionedAddress Address) {
-- // Unimplemented. S_GDATA and S_LDATA in CodeView (used to describe global
-- // variables) aren't capable of carrying line information.
-- return DILineInfo();
--}
--
- DILineInfoTable
- PDBContext::getLineInfoForAddressRange(object::SectionedAddress Address,
- uint64_t Size,
-diff --git a/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp b/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp
-index 877380213f21..496c8149782e 100644
---- a/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp
-+++ b/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp
-@@ -206,10 +206,6 @@ void PlainPrinterBase::print(const Request &Request, const DIGlobal &Global) {
- Name = DILineInfo::Addr2LineBadString;
- OS << Name << "\n";
- OS << Global.Start << " " << Global.Size << "\n";
-- if (Global.DeclFile.empty())
-- OS << "??:?\n";
-- else
-- OS << Global.DeclFile << ":" << Global.DeclLine << "\n";
- printFooter();
- }
-
-diff --git a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
-index d8ee9264b64f..fcff531895a2 100644
---- a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
-+++ b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
-@@ -327,14 +327,6 @@ DIGlobal SymbolizableObjectFile::symbolizeData(
- std::string FileName;
- getNameFromSymbolTable(ModuleOffset.Address, Res.Name, Res.Start, Res.Size,
- FileName);
-- Res.DeclFile = FileName;
--
-- // Try and get a better filename:lineno pair from the debuginfo, if present.
-- DILineInfo DL = DebugInfoContext->getLineInfoForDataAddress(ModuleOffset);
-- if (DL.Line != 0) {
-- Res.DeclFile = DL.FileName;
-- Res.DeclLine = DL.Line;
-- }
- return Res;
- }
-
-diff --git a/llvm/test/DebugInfo/Symbolize/ELF/data-command-symtab.yaml b/llvm/test/DebugInfo/Symbolize/ELF/data-command-symtab.yaml
-index 83af3111c5dd..984e444b2fda 100644
---- a/llvm/test/DebugInfo/Symbolize/ELF/data-command-symtab.yaml
-+++ b/llvm/test/DebugInfo/Symbolize/ELF/data-command-symtab.yaml
-@@ -7,15 +7,12 @@
-
- # CHECK: func
- # CHECK-NEXT: 4096 1
--# CHECK-NEXT: ??:?
- # CHECK-EMPTY:
- # CHECK-NEXT: data
- # CHECK-NEXT: 8192 2
--# CHECK-NEXT: ??:?
- # CHECK-EMPTY:
- # CHECK-NEXT: notype
- # CHECK-NEXT: 8194 3
--# CHECK-NEXT: ??:?
- # CHECK-EMPTY:
-
- --- !ELF
-diff --git a/llvm/test/tools/llvm-symbolizer/data-location.yaml b/llvm/test/tools/llvm-symbolizer/data-location.yaml
-deleted file mode 100644
-index 54f7d9be44a1..000000000000
---- a/llvm/test/tools/llvm-symbolizer/data-location.yaml
-+++ /dev/null
-@@ -1,450 +0,0 @@
--## Show that when "DATA" is used with an address, it forces the found location
--## to be symbolized as data, including the source information.
--
--# RUN: yaml2obj %s -o %t.so
--
--# RUN: llvm-symbolizer 'DATA 0x304d0' 'DATA 0x304d1' 'DATA 0x304d3' \
--# RUN: 'DATA 0x304c0' 'DATA 0x304c8' 'DATA 0x304d4' 'DATA 0x304dc' \
--# RUN: 'DATA 0x304d8' --obj=%t.so | FileCheck %s
--
--# CHECK: bss_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:1
--# CHECK-EMPTY:
--
--## Check that lookups in the middle of the symbol are also resolved correctly.
--# CHECK: bss_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:1
--# CHECK-EMPTY:
--# CHECK: bss_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:1
--# CHECK-EMPTY:
--
--## Now, the remainder of the symbols.
--# CHECK-NEXT: data_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:2
--# CHECK-EMPTY:
--# CHECK-NEXT: str
--# CHECK-NEXT: {{[0-9]+}} 8
--# CHECK-NEXT: /tmp/file.cpp:4
--# CHECK-EMPTY:
--# CHECK-NEXT: f()::function_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:8
--# CHECK-EMPTY:
--
--## Including the one that includes an addend.
--# CHECK-NEXT: alpha
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:12
--# CHECK-EMPTY:
--# CHECK-NEXT: beta
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:13
--# CHECK-EMPTY:
--
--## Ensure there's still a global that's offset-based.
--# RUN: llvm-dwarfdump --debug-info %t.so | FileCheck %s --check-prefix=OFFSET
--
--# OFFSET: DW_AT_location (DW_OP_addrx 0x4, DW_OP_plus_uconst 0x4)
--
--################################################################################
--## File below was generated using:
--##
--## $ clang++ -g -O3 /tmp/file.cpp -shared -fuse-ld=lld -nostdlib \
--## -target aarch64-linux-gnuabi -mllvm -global-merge-ignore-single-use \
--## -o /tmp/file.so
--##
--## With /tmp/file.cpp as:
--## 1: int bss_global;
--## 2: int data_global = 2;
--## 3:
--## 4: const char* str =
--## 5: "12345678";
--## 6:
--## 7: int* f() {
--## 8: static int function_global;
--## 9: return &function_global;
--## 10: }
--## 11:
--## 12: static int alpha;
--## 13: static int beta;
--## 14: int *f(bool b) { return beta ? &alpha : &beta; }
--## 15:
--##
--## ... then, one can get the offsets using `nm`, like:
--## $ nm out.so | grep bss_global
--## 00000000000038fc B bss_global
--##
--## Note the use of the aarch64 target (with -nostdlib in order to allow linkage
--## without libraries for cross-compilation) as well as -O3 and
--## -global-merge-ignore-single-use. This is a specific combination that makes
--## the compiler emit the `alpha` global variable with a more complex
--## DW_AT_location than just a DW_OP_addr/DW_OP_addrx. In this instance, it
--## outputs a `DW_AT_location (DW_OP_addrx 0x4, DW_OP_plus_uconst 0x4)`.
--##
--## Ideally, this would be tested by invoking clang directly on a C source file,
--## but unfortunately there's no way to do that for LLVM tests. The other option
--## is to compile IR to an objfile, but llvm-symbolizer doesn't understand that
--## two symbols can have the same address in different sections. In the code
--## above, for example, we'd have bss_global at .bss+0x0, and data_global at
--## .data+0x0, and so the symbolizer would only print one of them. Hence, we have
--## the ugly dso-to-yaml blob below.
--##
--## For now, constant strings don't have a debuginfo entry, and so can't be
--## symbolized correctly. In future (if D123534 gets merged), this can be updated
--## to include a check that llvm-symbolizer can also symbolize constant strings,
--## like `str` above (basically that &"12345678" should be symbolizable)
--## to the specific line. Then, you can find the address of the constant string
--## from the relocation:
--##
--## $ nm out.so | grep str
--## 00000000000038c0 D str
--## $ llvm-objdump -R out.so | grep 38c0
--## 00000000000038c0 R_X86_64_RELATIVE *ABS*+0x4f8 # <-- 0x4f8
--################################################################################
--
----- !ELF
--FileHeader:
-- Class: ELFCLASS64
-- Data: ELFDATA2LSB
-- Type: ET_DYN
-- Machine: EM_AARCH64
--ProgramHeaders:
-- - Type: PT_PHDR
-- Flags: [ PF_R ]
-- VAddr: 0x40
-- Align: 0x8
-- - Type: PT_LOAD
-- Flags: [ PF_R ]
-- FirstSec: .dynsym
-- LastSec: .eh_frame
-- Align: 0x10000
-- - Type: PT_LOAD
-- Flags: [ PF_X, PF_R ]
-- FirstSec: .text
-- LastSec: .text
-- VAddr: 0x103E4
-- Align: 0x10000
-- - Type: PT_LOAD
-- Flags: [ PF_W, PF_R ]
-- FirstSec: .dynamic
-- LastSec: .dynamic
-- VAddr: 0x20410
-- Align: 0x10000
-- - Type: PT_LOAD
-- Flags: [ PF_W, PF_R ]
-- FirstSec: .data
-- LastSec: .bss
-- VAddr: 0x304C0
-- Align: 0x10000
-- - Type: PT_DYNAMIC
-- Flags: [ PF_W, PF_R ]
-- FirstSec: .dynamic
-- LastSec: .dynamic
-- VAddr: 0x20410
-- Align: 0x8
-- - Type: PT_GNU_RELRO
-- Flags: [ PF_R ]
-- FirstSec: .dynamic
-- LastSec: .dynamic
-- VAddr: 0x20410
-- - Type: PT_GNU_EH_FRAME
-- Flags: [ PF_R ]
-- FirstSec: .eh_frame_hdr
-- LastSec: .eh_frame_hdr
-- VAddr: 0x37C
-- Align: 0x4
-- - Type: PT_GNU_STACK
-- Flags: [ PF_W, PF_R ]
-- Align: 0x0
--Sections:
-- - Name: .dynsym
-- Type: SHT_DYNSYM
-- Flags: [ SHF_ALLOC ]
-- Address: 0x238
-- Link: .dynstr
-- AddressAlign: 0x8
-- - Name: .gnu.hash
-- Type: SHT_GNU_HASH
-- Flags: [ SHF_ALLOC ]
-- Address: 0x2C8
-- Link: .dynsym
-- AddressAlign: 0x8
-- Header:
-- SymNdx: 0x1
-- Shift2: 0x1A
-- BloomFilter: [ 0x400188002180000C ]
-- HashBuckets: [ 0x1 ]
-- HashValues: [ 0xEE8502A, 0xEE85016, 0xC033991C, 0x61F7372E, 0xB88AB7F ]
-- - Name: .hash
-- Type: SHT_HASH
-- Flags: [ SHF_ALLOC ]
-- Address: 0x2F8
-- Link: .dynsym
-- AddressAlign: 0x4
-- Bucket: [ 5, 0, 4, 0, 3, 0 ]
-- Chain: [ 0, 0, 0, 1, 2, 0 ]
-- - Name: .dynstr
-- Type: SHT_STRTAB
-- Flags: [ SHF_ALLOC ]
-- Address: 0x330
-- AddressAlign: 0x1
-- - Name: .rela.dyn
-- Type: SHT_RELA
-- Flags: [ SHF_ALLOC ]
-- Address: 0x358
-- Link: .dynsym
-- AddressAlign: 0x8
-- Relocations:
-- - Offset: 0x304C8
-- Type: R_AARCH64_RELATIVE
-- Addend: 880
-- - Name: .rodata
-- Type: SHT_PROGBITS
-- Flags: [ SHF_ALLOC, SHF_MERGE, SHF_STRINGS ]
-- Address: 0x370
-- AddressAlign: 0x1
-- EntSize: 0x1
-- Content: '313233343536373800'
-- - Name: .eh_frame_hdr
-- Type: SHT_PROGBITS
-- Flags: [ SHF_ALLOC ]
-- Address: 0x37C
-- AddressAlign: 0x4
-- Content: 011B033B18000000020000006800010034000000740001004C000000
-- - Name: .eh_frame
-- Type: SHT_PROGBITS
-- Flags: [ SHF_ALLOC ]
-- Address: 0x398
-- AddressAlign: 0x8
-- Content: 1400000000000000017A5200017C1E011B0C1F0000000000140000001C0000002C0001000C00000000000000000000001400000034000000200001001C000000000000000000000000000000
-- - Name: .text
-- Type: SHT_PROGBITS
-- Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
-- Address: 0x103E4
-- AddressAlign: 0x4
-- Content: 0001009000501391C0035FD60801009008611391E90308AA2A4540B85F0100710001899AC0035FD6
-- - Name: .dynamic
-- Type: SHT_DYNAMIC
-- Flags: [ SHF_WRITE, SHF_ALLOC ]
-- Address: 0x20410
-- Link: .dynstr
-- AddressAlign: 0x8
-- Entries:
-- - Tag: DT_RELA
-- Value: 0x358
-- - Tag: DT_RELASZ
-- Value: 0x18
-- - Tag: DT_RELAENT
-- Value: 0x18
-- - Tag: DT_RELACOUNT
-- Value: 0x1
-- - Tag: DT_SYMTAB
-- Value: 0x238
-- - Tag: DT_SYMENT
-- Value: 0x18
-- - Tag: DT_STRTAB
-- Value: 0x330
-- - Tag: DT_STRSZ
-- Value: 0x28
-- - Tag: DT_GNU_HASH
-- Value: 0x2C8
-- - Tag: DT_HASH
-- Value: 0x2F8
-- - Tag: DT_NULL
-- Value: 0x0
-- - Name: .data
-- Type: SHT_PROGBITS
-- Flags: [ SHF_WRITE, SHF_ALLOC ]
-- Address: 0x304C0
-- AddressAlign: 0x8
-- Content: '02000000000000000000000000000000'
-- - Name: .bss
-- Type: SHT_NOBITS
-- Flags: [ SHF_WRITE, SHF_ALLOC ]
-- Address: 0x304D0
-- AddressAlign: 0x4
-- Size: 0x10
-- - Name: .debug_abbrev
-- Type: SHT_PROGBITS
-- AddressAlign: 0x1
-- Content: 011101252513050325721710171B25111B120673170000023400032549133F193A0B3B0B0218000003240003253E0B0B0B0000040F004913000005260049130000062E01111B120640187A196E2503253A0B3B0B49133F190000073400032549133A0B3B0B02180000083400032549133A0B3B0B02186E25000009050003253A0B3B0B4913000000
-- - Name: .debug_info
-- Type: SHT_PROGBITS
-- AddressAlign: 0x1
-- Content: AB0000000500010800000000010021000108000000000000000205280000000800000002032E000000000102A1000304050402052E000000000202A101020648000000000402A102044D00000005520000000307080106050C000000016F0D0E0007A500000007082E000000000802A1030008092E000000000D02A1040A080B2E000000000C04A10423040C06061C000000016F0F0E000EA50000000910000EAA00000000042E0000000311020100
-- - Name: .debug_str_offsets
-- Type: SHT_PROGBITS
-- AddressAlign: 0x1
-- Content: 4C00000005000000A2000000000000002C00000059000000280000001C00000072000000640000008C0000008700000069000000140000007B0000009C0000001A0000000E0000008500000076000000
-- - Name: .comment
-- Type: SHT_PROGBITS
-- Flags: [ SHF_MERGE, SHF_STRINGS ]
-- AddressAlign: 0x1
-- EntSize: 0x1
-- Content: 4C696E6B65723A204C4C442031352E302E300000636C616E672076657273696F6E2031352E302E30202868747470733A2F2F6769746875622E636F6D2F6C6C766D2F6C6C766D2D70726F6A6563742E67697420306462616566363162353666306566306162306366333865613932666663316633356265653366662900
-- - Name: .debug_line
-- Type: SHT_PROGBITS
-- AddressAlign: 0x1
-- Content: 620000000500080037000000010101FB0E0D00010101010000000100000101011F010E00000003011F020F051E0100000000006C97BBE59F7DC6A9EA956633431DA63E0400000902E4030100000000001805030A140500BF05190A0105120608740204000101
-- - Name: .debug_line_str
-- Type: SHT_PROGBITS
-- Flags: [ SHF_MERGE, SHF_STRINGS ]
-- AddressAlign: 0x1
-- EntSize: 0x1
-- Content: 2F746D702F66696C652E637070002F7573722F6C6F63616C2F676F6F676C652F686F6D652F6D69746368702F6C6C766D2D6275696C642F6F707400
--Symbols:
-- - Name: file.cpp
-- Type: STT_FILE
-- Index: SHN_ABS
-- - Name: '$x.0'
-- Section: .text
-- Value: 0x103E4
-- - Name: _ZZ1fvE15function_global
-- Type: STT_OBJECT
-- Section: .bss
-- Value: 0x304D4
-- Size: 0x4
-- - Name: '$d.1'
-- Section: .bss
-- Value: 0x304D0
-- - Name: '$d.2'
-- Section: .data
-- Value: 0x304C0
-- - Name: '$d.3'
-- Section: .rodata
-- Value: 0x370
-- - Name: '$d.4'
-- Section: .debug_abbrev
-- - Name: '$d.5'
-- Section: .debug_info
-- - Name: '$d.6'
-- Section: .debug_str_offsets
-- - Name: '$d.7'
-- Section: .debug_str
-- Value: 0xA2
-- - Name: '$d.8'
-- Section: .debug_addr
-- - Name: _ZL4beta
-- Type: STT_OBJECT
-- Section: .bss
-- Value: 0x304D8
-- Size: 0x4
-- - Name: _ZL5alpha
-- Type: STT_OBJECT
-- Section: .bss
-- Value: 0x304DC
-- Size: 0x4
-- - Name: '$d.9'
-- Section: .comment
-- Value: 0x13
-- - Name: '$d.10'
-- Section: .eh_frame
-- Value: 0x398
-- - Name: '$d.11'
-- Section: .debug_line
-- - Name: '$d.12'
-- Section: .debug_line_str
-- Value: 0xE
-- - Name: _DYNAMIC
-- Section: .dynamic
-- Value: 0x20410
-- Other: [ STV_HIDDEN ]
-- - Name: _Z1fv
-- Type: STT_FUNC
-- Section: .text
-- Binding: STB_GLOBAL
-- Value: 0x103E4
-- Size: 0xC
-- - Name: _Z1fb
-- Type: STT_FUNC
-- Section: .text
-- Binding: STB_GLOBAL
-- Value: 0x103F0
-- Size: 0x1C
-- - Name: bss_global
-- Type: STT_OBJECT
-- Section: .bss
-- Binding: STB_GLOBAL
-- Value: 0x304D0
-- Size: 0x4
-- - Name: data_global
-- Type: STT_OBJECT
-- Section: .data
-- Binding: STB_GLOBAL
-- Value: 0x304C0
-- Size: 0x4
-- - Name: str
-- Type: STT_OBJECT
-- Section: .data
-- Binding: STB_GLOBAL
-- Value: 0x304C8
-- Size: 0x8
--DynamicSymbols:
-- - Name: _Z1fv
-- Type: STT_FUNC
-- Section: .text
-- Binding: STB_GLOBAL
-- Value: 0x103E4
-- Size: 0xC
-- - Name: _Z1fb
-- Type: STT_FUNC
-- Section: .text
-- Binding: STB_GLOBAL
-- Value: 0x103F0
-- Size: 0x1C
-- - Name: bss_global
-- Type: STT_OBJECT
-- Section: .bss
-- Binding: STB_GLOBAL
-- Value: 0x304D0
-- Size: 0x4
-- - Name: data_global
-- Type: STT_OBJECT
-- Section: .data
-- Binding: STB_GLOBAL
-- Value: 0x304C0
-- Size: 0x4
-- - Name: str
-- Type: STT_OBJECT
-- Section: .data
-- Binding: STB_GLOBAL
-- Value: 0x304C8
-- Size: 0x8
--DWARF:
-- debug_str:
-- - '/tmp/file.cpp'
-- - _Z1fb
-- - alpha
-- - f
-- - data_global
-- - int
-- - '/usr/local/google/home/mitchp/llvm-build/opt'
-- - bss_global
-- - char
-- - _ZL4beta
-- - str
-- - bool
-- - _ZL5alpha
-- - b
-- - beta
-- - function_global
-- - _Z1fv
-- - 'clang version 15.0.0 (https://github.com/llvm/llvm-project.git 0dbaef61b56f0ef0ab0cf38ea92ffc1f35bee3ff)'
-- debug_addr:
-- - Length: 0x3C
-- Version: 0x5
-- AddressSize: 0x8
-- Entries:
-- - Address: 0x304D0
-- - Address: 0x304C0
-- - Address: 0x304C8
-- - Address: 0x304D4
-- - Address: 0x304D8
-- - Address: 0x103E4
-- - Address: 0x103F0
--...
-diff --git a/llvm/test/tools/llvm-symbolizer/data.s b/llvm/test/tools/llvm-symbolizer/data.s
-index cc9503c59141..e8039f146dbd 100644
---- a/llvm/test/tools/llvm-symbolizer/data.s
-+++ b/llvm/test/tools/llvm-symbolizer/data.s
-@@ -7,12 +7,9 @@
-
- # CHECK: d1
- # CHECK-NEXT: 0 8
--# CHECK-NEXT: ??:?
- # CHECK-EMPTY:
- # CHECK-NEXT: d2
- # CHECK-NEXT: 8 4
--# CHECK-NEXT: ??:?
--# CHECK-EMPTY:
-
- d1:
- .quad 0x1122334455667788
---
-2.38.1.1.g6d9df9d320
-
diff --git a/build/build-clang/revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch b/build/build-clang/revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch
deleted file mode 100644
index 908374789c..0000000000
--- a/build/build-clang/revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch
+++ /dev/null
@@ -1,972 +0,0 @@
-From cb411520cb7cd5e6e25966911ca55feb5de779e0 Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Fri, 4 Nov 2022 14:51:38 +0900
-Subject: [PATCH] Revert "[symbolizer] Parse DW_TAG_variable DIs to show line
- info for globals"
-
-This reverts commit cead4eceb01b935fae07bf4a7e91911b344d2fec for causing
-yet unidentified problems on some webrtc tests under TSan (bug 1798613).
----
- llvm/include/llvm/DebugInfo/DIContext.h | 4 -
- .../llvm/DebugInfo/DWARF/DWARFContext.h | 2 -
- llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h | 7 -
- llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h | 14 -
- llvm/include/llvm/DebugInfo/PDB/PDBContext.h | 2 -
- llvm/lib/DebugInfo/DWARF/DWARFContext.cpp | 97 ++--
- llvm/lib/DebugInfo/DWARF/DWARFDie.cpp | 60 ---
- llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp | 97 ----
- llvm/lib/DebugInfo/PDB/PDBContext.cpp | 7 -
- llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp | 4 -
- .../Symbolize/SymbolizableObjectFile.cpp | 8 -
- .../Symbolize/ELF/data-command-symtab.yaml | 3 -
- .../tools/llvm-symbolizer/data-location.yaml | 450 ------------------
- llvm/test/tools/llvm-symbolizer/data.s | 3 -
- 14 files changed, 61 insertions(+), 697 deletions(-)
- delete mode 100644 llvm/test/tools/llvm-symbolizer/data-location.yaml
-
-diff --git a/llvm/include/llvm/DebugInfo/DIContext.h b/llvm/include/llvm/DebugInfo/DIContext.h
-index 9b278b696073..a9f98588cf2d 100644
---- a/llvm/include/llvm/DebugInfo/DIContext.h
-+++ b/llvm/include/llvm/DebugInfo/DIContext.h
-@@ -114,8 +114,6 @@ struct DIGlobal {
- std::string Name;
- uint64_t Start = 0;
- uint64_t Size = 0;
-- std::string DeclFile;
-- uint64_t DeclLine = 0;
-
- DIGlobal() : Name(DILineInfo::BadString) {}
- };
-@@ -241,8 +239,6 @@ public:
- virtual DILineInfo getLineInfoForAddress(
- object::SectionedAddress Address,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) = 0;
-- virtual DILineInfo
-- getLineInfoForDataAddress(object::SectionedAddress Address) = 0;
- virtual DILineInfoTable getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) = 0;
-diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-index bf591ed554c6..3365ef8d8ee3 100644
---- a/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-@@ -364,8 +364,6 @@ public:
- DILineInfo getLineInfoForAddress(
- object::SectionedAddress Address,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-- DILineInfo
-- getLineInfoForDataAddress(object::SectionedAddress Address) override;
- DILineInfoTable getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
-index 149c5ef4e493..4a4d105a2b23 100644
---- a/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
-+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFDie.h
-@@ -280,13 +280,6 @@ public:
- /// \returns an iterator range for the attributes of the current DIE.
- iterator_range<attribute_iterator> attributes() const;
-
-- /// Gets the type size (in bytes) for this DIE.
-- ///
-- /// \param PointerSize the pointer size of the containing CU.
-- /// \returns if this is a type DIE, or this DIE contains a DW_AT_type, returns
-- /// the size of the type.
-- std::optional<uint64_t> getTypeSize(uint64_t PointerSize);
--
- class iterator;
-
- iterator begin() const;
-diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
-index 9188865b4d77..0341344bc7b8 100644
---- a/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
-+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFUnit.h
-@@ -9,7 +9,6 @@
- #ifndef LLVM_DEBUGINFO_DWARF_DWARFUNIT_H
- #define LLVM_DEBUGINFO_DWARF_DWARFUNIT_H
-
--#include "llvm/ADT/DenseSet.h"
- #include "llvm/ADT/STLExtras.h"
- #include "llvm/ADT/SmallVector.h"
- #include "llvm/ADT/StringRef.h"
-@@ -28,7 +27,6 @@
- #include <cstdint>
- #include <map>
- #include <memory>
--#include <set>
- #include <utility>
- #include <vector>
-
-@@ -242,11 +240,6 @@ class DWARFUnit {
- /// std::map::upper_bound for address range lookup.
- std::map<uint64_t, std::pair<uint64_t, DWARFDie>> AddrDieMap;
-
-- /// Map from the location (interpreted DW_AT_location) of a DW_TAG_variable,
-- /// to the end address and the corresponding DIE.
-- std::map<uint64_t, std::pair<uint64_t, DWARFDie>> VariableDieMap;
-- DenseSet<uint64_t> RootsParsedForVariables;
--
- using die_iterator_range =
- iterator_range<std::vector<DWARFDebugInfoEntry>::iterator>;
-
-@@ -329,9 +322,6 @@ public:
- /// Recursively update address to Die map.
- void updateAddressDieMap(DWARFDie Die);
-
-- /// Recursively update address to variable Die map.
-- void updateVariableDieMap(DWARFDie Die);
--
- void setRangesSection(const DWARFSection *RS, uint64_t Base) {
- RangeSection = RS;
- RangeSectionBase = Base;
-@@ -446,10 +436,6 @@ public:
- /// cleared.
- DWARFDie getSubroutineForAddress(uint64_t Address);
-
-- /// Returns variable DIE for the address provided. The pointer is alive as
-- /// long as parsed compile unit DIEs are not cleared.
-- DWARFDie getVariableForAddress(uint64_t Address);
--
- /// getInlinedChainForAddress - fetches inlined chain for a given address.
- /// Returns empty chain if there is no subprogram containing address. The
- /// chain is valid as long as parsed compile unit DIEs are not cleared.
-diff --git a/llvm/include/llvm/DebugInfo/PDB/PDBContext.h b/llvm/include/llvm/DebugInfo/PDB/PDBContext.h
-index 3163c0a1dae0..7b6793f0a639 100644
---- a/llvm/include/llvm/DebugInfo/PDB/PDBContext.h
-+++ b/llvm/include/llvm/DebugInfo/PDB/PDBContext.h
-@@ -45,8 +45,6 @@ namespace pdb {
- DILineInfo getLineInfoForAddress(
- object::SectionedAddress Address,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-- DILineInfo
-- getLineInfoForDataAddress(object::SectionedAddress Address) override;
- DILineInfoTable getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size,
- DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
-diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-index 19d7d659a86a..1bcfdecfd588 100644
---- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-+++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-@@ -1053,25 +1053,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForAddress(uint64_t Address) {
- // First, get the offset of the compile unit.
- uint64_t CUOffset = getDebugAranges()->findAddress(Address);
- // Retrieve the compile unit.
-- if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset))
-- return OffsetCU;
--
-- // Global variables are often not found by the above search, for one of two
-- // reasons:
-- // 1. .debug_aranges may not include global variables. On clang, it seems we
-- // put the globals in the aranges, but this isn't true for gcc.
-- // 2. Even if the global variable is in a .debug_arange, global variables
-- // may not be captured in the [start, end) addresses described by the
-- // parent compile unit.
-- //
-- // So, we walk the CU's and their child DI's manually, looking for the
-- // specific global variable.
-- for (std::unique_ptr<DWARFUnit> &CU : compile_units()) {
-- if (CU->getVariableForAddress(Address)) {
-- return static_cast<DWARFCompileUnit *>(CU.get());
-- }
-- }
-- return nullptr;
-+ return getCompileUnitForOffset(CUOffset);
- }
-
- DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address,
-@@ -1141,6 +1123,64 @@ static bool getFunctionNameAndStartLineForAddress(
- return FoundResult;
- }
-
-+static std::optional<uint64_t> getTypeSize(DWARFDie Type, uint64_t PointerSize) {
-+ if (auto SizeAttr = Type.find(DW_AT_byte_size))
-+ if (std::optional<uint64_t> Size = SizeAttr->getAsUnsignedConstant())
-+ return Size;
-+
-+ switch (Type.getTag()) {
-+ case DW_TAG_pointer_type:
-+ case DW_TAG_reference_type:
-+ case DW_TAG_rvalue_reference_type:
-+ return PointerSize;
-+ case DW_TAG_ptr_to_member_type: {
-+ if (DWARFDie BaseType = Type.getAttributeValueAsReferencedDie(DW_AT_type))
-+ if (BaseType.getTag() == DW_TAG_subroutine_type)
-+ return 2 * PointerSize;
-+ return PointerSize;
-+ }
-+ case DW_TAG_const_type:
-+ case DW_TAG_immutable_type:
-+ case DW_TAG_volatile_type:
-+ case DW_TAG_restrict_type:
-+ case DW_TAG_typedef: {
-+ if (DWARFDie BaseType = Type.getAttributeValueAsReferencedDie(DW_AT_type))
-+ return getTypeSize(BaseType, PointerSize);
-+ break;
-+ }
-+ case DW_TAG_array_type: {
-+ DWARFDie BaseType = Type.getAttributeValueAsReferencedDie(DW_AT_type);
-+ if (!BaseType)
-+ return std::optional<uint64_t>();
-+ std::optional<uint64_t> BaseSize = getTypeSize(BaseType, PointerSize);
-+ if (!BaseSize)
-+ return std::optional<uint64_t>();
-+ uint64_t Size = *BaseSize;
-+ for (DWARFDie Child : Type) {
-+ if (Child.getTag() != DW_TAG_subrange_type)
-+ continue;
-+
-+ if (auto ElemCountAttr = Child.find(DW_AT_count))
-+ if (std::optional<uint64_t> ElemCount =
-+ ElemCountAttr->getAsUnsignedConstant())
-+ Size *= *ElemCount;
-+ if (auto UpperBoundAttr = Child.find(DW_AT_upper_bound))
-+ if (std::optional<int64_t> UpperBound =
-+ UpperBoundAttr->getAsSignedConstant()) {
-+ int64_t LowerBound = 0;
-+ if (auto LowerBoundAttr = Child.find(DW_AT_lower_bound))
-+ LowerBound = LowerBoundAttr->getAsSignedConstant().value_or(0);
-+ Size *= *UpperBound - LowerBound + 1;
-+ }
-+ }
-+ return Size;
-+ }
-+ default:
-+ break;
-+ }
-+ return std::optional<uint64_t>();
-+}
-+
- static std::optional<int64_t>
- getExpressionFrameOffset(ArrayRef<uint8_t> Expr,
- std::optional<unsigned> FrameBaseReg) {
-@@ -1201,7 +1241,7 @@ void DWARFContext::addLocalsForDie(DWARFCompileUnit *CU, DWARFDie Subprogram,
- if (std::optional<const char *> Name = dwarf::toString(*NameAttr))
- Local.Name = *Name;
- if (auto Type = Die.getAttributeValueAsReferencedDie(DW_AT_type))
-- Local.Size = Type.getTypeSize(getCUAddrSize());
-+ Local.Size = getTypeSize(Type, getCUAddrSize());
- if (auto DeclFileAttr = Die.find(DW_AT_decl_file)) {
- if (const auto *LT = CU->getContext().getLineTableForUnit(CU))
- LT->getFileNameByIndex(
-@@ -1242,6 +1282,7 @@ DWARFContext::getLocalsForAddress(object::SectionedAddress Address) {
- DILineInfo DWARFContext::getLineInfoForAddress(object::SectionedAddress Address,
- DILineInfoSpecifier Spec) {
- DILineInfo Result;
-+
- DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Result;
-@@ -1256,22 +1297,6 @@ DILineInfo DWARFContext::getLineInfoForAddress(object::SectionedAddress Address,
- Spec.FLIKind, Result);
- }
- }
--
-- return Result;
--}
--
--DILineInfo
--DWARFContext::getLineInfoForDataAddress(object::SectionedAddress Address) {
-- DILineInfo Result;
-- DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
-- if (!CU)
-- return Result;
--
-- if (DWARFDie Die = CU->getVariableForAddress(Address.Address)) {
-- Result.FileName = Die.getDeclFile(FileLineInfoKind::AbsoluteFilePath);
-- Result.Line = Die.getDeclLine();
-- }
--
- return Result;
- }
-
-diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
-index 66492f7bf804..357b172bf99b 100644
---- a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
-+++ b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
-@@ -556,11 +556,6 @@ getTypeSizeImpl(DWARFDie Die, uint64_t PointerSize,
- return std::nullopt;
- }
-
--std::optional<uint64_t> DWARFDie::getTypeSize(uint64_t PointerSize) {
-- SmallPtrSet<const DWARFDebugInfoEntry *, 4> Visited;
-- return getTypeSizeImpl(*this, PointerSize, Visited);
--}
--
- /// Helper to dump a DIE with all of its parents, but no siblings.
- static unsigned dumpParentChain(DWARFDie Die, raw_ostream &OS, unsigned Indent,
- DIDumpOptions DumpOpts, unsigned Depth = 0) {
-diff --git a/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp b/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
-index 74667fcb92bc..148711f0246f 100644
---- a/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
-+++ b/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
-@@ -9,7 +9,6 @@
- #include "llvm/DebugInfo/DWARF/DWARFUnit.h"
- #include "llvm/ADT/SmallString.h"
- #include "llvm/ADT/StringRef.h"
--#include "llvm/BinaryFormat/Dwarf.h"
- #include "llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h"
- #include "llvm/DebugInfo/DWARF/DWARFCompileUnit.h"
- #include "llvm/DebugInfo/DWARF/DWARFContext.h"
-@@ -19,13 +18,11 @@
- #include "llvm/DebugInfo/DWARF/DWARFDebugRangeList.h"
- #include "llvm/DebugInfo/DWARF/DWARFDebugRnglists.h"
- #include "llvm/DebugInfo/DWARF/DWARFDie.h"
--#include "llvm/DebugInfo/DWARF/DWARFExpression.h"
- #include "llvm/DebugInfo/DWARF/DWARFFormValue.h"
- #include "llvm/DebugInfo/DWARF/DWARFListTable.h"
- #include "llvm/DebugInfo/DWARF/DWARFObject.h"
- #include "llvm/DebugInfo/DWARF/DWARFSection.h"
- #include "llvm/DebugInfo/DWARF/DWARFTypeUnit.h"
--#include "llvm/Object/ObjectFile.h"
- #include "llvm/Support/DataExtractor.h"
- #include "llvm/Support/Errc.h"
- #include "llvm/Support/Path.h"
-@@ -752,100 +749,6 @@ DWARFDie DWARFUnit::getSubroutineForAddress(uint64_t Address) {
- return R->second.second;
- }
-
--void DWARFUnit::updateVariableDieMap(DWARFDie Die) {
-- for (DWARFDie Child : Die) {
-- if (isType(Child.getTag()))
-- continue;
-- updateVariableDieMap(Child);
-- }
--
-- if (Die.getTag() != DW_TAG_variable)
-- return;
--
-- Expected<DWARFLocationExpressionsVector> Locations =
-- Die.getLocations(DW_AT_location);
-- if (!Locations) {
-- // Missing DW_AT_location is fine here.
-- consumeError(Locations.takeError());
-- return;
-- }
--
-- uint64_t Address = UINT64_MAX;
--
-- for (const DWARFLocationExpression &Location : *Locations) {
-- uint8_t AddressSize = getAddressByteSize();
-- DataExtractor Data(Location.Expr, isLittleEndian(), AddressSize);
-- DWARFExpression Expr(Data, AddressSize);
-- auto It = Expr.begin();
-- if (It == Expr.end())
-- continue;
--
-- // Match exactly the main sequence used to describe global variables:
-- // `DW_OP_addr[x] [+ DW_OP_plus_uconst]`. Currently, this is the sequence
-- // that LLVM produces for DILocalVariables and DIGlobalVariables. If, in
-- // future, the DWARF producer (`DwarfCompileUnit::addLocationAttribute()` is
-- // a good starting point) is extended to use further expressions, this code
-- // needs to be updated.
-- uint64_t LocationAddr;
-- if (It->getCode() == dwarf::DW_OP_addr) {
-- LocationAddr = It->getRawOperand(0);
-- } else if (It->getCode() == dwarf::DW_OP_addrx) {
-- uint64_t DebugAddrOffset = It->getRawOperand(0);
-- if (auto Pointer = getAddrOffsetSectionItem(DebugAddrOffset)) {
-- LocationAddr = Pointer->Address;
-- }
-- } else {
-- continue;
-- }
--
-- // Read the optional 2nd operand, a DW_OP_plus_uconst.
-- if (++It != Expr.end()) {
-- if (It->getCode() != dwarf::DW_OP_plus_uconst)
-- continue;
--
-- LocationAddr += It->getRawOperand(0);
--
-- // Probe for a 3rd operand, if it exists, bail.
-- if (++It != Expr.end())
-- continue;
-- }
--
-- Address = LocationAddr;
-- break;
-- }
--
-- // Get the size of the global variable. If all else fails (i.e. the global has
-- // no type), then we use a size of one to still allow symbolization of the
-- // exact address.
-- uint64_t GVSize = 1;
-- if (Die.getAttributeValueAsReferencedDie(DW_AT_type))
-- if (std::optional<uint64_t> Size = Die.getTypeSize(getAddressByteSize()))
-- GVSize = *Size;
--
-- if (Address != UINT64_MAX)
-- VariableDieMap[Address] = {Address + GVSize, Die};
--}
--
--DWARFDie DWARFUnit::getVariableForAddress(uint64_t Address) {
-- extractDIEsIfNeeded(false);
--
-- auto RootDie = getUnitDIE();
--
-- auto RootLookup = RootsParsedForVariables.insert(RootDie.getOffset());
-- if (RootLookup.second)
-- updateVariableDieMap(RootDie);
--
-- auto R = VariableDieMap.upper_bound(Address);
-- if (R == VariableDieMap.begin())
-- return DWARFDie();
--
-- // upper_bound's previous item contains Address.
-- --R;
-- if (Address >= R->second.first)
-- return DWARFDie();
-- return R->second.second;
--}
--
- void
- DWARFUnit::getInlinedChainForAddress(uint64_t Address,
- SmallVectorImpl<DWARFDie> &InlinedChain) {
-diff --git a/llvm/lib/DebugInfo/PDB/PDBContext.cpp b/llvm/lib/DebugInfo/PDB/PDBContext.cpp
-index e600fb7385f1..0444093d7622 100644
---- a/llvm/lib/DebugInfo/PDB/PDBContext.cpp
-+++ b/llvm/lib/DebugInfo/PDB/PDBContext.cpp
-@@ -64,13 +64,6 @@ DILineInfo PDBContext::getLineInfoForAddress(object::SectionedAddress Address,
- return Result;
- }
-
--DILineInfo
--PDBContext::getLineInfoForDataAddress(object::SectionedAddress Address) {
-- // Unimplemented. S_GDATA and S_LDATA in CodeView (used to describe global
-- // variables) aren't capable of carrying line information.
-- return DILineInfo();
--}
--
- DILineInfoTable
- PDBContext::getLineInfoForAddressRange(object::SectionedAddress Address,
- uint64_t Size,
-diff --git a/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp b/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp
-index 877380213f21..496c8149782e 100644
---- a/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp
-+++ b/llvm/lib/DebugInfo/Symbolize/DIPrinter.cpp
-@@ -206,10 +206,6 @@ void PlainPrinterBase::print(const Request &Request, const DIGlobal &Global) {
- Name = DILineInfo::Addr2LineBadString;
- OS << Name << "\n";
- OS << Global.Start << " " << Global.Size << "\n";
-- if (Global.DeclFile.empty())
-- OS << "??:?\n";
-- else
-- OS << Global.DeclFile << ":" << Global.DeclLine << "\n";
- printFooter();
- }
-
-diff --git a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
-index d8ee9264b64f..fcff531895a2 100644
---- a/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
-+++ b/llvm/lib/DebugInfo/Symbolize/SymbolizableObjectFile.cpp
-@@ -327,14 +327,6 @@ DIGlobal SymbolizableObjectFile::symbolizeData(
- std::string FileName;
- getNameFromSymbolTable(ModuleOffset.Address, Res.Name, Res.Start, Res.Size,
- FileName);
-- Res.DeclFile = FileName;
--
-- // Try and get a better filename:lineno pair from the debuginfo, if present.
-- DILineInfo DL = DebugInfoContext->getLineInfoForDataAddress(ModuleOffset);
-- if (DL.Line != 0) {
-- Res.DeclFile = DL.FileName;
-- Res.DeclLine = DL.Line;
-- }
- return Res;
- }
-
-diff --git a/llvm/test/DebugInfo/Symbolize/ELF/data-command-symtab.yaml b/llvm/test/DebugInfo/Symbolize/ELF/data-command-symtab.yaml
-index 83af3111c5dd..984e444b2fda 100644
---- a/llvm/test/DebugInfo/Symbolize/ELF/data-command-symtab.yaml
-+++ b/llvm/test/DebugInfo/Symbolize/ELF/data-command-symtab.yaml
-@@ -7,15 +7,12 @@
-
- # CHECK: func
- # CHECK-NEXT: 4096 1
--# CHECK-NEXT: ??:?
- # CHECK-EMPTY:
- # CHECK-NEXT: data
- # CHECK-NEXT: 8192 2
--# CHECK-NEXT: ??:?
- # CHECK-EMPTY:
- # CHECK-NEXT: notype
- # CHECK-NEXT: 8194 3
--# CHECK-NEXT: ??:?
- # CHECK-EMPTY:
-
- --- !ELF
-diff --git a/llvm/test/tools/llvm-symbolizer/data-location.yaml b/llvm/test/tools/llvm-symbolizer/data-location.yaml
-deleted file mode 100644
-index 54f7d9be44a1..000000000000
---- a/llvm/test/tools/llvm-symbolizer/data-location.yaml
-+++ /dev/null
-@@ -1,450 +0,0 @@
--## Show that when "DATA" is used with an address, it forces the found location
--## to be symbolized as data, including the source information.
--
--# RUN: yaml2obj %s -o %t.so
--
--# RUN: llvm-symbolizer 'DATA 0x304d0' 'DATA 0x304d1' 'DATA 0x304d3' \
--# RUN: 'DATA 0x304c0' 'DATA 0x304c8' 'DATA 0x304d4' 'DATA 0x304dc' \
--# RUN: 'DATA 0x304d8' --obj=%t.so | FileCheck %s
--
--# CHECK: bss_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:1
--# CHECK-EMPTY:
--
--## Check that lookups in the middle of the symbol are also resolved correctly.
--# CHECK: bss_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:1
--# CHECK-EMPTY:
--# CHECK: bss_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:1
--# CHECK-EMPTY:
--
--## Now, the remainder of the symbols.
--# CHECK-NEXT: data_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:2
--# CHECK-EMPTY:
--# CHECK-NEXT: str
--# CHECK-NEXT: {{[0-9]+}} 8
--# CHECK-NEXT: /tmp/file.cpp:4
--# CHECK-EMPTY:
--# CHECK-NEXT: f()::function_global
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:8
--# CHECK-EMPTY:
--
--## Including the one that includes an addend.
--# CHECK-NEXT: alpha
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:12
--# CHECK-EMPTY:
--# CHECK-NEXT: beta
--# CHECK-NEXT: {{[0-9]+}} 4
--# CHECK-NEXT: /tmp/file.cpp:13
--# CHECK-EMPTY:
--
--## Ensure there's still a global that's offset-based.
--# RUN: llvm-dwarfdump --debug-info %t.so | FileCheck %s --check-prefix=OFFSET
--
--# OFFSET: DW_AT_location (DW_OP_addrx 0x4, DW_OP_plus_uconst 0x4)
--
--################################################################################
--## File below was generated using:
--##
--## $ clang++ -g -O3 /tmp/file.cpp -shared -fuse-ld=lld -nostdlib \
--## -target aarch64-linux-gnuabi -mllvm -global-merge-ignore-single-use \
--## -o /tmp/file.so
--##
--## With /tmp/file.cpp as:
--## 1: int bss_global;
--## 2: int data_global = 2;
--## 3:
--## 4: const char* str =
--## 5: "12345678";
--## 6:
--## 7: int* f() {
--## 8: static int function_global;
--## 9: return &function_global;
--## 10: }
--## 11:
--## 12: static int alpha;
--## 13: static int beta;
--## 14: int *f(bool b) { return beta ? &alpha : &beta; }
--## 15:
--##
--## ... then, one can get the offsets using `nm`, like:
--## $ nm out.so | grep bss_global
--## 00000000000038fc B bss_global
--##
--## Note the use of the aarch64 target (with -nostdlib in order to allow linkage
--## without libraries for cross-compilation) as well as -O3 and
--## -global-merge-ignore-single-use. This is a specific combination that makes
--## the compiler emit the `alpha` global variable with a more complex
--## DW_AT_location than just a DW_OP_addr/DW_OP_addrx. In this instance, it
--## outputs a `DW_AT_location (DW_OP_addrx 0x4, DW_OP_plus_uconst 0x4)`.
--##
--## Ideally, this would be tested by invoking clang directly on a C source file,
--## but unfortunately there's no way to do that for LLVM tests. The other option
--## is to compile IR to an objfile, but llvm-symbolizer doesn't understand that
--## two symbols can have the same address in different sections. In the code
--## above, for example, we'd have bss_global at .bss+0x0, and data_global at
--## .data+0x0, and so the symbolizer would only print one of them. Hence, we have
--## the ugly dso-to-yaml blob below.
--##
--## For now, constant strings don't have a debuginfo entry, and so can't be
--## symbolized correctly. In future (if D123534 gets merged), this can be updated
--## to include a check that llvm-symbolizer can also symbolize constant strings,
--## like `str` above (basically that &"12345678" should be symbolizable)
--## to the specific line. Then, you can find the address of the constant string
--## from the relocation:
--##
--## $ nm out.so | grep str
--## 00000000000038c0 D str
--## $ llvm-objdump -R out.so | grep 38c0
--## 00000000000038c0 R_X86_64_RELATIVE *ABS*+0x4f8 # <-- 0x4f8
--################################################################################
--
----- !ELF
--FileHeader:
-- Class: ELFCLASS64
-- Data: ELFDATA2LSB
-- Type: ET_DYN
-- Machine: EM_AARCH64
--ProgramHeaders:
-- - Type: PT_PHDR
-- Flags: [ PF_R ]
-- VAddr: 0x40
-- Align: 0x8
-- - Type: PT_LOAD
-- Flags: [ PF_R ]
-- FirstSec: .dynsym
-- LastSec: .eh_frame
-- Align: 0x10000
-- - Type: PT_LOAD
-- Flags: [ PF_X, PF_R ]
-- FirstSec: .text
-- LastSec: .text
-- VAddr: 0x103E4
-- Align: 0x10000
-- - Type: PT_LOAD
-- Flags: [ PF_W, PF_R ]
-- FirstSec: .dynamic
-- LastSec: .dynamic
-- VAddr: 0x20410
-- Align: 0x10000
-- - Type: PT_LOAD
-- Flags: [ PF_W, PF_R ]
-- FirstSec: .data
-- LastSec: .bss
-- VAddr: 0x304C0
-- Align: 0x10000
-- - Type: PT_DYNAMIC
-- Flags: [ PF_W, PF_R ]
-- FirstSec: .dynamic
-- LastSec: .dynamic
-- VAddr: 0x20410
-- Align: 0x8
-- - Type: PT_GNU_RELRO
-- Flags: [ PF_R ]
-- FirstSec: .dynamic
-- LastSec: .dynamic
-- VAddr: 0x20410
-- - Type: PT_GNU_EH_FRAME
-- Flags: [ PF_R ]
-- FirstSec: .eh_frame_hdr
-- LastSec: .eh_frame_hdr
-- VAddr: 0x37C
-- Align: 0x4
-- - Type: PT_GNU_STACK
-- Flags: [ PF_W, PF_R ]
-- Align: 0x0
--Sections:
-- - Name: .dynsym
-- Type: SHT_DYNSYM
-- Flags: [ SHF_ALLOC ]
-- Address: 0x238
-- Link: .dynstr
-- AddressAlign: 0x8
-- - Name: .gnu.hash
-- Type: SHT_GNU_HASH
-- Flags: [ SHF_ALLOC ]
-- Address: 0x2C8
-- Link: .dynsym
-- AddressAlign: 0x8
-- Header:
-- SymNdx: 0x1
-- Shift2: 0x1A
-- BloomFilter: [ 0x400188002180000C ]
-- HashBuckets: [ 0x1 ]
-- HashValues: [ 0xEE8502A, 0xEE85016, 0xC033991C, 0x61F7372E, 0xB88AB7F ]
-- - Name: .hash
-- Type: SHT_HASH
-- Flags: [ SHF_ALLOC ]
-- Address: 0x2F8
-- Link: .dynsym
-- AddressAlign: 0x4
-- Bucket: [ 5, 0, 4, 0, 3, 0 ]
-- Chain: [ 0, 0, 0, 1, 2, 0 ]
-- - Name: .dynstr
-- Type: SHT_STRTAB
-- Flags: [ SHF_ALLOC ]
-- Address: 0x330
-- AddressAlign: 0x1
-- - Name: .rela.dyn
-- Type: SHT_RELA
-- Flags: [ SHF_ALLOC ]
-- Address: 0x358
-- Link: .dynsym
-- AddressAlign: 0x8
-- Relocations:
-- - Offset: 0x304C8
-- Type: R_AARCH64_RELATIVE
-- Addend: 880
-- - Name: .rodata
-- Type: SHT_PROGBITS
-- Flags: [ SHF_ALLOC, SHF_MERGE, SHF_STRINGS ]
-- Address: 0x370
-- AddressAlign: 0x1
-- EntSize: 0x1
-- Content: '313233343536373800'
-- - Name: .eh_frame_hdr
-- Type: SHT_PROGBITS
-- Flags: [ SHF_ALLOC ]
-- Address: 0x37C
-- AddressAlign: 0x4
-- Content: 011B033B18000000020000006800010034000000740001004C000000
-- - Name: .eh_frame
-- Type: SHT_PROGBITS
-- Flags: [ SHF_ALLOC ]
-- Address: 0x398
-- AddressAlign: 0x8
-- Content: 1400000000000000017A5200017C1E011B0C1F0000000000140000001C0000002C0001000C00000000000000000000001400000034000000200001001C000000000000000000000000000000
-- - Name: .text
-- Type: SHT_PROGBITS
-- Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
-- Address: 0x103E4
-- AddressAlign: 0x4
-- Content: 0001009000501391C0035FD60801009008611391E90308AA2A4540B85F0100710001899AC0035FD6
-- - Name: .dynamic
-- Type: SHT_DYNAMIC
-- Flags: [ SHF_WRITE, SHF_ALLOC ]
-- Address: 0x20410
-- Link: .dynstr
-- AddressAlign: 0x8
-- Entries:
-- - Tag: DT_RELA
-- Value: 0x358
-- - Tag: DT_RELASZ
-- Value: 0x18
-- - Tag: DT_RELAENT
-- Value: 0x18
-- - Tag: DT_RELACOUNT
-- Value: 0x1
-- - Tag: DT_SYMTAB
-- Value: 0x238
-- - Tag: DT_SYMENT
-- Value: 0x18
-- - Tag: DT_STRTAB
-- Value: 0x330
-- - Tag: DT_STRSZ
-- Value: 0x28
-- - Tag: DT_GNU_HASH
-- Value: 0x2C8
-- - Tag: DT_HASH
-- Value: 0x2F8
-- - Tag: DT_NULL
-- Value: 0x0
-- - Name: .data
-- Type: SHT_PROGBITS
-- Flags: [ SHF_WRITE, SHF_ALLOC ]
-- Address: 0x304C0
-- AddressAlign: 0x8
-- Content: '02000000000000000000000000000000'
-- - Name: .bss
-- Type: SHT_NOBITS
-- Flags: [ SHF_WRITE, SHF_ALLOC ]
-- Address: 0x304D0
-- AddressAlign: 0x4
-- Size: 0x10
-- - Name: .debug_abbrev
-- Type: SHT_PROGBITS
-- AddressAlign: 0x1
-- Content: 011101252513050325721710171B25111B120673170000023400032549133F193A0B3B0B0218000003240003253E0B0B0B0000040F004913000005260049130000062E01111B120640187A196E2503253A0B3B0B49133F190000073400032549133A0B3B0B02180000083400032549133A0B3B0B02186E25000009050003253A0B3B0B4913000000
-- - Name: .debug_info
-- Type: SHT_PROGBITS
-- AddressAlign: 0x1
-- Content: AB0000000500010800000000010021000108000000000000000205280000000800000002032E000000000102A1000304050402052E000000000202A101020648000000000402A102044D00000005520000000307080106050C000000016F0D0E0007A500000007082E000000000802A1030008092E000000000D02A1040A080B2E000000000C04A10423040C06061C000000016F0F0E000EA50000000910000EAA00000000042E0000000311020100
-- - Name: .debug_str_offsets
-- Type: SHT_PROGBITS
-- AddressAlign: 0x1
-- Content: 4C00000005000000A2000000000000002C00000059000000280000001C00000072000000640000008C0000008700000069000000140000007B0000009C0000001A0000000E0000008500000076000000
-- - Name: .comment
-- Type: SHT_PROGBITS
-- Flags: [ SHF_MERGE, SHF_STRINGS ]
-- AddressAlign: 0x1
-- EntSize: 0x1
-- Content: 4C696E6B65723A204C4C442031352E302E300000636C616E672076657273696F6E2031352E302E30202868747470733A2F2F6769746875622E636F6D2F6C6C766D2F6C6C766D2D70726F6A6563742E67697420306462616566363162353666306566306162306366333865613932666663316633356265653366662900
-- - Name: .debug_line
-- Type: SHT_PROGBITS
-- AddressAlign: 0x1
-- Content: 620000000500080037000000010101FB0E0D00010101010000000100000101011F010E00000003011F020F051E0100000000006C97BBE59F7DC6A9EA956633431DA63E0400000902E4030100000000001805030A140500BF05190A0105120608740204000101
-- - Name: .debug_line_str
-- Type: SHT_PROGBITS
-- Flags: [ SHF_MERGE, SHF_STRINGS ]
-- AddressAlign: 0x1
-- EntSize: 0x1
-- Content: 2F746D702F66696C652E637070002F7573722F6C6F63616C2F676F6F676C652F686F6D652F6D69746368702F6C6C766D2D6275696C642F6F707400
--Symbols:
-- - Name: file.cpp
-- Type: STT_FILE
-- Index: SHN_ABS
-- - Name: '$x.0'
-- Section: .text
-- Value: 0x103E4
-- - Name: _ZZ1fvE15function_global
-- Type: STT_OBJECT
-- Section: .bss
-- Value: 0x304D4
-- Size: 0x4
-- - Name: '$d.1'
-- Section: .bss
-- Value: 0x304D0
-- - Name: '$d.2'
-- Section: .data
-- Value: 0x304C0
-- - Name: '$d.3'
-- Section: .rodata
-- Value: 0x370
-- - Name: '$d.4'
-- Section: .debug_abbrev
-- - Name: '$d.5'
-- Section: .debug_info
-- - Name: '$d.6'
-- Section: .debug_str_offsets
-- - Name: '$d.7'
-- Section: .debug_str
-- Value: 0xA2
-- - Name: '$d.8'
-- Section: .debug_addr
-- - Name: _ZL4beta
-- Type: STT_OBJECT
-- Section: .bss
-- Value: 0x304D8
-- Size: 0x4
-- - Name: _ZL5alpha
-- Type: STT_OBJECT
-- Section: .bss
-- Value: 0x304DC
-- Size: 0x4
-- - Name: '$d.9'
-- Section: .comment
-- Value: 0x13
-- - Name: '$d.10'
-- Section: .eh_frame
-- Value: 0x398
-- - Name: '$d.11'
-- Section: .debug_line
-- - Name: '$d.12'
-- Section: .debug_line_str
-- Value: 0xE
-- - Name: _DYNAMIC
-- Section: .dynamic
-- Value: 0x20410
-- Other: [ STV_HIDDEN ]
-- - Name: _Z1fv
-- Type: STT_FUNC
-- Section: .text
-- Binding: STB_GLOBAL
-- Value: 0x103E4
-- Size: 0xC
-- - Name: _Z1fb
-- Type: STT_FUNC
-- Section: .text
-- Binding: STB_GLOBAL
-- Value: 0x103F0
-- Size: 0x1C
-- - Name: bss_global
-- Type: STT_OBJECT
-- Section: .bss
-- Binding: STB_GLOBAL
-- Value: 0x304D0
-- Size: 0x4
-- - Name: data_global
-- Type: STT_OBJECT
-- Section: .data
-- Binding: STB_GLOBAL
-- Value: 0x304C0
-- Size: 0x4
-- - Name: str
-- Type: STT_OBJECT
-- Section: .data
-- Binding: STB_GLOBAL
-- Value: 0x304C8
-- Size: 0x8
--DynamicSymbols:
-- - Name: _Z1fv
-- Type: STT_FUNC
-- Section: .text
-- Binding: STB_GLOBAL
-- Value: 0x103E4
-- Size: 0xC
-- - Name: _Z1fb
-- Type: STT_FUNC
-- Section: .text
-- Binding: STB_GLOBAL
-- Value: 0x103F0
-- Size: 0x1C
-- - Name: bss_global
-- Type: STT_OBJECT
-- Section: .bss
-- Binding: STB_GLOBAL
-- Value: 0x304D0
-- Size: 0x4
-- - Name: data_global
-- Type: STT_OBJECT
-- Section: .data
-- Binding: STB_GLOBAL
-- Value: 0x304C0
-- Size: 0x4
-- - Name: str
-- Type: STT_OBJECT
-- Section: .data
-- Binding: STB_GLOBAL
-- Value: 0x304C8
-- Size: 0x8
--DWARF:
-- debug_str:
-- - '/tmp/file.cpp'
-- - _Z1fb
-- - alpha
-- - f
-- - data_global
-- - int
-- - '/usr/local/google/home/mitchp/llvm-build/opt'
-- - bss_global
-- - char
-- - _ZL4beta
-- - str
-- - bool
-- - _ZL5alpha
-- - b
-- - beta
-- - function_global
-- - _Z1fv
-- - 'clang version 15.0.0 (https://github.com/llvm/llvm-project.git 0dbaef61b56f0ef0ab0cf38ea92ffc1f35bee3ff)'
-- debug_addr:
-- - Length: 0x3C
-- Version: 0x5
-- AddressSize: 0x8
-- Entries:
-- - Address: 0x304D0
-- - Address: 0x304C0
-- - Address: 0x304C8
-- - Address: 0x304D4
-- - Address: 0x304D8
-- - Address: 0x103E4
-- - Address: 0x103F0
--...
-diff --git a/llvm/test/tools/llvm-symbolizer/data.s b/llvm/test/tools/llvm-symbolizer/data.s
-index cc9503c59141..e8039f146dbd 100644
---- a/llvm/test/tools/llvm-symbolizer/data.s
-+++ b/llvm/test/tools/llvm-symbolizer/data.s
-@@ -7,12 +7,9 @@
-
- # CHECK: d1
- # CHECK-NEXT: 0 8
--# CHECK-NEXT: ??:?
- # CHECK-EMPTY:
- # CHECK-NEXT: d2
- # CHECK-NEXT: 8 4
--# CHECK-NEXT: ??:?
--# CHECK-EMPTY:
-
- d1:
- .quad 0x1122334455667788
---
-2.38.1.1.g6d9df9d320
-
diff --git a/build/build-clang/revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_19.patch b/build/build-clang/revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_19.patch
index a296eb9153..97a589354f 100644
--- a/build/build-clang/revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_19.patch
+++ b/build/build-clang/revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_19.patch
@@ -75,7 +75,7 @@ index 2e489757ebc1..810a9f92bb7a 100644
+ MadeChange |= widenSubvectorLoad(I);
MadeChange |= foldShuffleOfBinops(I);
MadeChange |= foldShuffleOfCastops(I);
- MadeChange |= foldSelectShuffle(I);
+ MadeChange |= foldShuffleOfShuffles(I);
diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll
index 13612c3bb459..5f84d28af4a6 100644
--- a/llvm/test/Other/new-pm-defaults.ll
diff --git a/build/build-clang/revert-llvmorg-17-init-4120-g02e8eb1a438b.patch b/build/build-clang/revert-llvmorg-17-init-4120-g02e8eb1a438b.patch
deleted file mode 100644
index 63e59ee68b..0000000000
--- a/build/build-clang/revert-llvmorg-17-init-4120-g02e8eb1a438b.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 2836e92ea557be53fcd91e38cb05a989ad0167e9 Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Wed, 8 Mar 2023 14:44:58 +0900
-Subject: [PATCH] Revert "Split getCompileUnitFor{Data,Code}Address."
-
-This reverts commit 02e8eb1a438bdb1dc9a97aea75a8c9c748048039, which
-applies on top of cead4eceb01b935fae07bf4a7e91911b344d2fec, that we
-revert too.
----
- .../llvm/DebugInfo/DWARF/DWARFContext.h | 11 +--------
- llvm/lib/DebugInfo/DWARF/DWARFContext.cpp | 23 ++++++++-----------
- 2 files changed, 11 insertions(+), 23 deletions(-)
-
-diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-index 4eba79a7215f..df903b967ef6 100644
---- a/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-@@ -445,16 +445,7 @@ public:
- /// address.
- /// TODO: change input parameter from "uint64_t Address"
- /// into "SectionedAddress Address"
-- DWARFCompileUnit *getCompileUnitForCodeAddress(uint64_t Address);
--
-- /// Return the compile unit which contains data with the provided address.
-- /// Note: This is more expensive than `getCompileUnitForAddress`, as if
-- /// `Address` isn't found in the CU ranges (which is cheap), then it falls
-- /// back to an expensive O(n) walk of all CU's looking for data that spans the
-- /// address.
-- /// TODO: change input parameter from "uint64_t Address" into
-- /// "SectionedAddress Address"
-- DWARFCompileUnit *getCompileUnitForDataAddress(uint64_t Address);
-+ DWARFCompileUnit *getCompileUnitForAddress(uint64_t Address);
-
- /// Returns whether CU/TU should be populated manually. TU Index populated
- /// manually only for DWARF5.
-diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-index f648ef8ff770..dd86144d16e0 100644
---- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-+++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-@@ -1118,17 +1118,14 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForOffset(uint64_t Offset) {
- NormalUnits.getUnitForOffset(Offset));
- }
-
--DWARFCompileUnit *DWARFContext::getCompileUnitForCodeAddress(uint64_t Address) {
-- uint64_t CUOffset = getDebugAranges()->findAddress(Address);
-- return getCompileUnitForOffset(CUOffset);
--}
--
--DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) {
-+DWARFCompileUnit *DWARFContext::getCompileUnitForAddress(uint64_t Address) {
-+ // First, get the offset of the compile unit.
- uint64_t CUOffset = getDebugAranges()->findAddress(Address);
-+ // Retrieve the compile unit.
- if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset))
- return OffsetCU;
-
-- // Global variables are often missed by the above search, for one of two
-+ // Global variables are often not found by the above search, for one of two
- // reasons:
- // 1. .debug_aranges may not include global variables. On clang, it seems we
- // put the globals in the aranges, but this isn't true for gcc.
-@@ -1149,7 +1146,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) {
- DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address) {
- DIEsForAddress Result;
-
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address);
- if (!CU)
- return Result;
-
-@@ -1300,7 +1297,7 @@ void DWARFContext::addLocalsForDie(DWARFCompileUnit *CU, DWARFDie Subprogram,
- std::vector<DILocal>
- DWARFContext::getLocalsForAddress(object::SectionedAddress Address) {
- std::vector<DILocal> Result;
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Result;
-
-@@ -1313,7 +1310,7 @@ DWARFContext::getLocalsForAddress(object::SectionedAddress Address) {
- DILineInfo DWARFContext::getLineInfoForAddress(object::SectionedAddress Address,
- DILineInfoSpecifier Spec) {
- DILineInfo Result;
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Result;
-
-@@ -1334,7 +1331,7 @@ DILineInfo DWARFContext::getLineInfoForAddress(object::SectionedAddress Address,
- DILineInfo
- DWARFContext::getLineInfoForDataAddress(object::SectionedAddress Address) {
- DILineInfo Result;
-- DWARFCompileUnit *CU = getCompileUnitForDataAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Result;
-
-@@ -1349,7 +1346,7 @@ DWARFContext::getLineInfoForDataAddress(object::SectionedAddress Address) {
- DILineInfoTable DWARFContext::getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size, DILineInfoSpecifier Spec) {
- DILineInfoTable Lines;
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Lines;
-
-@@ -1405,7 +1402,7 @@ DWARFContext::getInliningInfoForAddress(object::SectionedAddress Address,
- DILineInfoSpecifier Spec) {
- DIInliningInfo InliningInfo;
-
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return InliningInfo;
-
---
-2.39.0.1.g6739ec1790
-
diff --git a/build/build-clang/revert-llvmorg-17-init-4120-g02e8eb1a438b_clang_18.patch b/build/build-clang/revert-llvmorg-17-init-4120-g02e8eb1a438b_clang_18.patch
deleted file mode 100644
index 098c410790..0000000000
--- a/build/build-clang/revert-llvmorg-17-init-4120-g02e8eb1a438b_clang_18.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From 2836e92ea557be53fcd91e38cb05a989ad0167e9 Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Wed, 8 Mar 2023 14:44:58 +0900
-Subject: [PATCH] Revert "Split getCompileUnitFor{Data,Code}Address."
-
-This reverts commit 02e8eb1a438bdb1dc9a97aea75a8c9c748048039, which
-applies on top of cead4eceb01b935fae07bf4a7e91911b344d2fec, that we
-revert too.
----
- .../llvm/DebugInfo/DWARF/DWARFContext.h | 11 +--------
- llvm/lib/DebugInfo/DWARF/DWARFContext.cpp | 23 ++++++++-----------
- 2 files changed, 11 insertions(+), 23 deletions(-)
-
-diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-index 4bd8394e6b4e..3f49fadc2b98 100644
---- a/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFContext.h
-@@ -459,16 +459,7 @@ public:
- /// address.
- /// TODO: change input parameter from "uint64_t Address"
- /// into "SectionedAddress Address"
-- DWARFCompileUnit *getCompileUnitForCodeAddress(uint64_t Address);
--
-- /// Return the compile unit which contains data with the provided address.
-- /// Note: This is more expensive than `getCompileUnitForAddress`, as if
-- /// `Address` isn't found in the CU ranges (which is cheap), then it falls
-- /// back to an expensive O(n) walk of all CU's looking for data that spans the
-- /// address.
-- /// TODO: change input parameter from "uint64_t Address" into
-- /// "SectionedAddress Address"
-- DWARFCompileUnit *getCompileUnitForDataAddress(uint64_t Address);
-+ DWARFCompileUnit *getCompileUnitForAddress(uint64_t Address);
-
- /// Returns whether CU/TU should be populated manually. TU Index populated
- /// manually only for DWARF5.
-diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-index a45ed0e56553..692304ac6774 100644
---- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-+++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
-@@ -1492,17 +1492,14 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForOffset(uint64_t Offset) {
- State->getNormalUnits().getUnitForOffset(Offset));
- }
-
--DWARFCompileUnit *DWARFContext::getCompileUnitForCodeAddress(uint64_t Address) {
-- uint64_t CUOffset = getDebugAranges()->findAddress(Address);
-- return getCompileUnitForOffset(CUOffset);
--}
--
--DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) {
-+DWARFCompileUnit *DWARFContext::getCompileUnitForAddress(uint64_t Address) {
-+ // First, get the offset of the compile unit.
- uint64_t CUOffset = getDebugAranges()->findAddress(Address);
-+ // Retrieve the compile unit.
- if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset))
- return OffsetCU;
-
-- // Global variables are often missed by the above search, for one of two
-+ // Global variables are often not found by the above search, for one of two
- // reasons:
- // 1. .debug_aranges may not include global variables. On clang, it seems we
- // put the globals in the aranges, but this isn't true for gcc.
-@@ -1523,7 +1520,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) {
- bool CheckDWO) {
- DIEsForAddress Result;
-
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address);
- if (!CU)
- return Result;
-
-@@ -1674,7 +1671,7 @@ void DWARFContext::addLocalsForDie(DWARFCompileUnit *CU, DWARFDie Subprogram,
- std::vector<DILocal>
- DWARFContext::getLocalsForAddress(object::SectionedAddress Address) {
- std::vector<DILocal> Result;
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Result;
-
-@@ -1687,7 +1684,7 @@ DWARFContext::getLocalsForAddress(object::SectionedAddress Address) {
- DILineInfo DWARFContext::getLineInfoForAddress(object::SectionedAddress Address,
- DILineInfoSpecifier Spec) {
- DILineInfo Result;
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Result;
-
-@@ -1708,7 +1705,7 @@ DILineInfo DWARFContext::getLineInfoForAddress(object::SectionedAddress Address,
- DILineInfo
- DWARFContext::getLineInfoForDataAddress(object::SectionedAddress Address) {
- DILineInfo Result;
-- DWARFCompileUnit *CU = getCompileUnitForDataAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Result;
-
-@@ -1723,7 +1720,7 @@ DWARFContext::getLineInfoForDataAddress(object::SectionedAddress Address) {
- DILineInfoTable DWARFContext::getLineInfoForAddressRange(
- object::SectionedAddress Address, uint64_t Size, DILineInfoSpecifier Spec) {
- DILineInfoTable Lines;
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return Lines;
-
-@@ -1779,7 +1776,7 @@ DWARFContext::getInliningInfoForAddress(object::SectionedAddress Address,
- DILineInfoSpecifier Spec) {
- DIInliningInfo InliningInfo;
-
-- DWARFCompileUnit *CU = getCompileUnitForCodeAddress(Address.Address);
-+ DWARFCompileUnit *CU = getCompileUnitForAddress(Address.Address);
- if (!CU)
- return InliningInfo;
-
diff --git a/build/build-clang/revert-llvmorg-19-init-6891-ga4de589d117a.patch b/build/build-clang/revert-llvmorg-19-init-6891-ga4de589d117a.patch
deleted file mode 100644
index a54bb501a1..0000000000
--- a/build/build-clang/revert-llvmorg-19-init-6891-ga4de589d117a.patch
+++ /dev/null
@@ -1,547 +0,0 @@
-From 4ec62cd0d0eb38965cac21aca62b6ac01a5b052e Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Fri, 5 Apr 2024 05:59:24 +0900
-Subject: [PATCH 4/4] Revert "[InstallAPI] Add support for parsing dSYMs
- (#86852)"
-
-This reverts commit a4de589d117a4fd52554da3c61ae6eb26c90a0c8.
----
- .../include/clang/InstallAPI/DylibVerifier.h | 20 +---
- clang/include/clang/InstallAPI/MachO.h | 1 -
- clang/lib/InstallAPI/CMakeLists.txt | 1 -
- clang/lib/InstallAPI/DylibVerifier.cpp | 71 +++--------
- clang/test/InstallAPI/diagnostics-dsym.test | 43 -------
- .../tools/clang-installapi/InstallAPIOpts.td | 2 -
- clang/tools/clang-installapi/Options.cpp | 6 +-
- clang/tools/clang-installapi/Options.h | 3 -
- llvm/include/llvm/TextAPI/DylibReader.h | 9 --
- llvm/include/llvm/TextAPI/Record.h | 17 ---
- llvm/lib/TextAPI/BinaryReader/CMakeLists.txt | 1 -
- llvm/lib/TextAPI/BinaryReader/DylibReader.cpp | 111 +-----------------
- 12 files changed, 22 insertions(+), 263 deletions(-)
- delete mode 100644 clang/test/InstallAPI/diagnostics-dsym.test
-
-diff --git a/clang/include/clang/InstallAPI/DylibVerifier.h b/clang/include/clang/InstallAPI/DylibVerifier.h
-index 22cdc234486c..49de24763f1f 100644
---- a/clang/include/clang/InstallAPI/DylibVerifier.h
-+++ b/clang/include/clang/InstallAPI/DylibVerifier.h
-@@ -31,7 +31,6 @@ enum class VerificationMode {
- class DylibVerifier : llvm::MachO::RecordVisitor {
- private:
- struct SymbolContext;
-- struct DWARFContext;
-
- public:
- enum class Result { NoVerify, Ignore, Valid, Invalid };
-@@ -55,7 +54,7 @@ public:
- DiagnosticsEngine *Diag = nullptr;
-
- // Handle diagnostics reporting for target level violations.
-- void emitDiag(llvm::function_ref<void()> Report, RecordLoc *Loc = nullptr);
-+ void emitDiag(llvm::function_ref<void()> Report);
-
- VerifierContext() = default;
- VerifierContext(DiagnosticsEngine *Diag) : Diag(Diag) {}
-@@ -64,10 +63,9 @@ public:
- DylibVerifier() = default;
-
- DylibVerifier(llvm::MachO::Records &&Dylib, DiagnosticsEngine *Diag,
-- VerificationMode Mode, bool Demangle, StringRef DSYMPath)
-+ VerificationMode Mode, bool Demangle)
- : Dylib(std::move(Dylib)), Mode(Mode), Demangle(Demangle),
-- DSYMPath(DSYMPath), Exports(std::make_unique<SymbolSet>()),
-- Ctx(VerifierContext{Diag}) {}
-+ Exports(std::make_unique<SymbolSet>()), Ctx(VerifierContext{Diag}) {}
-
- Result verify(GlobalRecord *R, const FrontendAttrs *FA);
- Result verify(ObjCInterfaceRecord *R, const FrontendAttrs *FA);
-@@ -145,12 +143,6 @@ private:
- std::string getAnnotatedName(const Record *R, SymbolContext &SymCtx,
- bool ValidSourceLoc = true);
-
-- /// Extract source location for symbol implementations.
-- /// As this is a relatively expensive operation, it is only used
-- /// when there is a violation to report and there is not a known declaration
-- /// in the interface.
-- void accumulateSrcLocForDylibSymbols();
--
- // Symbols in dylib.
- llvm::MachO::Records Dylib;
-
-@@ -160,17 +152,11 @@ private:
- // Attempt to demangle when reporting violations.
- bool Demangle = false;
-
-- // File path to DSYM file.
-- StringRef DSYMPath;
--
- // Valid symbols in final text file.
- std::unique_ptr<SymbolSet> Exports = std::make_unique<SymbolSet>();
-
- // Track current state of verification while traversing AST.
- VerifierContext Ctx;
--
-- // Track DWARF provided source location for dylibs.
-- DWARFContext *DWARFCtx = nullptr;
- };
-
- } // namespace installapi
-diff --git a/clang/include/clang/InstallAPI/MachO.h b/clang/include/clang/InstallAPI/MachO.h
-index 827220dbf39f..4961c596fd68 100644
---- a/clang/include/clang/InstallAPI/MachO.h
-+++ b/clang/include/clang/InstallAPI/MachO.h
-@@ -34,7 +34,6 @@ using ObjCCategoryRecord = llvm::MachO::ObjCCategoryRecord;
- using ObjCIVarRecord = llvm::MachO::ObjCIVarRecord;
- using ObjCIFSymbolKind = llvm::MachO::ObjCIFSymbolKind;
- using Records = llvm::MachO::Records;
--using RecordLoc = llvm::MachO::RecordLoc;
- using RecordsSlice = llvm::MachO::RecordsSlice;
- using BinaryAttrs = llvm::MachO::RecordsSlice::BinaryAttrs;
- using SymbolSet = llvm::MachO::SymbolSet;
-diff --git a/clang/lib/InstallAPI/CMakeLists.txt b/clang/lib/InstallAPI/CMakeLists.txt
-index e0bc8d969ecb..894db699578f 100644
---- a/clang/lib/InstallAPI/CMakeLists.txt
-+++ b/clang/lib/InstallAPI/CMakeLists.txt
-@@ -1,7 +1,6 @@
- set(LLVM_LINK_COMPONENTS
- Support
- TextAPI
-- TextAPIBinaryReader
- Demangle
- Core
- )
-diff --git a/clang/lib/InstallAPI/DylibVerifier.cpp b/clang/lib/InstallAPI/DylibVerifier.cpp
-index c0eda1d81b9b..ba25e4183a9b 100644
---- a/clang/lib/InstallAPI/DylibVerifier.cpp
-+++ b/clang/lib/InstallAPI/DylibVerifier.cpp
-@@ -10,7 +10,6 @@
- #include "clang/InstallAPI/FrontendRecords.h"
- #include "clang/InstallAPI/InstallAPIDiagnostic.h"
- #include "llvm/Demangle/Demangle.h"
--#include "llvm/TextAPI/DylibReader.h"
-
- using namespace llvm::MachO;
-
-@@ -36,14 +35,6 @@ struct DylibVerifier::SymbolContext {
- bool Inlined = false;
- };
-
--struct DylibVerifier::DWARFContext {
-- // Track whether DSYM parsing has already been attempted to avoid re-parsing.
-- bool ParsedDSYM{false};
--
-- // Lookup table for source locations by symbol name.
-- DylibReader::SymbolToSourceLocMap SourceLocs{};
--};
--
- static bool isCppMangled(StringRef Name) {
- // InstallAPI currently only supports itanium manglings.
- return (Name.starts_with("_Z") || Name.starts_with("__Z") ||
-@@ -520,16 +511,14 @@ DylibVerifier::Result DylibVerifier::verify(GlobalRecord *R,
- return verifyImpl(R, SymCtx);
- }
-
--void DylibVerifier::VerifierContext::emitDiag(llvm::function_ref<void()> Report,
-- RecordLoc *Loc) {
-+void DylibVerifier::VerifierContext::emitDiag(
-+ llvm::function_ref<void()> Report) {
- if (!DiscoveredFirstError) {
- Diag->Report(diag::warn_target)
- << (PrintArch ? getArchitectureName(Target.Arch)
- : getTargetTripleName(Target));
- DiscoveredFirstError = true;
- }
-- if (Loc && Loc->isValid())
-- llvm::errs() << Loc->File << ":" << Loc->Line << ":" << 0 << ": ";
-
- Report();
- }
-@@ -572,36 +561,26 @@ void DylibVerifier::visitSymbolInDylib(const Record &R, SymbolContext &SymCtx) {
- return;
- }
-
-- const bool IsLinkerSymbol = SymbolName.starts_with("$ld$");
--
-- // All checks at this point classify as some kind of violation.
-- // The different verification modes dictate whether they are reported to the
-- // user.
-- if (IsLinkerSymbol || (Mode > VerificationMode::ErrorsOnly))
-- accumulateSrcLocForDylibSymbols();
-- RecordLoc Loc = DWARFCtx->SourceLocs.lookup(SymCtx.SymbolName);
-+ // All checks at this point classify as some kind of violation that should be
-+ // reported.
-
- // Regardless of verification mode, error out on mismatched special linker
- // symbols.
-- if (IsLinkerSymbol) {
-- Ctx.emitDiag(
-- [&]() {
-- Ctx.Diag->Report(diag::err_header_symbol_missing)
-- << getAnnotatedName(&R, SymCtx, Loc.isValid());
-- },
-- &Loc);
-+ if (SymbolName.starts_with("$ld$")) {
-+ Ctx.emitDiag([&]() {
-+ Ctx.Diag->Report(diag::err_header_symbol_missing)
-+ << getAnnotatedName(&R, SymCtx, /*ValidSourceLoc=*/false);
-+ });
- updateState(Result::Invalid);
- return;
- }
-
- // Missing declarations for exported symbols are hard errors on Pedantic mode.
- if (Mode == VerificationMode::Pedantic) {
-- Ctx.emitDiag(
-- [&]() {
-- Ctx.Diag->Report(diag::err_header_symbol_missing)
-- << getAnnotatedName(&R, SymCtx, Loc.isValid());
-- },
-- &Loc);
-+ Ctx.emitDiag([&]() {
-+ Ctx.Diag->Report(diag::err_header_symbol_missing)
-+ << getAnnotatedName(&R, SymCtx, /*ValidSourceLoc=*/false);
-+ });
- updateState(Result::Invalid);
- return;
- }
-@@ -609,12 +588,10 @@ void DylibVerifier::visitSymbolInDylib(const Record &R, SymbolContext &SymCtx) {
- // Missing declarations for exported symbols are warnings on ErrorsAndWarnings
- // mode.
- if (Mode == VerificationMode::ErrorsAndWarnings) {
-- Ctx.emitDiag(
-- [&]() {
-- Ctx.Diag->Report(diag::warn_header_symbol_missing)
-- << getAnnotatedName(&R, SymCtx, Loc.isValid());
-- },
-- &Loc);
-+ Ctx.emitDiag([&]() {
-+ Ctx.Diag->Report(diag::warn_header_symbol_missing)
-+ << getAnnotatedName(&R, SymCtx, /*ValidSourceLoc=*/false);
-+ });
- updateState(Result::Ignore);
- return;
- }
-@@ -645,18 +622,6 @@ void DylibVerifier::visitObjCIVar(const ObjCIVarRecord &R,
- visitSymbolInDylib(R, SymCtx);
- }
-
--void DylibVerifier::accumulateSrcLocForDylibSymbols() {
-- if (DSYMPath.empty())
-- return;
--
-- assert(DWARFCtx != nullptr && "Expected an initialized DWARFContext");
-- if (DWARFCtx->ParsedDSYM)
-- return;
-- DWARFCtx->ParsedDSYM = true;
-- DWARFCtx->SourceLocs =
-- DylibReader::accumulateSourceLocFromDSYM(DSYMPath, Ctx.Target);
--}
--
- void DylibVerifier::visitObjCInterface(const ObjCInterfaceRecord &R) {
- if (R.isVerified())
- return;
-@@ -690,8 +655,6 @@ DylibVerifier::Result DylibVerifier::verifyRemainingSymbols() {
- return Result::NoVerify;
- assert(!Dylib.empty() && "No binary to verify against");
-
-- DWARFContext DWARFInfo;
-- DWARFCtx = &DWARFInfo;
- Ctx.DiscoveredFirstError = false;
- Ctx.PrintArch = true;
- for (std::shared_ptr<RecordsSlice> Slice : Dylib) {
-diff --git a/clang/test/InstallAPI/diagnostics-dsym.test b/clang/test/InstallAPI/diagnostics-dsym.test
-deleted file mode 100644
-index ee2c8b32df29..000000000000
---- a/clang/test/InstallAPI/diagnostics-dsym.test
-+++ /dev/null
-@@ -1,43 +0,0 @@
--; REQUIRES: system-darwin
--
--; RUN: rm -rf %t
--; RUN: split-file %s %t
--
--// Build a simple dylib with debug info.
--; RUN: %clang --target=arm64-apple-macos13 -g -dynamiclib %t/foo.c \
--; RUN: -current_version 1 -compatibility_version 1 -L%t/usr/lib \
--; RUN: -save-temps \
--; RUN: -o %t/foo.dylib -install_name %t/foo.dylib
--; RUN: dsymutil %t/foo.dylib -o %t/foo.dSYM
--
--; RUN: not clang-installapi -x c++ --target=arm64-apple-macos13 \
--; RUN: -install_name %t/foo.dylib \
--; RUN: -current_version 1 -compatibility_version 1 \
--; RUN: -o %t/output.tbd \
--; RUN: --verify-against=%t/foo.dylib --dsym=%t/foo.dSYM \
--; RUN: --verify-mode=Pedantic 2>&1 | FileCheck %s
--
--; CHECK: violations found for arm64
--; CHECK: foo.c:5:0: error: no declaration found for exported symbol 'bar' in dynamic library
--; CHECK: foo.c:1:0: error: no declaration found for exported symbol 'foo' in dynamic library
--
--;--- foo.c
--int foo(void) {
-- return 1;
--}
--extern char bar;
--char bar = 'a';
--
--;--- usr/lib/libSystem.tbd
--{
-- "main_library": {
-- "install_names": [
-- {"name": "/usr/lib/libSystem.B.dylib"}
-- ],
-- "target_info": [
-- {"target": "arm64-macos"}
-- ]
-- },
-- "tapi_tbd_version": 5
--}
--
-diff --git a/clang/tools/clang-installapi/InstallAPIOpts.td b/clang/tools/clang-installapi/InstallAPIOpts.td
-index 010f2507a1d1..71532c9cf24d 100644
---- a/clang/tools/clang-installapi/InstallAPIOpts.td
-+++ b/clang/tools/clang-installapi/InstallAPIOpts.td
-@@ -29,8 +29,6 @@ def verify_mode_EQ : Joined<["--"], "verify-mode=">,
- HelpText<"Specify the severity and extend of the validation. Valid modes are ErrorsOnly, ErrorsAndWarnings, and Pedantic.">;
- def demangle : Flag<["--", "-"], "demangle">,
- HelpText<"Demangle symbols when printing warnings and errors">;
--def dsym: Joined<["--"], "dsym=">,
-- MetaVarName<"<path>">, HelpText<"Specify dSYM path for enriched diagnostics.">;
-
- // Additional input options.
- def extra_project_header : Separate<["-"], "extra-project-header">,
-diff --git a/clang/tools/clang-installapi/Options.cpp b/clang/tools/clang-installapi/Options.cpp
-index c4f39b7c8417..8e4a1b019fd8 100644
---- a/clang/tools/clang-installapi/Options.cpp
-+++ b/clang/tools/clang-installapi/Options.cpp
-@@ -241,9 +241,6 @@ Options::processAndFilterOutInstallAPIOptions(ArrayRef<const char *> Args) {
- if (const Arg *A = ParsedArgs.getLastArg(OPT_verify_against))
- DriverOpts.DylibToVerify = A->getValue();
-
-- if (const Arg *A = ParsedArgs.getLastArg(OPT_dsym))
-- DriverOpts.DSYMPath = A->getValue();
--
- // Handle exclude & extra header directories or files.
- auto handleAdditionalInputArgs = [&](PathSeq &Headers,
- clang::installapi::ID OptID) {
-@@ -525,8 +522,7 @@ InstallAPIContext Options::createContext() {
- }
-
- Ctx.Verifier = std::make_unique<DylibVerifier>(
-- std::move(*Slices), Diags, DriverOpts.VerifyMode, DriverOpts.Demangle,
-- DriverOpts.DSYMPath);
-+ std::move(*Slices), Diags, DriverOpts.VerifyMode, DriverOpts.Demangle);
- return Ctx;
- }
-
-diff --git a/clang/tools/clang-installapi/Options.h b/clang/tools/clang-installapi/Options.h
-index 82e04b49d125..3671e4c8274b 100644
---- a/clang/tools/clang-installapi/Options.h
-+++ b/clang/tools/clang-installapi/Options.h
-@@ -67,9 +67,6 @@ struct DriverOptions {
- /// \brief Output path.
- std::string OutputPath;
-
-- /// \brief DSYM path.
-- std::string DSYMPath;
--
- /// \brief File encoding to print.
- FileType OutFT = FileType::TBD_V5;
-
-diff --git a/llvm/include/llvm/TextAPI/DylibReader.h b/llvm/include/llvm/TextAPI/DylibReader.h
-index 6861d3cb1591..b556fbf6832a 100644
---- a/llvm/include/llvm/TextAPI/DylibReader.h
-+++ b/llvm/include/llvm/TextAPI/DylibReader.h
-@@ -13,7 +13,6 @@
- #ifndef LLVM_TEXTAPI_DYLIBREADER_H
- #define LLVM_TEXTAPI_DYLIBREADER_H
-
--#include "llvm/ADT/StringMap.h"
- #include "llvm/Support/Error.h"
- #include "llvm/Support/MemoryBuffer.h"
- #include "llvm/TextAPI/ArchitectureSet.h"
-@@ -44,14 +43,6 @@ Expected<Records> readFile(MemoryBufferRef Buffer, const ParseOption &Opt);
- /// \param Buffer Data that points to dylib.
- Expected<std::unique_ptr<InterfaceFile>> get(MemoryBufferRef Buffer);
-
--using SymbolToSourceLocMap = llvm::StringMap<RecordLoc>;
--/// Get the source location for each symbol from dylib.
--///
--/// \param DSYM Path to DSYM file.
--/// \param T Requested target slice for dylib.
--SymbolToSourceLocMap accumulateSourceLocFromDSYM(const StringRef DSYM,
-- const Target &T);
--
- } // namespace llvm::MachO::DylibReader
-
- #endif // LLVM_TEXTAPI_DYLIBREADER_H
-diff --git a/llvm/include/llvm/TextAPI/Record.h b/llvm/include/llvm/TextAPI/Record.h
-index 7d721988ec3d..ef152ce43387 100644
---- a/llvm/include/llvm/TextAPI/Record.h
-+++ b/llvm/include/llvm/TextAPI/Record.h
-@@ -27,23 +27,6 @@ LLVM_ENABLE_BITMASK_ENUMS_IN_NAMESPACE();
-
- class RecordsSlice;
-
--// Defines lightweight source location for records.
--struct RecordLoc {
-- RecordLoc() = default;
-- RecordLoc(std::string File, unsigned Line)
-- : File(std::move(File)), Line(Line) {}
--
-- /// Whether there is source location tied to the RecordLoc object.
-- bool isValid() const { return !File.empty(); }
--
-- bool operator==(const RecordLoc &O) const {
-- return std::tie(File, Line) == std::tie(O.File, O.Line);
-- }
--
-- const std::string File;
-- const unsigned Line = 0;
--};
--
- // Defines a list of linkage types.
- enum class RecordLinkage : uint8_t {
- // Unknown linkage.
-diff --git a/llvm/lib/TextAPI/BinaryReader/CMakeLists.txt b/llvm/lib/TextAPI/BinaryReader/CMakeLists.txt
-index c4535310d91c..cbdf7b2c9696 100644
---- a/llvm/lib/TextAPI/BinaryReader/CMakeLists.txt
-+++ b/llvm/lib/TextAPI/BinaryReader/CMakeLists.txt
-@@ -2,7 +2,6 @@ add_llvm_component_library(LLVMTextAPIBinaryReader
- DylibReader.cpp
-
- LINK_COMPONENTS
-- DebugInfoDWARF
- Support
- Object
- TextAPI
-diff --git a/llvm/lib/TextAPI/BinaryReader/DylibReader.cpp b/llvm/lib/TextAPI/BinaryReader/DylibReader.cpp
-index f92a2d19a63f..2e36d4a8b98c 100644
---- a/llvm/lib/TextAPI/BinaryReader/DylibReader.cpp
-+++ b/llvm/lib/TextAPI/BinaryReader/DylibReader.cpp
-@@ -12,8 +12,7 @@
-
- #include "llvm/TextAPI/DylibReader.h"
- #include "llvm/ADT/STLExtras.h"
--#include "llvm/DebugInfo/DWARF/DWARFCompileUnit.h"
--#include "llvm/DebugInfo/DWARF/DWARFContext.h"
-+#include "llvm/ADT/StringMap.h"
- #include "llvm/Object/Binary.h"
- #include "llvm/Object/MachOUniversal.h"
- #include "llvm/Support/Endian.h"
-@@ -433,111 +432,3 @@ DylibReader::get(MemoryBufferRef Buffer) {
-
- return convertToInterfaceFile(*SlicesOrErr);
- }
--
--static void DWARFErrorHandler(Error Err) { /**/ }
--
--static SymbolToSourceLocMap
--accumulateLocs(MachOObjectFile &Obj,
-- const std::unique_ptr<DWARFContext> &DiCtx) {
-- SymbolToSourceLocMap LocMap;
-- for (const auto &Symbol : Obj.symbols()) {
-- Expected<uint32_t> FlagsOrErr = Symbol.getFlags();
-- if (!FlagsOrErr) {
-- consumeError(FlagsOrErr.takeError());
-- continue;
-- }
--
-- if (!(*FlagsOrErr & SymbolRef::SF_Exported))
-- continue;
--
-- Expected<uint64_t> AddressOrErr = Symbol.getAddress();
-- if (!AddressOrErr) {
-- consumeError(AddressOrErr.takeError());
-- continue;
-- }
-- const uint64_t Address = *AddressOrErr;
--
-- auto TypeOrErr = Symbol.getType();
-- if (!TypeOrErr) {
-- consumeError(TypeOrErr.takeError());
-- continue;
-- }
-- const bool IsCode = (*TypeOrErr & SymbolRef::ST_Function);
--
-- auto *DWARFCU = IsCode ? DiCtx->getCompileUnitForCodeAddress(Address)
-- : DiCtx->getCompileUnitForDataAddress(Address);
-- if (!DWARFCU)
-- continue;
--
-- const DWARFDie &DIE = IsCode ? DWARFCU->getSubroutineForAddress(Address)
-- : DWARFCU->getVariableForAddress(Address);
-- const std::string File = DIE.getDeclFile(
-- llvm::DILineInfoSpecifier::FileLineInfoKind::AbsoluteFilePath);
-- const uint64_t Line = DIE.getDeclLine();
--
-- auto NameOrErr = Symbol.getName();
-- if (!NameOrErr) {
-- consumeError(NameOrErr.takeError());
-- continue;
-- }
-- auto Name = *NameOrErr;
-- auto Sym = parseSymbol(Name);
--
-- if (!File.empty() && Line != 0)
-- LocMap.insert({Sym.Name.str(), RecordLoc(File, Line)});
-- }
--
-- return LocMap;
--}
--
--SymbolToSourceLocMap
--DylibReader::accumulateSourceLocFromDSYM(const StringRef DSYM,
-- const Target &T) {
-- // Find sidecar file.
-- auto DSYMsOrErr = MachOObjectFile::findDsymObjectMembers(DSYM);
-- if (!DSYMsOrErr) {
-- consumeError(DSYMsOrErr.takeError());
-- return SymbolToSourceLocMap();
-- }
-- if (DSYMsOrErr->empty())
-- return SymbolToSourceLocMap();
--
-- const StringRef Path = DSYMsOrErr->front();
-- auto BufOrErr = MemoryBuffer::getFile(Path);
-- if (auto Err = BufOrErr.getError())
-- return SymbolToSourceLocMap();
--
-- auto BinOrErr = createBinary(*BufOrErr.get());
-- if (!BinOrErr) {
-- consumeError(BinOrErr.takeError());
-- return SymbolToSourceLocMap();
-- }
-- // Handle single arch.
-- if (auto *Single = dyn_cast<MachOObjectFile>(BinOrErr->get())) {
-- auto DiCtx = DWARFContext::create(
-- *Single, DWARFContext::ProcessDebugRelocations::Process, nullptr, "",
-- DWARFErrorHandler, DWARFErrorHandler);
--
-- return accumulateLocs(*Single, DiCtx);
-- }
-- // Handle universal companion file.
-- if (auto *Fat = dyn_cast<MachOUniversalBinary>(BinOrErr->get())) {
-- auto ObjForArch = Fat->getObjectForArch(getArchitectureName(T.Arch));
-- if (!ObjForArch) {
-- consumeError(ObjForArch.takeError());
-- return SymbolToSourceLocMap();
-- }
-- auto MachOOrErr = ObjForArch->getAsObjectFile();
-- if (!MachOOrErr) {
-- consumeError(MachOOrErr.takeError());
-- return SymbolToSourceLocMap();
-- }
-- auto &Obj = **MachOOrErr;
-- auto DiCtx = DWARFContext::create(
-- Obj, DWARFContext::ProcessDebugRelocations::Process, nullptr, "",
-- DWARFErrorHandler, DWARFErrorHandler);
--
-- return accumulateLocs(Obj, DiCtx);
-- }
-- return SymbolToSourceLocMap();
--}
---
-2.44.0.1.g9765aa7075
-
diff --git a/build/build-clang/revert-llvmorg-19-init-6898-g60deb8b39afe.patch b/build/build-clang/revert-llvmorg-19-init-6898-g60deb8b39afe.patch
deleted file mode 100644
index f6a566c199..0000000000
--- a/build/build-clang/revert-llvmorg-19-init-6898-g60deb8b39afe.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 3675bcd1e8d3026aa5f1c232986ce43c7cf72cd9 Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Fri, 5 Apr 2024 05:59:19 +0900
-Subject: [PATCH 3/4] Revert "[InstallAPI][test] Tweak test to run on older CI
- config"
-
-This reverts commit 60deb8b39afe9be90e30aa18d77ad129dacd4d55.
----
- clang/test/InstallAPI/diagnostics-dsym.test | 26 ++++++++++++---------
- 1 file changed, 15 insertions(+), 11 deletions(-)
-
-diff --git a/clang/test/InstallAPI/diagnostics-dsym.test b/clang/test/InstallAPI/diagnostics-dsym.test
-index 45c69c09d286..ee2c8b32df29 100644
---- a/clang/test/InstallAPI/diagnostics-dsym.test
-+++ b/clang/test/InstallAPI/diagnostics-dsym.test
-@@ -4,20 +4,20 @@
- ; RUN: split-file %s %t
-
- // Build a simple dylib with debug info.
--; RUN: %clang --target=x86_64-apple-macos10.15 -g -dynamiclib %t/foo.c \
-+; RUN: %clang --target=arm64-apple-macos13 -g -dynamiclib %t/foo.c \
- ; RUN: -current_version 1 -compatibility_version 1 -L%t/usr/lib \
- ; RUN: -save-temps \
- ; RUN: -o %t/foo.dylib -install_name %t/foo.dylib
- ; RUN: dsymutil %t/foo.dylib -o %t/foo.dSYM
-
--; RUN: not clang-installapi -x c++ --target=x86_64-apple-macos10.15 \
-+; RUN: not clang-installapi -x c++ --target=arm64-apple-macos13 \
- ; RUN: -install_name %t/foo.dylib \
- ; RUN: -current_version 1 -compatibility_version 1 \
- ; RUN: -o %t/output.tbd \
- ; RUN: --verify-against=%t/foo.dylib --dsym=%t/foo.dSYM \
- ; RUN: --verify-mode=Pedantic 2>&1 | FileCheck %s
-
--; CHECK: violations found for x86_64
-+; CHECK: violations found for arm64
- ; CHECK: foo.c:5:0: error: no declaration found for exported symbol 'bar' in dynamic library
- ; CHECK: foo.c:1:0: error: no declaration found for exported symbol 'foo' in dynamic library
-
-@@ -29,11 +29,15 @@ extern char bar;
- char bar = 'a';
-
- ;--- usr/lib/libSystem.tbd
----- !tapi-tbd
--tbd-version: 4
--targets: [ x86_64-macos ]
--install-name: '/usr/lib/libSystem.B.dylib'
--exports:
-- - targets: [ x86_64-macos ]
-- symbols: [ dyld_stub_binder ]
--...
-+{
-+ "main_library": {
-+ "install_names": [
-+ {"name": "/usr/lib/libSystem.B.dylib"}
-+ ],
-+ "target_info": [
-+ {"target": "arm64-macos"}
-+ ]
-+ },
-+ "tapi_tbd_version": 5
-+}
-+
---
-2.44.0.1.g9765aa7075
-
diff --git a/build/build-clang/revert-llvmorg-19-init-6902-gbdb60e6f0c8e.patch b/build/build-clang/revert-llvmorg-19-init-6902-gbdb60e6f0c8e.patch
deleted file mode 100644
index 28a27dc7cc..0000000000
--- a/build/build-clang/revert-llvmorg-19-init-6902-gbdb60e6f0c8e.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 79ff81df7b4593769ec40539e7a669e7d038efd1 Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Fri, 5 Apr 2024 05:59:15 +0900
-Subject: [PATCH 2/4] Revert "[InstallAPI][test] Add requires x86_64 for
- hardcoded target test"
-
-This reverts commit bdb60e6f0c8e89abf9bdf36411348db304ca65ba.
----
- clang/test/InstallAPI/diagnostics-dsym.test | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/clang/test/InstallAPI/diagnostics-dsym.test b/clang/test/InstallAPI/diagnostics-dsym.test
-index 8a1b394f2f86..45c69c09d286 100644
---- a/clang/test/InstallAPI/diagnostics-dsym.test
-+++ b/clang/test/InstallAPI/diagnostics-dsym.test
-@@ -1,4 +1,4 @@
--; REQUIRES: 86_64-darwin
-+; REQUIRES: system-darwin
-
- ; RUN: rm -rf %t
- ; RUN: split-file %s %t
---
-2.44.0.1.g9765aa7075
-
diff --git a/build/build-clang/revert-llvmorg-19-init-7044-g30fd099d5062.patch b/build/build-clang/revert-llvmorg-19-init-7044-g30fd099d5062.patch
deleted file mode 100644
index eac26c075c..0000000000
--- a/build/build-clang/revert-llvmorg-19-init-7044-g30fd099d5062.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 30a876f2ca438ebbd1db53c5008759f565940d2b Mon Sep 17 00:00:00 2001
-From: Mike Hommey <mh@glandium.org>
-Date: Fri, 5 Apr 2024 05:59:08 +0900
-Subject: [PATCH 1/4] Revert "[InstallAPI] Fixup dsym test (#87299)"
-
-This reverts commit 30fd099d5062638b5fe6b89135ad6433a888023a.
----
- clang/test/InstallAPI/diagnostics-dsym.test | 13 ++++++-------
- 1 file changed, 6 insertions(+), 7 deletions(-)
-
-diff --git a/clang/test/InstallAPI/diagnostics-dsym.test b/clang/test/InstallAPI/diagnostics-dsym.test
-index c9cbeffef7ba..8a1b394f2f86 100644
---- a/clang/test/InstallAPI/diagnostics-dsym.test
-+++ b/clang/test/InstallAPI/diagnostics-dsym.test
-@@ -1,24 +1,23 @@
--; REQUIRES: system-darwin
--; REQUIRES: target-aarch64
-+; REQUIRES: 86_64-darwin
-
- ; RUN: rm -rf %t
- ; RUN: split-file %s %t
-
- // Build a simple dylib with debug info.
--; RUN: %clang --target=arm64-apple-macos11 -g -dynamiclib %t/foo.c \
-+; RUN: %clang --target=x86_64-apple-macos10.15 -g -dynamiclib %t/foo.c \
- ; RUN: -current_version 1 -compatibility_version 1 -L%t/usr/lib \
- ; RUN: -save-temps \
- ; RUN: -o %t/foo.dylib -install_name %t/foo.dylib
- ; RUN: dsymutil %t/foo.dylib -o %t/foo.dSYM
-
--; RUN: not clang-installapi -x c++ --target=arm64-apple-macos11 \
-+; RUN: not clang-installapi -x c++ --target=x86_64-apple-macos10.15 \
- ; RUN: -install_name %t/foo.dylib \
- ; RUN: -current_version 1 -compatibility_version 1 \
- ; RUN: -o %t/output.tbd \
- ; RUN: --verify-against=%t/foo.dylib --dsym=%t/foo.dSYM \
- ; RUN: --verify-mode=Pedantic 2>&1 | FileCheck %s
-
--; CHECK: violations found for arm64
-+; CHECK: violations found for x86_64
- ; CHECK: foo.c:5:0: error: no declaration found for exported symbol 'bar' in dynamic library
- ; CHECK: foo.c:1:0: error: no declaration found for exported symbol 'foo' in dynamic library
-
-@@ -32,9 +31,9 @@ char bar = 'a';
- ;--- usr/lib/libSystem.tbd
- --- !tapi-tbd
- tbd-version: 4
--targets: [ arm64-macos ]
-+targets: [ x86_64-macos ]
- install-name: '/usr/lib/libSystem.B.dylib'
- exports:
-- - targets: [ arm64-macos ]
-+ - targets: [ x86_64-macos ]
- symbols: [ dyld_stub_binder ]
- ...
---
-2.44.0.1.g9765aa7075
-