[llvm] r287482 - Fix file name resolution in nested response files
Serge Pavlov via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 19 22:25:08 PST 2016
Author: sepavloff
Date: Sun Nov 20 00:25:07 2016
New Revision: 287482
URL: http://llvm.org/viewvc/llvm-project?rev=287482&view=rev
Log:
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).
Modified:
llvm/trunk/lib/Support/CommandLine.cpp
Modified: llvm/trunk/lib/Support/CommandLine.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/CommandLine.cpp?rev=287482&r1=287481&r2=287482&view=diff
==============================================================================
--- llvm/trunk/lib/Support/CommandLine.cpp (original)
+++ llvm/trunk/lib/Support/CommandLine.cpp Sun Nov 20 00:25:07 2016
@@ -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
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();
More information about the llvm-commits
mailing list