summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support/CommandLine.cpp
diff options
context:
space:
mode:
authorSerge Pavlov <sepavloff@gmail.com>2016-11-20 06:25:07 +0000
committerSerge Pavlov <sepavloff@gmail.com>2016-11-20 06:25:07 +0000
commitf258ff1fa9d926519c8b0cbb159d39b89dd1437f (patch)
tree396c5d3dcde8bf5100237e65ba9013773cf2e095 /llvm/lib/Support/CommandLine.cpp
parent9f8cb730ebbcac7278b80d6896d65e344d4c207a (diff)
downloadbcm5719-llvm-f258ff1fa9d926519c8b0cbb159d39b89dd1437f.tar.gz
bcm5719-llvm-f258ff1fa9d926519c8b0cbb159d39b89dd1437f.zip
Fix file name resolution in nested response files
If a response file in construct `@file` was specified by relative name, constructs `@file` nested within it were resolved incorrectly if the flag RelativeNames in call to ExpandResponseFile was set to true. This feature is used in configuration files, tests for it are in respective change (see D24933). llvm-svn: 287482
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
-rw-r--r--llvm/lib/Support/CommandLine.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Support/CommandLine.cpp b/llvm/lib/Support/CommandLine.cpp
index dccb5d6962f..c9751c093d6 100644
--- a/llvm/lib/Support/CommandLine.cpp
+++ b/llvm/lib/Support/CommandLine.cpp
@@ -30,6 +30,7 @@
#include "llvm/Support/ConvertUTF.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MemoryBuffer.h"
@@ -911,6 +912,11 @@ static bool ExpandResponseFile(StringRef FName, StringSaver &Saver,
if (llvm::sys::path::is_relative(FileName)) {
SmallString<128> ResponseFile;
ResponseFile.append(1, '@');
+ if (llvm::sys::path::is_relative(FName)) {
+ SmallString<128> curr_dir;
+ llvm::sys::fs::current_path(curr_dir);
+ ResponseFile.append(curr_dir.str());
+ }
llvm::sys::path::append(
ResponseFile, llvm::sys::path::parent_path(FName), FileName);
NewArgv[I] = Saver.save(ResponseFile.c_str()).data();
OpenPOWER on IntegriCloud