[lld-macho] Fix order file arch filtering

We had a hardcoded check and a stale TODO, written back when we only had
support for one architecture.

Reviewed By: #lld-macho, thakis

Differential Revision: https://reviews.llvm.org/D102154
This commit is contained in:
Jez Ng 2021-05-10 15:45:20 -04:00
parent 2516b0b526
commit b1c3c2e4fc
4 changed files with 7 additions and 8 deletions

View File

@ -421,13 +421,13 @@ static void parseOrderFile(StringRef path) {
.StartsWith("ppc:", CPU_TYPE_POWERPC)
.StartsWith("ppc64:", CPU_TYPE_POWERPC64)
.Default(CPU_TYPE_ANY);
if (cpuType != CPU_TYPE_ANY && cpuType != target->cpuType)
continue;
// Drop the CPU type as well as the colon
if (cpuType != CPU_TYPE_ANY)
line = line.drop_until([](char c) { return c == ':'; }).drop_front();
// TODO: Update when we extend support for other CPUs
if (cpuType != CPU_TYPE_ANY && cpuType != CPU_TYPE_X86_64 &&
cpuType != CPU_TYPE_ARM64)
continue;
constexpr std::array<StringRef, 2> fileEnds = {".o:", ".o):"};
for (StringRef fileEnd : fileEnds) {
@ -869,7 +869,6 @@ bool macho::link(ArrayRef<const char *> argsArr, bool canExitEarly,
errorHandler().logName = args::getFilenameWithoutExe(argsArr[0]);
stderrOS.enable_colors(stderrOS.has_colors());
// TODO: Set up error handler properly, e.g. the errorLimitExceededMsg
MachOOptTable parser;
InputArgList args = parser.parse(argsArr.slice(1));

View File

@ -222,7 +222,7 @@ Optional<MemoryBufferRef> macho::readFile(StringRef path) {
return None;
}
if (read32be(&arch[i].cputype) != target->cpuType ||
if (read32be(&arch[i].cputype) != static_cast<uint32_t>(target->cpuType) ||
read32be(&arch[i].cpusubtype) != target->cpuSubtype)
continue;

View File

@ -70,7 +70,7 @@ public:
}
uint32_t magic;
uint32_t cpuType;
llvm::MachO::CPUType cpuType;
uint32_t cpuSubtype;
uint64_t pageZeroSize;

View File

@ -127,7 +127,7 @@ x86_64:-[Foo doFoo:andBar:]
_main
#--- ord-arch-nomatch
ppc:-[Foo doFoo:andBar:]
arm64:-[Foo doFoo:andBar:]
_main
-[Foo doFoo:andBar:]