[llvm] r364673 - [llvm-ar] Document response file support in --help

via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 28 16:54:27 PDT 2019


Hi Sam,

The test you added is failing when run on Windows:

http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/26661/steps/test/logs/stdio

FAIL: LLVM :: tools/llvm-ar/response-file.test (46663 of 50627)
******************** TEST 'LLVM :: tools/llvm-ar/response-file.test' FAILED ********************
Script:
--
: 'RUN: at line 1';   touch C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-a.txt C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-b.txt C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-c.txt
: 'RUN: at line 2';   echo "rcs C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp.a C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-a.txt C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-b.txt C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-c.txt" > C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-response
: 'RUN: at line 3';   rm -f C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp.a
: 'RUN: at line 4';   c:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\llvm-ar.exe @C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-response
: 'RUN: at line 5';   c:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\llvm-ar.exe t C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp.a | c:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\filecheck.exe C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\test\tools\llvm-ar\response-file.test
--
Exit Code: 1

Command Output (stdout):
--
$ ":" "RUN: at line 1"
$ "touch" "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-a.txt" "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-b.txt" "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-c.txt"
$ ":" "RUN: at line 2"
$ "echo" "rcs C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp.a C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-a.txt C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-b.txt C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-c.txt"
$ ":" "RUN: at line 3"
$ "rm" "-f" "C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp.a"
$ ":" "RUN: at line 4"
$ "c:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\llvm-ar.exe" "@C:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\test\tools\llvm-ar\Output\response-file.test.tmp-response"
# command output:

OVERVIEW: LLVM Archiver

USAGE: llvm-ar [options] [-]<operation>[modifiers] [relpos] [count] <archive> [files]
       llvm-ar -M [<mri-script]

OPTIONS:
  --format              - Archive format to create
    =default            -   default
    =gnu                -   gnu
    =darwin             -   darwin
    =bsd                -   bsd
  --plugin=<string>     - Ignored for compatibility
  --help                - Display available options
  --version             - Display the version of this program
  @<file>               - read options from <file>

OPERATIONS:
  d - delete [files] from the archive
  m - move [files] in the archive
  p - print [files] found in the archive
  q - quick append [files] to the archive
  r - replace or insert [files] into the archive
  s - act as ranlib
  t - display contents of archive
  x - extract [files] from the archive

MODIFIERS:
  [a] - put [files] after [relpos]
  [b] - put [files] before [relpos] (same as [i])
  [c] - do not warn if archive had to be created
  [D] - use zero for timestamps and uids/gids (default)
  [i] - put [files] before [relpos] (same as [b])
  [l] - ignored for compatibility
  [L] - add archive's contents
  [N] - use instance [count] of name
  [o] - preserve original dates
  [P] - use full names when matching (implied for thin archives)
  [s] - create an archive index (cf. ranlib)
  [S] - do not build a symbol table
  [T] - create a thin archive
  [u] - update only [files] newer than archive contents
  [U] - use actual timestamps and uids/gids
  [v] - be verbose about actions taken

# command stderr:
c:\ps4-buildslave2\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.obj\bin\llvm-ar.exe: error: C:ps4-buildslave2llvm-clang-lld-x86_64-scei-ps4-windows10pro-fastllvm.objtesttoolsllvm-arOutputresponse-file.test.tmp-a.txt: no such file or directory.


error: command failed with exit status: 1

From the output, it appears that the path separators used in the response file need to be escaped. If I alter the response file that is created to have paths like C:\\\\foo\\bar instead of C:\foo\bar, then the test seems to work. I suspect this is a bug in how llvm-ar is parsing paths in response files on Windows. Can you take a look?

Douglas Yung

-----Original Message-----
From: llvm-commits <llvm-commits-bounces at lists.llvm.org> On Behalf Of Sam Clegg via llvm-commits
Sent: Friday, June 28, 2019 11:48
To: llvm-commits at lists.llvm.org
Subject: [llvm] r364673 - [llvm-ar] Document response file support in --help

Author: sbc
Date: Fri Jun 28 11:48:05 2019
New Revision: 364673

URL: http://llvm.org/viewvc/llvm-project?rev=364673&view=rev
Log:
[llvm-ar] Document response file support in --help

Also a test for this.

Differential Revision: https://reviews.llvm.org/D63836

Added:
    llvm/trunk/test/tools/llvm-ar/response-file.test
Modified:
    llvm/trunk/tools/llvm-ar/llvm-ar.cpp

Added: llvm/trunk/test/tools/llvm-ar/response-file.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-ar/response-file.test?rev=364673&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-ar/response-file.test (added)
+++ llvm/trunk/test/tools/llvm-ar/response-file.test Fri Jun 28 11:48:05 2019
@@ -0,0 +1,9 @@
+RUN: touch %t-a.txt %t-b.txt %t-c.txt
+RUN: echo "rcs %t.a %t-a.txt %t-b.txt %t-c.txt" > %t-response
+RUN: rm -f %t.a
+RUN: llvm-ar @%t-response
+RUN: llvm-ar t %t.a | FileCheck %s
+
+CHECK:      a.txt
+CHECK-NEXT: b.txt
+CHECK-NEXT: c.txt

Modified: llvm/trunk/tools/llvm-ar/llvm-ar.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-ar/llvm-ar.cpp?rev=364673&r1=364672&r2=364673&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-ar/llvm-ar.cpp (original)
+++ llvm/trunk/tools/llvm-ar/llvm-ar.cpp Fri Jun 28 11:48:05 2019
@@ -78,6 +78,7 @@ OPTIONS:
   --plugin=<string>     - Ignored for compatibility
   --help                - Display available options
   --version             - Display the version of this program
+  @<file>               - read options from <file>
 
 OPERATIONS:
   d - delete [files] from the archive


_______________________________________________
llvm-commits mailing list
llvm-commits at lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits


More information about the llvm-commits mailing list