forked from OSchip/llvm-project
[Driver] Escape the program path for -frecord-command-line
Similar to the rest of the command line that is recorded, the program path must also have spaces and backslashes escaped. Without this parsing the recorded command line becomes hard on platforms like Windows where spaces and backslashes are common. Patch By: Ravi Ramaseshan Differential Revision: https://reviews.llvm.org/D74811
This commit is contained in:
parent
bf3f427ba2
commit
6123074d0c
|
@ -5882,7 +5882,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
Arg->render(Args, OriginalArgs);
|
||||
|
||||
SmallString<256> Flags;
|
||||
Flags += Exec;
|
||||
EscapeSpacesAndBackslashes(Exec, Flags);
|
||||
for (const char *OriginalArg : OriginalArgs) {
|
||||
SmallString<128> EscapedArg;
|
||||
EscapeSpacesAndBackslashes(OriginalArg, EscapedArg);
|
||||
|
@ -6790,7 +6790,7 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
|
|||
|
||||
SmallString<256> Flags;
|
||||
const char *Exec = getToolChain().getDriver().getClangProgramPath();
|
||||
Flags += Exec;
|
||||
EscapeSpacesAndBackslashes(Exec, Flags);
|
||||
for (const char *OriginalArg : OriginalArgs) {
|
||||
SmallString<128> EscapedArg;
|
||||
EscapeSpacesAndBackslashes(OriginalArg, EscapedArg);
|
||||
|
|
|
@ -572,6 +572,11 @@
|
|||
// CHECK-RECORD-GCC-SWITCHES: "-record-command-line"
|
||||
// CHECK-NO-RECORD-GCC-SWITCHES-NOT: "-record-command-line"
|
||||
// CHECK-RECORD-GCC-SWITCHES-ERROR: error: unsupported option '-frecord-command-line' for target
|
||||
// Test when clang is in a path containing a space.
|
||||
// RUN: mkdir -p "%t.r/with spaces"
|
||||
// RUN: cp %clang "%t.r/with spaces/clang"
|
||||
// RUN: "%t.r/with spaces/clang" -### -S -target x86_64-unknown-linux -frecord-gcc-switches %s 2>&1 | FileCheck -check-prefix=CHECK-RECORD-GCC-SWITCHES-ESCAPED %s
|
||||
// CHECK-RECORD-GCC-SWITCHES-ESCAPED: "-record-command-line" "{{.+}}/with\\ spaces/clang {{.+}}"
|
||||
|
||||
// RUN: %clang -### -S -ftrivial-auto-var-init=uninitialized %s 2>&1 | FileCheck -check-prefix=CHECK-TRIVIAL-UNINIT %s
|
||||
// RUN: %clang -### -S -ftrivial-auto-var-init=pattern %s 2>&1 | FileCheck -check-prefix=CHECK-TRIVIAL-PATTERN %s
|
||||
|
|
Loading…
Reference in New Issue