-
Notifications
You must be signed in to change notification settings - Fork 15.2k
[MachO] Move getArchTriple implementation into BinaryFormat. #161468
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-llvm-binary-utilities Author: Lang Hames (lhames) ChangesThere's nothing ObjectFile specific about getArchTriple, so move it into the BinaryFormat library so that clients can use it without taking a dependence on libObject. MachOObjectFile::getArchTriple is updated to call through to the moved implementation. Full diff: https://github.com/llvm/llvm-project/pull/161468.diff 4 Files Affected:
diff --git a/llvm/include/llvm/BinaryFormat/MachO.h b/llvm/include/llvm/BinaryFormat/MachO.h
index 5dbdfb13d1a5f..dfab897ea43cc 100644
--- a/llvm/include/llvm/BinaryFormat/MachO.h
+++ b/llvm/include/llvm/BinaryFormat/MachO.h
@@ -1709,6 +1709,9 @@ LLVM_ABI Expected<uint32_t> getCPUSubType(const Triple &T);
LLVM_ABI Expected<uint32_t> getCPUSubType(const Triple &T,
unsigned PtrAuthABIVersion,
bool PtrAuthKernelABIVersion);
+LLVM_ABI Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
+ const char **McpuDefault = nullptr,
+ const char **ArchFlag = nullptr);
struct x86_thread_state32_t {
uint32_t eax;
diff --git a/llvm/include/llvm/Object/MachO.h b/llvm/include/llvm/Object/MachO.h
index 3f4a21d2d1bac..332d803710b26 100644
--- a/llvm/include/llvm/Object/MachO.h
+++ b/llvm/include/llvm/Object/MachO.h
@@ -755,7 +755,9 @@ class LLVM_ABI MachOObjectFile : public ObjectFile {
static Triple::ArchType getArch(uint32_t CPUType, uint32_t CPUSubType);
static Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
const char **McpuDefault = nullptr,
- const char **ArchFlag = nullptr);
+ const char **ArchFlag = nullptr) {
+ return MachO::getArchTriple(CPUType, CPUSubType, McpuDefault, ArchFlag);
+ }
static bool isValidArch(StringRef ArchFlag);
static ArrayRef<StringRef> getValidArchs();
static Triple getHostArch();
diff --git a/llvm/lib/BinaryFormat/MachO.cpp b/llvm/lib/BinaryFormat/MachO.cpp
index f46b9d5147ff1..1aae894e35b41 100644
--- a/llvm/lib/BinaryFormat/MachO.cpp
+++ b/llvm/lib/BinaryFormat/MachO.cpp
@@ -123,3 +123,140 @@ Expected<uint32_t> MachO::getCPUSubType(const Triple &T,
return CPU_SUBTYPE_ARM64E_WITH_PTRAUTH_VERSION(PtrAuthABIVersion,
PtrAuthKernelABIVersion);
}
+
+Triple MachO::getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
+ const char **McpuDefault,
+ const char **ArchFlag) {
+ if (McpuDefault)
+ *McpuDefault = nullptr;
+ if (ArchFlag)
+ *ArchFlag = nullptr;
+
+ switch (CPUType) {
+ case MachO::CPU_TYPE_I386:
+ switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+ case MachO::CPU_SUBTYPE_I386_ALL:
+ if (ArchFlag)
+ *ArchFlag = "i386";
+ return Triple("i386-apple-darwin");
+ default:
+ return Triple();
+ }
+ case MachO::CPU_TYPE_X86_64:
+ switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+ case MachO::CPU_SUBTYPE_X86_64_ALL:
+ if (ArchFlag)
+ *ArchFlag = "x86_64";
+ return Triple("x86_64-apple-darwin");
+ case MachO::CPU_SUBTYPE_X86_64_H:
+ if (ArchFlag)
+ *ArchFlag = "x86_64h";
+ return Triple("x86_64h-apple-darwin");
+ default:
+ return Triple();
+ }
+ case MachO::CPU_TYPE_ARM:
+ switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+ case MachO::CPU_SUBTYPE_ARM_V4T:
+ if (ArchFlag)
+ *ArchFlag = "armv4t";
+ return Triple("armv4t-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_V5TEJ:
+ if (ArchFlag)
+ *ArchFlag = "armv5e";
+ return Triple("armv5e-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_XSCALE:
+ if (ArchFlag)
+ *ArchFlag = "xscale";
+ return Triple("xscale-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_V6:
+ if (ArchFlag)
+ *ArchFlag = "armv6";
+ return Triple("armv6-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_V6M:
+ if (McpuDefault)
+ *McpuDefault = "cortex-m0";
+ if (ArchFlag)
+ *ArchFlag = "armv6m";
+ return Triple("armv6m-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_V7:
+ if (ArchFlag)
+ *ArchFlag = "armv7";
+ return Triple("armv7-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_V7EM:
+ if (McpuDefault)
+ *McpuDefault = "cortex-m4";
+ if (ArchFlag)
+ *ArchFlag = "armv7em";
+ return Triple("thumbv7em-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_V7K:
+ if (McpuDefault)
+ *McpuDefault = "cortex-a7";
+ if (ArchFlag)
+ *ArchFlag = "armv7k";
+ return Triple("armv7k-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_V7M:
+ if (McpuDefault)
+ *McpuDefault = "cortex-m3";
+ if (ArchFlag)
+ *ArchFlag = "armv7m";
+ return Triple("thumbv7m-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM_V7S:
+ if (McpuDefault)
+ *McpuDefault = "cortex-a7";
+ if (ArchFlag)
+ *ArchFlag = "armv7s";
+ return Triple("armv7s-apple-darwin");
+ default:
+ return Triple();
+ }
+ case MachO::CPU_TYPE_ARM64:
+ switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+ case MachO::CPU_SUBTYPE_ARM64_ALL:
+ if (McpuDefault)
+ *McpuDefault = "cyclone";
+ if (ArchFlag)
+ *ArchFlag = "arm64";
+ return Triple("arm64-apple-darwin");
+ case MachO::CPU_SUBTYPE_ARM64E:
+ if (McpuDefault)
+ *McpuDefault = "apple-a12";
+ if (ArchFlag)
+ *ArchFlag = "arm64e";
+ return Triple("arm64e-apple-darwin");
+ default:
+ return Triple();
+ }
+ case MachO::CPU_TYPE_ARM64_32:
+ switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+ case MachO::CPU_SUBTYPE_ARM64_32_V8:
+ if (McpuDefault)
+ *McpuDefault = "cyclone";
+ if (ArchFlag)
+ *ArchFlag = "arm64_32";
+ return Triple("arm64_32-apple-darwin");
+ default:
+ return Triple();
+ }
+ case MachO::CPU_TYPE_POWERPC:
+ switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+ case MachO::CPU_SUBTYPE_POWERPC_ALL:
+ if (ArchFlag)
+ *ArchFlag = "ppc";
+ return Triple("ppc-apple-darwin");
+ default:
+ return Triple();
+ }
+ case MachO::CPU_TYPE_POWERPC64:
+ switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
+ case MachO::CPU_SUBTYPE_POWERPC_ALL:
+ if (ArchFlag)
+ *ArchFlag = "ppc64";
+ return Triple("ppc64-apple-darwin");
+ default:
+ return Triple();
+ }
+ default:
+ return Triple();
+ }
+}
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp
index e09dc947c2779..309a3f3fbc635 100644
--- a/llvm/lib/Object/MachOObjectFile.cpp
+++ b/llvm/lib/Object/MachOObjectFile.cpp
@@ -2706,143 +2706,6 @@ Triple::ArchType MachOObjectFile::getArch(uint32_t CPUType, uint32_t CPUSubType)
}
}
-Triple MachOObjectFile::getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
- const char **McpuDefault,
- const char **ArchFlag) {
- if (McpuDefault)
- *McpuDefault = nullptr;
- if (ArchFlag)
- *ArchFlag = nullptr;
-
- switch (CPUType) {
- case MachO::CPU_TYPE_I386:
- switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
- case MachO::CPU_SUBTYPE_I386_ALL:
- if (ArchFlag)
- *ArchFlag = "i386";
- return Triple("i386-apple-darwin");
- default:
- return Triple();
- }
- case MachO::CPU_TYPE_X86_64:
- switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
- case MachO::CPU_SUBTYPE_X86_64_ALL:
- if (ArchFlag)
- *ArchFlag = "x86_64";
- return Triple("x86_64-apple-darwin");
- case MachO::CPU_SUBTYPE_X86_64_H:
- if (ArchFlag)
- *ArchFlag = "x86_64h";
- return Triple("x86_64h-apple-darwin");
- default:
- return Triple();
- }
- case MachO::CPU_TYPE_ARM:
- switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
- case MachO::CPU_SUBTYPE_ARM_V4T:
- if (ArchFlag)
- *ArchFlag = "armv4t";
- return Triple("armv4t-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_V5TEJ:
- if (ArchFlag)
- *ArchFlag = "armv5e";
- return Triple("armv5e-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_XSCALE:
- if (ArchFlag)
- *ArchFlag = "xscale";
- return Triple("xscale-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_V6:
- if (ArchFlag)
- *ArchFlag = "armv6";
- return Triple("armv6-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_V6M:
- if (McpuDefault)
- *McpuDefault = "cortex-m0";
- if (ArchFlag)
- *ArchFlag = "armv6m";
- return Triple("armv6m-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_V7:
- if (ArchFlag)
- *ArchFlag = "armv7";
- return Triple("armv7-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_V7EM:
- if (McpuDefault)
- *McpuDefault = "cortex-m4";
- if (ArchFlag)
- *ArchFlag = "armv7em";
- return Triple("thumbv7em-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_V7K:
- if (McpuDefault)
- *McpuDefault = "cortex-a7";
- if (ArchFlag)
- *ArchFlag = "armv7k";
- return Triple("armv7k-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_V7M:
- if (McpuDefault)
- *McpuDefault = "cortex-m3";
- if (ArchFlag)
- *ArchFlag = "armv7m";
- return Triple("thumbv7m-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM_V7S:
- if (McpuDefault)
- *McpuDefault = "cortex-a7";
- if (ArchFlag)
- *ArchFlag = "armv7s";
- return Triple("armv7s-apple-darwin");
- default:
- return Triple();
- }
- case MachO::CPU_TYPE_ARM64:
- switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
- case MachO::CPU_SUBTYPE_ARM64_ALL:
- if (McpuDefault)
- *McpuDefault = "cyclone";
- if (ArchFlag)
- *ArchFlag = "arm64";
- return Triple("arm64-apple-darwin");
- case MachO::CPU_SUBTYPE_ARM64E:
- if (McpuDefault)
- *McpuDefault = "apple-a12";
- if (ArchFlag)
- *ArchFlag = "arm64e";
- return Triple("arm64e-apple-darwin");
- default:
- return Triple();
- }
- case MachO::CPU_TYPE_ARM64_32:
- switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
- case MachO::CPU_SUBTYPE_ARM64_32_V8:
- if (McpuDefault)
- *McpuDefault = "cyclone";
- if (ArchFlag)
- *ArchFlag = "arm64_32";
- return Triple("arm64_32-apple-darwin");
- default:
- return Triple();
- }
- case MachO::CPU_TYPE_POWERPC:
- switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
- case MachO::CPU_SUBTYPE_POWERPC_ALL:
- if (ArchFlag)
- *ArchFlag = "ppc";
- return Triple("ppc-apple-darwin");
- default:
- return Triple();
- }
- case MachO::CPU_TYPE_POWERPC64:
- switch (CPUSubType & ~MachO::CPU_SUBTYPE_MASK) {
- case MachO::CPU_SUBTYPE_POWERPC_ALL:
- if (ArchFlag)
- *ArchFlag = "ppc64";
- return Triple("ppc64-apple-darwin");
- default:
- return Triple();
- }
- default:
- return Triple();
- }
-}
-
Triple MachOObjectFile::getHostArch() {
return Triple(sys::getDefaultTargetTriple());
}
|
✅ With the latest revision this PR passed the C/C++ code formatter. |
3457467
to
cb3e04f
Compare
@@ -17,6 +17,7 @@ | |||
#include "llvm/Support/DataTypes.h" | |||
#include "llvm/Support/Error.h" | |||
#include "llvm/Support/SwapByteOrder.h" | |||
#include "llvm/TargetParser/Triple.h" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can drop the forward-declare at l24 BTW; I guess having Triple::ArchType be its own forward-declarable type would avoid this and other includes, but one problem at a time!
1b8ac1a
to
d2a7664
Compare
There's nothing ObjectFile specific about getArchTriple, so move it into the BinaryFormat library so that clients can use it without taking a dependence on libObject. MachOObjectFile::getArchTriple is updated to call through to the moved implementation.
d2a7664
to
c37759d
Compare
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/10/builds/14784 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/203/builds/25276 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/204/builds/24088 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/205/builds/24065 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/88/builds/16773 Here is the relevant piece of the build log for the reference
|
…161468)" Reverts commit cd32b9b while I investigate some bot failures, e.g. https://lab.llvm.org/buildbot/#/builders/10/builds/14784.
Link failures should be fixed by #161949. |
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/160/builds/26055 Here is the relevant piece of the build log for the reference
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/180/builds/26195 Here is the relevant piece of the build log for the reference
|
There's nothing ObjectFile specific about getArchTriple, so move it into the BinaryFormat library so that clients can use it without taking a dependence on libObject.
MachOObjectFile::getArchTriple is updated to call through to the moved implementation.