summaryrefslogtreecommitdiffstats
path: root/llvm/lib/TextAPI/MachO/Architecture.cpp
diff options
context:
space:
mode:
authorJuergen Ributzka <juergen@ributzka.de>2018-11-28 21:27:00 +0000
committerJuergen Ributzka <juergen@ributzka.de>2018-11-28 21:27:00 +0000
commiteb6759bbf9eaa43d457d84426f37a8ebd424b763 (patch)
treedf4676393b07cb598c0cda7fc8c1be67af03a08a /llvm/lib/TextAPI/MachO/Architecture.cpp
parent416b12f776e7390a23d9fbeda434ec572d25050b (diff)
downloadbcm5719-llvm-eb6759bbf9eaa43d457d84426f37a8ebd424b763.tar.gz
bcm5719-llvm-eb6759bbf9eaa43d457d84426f37a8ebd424b763.zip
[TextAPI] TBD Reader/Writer
Add basic infrastructure for reading and writting TBD files (version 1 - 3). The TextAPI library is not used by anything yet (besides the unit tests). Tool support will be added in a separate commit. The TBD format is currently documented in the implementation file (TextStub.cpp). https://reviews.llvm.org/D53945 llvm-svn: 347808
Diffstat (limited to 'llvm/lib/TextAPI/MachO/Architecture.cpp')
-rw-r--r--llvm/lib/TextAPI/MachO/Architecture.cpp71
1 files changed, 71 insertions, 0 deletions
diff --git a/llvm/lib/TextAPI/MachO/Architecture.cpp b/llvm/lib/TextAPI/MachO/Architecture.cpp
new file mode 100644
index 00000000000..b1ec6ce650f
--- /dev/null
+++ b/llvm/lib/TextAPI/MachO/Architecture.cpp
@@ -0,0 +1,71 @@
+//===- llvm/TextAPI/Architecture.cpp - Architecture -------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// \brief Implements the architecture helper functions.
+///
+//===----------------------------------------------------------------------===//
+
+#include "llvm/TextAPI/MachO/Architecture.h"
+#include "llvm/ADT/StringSwitch.h"
+#include "llvm/BinaryFormat/MachO.h"
+
+namespace llvm {
+namespace MachO {
+
+Architecture getArchitectureFromCpuType(uint32_t CPUType, uint32_t CPUSubType) {
+#define ARCHINFO(Arch, Type, Subtype) \
+ if (CPUType == (Type) && \
+ (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) == (Subtype)) \
+ return Architecture::Arch;
+#include "llvm/TextAPI/MachO/Architecture.def"
+#undef ARCHINFO
+
+ return Architecture::unknown;
+}
+
+Architecture getArchitectureFromName(StringRef Name) {
+ return StringSwitch<Architecture>(Name)
+#define ARCHINFO(Arch, Type, Subtype) .Case(#Arch, Architecture::Arch)
+#include "llvm/TextAPI/MachO/Architecture.def"
+#undef ARCHINFO
+ .Default(Architecture::unknown);
+}
+
+StringRef getArchitectureName(Architecture Arch) {
+ switch (Arch) {
+#define ARCHINFO(Arch, Type, Subtype) \
+ case Architecture::Arch: \
+ return #Arch;
+#include "llvm/TextAPI/MachO/Architecture.def"
+#undef ARCHINFO
+ case Architecture::unknown:
+ return "unknown";
+ }
+}
+
+std::pair<uint32_t, uint32_t> getCPUTypeFromArchitecture(Architecture Arch) {
+ switch (Arch) {
+#define ARCHINFO(Arch, Type, Subtype) \
+ case Architecture::Arch: \
+ return std::make_pair(Type, Subtype);
+#include "llvm/TextAPI/MachO/Architecture.def"
+#undef ARCHINFO
+ case Architecture::unknown:
+ return std::make_pair(0, 0);
+ }
+}
+
+raw_ostream &operator<<(raw_ostream &OS, Architecture Arch) {
+ OS << getArchitectureName(Arch);
+ return OS;
+}
+
+} // end namespace MachO.
+} // end namespace llvm.
OpenPOWER on IntegriCloud