diff options
Diffstat (limited to 'Common/Args.cpp')
-rw-r--r-- | Common/Args.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Common/Args.cpp b/Common/Args.cpp index ff77bfcc3b76..3f0671d72a66 100644 --- a/Common/Args.cpp +++ b/Common/Args.cpp @@ -13,6 +13,7 @@ #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringRef.h" #include "llvm/Option/ArgList.h" +#include "llvm/Support/Path.h" using namespace llvm; using namespace lld; @@ -40,7 +41,7 @@ std::vector<StringRef> lld::args::getStrings(opt::InputArgList &Args, int Id) { uint64_t lld::args::getZOptionValue(opt::InputArgList &Args, int Id, StringRef Key, uint64_t Default) { - for (auto *Arg : Args.filtered(Id)) { + for (auto *Arg : Args.filtered_reverse(Id)) { std::pair<StringRef, StringRef> KV = StringRef(Arg->getValue()).split('='); if (KV.first == Key) { uint64_t Result = Default; @@ -64,3 +65,9 @@ std::vector<StringRef> lld::args::getLines(MemoryBufferRef MB) { } return Ret; } + +StringRef lld::args::getFilenameWithoutExe(StringRef Path) { + if (Path.endswith_lower(".exe")) + return sys::path::stem(Path); + return sys::path::filename(Path); +} |