diff options
author | Haowei Wu <haowei@google.com> | 2021-04-07 15:50:12 -0700 |
---|---|---|
committer | Haowei Wu <haowei@google.com> | 2021-07-19 11:23:00 -0700 |
commit | 61fa9afe4c5b014181ce41a35c84fb0f3be975db (patch) | |
tree | 5212007a0ef0d231f45b8a83f89d42ac7e013c5d /llvm/tools/llvm-ifs/llvm-ifs.cpp | |
parent | 8b4acb067fd38ac33a63669ef46966dfee59257e (diff) | |
download | llvm-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.cpp | 35 |
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; } |