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. This was originally reverted in 577d9ce35532439203411c999deefc9c80e04c69; this version makes a test agnostic to the presence of backslashes in paths on some platforms. Patch By: Ravi Ramaseshan Differential Revision: https://reviews.llvm.org/D74811
This commit is contained in:
parent
42060c0a98
commit
340feac672
|
@ -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{{.+}}"
|
||||
|
||||
// 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