diff options
Diffstat (limited to 'llvm/lib/TextAPI')
-rw-r--r-- | llvm/lib/TextAPI/BinaryReader/DylibReader.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/TextAPI/InterfaceFile.cpp | 29 | ||||
-rw-r--r-- | llvm/lib/TextAPI/RecordsSlice.cpp | 24 | ||||
-rw-r--r-- | llvm/lib/TextAPI/TextAPIContext.h | 3 | ||||
-rw-r--r-- | llvm/lib/TextAPI/TextStubCommon.h | 1 |
5 files changed, 34 insertions, 24 deletions
diff --git a/llvm/lib/TextAPI/BinaryReader/DylibReader.cpp b/llvm/lib/TextAPI/BinaryReader/DylibReader.cpp index 25b9499..0694d8f 100644 --- a/llvm/lib/TextAPI/BinaryReader/DylibReader.cpp +++ b/llvm/lib/TextAPI/BinaryReader/DylibReader.cpp @@ -17,6 +17,7 @@ #include "llvm/Object/MachOUniversal.h" #include "llvm/Support/Endian.h" #include "llvm/TargetParser/Triple.h" +#include "llvm/TextAPI/InterfaceFile.h" #include "llvm/TextAPI/RecordsSlice.h" #include "llvm/TextAPI/TextAPIError.h" #include <iomanip> diff --git a/llvm/lib/TextAPI/InterfaceFile.cpp b/llvm/lib/TextAPI/InterfaceFile.cpp index d712ed3..9979df92 100644 --- a/llvm/lib/TextAPI/InterfaceFile.cpp +++ b/llvm/lib/TextAPI/InterfaceFile.cpp @@ -11,6 +11,7 @@ //===----------------------------------------------------------------------===// #include "llvm/TextAPI/InterfaceFile.h" +#include "llvm/TextAPI/RecordsSlice.h" #include "llvm/TextAPI/TextAPIError.h" #include <iomanip> #include <sstream> @@ -351,6 +352,34 @@ InterfaceFile::extract(Architecture Arch) const { return std::move(IF); } +void InterfaceFile::setFromBinaryAttrs(const RecordsSlice::BinaryAttrs &BA, + const Target &Targ) { + if (getFileType() != BA.File) + setFileType(BA.File); + if (getInstallName().empty()) + setInstallName(BA.InstallName); + if (BA.AppExtensionSafe && !isApplicationExtensionSafe()) + setApplicationExtensionSafe(); + if (BA.TwoLevelNamespace && !isTwoLevelNamespace()) + setTwoLevelNamespace(); + if (BA.OSLibNotForSharedCache && !isOSLibNotForSharedCache()) + setOSLibNotForSharedCache(); + if (getCurrentVersion().empty()) + setCurrentVersion(BA.CurrentVersion); + if (getCompatibilityVersion().empty()) + setCompatibilityVersion(BA.CompatVersion); + if (getSwiftABIVersion() == 0) + setSwiftABIVersion(BA.SwiftABI); + if (getPath().empty()) + setPath(BA.Path); + if (!BA.ParentUmbrella.empty()) + addParentUmbrella(Targ, BA.ParentUmbrella); + for (const auto &Client : BA.AllowableClients) + addAllowableClient(Client, Targ); + for (const auto &Lib : BA.RexportedLibraries) + addReexportedLibrary(Lib, Targ); +} + static bool isYAMLTextStub(const FileType &Kind) { return (Kind >= FileType::TBD_V1) && (Kind < FileType::TBD_V5); } diff --git a/llvm/lib/TextAPI/RecordsSlice.cpp b/llvm/lib/TextAPI/RecordsSlice.cpp index f07853e..fb961a9 100644 --- a/llvm/lib/TextAPI/RecordsSlice.cpp +++ b/llvm/lib/TextAPI/RecordsSlice.cpp @@ -12,6 +12,7 @@ #include "llvm/TextAPI/RecordsSlice.h" #include "llvm/ADT/SetVector.h" +#include "llvm/TextAPI/InterfaceFile.h" #include "llvm/TextAPI/Record.h" #include "llvm/TextAPI/Symbol.h" #include <utility> @@ -325,28 +326,7 @@ createInterfaceFile(const Records &Slices, StringRef InstallName) { continue; const Target &Targ = S->getTarget(); File->addTarget(Targ); - if (File->getFileType() == FileType::Invalid) - File->setFileType(BA.File); - if (BA.AppExtensionSafe && !File->isApplicationExtensionSafe()) - File->setApplicationExtensionSafe(); - if (BA.TwoLevelNamespace && !File->isTwoLevelNamespace()) - File->setTwoLevelNamespace(); - if (BA.OSLibNotForSharedCache && !File->isOSLibNotForSharedCache()) - File->setOSLibNotForSharedCache(); - if (File->getCurrentVersion().empty()) - File->setCurrentVersion(BA.CurrentVersion); - if (File->getCompatibilityVersion().empty()) - File->setCompatibilityVersion(BA.CompatVersion); - if (File->getSwiftABIVersion() == 0) - File->setSwiftABIVersion(BA.SwiftABI); - if (File->getPath().empty()) - File->setPath(BA.Path); - if (!BA.ParentUmbrella.empty()) - File->addParentUmbrella(Targ, BA.ParentUmbrella); - for (const auto &Client : BA.AllowableClients) - File->addAllowableClient(Client, Targ); - for (const auto &Lib : BA.RexportedLibraries) - File->addReexportedLibrary(Lib, Targ); + File->setFromBinaryAttrs(BA, Targ); } return File; diff --git a/llvm/lib/TextAPI/TextAPIContext.h b/llvm/lib/TextAPI/TextAPIContext.h index 217d1f5..3151db7 100644 --- a/llvm/lib/TextAPI/TextAPIContext.h +++ b/llvm/lib/TextAPI/TextAPIContext.h @@ -13,13 +13,12 @@ #ifndef LLVM_TEXTAPI_MACHO_CONTEXT_H #define LLVM_TEXTAPI_MACHO_CONTEXT_H +#include "llvm/TextAPI/FileTypes.h" #include <string> namespace llvm { namespace MachO { -enum FileType : unsigned; - struct TextAPIContext { std::string ErrorMessage; std::string Path; diff --git a/llvm/lib/TextAPI/TextStubCommon.h b/llvm/lib/TextAPI/TextStubCommon.h index 360910c..155d38a 100644 --- a/llvm/lib/TextAPI/TextStubCommon.h +++ b/llvm/lib/TextAPI/TextStubCommon.h @@ -13,6 +13,7 @@ #ifndef LLVM_TEXTAPI_TEXT_STUB_COMMON_H #define LLVM_TEXTAPI_TEXT_STUB_COMMON_H +#include "llvm/ADT/BitmaskEnum.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/YAMLTraits.h" #include "llvm/TextAPI/Architecture.h" |