aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-tapi-diff/DiffEngine.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2023-07-26 19:03:47 +0000
committerDimitry Andric <dim@FreeBSD.org>2023-07-26 19:04:23 +0000
commit7fa27ce4a07f19b07799a767fc29416f3b625afb (patch)
tree27825c83636c4de341eb09a74f49f5d38a15d165 /llvm/tools/llvm-tapi-diff/DiffEngine.cpp
parente3b557809604d036af6e00c60f012c2025b59a5e (diff)
Diffstat (limited to 'llvm/tools/llvm-tapi-diff/DiffEngine.cpp')
-rw-r--r--llvm/tools/llvm-tapi-diff/DiffEngine.cpp58
1 files changed, 29 insertions, 29 deletions
diff --git a/llvm/tools/llvm-tapi-diff/DiffEngine.cpp b/llvm/tools/llvm-tapi-diff/DiffEngine.cpp
index 9ebaadbeec26..3e07bb94f4df 100644
--- a/llvm/tools/llvm-tapi-diff/DiffEngine.cpp
+++ b/llvm/tools/llvm-tapi-diff/DiffEngine.cpp
@@ -11,11 +11,13 @@
//
//===----------------------------------------------------------------------===/
#include "DiffEngine.h"
+#include "llvm/ADT/SmallString.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TextAPI/InterfaceFile.h"
#include "llvm/TextAPI/Symbol.h"
#include "llvm/TextAPI/Target.h"
+#include <iterator>
using namespace llvm;
using namespace MachO;
@@ -74,43 +76,49 @@ StringLiteral SymScalar::getSymbolNamePrefix(MachO::SymbolKind Kind) {
llvm_unreachable("Unknown llvm::MachO::SymbolKind enum");
}
-std::string SymScalar::stringifySymbolFlag(MachO::SymbolFlags Flag) {
- switch (Flag) {
- case MachO::SymbolFlags::None:
- return "";
- case MachO::SymbolFlags::ThreadLocalValue:
- return "Thread-Local";
- case MachO::SymbolFlags::WeakDefined:
- return "Weak-Defined";
- case MachO::SymbolFlags::WeakReferenced:
- return "Weak-Referenced";
- case MachO::SymbolFlags::Undefined:
- return "Undefined";
- case MachO::SymbolFlags::Rexported:
- return "Reexported";
- }
- llvm_unreachable("Unknown llvm::MachO::SymbolFlags enum");
+std::string SymScalar::getFlagString(const MachO::Symbol *Sym) {
+ if (Sym->getFlags() == SymbolFlags::None)
+ return {};
+ SmallString<64> Flags(" - ");
+ if (Sym->isThreadLocalValue())
+ Flags.append("Thread-Local ");
+ if (Sym->isWeakDefined())
+ Flags.append("Weak-Defined ");
+ if (Sym->isWeakReferenced())
+ Flags.append("Weak-Referenced ");
+ if (Sym->isUndefined())
+ Flags.append("Undefined ");
+ if (Sym->isReexported())
+ Flags.append("Reexported ");
+ if (Sym->isData())
+ Flags.append("Data ");
+ if (Sym->isText())
+ Flags.append("Text ");
+
+ return std::string(Flags);
}
void SymScalar::print(raw_ostream &OS, std::string Indent, MachO::Target Targ) {
if (Val->getKind() == MachO::SymbolKind::ObjectiveCClass) {
if (Targ.Arch == MachO::AK_i386 && Targ.Platform == MachO::PLATFORM_MACOS) {
OS << Indent << "\t\t" << ((Order == lhs) ? "< " : "> ")
- << ObjC1ClassNamePrefix << Val->getName()
- << getFlagString(Val->getFlags()) << "\n";
+ << ObjC1ClassNamePrefix << Val->getName() << getFlagString(Val)
+ << "\n";
return;
}
OS << Indent << "\t\t" << ((Order == lhs) ? "< " : "> ")
- << ObjC2ClassNamePrefix << Val->getName()
- << getFlagString(Val->getFlags()) << "\n";
+ << ObjC2ClassNamePrefix << Val->getName() << getFlagString(Val) << "\n";
}
OS << Indent << "\t\t" << ((Order == lhs) ? "< " : "> ")
<< getSymbolNamePrefix(Val->getKind()) << Val->getName()
- << getFlagString(Val->getFlags()) << "\n";
+ << getFlagString(Val) << "\n";
}
bool checkSymbolEquality(llvm::MachO::InterfaceFile::const_symbol_range LHS,
llvm::MachO::InterfaceFile::const_symbol_range RHS) {
+ if (std::distance(LHS.begin(), LHS.end()) !=
+ std::distance(RHS.begin(), RHS.end()))
+ return false;
return std::equal(LHS.begin(), LHS.end(), RHS.begin(),
[&](auto LHS, auto RHS) { return *LHS == *RHS; });
}
@@ -204,9 +212,6 @@ std::vector<DiffOutput> getSingleIF(InterfaceFile *Interface,
diffAttribute("Swift ABI Version", Output,
DiffScalarVal<uint8_t, AD_Diff_Scalar_Unsigned>(
Order, Interface->getSwiftABIVersion()));
- diffAttribute("InstallAPI", Output,
- DiffScalarVal<bool, AD_Diff_Scalar_Bool>(
- Order, Interface->isInstallAPI()));
diffAttribute("Two Level Namespace", Output,
DiffScalarVal<bool, AD_Diff_Scalar_Bool>(
Order, Interface->isTwoLevelNamespace()));
@@ -341,11 +346,6 @@ DiffEngine::findDifferences(const InterfaceFile *IFLHS,
DiffScalarVal<uint8_t, AD_Diff_Scalar_Unsigned>(
rhs, IFRHS->getSwiftABIVersion()),
"Swift ABI Version"));
- if (IFLHS->isInstallAPI() != IFRHS->isInstallAPI())
- Output.push_back(recordDifferences(
- DiffScalarVal<bool, AD_Diff_Scalar_Bool>(lhs, IFLHS->isInstallAPI()),
- DiffScalarVal<bool, AD_Diff_Scalar_Bool>(rhs, IFRHS->isInstallAPI()),
- "InstallAPI"));
if (IFLHS->isTwoLevelNamespace() != IFRHS->isTwoLevelNamespace())
Output.push_back(recordDifferences(DiffScalarVal<bool, AD_Diff_Scalar_Bool>(