aboutsummaryrefslogtreecommitdiff
path: root/llvm/tools/llvm-ifs/llvm-ifs.cpp
diff options
context:
space:
mode:
authorHaowei Wu <haowei@google.com>2021-04-07 15:50:12 -0700
committerHaowei Wu <haowei@google.com>2021-07-19 11:23:00 -0700
commit61fa9afe4c5b014181ce41a35c84fb0f3be975db (patch)
tree5212007a0ef0d231f45b8a83f89d42ac7e013c5d /llvm/tools/llvm-ifs/llvm-ifs.cpp
parent8b4acb067fd38ac33a63669ef46966dfee59257e (diff)
downloadllvm-61fa9afe4c5b014181ce41a35c84fb0f3be975db.zip
llvm-61fa9afe4c5b014181ce41a35c84fb0f3be975db.tar.gz
llvm-61fa9afe4c5b014181ce41a35c84fb0f3be975db.tar.bz2
[ifs] Prepare llvm-ifs for elfabi/ifs merging.
This diff changes llvm-ifs to use unified IFS file format and perform other renaming changes in preparation for the merging between elfabi/ifs. Differential Revision: https://reviews.llvm.org/D99810
Diffstat (limited to 'llvm/tools/llvm-ifs/llvm-ifs.cpp')
-rw-r--r--llvm/tools/llvm-ifs/llvm-ifs.cpp35
1 files changed, 17 insertions, 18 deletions
diff --git a/llvm/tools/llvm-ifs/llvm-ifs.cpp b/llvm/tools/llvm-ifs/llvm-ifs.cpp
index 8ab5ef9..41c193c 100644
--- a/llvm/tools/llvm-ifs/llvm-ifs.cpp
+++ b/llvm/tools/llvm-ifs/llvm-ifs.cpp
@@ -10,8 +10,8 @@
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Triple.h"
#include "llvm/InterfaceStub/ELFObjHandler.h"
-#include "llvm/InterfaceStub/ELFStub.h"
-#include "llvm/InterfaceStub/TBEHandler.h"
+#include "llvm/InterfaceStub/IFSHandler.h"
+#include "llvm/InterfaceStub/IFSStub.h"
#include "llvm/ObjectYAML/yaml2obj.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
@@ -38,7 +38,7 @@ using namespace llvm::MachO;
#define DEBUG_TYPE "llvm-ifs"
namespace {
-const VersionTuple IFSVersionCurrent(2, 0);
+const VersionTuple IFSVersionCurrent(3, 0);
} // end anonymous namespace
static cl::opt<std::string> Action("action", cl::desc("<llvm-ifs action>"),
@@ -164,14 +164,13 @@ namespace yaml {
/// YAML traits for IFSStub objects.
template <> struct MappingTraits<IFSStub> {
static void mapping(IO &IO, IFSStub &Stub) {
- if (!IO.mapTag("!experimental-ifs-v2", true))
+ if (!IO.mapTag("!ifs-v1", true))
IO.setError("Not a .ifs YAML file.");
auto OldContext = IO.getContext();
IO.setContext(&Stub);
IO.mapRequired("IfsVersion", Stub.IfsVersion);
- IO.mapOptional("Triple", Stub.Triple);
- IO.mapOptional("ObjectFileFormat", Stub.ObjectFileFormat);
+ IO.mapOptional("Target", Stub.Triple);
IO.mapOptional("SOName", Stub.SOName);
IO.mapOptional("NeededLibs", Stub.NeededLibs);
IO.mapRequired("Symbols", Stub.Symbols);
@@ -350,25 +349,25 @@ static int writeElfStub(const Triple &T, const std::vector<IFSSymbol> &Symbols,
return convertYAML(YIn, Out, ErrHandler) ? 0 : 1;
}
-static Error convertIFSStub(const IFSStub &IfsStub, elfabi::ELFStub &ElfStub) {
- ElfStub.TbeVersion = IfsStub.IfsVersion;
+static Error convertIFSStub(const IFSStub &IfsStub, elfabi::IFSStub &ElfStub) {
+ ElfStub.IfsVersion = IfsStub.IfsVersion;
ElfStub.SoName = IfsStub.SOName;
ElfStub.Target.Triple = IfsStub.Triple;
ElfStub.NeededLibs = IfsStub.NeededLibs;
for (const IFSSymbol &IfsSymbol : IfsStub.Symbols) {
- elfabi::ELFSymbol ElfSymbol(IfsSymbol.Name);
+ elfabi::IFSSymbol ElfSymbol(IfsSymbol.Name);
switch (IfsSymbol.Type) {
case IFSSymbolType::Func:
- ElfSymbol.Type = elfabi::ELFSymbolType::Func;
+ ElfSymbol.Type = elfabi::IFSSymbolType::Func;
break;
case IFSSymbolType::NoType:
- ElfSymbol.Type = elfabi::ELFSymbolType::NoType;
+ ElfSymbol.Type = elfabi::IFSSymbolType::NoType;
break;
case IFSSymbolType::Object:
- ElfSymbol.Type = elfabi::ELFSymbolType::Object;
+ ElfSymbol.Type = elfabi::IFSSymbolType::Object;
break;
default:
- ElfSymbol.Type = elfabi::ELFSymbolType::Unknown;
+ ElfSymbol.Type = elfabi::IFSSymbolType::Unknown;
break;
// TODO: Add support for TLS?
}
@@ -378,22 +377,22 @@ static Error convertIFSStub(const IFSStub &IfsStub, elfabi::ELFStub &ElfStub) {
ElfSymbol.Warning = IfsSymbol.Warning;
ElfStub.Symbols.push_back(ElfSymbol);
}
- return llvm::elfabi::validateTBETarget(ElfStub, true);
+ return llvm::elfabi::validateIFSTarget(ElfStub, true);
}
static int writeIfso(const IFSStub &Stub, bool IsWriteIfs) {
std::string ObjectFileFormat =
- ForceFormat.empty() ? Stub.ObjectFileFormat : ForceFormat;
+ ForceFormat.empty() ? std::string("ELF") : ForceFormat;
// Use InterfaceStub library if the option is enabled and output
// format is ELF.
if (UseInterfaceStub && (!IsWriteIfs) && ObjectFileFormat != "TBD") {
- elfabi::ELFStub ElfStub;
- Error ConvertError = convertIFSStub(Stub, ElfStub);
+ elfabi::IFSStub IfsStub;
+ Error ConvertError = convertIFSStub(Stub, IfsStub);
if (ConvertError) {
return -1;
}
- Error BinaryWriteError = elfabi::writeBinaryStub(OutputFilename, ElfStub);
+ Error BinaryWriteError = elfabi::writeBinaryStub(OutputFilename, IfsStub);
if (BinaryWriteError) {
return -1;
}