aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/TextAPI
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/TextAPI')
-rw-r--r--llvm/lib/TextAPI/BinaryReader/DylibReader.cpp1
-rw-r--r--llvm/lib/TextAPI/InterfaceFile.cpp29
-rw-r--r--llvm/lib/TextAPI/RecordsSlice.cpp24
-rw-r--r--llvm/lib/TextAPI/TextAPIContext.h3
-rw-r--r--llvm/lib/TextAPI/TextStubCommon.h1
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"