Backed out changeset fdbb6cbe2018 (bug 1888738) for making bug 1889833 block plenty of tasks. CLOSED TREE

This commit is contained in:
Iulian Moraru 2024-04-05 13:18:08 +03:00
Родитель 9fff329296
Коммит 7a5c2499ac
11 изменённых файлов: 9 добавлений и 750 удалений

Просмотреть файл

@ -5,9 +5,12 @@
"unpoison-thread-stacks_clang_10.patch",
"downgrade-mangling-error_clang_12.patch",
"fuzzing_ccov_build_clang_12.patch",
"partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch",
"revert-llvmorg-17-init-4120-g02e8eb1a438b.patch",
"partial-revert-llvmorg-16-init-17151-gaa0883b59ae1_clang_17.patch",
"revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_17.patch",
"revert-llvmorg-15-init-13446-g7524fe962e47.patch",
"revert-llvmorg-15-init-11205-gcead4eceb01b_clang_16.patch",
"llvmorg-18-init-8471-g160e8eb44961.patch",
"D146664.patch",
"win64-ret-null-on-commitment-limit_clang_14.patch",

Просмотреть файл

@ -9,9 +9,12 @@
"revert-llvmorg-18-init-6208-g2baf4a06ef06.patch",
"revert-llvmorg-18-init-6193-gb88cffeafd39.patch",
"revert-llvmorg-18-init-6188-gc649f29c24c9.patch",
"partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch",
"revert-llvmorg-17-init-4120-g02e8eb1a438b_clang_18.patch",
"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",
"revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch",
"win64-ret-null-on-commitment-limit_clang_14.patch",
"compiler-rt-rss-limit-heap-profile.patch"
]

Просмотреть файл

@ -9,9 +9,12 @@
"revert-llvmorg-18-init-6208-g2baf4a06ef06.patch",
"revert-llvmorg-18-init-6193-gb88cffeafd39.patch",
"revert-llvmorg-18-init-6188-gc649f29c24c9.patch",
"partial-revert-llvmorg-17-init-17713-gc8e055d485ea.patch",
"revert-llvmorg-17-init-4120-g02e8eb1a438b_clang_18.patch",
"partial-revert-llvmorg-16-init-17151-gaa0883b59ae1_clang_17.patch",
"revert-llvmorg-16-init-11301-g163bb6d64e5f_clang_19.patch",
"revert-llvmorg-15-init-13446-g7524fe962e47.patch",
"revert-llvmorg-15-init-11205-gcead4eceb01b_clang_18.patch",
"win64-ret-null-on-commitment-limit_clang_14.patch",
"compiler-rt-rss-limit-heap-profile.patch"
]

Просмотреть файл

@ -1,7 +0,0 @@
{
"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"
]
}

Просмотреть файл

@ -1,7 +0,0 @@
{
"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"
]
}

Просмотреть файл

@ -1,11 +0,0 @@
{
"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"
]
}

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -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

Просмотреть файл

@ -18,10 +18,8 @@ linux32-llvm-symbolizer-17:
arguments:
- i686-unknown-linux-gnu
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
resources:
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -42,10 +40,8 @@ linux64-llvm-symbolizer-17:
arguments:
- x86_64-unknown-linux-gnu
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
resources:
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -66,10 +62,8 @@ macosx64-llvm-symbolizer-17:
arguments:
- x86_64-apple-darwin
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
resources:
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -90,10 +84,8 @@ macosx64-aarch64-llvm-symbolizer-17:
arguments:
- aarch64-apple-darwin
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
resources:
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -114,10 +106,8 @@ win64-llvm-symbolizer-17:
arguments:
- x86_64-pc-windows-msvc
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
resources:
- build/build-clang/clang-17.json
- build/build-clang/llvm-symbolizer-17.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -138,10 +128,8 @@ linux32-llvm-symbolizer-18:
arguments:
- i686-unknown-linux-gnu
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
resources:
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
- taskcluster/scripts/misc/build-llvm-common.sh
fetches:
fetch:
@ -158,10 +146,8 @@ linux64-llvm-symbolizer-18:
arguments:
- x86_64-unknown-linux-gnu
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
resources:
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
- taskcluster/scripts/misc/build-llvm-common.sh
fetches:
fetch:
@ -178,10 +164,8 @@ macosx64-llvm-symbolizer-18:
arguments:
- x86_64-apple-darwin
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
resources:
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
- taskcluster/scripts/misc/build-llvm-common.sh
fetches:
fetch:
@ -198,10 +182,8 @@ macosx64-aarch64-llvm-symbolizer-18:
arguments:
- aarch64-apple-darwin
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
resources:
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
- taskcluster/scripts/misc/build-llvm-common.sh
fetches:
fetch:
@ -218,10 +200,8 @@ win64-llvm-symbolizer-18:
arguments:
- x86_64-pc-windows-msvc
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
resources:
- build/build-clang/clang-18.json
- build/build-clang/llvm-symbolizer-18.json
- taskcluster/scripts/misc/build-llvm-common.sh
fetches:
fetch:
@ -240,10 +220,8 @@ linux32-llvm-symbolizer-trunk:
arguments:
- i686-unknown-linux-gnu
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
resources:
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -266,10 +244,8 @@ linux64-llvm-symbolizer-trunk:
arguments:
- x86_64-unknown-linux-gnu
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
resources:
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -292,10 +268,8 @@ macosx64-llvm-symbolizer-trunk:
arguments:
- x86_64-apple-darwin
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
resources:
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -318,10 +292,8 @@ macosx64-aarch64-llvm-symbolizer-trunk:
arguments:
- aarch64-apple-darwin
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
resources:
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project:
@ -344,10 +316,8 @@ win64-llvm-symbolizer-trunk:
arguments:
- x86_64-pc-windows-msvc
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
resources:
- build/build-clang/clang-trunk.json
- build/build-clang/llvm-symbolizer-trunk.json
- taskcluster/scripts/misc/build-llvm-common.sh
toolchain-alias:
by-project: