aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/InterfaceStub
diff options
context:
space:
mode:
authorHaowei Wu <haowei@google.com>2023-03-22 16:41:47 -0700
committerHaowei Wu <haowei@google.com>2023-04-10 16:02:04 -0700
commit420526fb22f35df4750063ef4783b3774eaa371a (patch)
treefb35839cf42d6a6cd7397b6f618466b479979307 /llvm/lib/InterfaceStub
parentdea417f75e56bc87633bdd16711b401503a5a821 (diff)
downloadllvm-420526fb22f35df4750063ef4783b3774eaa371a.zip
llvm-420526fb22f35df4750063ef4783b3774eaa371a.tar.gz
llvm-420526fb22f35df4750063ef4783b3774eaa371a.tar.bz2
[ifs] Print an error when llvm-ifs is supplied with an unknown arch
This patch makes llvm-ifs print an error when the arch string from '--arch' flag or the IFS file 'Arch' field is unknown. Differential Revision: https://reviews.llvm.org/D146672
Diffstat (limited to 'llvm/lib/InterfaceStub')
-rw-r--r--llvm/lib/InterfaceStub/IFSHandler.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/InterfaceStub/IFSHandler.cpp b/llvm/lib/InterfaceStub/IFSHandler.cpp
index a7be08ac..aa5817dc 100644
--- a/llvm/lib/InterfaceStub/IFSHandler.cpp
+++ b/llvm/lib/InterfaceStub/IFSHandler.cpp
@@ -193,8 +193,13 @@ Expected<std::unique_ptr<IFSStub>> ifs::readIFSFromBuffer(StringRef Buf) {
"IFS version " + Stub->IfsVersion.getAsString() + " is unsupported.",
std::make_error_code(std::errc::invalid_argument));
if (Stub->Target.ArchString) {
- Stub->Target.Arch =
+ uint16_t eMachine =
ELF::convertArchNameToEMachine(*Stub->Target.ArchString);
+ if (eMachine == ELF::EM_NONE)
+ return createStringError(
+ std::make_error_code(std::errc::invalid_argument),
+ "IFS arch '" + *Stub->Target.ArchString + "' is unsupported");
+ Stub->Target.Arch = eMachine;
}
return std::move(Stub);
}