forked from OSchip/llvm-project
[macho] Allow CPUSubtype to contribute to architecture identification
Summary: Sometimes the CPUSubtype determines the Triple::ArchType that must be used. Add the subtype to the API's to allow targets that need this to correctly identify the contents of the binary. Reviewers: pete Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D70345
This commit is contained in:
parent
c941db5b1a
commit
1791901787
|
@ -567,7 +567,7 @@ public:
|
||||||
static StringRef guessLibraryShortName(StringRef Name, bool &isFramework,
|
static StringRef guessLibraryShortName(StringRef Name, bool &isFramework,
|
||||||
StringRef &Suffix);
|
StringRef &Suffix);
|
||||||
|
|
||||||
static Triple::ArchType getArch(uint32_t CPUType);
|
static Triple::ArchType getArch(uint32_t CPUType, uint32_t CPUSubType);
|
||||||
static Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
|
static Triple getArchTriple(uint32_t CPUType, uint32_t CPUSubType,
|
||||||
const char **McpuDefault = nullptr,
|
const char **McpuDefault = nullptr,
|
||||||
const char **ArchFlag = nullptr);
|
const char **ArchFlag = nullptr);
|
||||||
|
|
|
@ -128,6 +128,10 @@ static unsigned getCPUType(const MachOObjectFile &O) {
|
||||||
return O.getHeader().cputype;
|
return O.getHeader().cputype;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned getCPUSubType(const MachOObjectFile &O) {
|
||||||
|
return O.getHeader().cpusubtype;
|
||||||
|
}
|
||||||
|
|
||||||
static uint32_t
|
static uint32_t
|
||||||
getPlainRelocationAddress(const MachO::any_relocation_info &RE) {
|
getPlainRelocationAddress(const MachO::any_relocation_info &RE) {
|
||||||
return RE.r_word0;
|
return RE.r_word0;
|
||||||
|
@ -2565,7 +2569,7 @@ StringRef MachOObjectFile::getFileFormatName() const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Triple::ArchType MachOObjectFile::getArch(uint32_t CPUType) {
|
Triple::ArchType MachOObjectFile::getArch(uint32_t CPUType, uint32_t CPUSubType) {
|
||||||
switch (CPUType) {
|
switch (CPUType) {
|
||||||
case MachO::CPU_TYPE_I386:
|
case MachO::CPU_TYPE_I386:
|
||||||
return Triple::x86;
|
return Triple::x86;
|
||||||
|
@ -2737,7 +2741,7 @@ ArrayRef<StringRef> MachOObjectFile::getValidArchs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
Triple::ArchType MachOObjectFile::getArch() const {
|
Triple::ArchType MachOObjectFile::getArch() const {
|
||||||
return getArch(getCPUType(*this));
|
return getArch(getCPUType(*this), getCPUSubType(*this));
|
||||||
}
|
}
|
||||||
|
|
||||||
Triple MachOObjectFile::getArchTriple(const char **McpuDefault) const {
|
Triple MachOObjectFile::getArchTriple(const char **McpuDefault) const {
|
||||||
|
|
Loading…
Reference in New Issue