[PECOFF] Simplify /machine option handling

/machine:ebc was previously recognized but rejected. Unknown architecture
names were handled differently but eventually rejected too. We don't need
to distinguish them.

llvm-svn: 218344
This commit is contained in:
Rui Ueyama 2014-09-24 00:21:45 +00:00
parent 75c0127bb3
commit 251d9a34e2
3 changed files with 5 additions and 11 deletions

View File

@ -192,7 +192,6 @@ static llvm::COFF::MachineTypes stringToMachineType(StringRef str) {
// However, given that LLVM only supports ARM NT, default to that for now.
return llvm::StringSwitch<llvm::COFF::MachineTypes>(str.lower())
.Case("arm", llvm::COFF::IMAGE_FILE_MACHINE_ARMNT)
.Case("ebc", llvm::COFF::IMAGE_FILE_MACHINE_EBC)
.Case("x64", llvm::COFF::IMAGE_FILE_MACHINE_AMD64)
.Case("x86", llvm::COFF::IMAGE_FILE_MACHINE_I386)
.Default(llvm::COFF::IMAGE_FILE_MACHINE_UNKNOWN);

View File

@ -74,16 +74,6 @@ bool PECOFFLinkingContext::validateImpl(raw_ostream &diagnostics) {
return false;
}
switch (_machineType) {
case llvm::COFF::IMAGE_FILE_MACHINE_I386:
case llvm::COFF::IMAGE_FILE_MACHINE_AMD64:
case llvm::COFF::IMAGE_FILE_MACHINE_ARMNT:
break;
default:
diagnostics << "Machine type other than arm/x86/x86_64 is not supported.\n";
return false;
}
_writer = createWriterPECOFF(*this);
return true;
}

View File

@ -221,6 +221,11 @@ TEST_F(WinLinkParserTest, MachineArm) {
EXPECT_EQ(llvm::COFF::IMAGE_FILE_MACHINE_ARMNT, _context.getMachineType());
}
TEST_F(WinLinkParserTest, MachineUnknown) {
EXPECT_FALSE(parse("link.exe", "/machine:nosucharch", "a.obj", nullptr));
EXPECT_EQ("error: unknown machine type: nosucharch\n", errorMessage());
}
TEST_F(WinLinkParserTest, MajorImageVersion) {
EXPECT_TRUE(parse("link.exe", "/version:7", "foo.o", nullptr));
EXPECT_EQ(7, _context.getImageVersion().majorVersion);