Commit Graph

84 Commits

Author SHA1 Message Date
stevewan a7e9c5a39f [llvm-ar][test][AIX] Unsupport error-opening-directory.test on AIX
Summary:
The test fails on AIX as it allows open() and read() on a directory. This patch adds `# UNSUPPORTED:
system-aix` to the test to prevent it from running on AIX.

Reviewers: sameerarora101, daltenty, ShuhongL, hubert.reinterpretcast, MaskRay, smeenai, alexshap

Reviewed By: sameerarora101, hubert.reinterpretcast, MaskRay, smeenai

Subscribers: MaskRay, rupprecht, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D83579
2020-07-13 12:00:07 -04:00
sameerarora101 fc81f48fde [llvm-ar][test] Unsupport error-opening-directory.test on FreeBSD
Differential Revision: https://reviews.llvm.org/D82786
2020-07-03 10:57:32 -07:00
Sameer Arora 99e1b0dc8f [llvm-ar] Update error messages and tests as per latest preferred style
It updates two error messages under `performOperation` in the file
llvm-ar.cpp. Furthermore, it also updates tests that print out these
error messages: `llvm/test/Object/ar-create.test` and
`llvm/test/tools/llvm-ar/print.test`.

Reviewed By: jhenderson, MaskRay

Differential Revision: https://reviews.llvm.org/D80846
2020-06-05 10:37:26 -07:00
Sameer Arora 399b12700b [llvm-ar] Add more tests for errors in opening archives
Add 2 more tests for the function performOperation under llvm-ar.cpp. It
tests the scenario when the archive could not be opened for reasons
other than `no_such_file_or_directory` In particular, it tests for the
cases `permission_denied` and `is_a_directory` for the target archive.

Reviewed By: alexshap, jhenderson, smeenai, MaskRay

Differential Revision: https://reviews.llvm.org/D80838
2020-06-05 10:36:58 -07:00
Pirama Arumuga Nainar fe5599eac6 [llvm-ar] Use target triple to deduce archive kind for bitcode inputs
Summary:
When using full LTO on cross-compile settings, instead of generating the
default archive kind of the host platform, we could deduce the archive
kind based on the target triple.

This specifically addresses https://github.com/android/ndk/issues/1209
by making it possible to drop llvm-ar in place of GNU ar without extra
flags.

Reviewers: compnerd, pcc, srhines, danalbert

Subscribers: hiraditya, MaskRay, steven_wu, dexonsmith, rupprecht, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D76461
2020-03-20 13:19:44 -07:00
gbreynoo 5e0f9d5d3c [llvm-ar][test] Add to llvm-ar test coverage
- Added handling of thin archives to symtab.test.
- Added handling of newlines to response.test.
- 62fa3332c9 exposed behaviour
  regarding the use of -- on the command line. Added
  double-hyphen.test to cover this.

Differential Revision: https://reviews.llvm.org/D73333
2020-03-04 10:56:48 +00:00
gbreynoo 62fa3332c9 [llvm-ar] Fix llvm-ar response file reading on Windows
Response files where not being correctly read on Windows, this change
fixes the issue and adds some tests.

Differential Revision: https://reviews.llvm.org/D69665
2020-03-03 13:42:57 +00:00
Hans Wennborg f00ab188f4 Make quick-append.test resilient to running in paths with '1.o' in the name 2020-02-03 11:35:24 +01:00
Fangrui Song 4d53b99c5d [llvm-ar] Improve tool selection heuristic
If llvm-ar is installed at arm-pokymllib32-linux-gnueabi-llvm-ar, it may
think it is llvm-lib due to the "lib" substring.

Improve the heuristic to make all the following work as intended:

llvm-ar-9 (llvm-9 package on Debian)
llvm-ranlib.exe
Lib.exe (reported by D44808)
arm-pokymllib32-linux-gnueabi-llvm-ar (reported by D71030)

Reviewed By: raj.khem, rupprecht

Differential Revision: https://reviews.llvm.org/D71302
2019-12-10 17:32:50 -08:00
gbreynoo 8c1e1d1482 [llvm-ar][test] Add to thin archive test coverage
This diff adds test coverage for thin archives including additions to
existing tests. In some cases I have updated the formats of these tests
to better match other tests in the archive.

Differential Revision: https://reviews.llvm.org/D70969
2019-12-04 16:17:42 +00:00
Sam Clegg 6278fba9b1 llvm-ranlib/nm: Don't print usage message except for usage errors
Also, fix a bug in ranlib where it didn't correctly detect being run
without any argument and would try to operate on the empty string.

Differential Revision: https://reviews.llvm.org/D70021
2019-11-08 15:17:07 -08:00
Fangrui Song 7d2b0ec345 [llvm-ar] Support verbose mode for operation 'x'
Reviewed By: jhenderson, kongyi

Differential Revision: https://reviews.llvm.org/D69911
2019-11-07 09:26:31 -08:00
Thomas Preud'homme 0bab0538d8 [test] Use system locale for mri-utf8.test
Summary:
llvm-ar's mri-utf8.test test relies on the en_US.UTF-8 locale to be
installed for its last RUN line to work. If not installed, the unicode
string gets encoded (interpreted) as ascii which fails since the most
significant byte is non zero. This commit changes the test to only rely
on the system being able to encode the pound sign in its default
encoding (e.g. UTF-16 for Microsoft Windows) by always opening the file
via input/output redirection. This avoids forcing a given locale to be
present and supported. A Byte Order Mark is also added to help
recognizing the encoding of the file and its endianness. Finally the
XFAIL on system-darwin is removed since the test actually passes fine on
Mac OS X and XFAIL was only added because it failed before.

Reviewers: gbreynoo, MaskRay, rupprecht, JamesNagurne, jfb

Subscribers: dexonsmith, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D68472
2019-11-04 15:25:45 +00:00
Jordan Rupprecht a86bd22515 [llvm-ar] Implement the V modifier as an alias for --version
Summary: Also update the help modifier (h) so that it works as a modifier and not just as a standalone `h`. For example, `llvm-ar h` prints the help message, but `llvm-ar xh` currently prints `unknown option h`.

Reviewers: MaskRay, gbreynoo

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 375028
2019-10-16 18:39:52 +00:00
Owen Reynolds 28a3b2aeb4 [llvm-ar] Make paths case insensitive when on windows
When on windows gnu-ar treats member names as case insensitive. This
commit implements the same behaviour.

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

llvm-svn: 375002
2019-10-16 14:07:57 +00:00
Thomas Preud'homme 48edae336b Revert "[test] Use system locale for mri-utf8.test"
This reverts commit r374318 / b6f1d1fa0e.

llvm-svn: 374349
2019-10-10 13:39:12 +00:00
Thomas Preud'homme b6f1d1fa0e [test] Use system locale for mri-utf8.test
Summary:
llvm-ar's mri-utf8.test test relies on the en_US.UTF-8 locale to be
installed for its last RUN line to work. If not installed, the unicode
string gets encoded (interpreted) as ascii which fails since the most
significant byte is non zero. This commit changes the test to only rely
on the system being able to encode the pound sign in its default
encoding (e.g. UTF-16 for Microsoft Windows) by always opening the file
via input/output redirection. This avoids forcing a given locale to be
present and supported. A Byte Order Mark is also added to help
recognizing the encoding of the file and its endianness.

Reviewers: gbreynoo, MaskRay, rupprecht, JamesNagurne, jfb

Subscribers: dexonsmith, llvm-commits

Tags: #llvm

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

llvm-svn: 374318
2019-10-10 11:48:30 +00:00
Owen Reynolds e64369e76e [llvm-ar][test] Clarified comment
The test is dependant on the installation of the en_US.UTF-8
locale. The reasoning for this is clarified in the amended comment.

llvm-svn: 373737
2019-10-04 12:26:25 +00:00
Owen Reynolds 4682b9c46b Revert [test] Remove locale dependency for mri-utf8.test
This reverts r373700 (git commit b455ebf921)

llvm-svn: 373728
2019-10-04 11:12:37 +00:00
Thomas Preud'homme b455ebf921 [test] Remove locale dependency for mri-utf8.test
Summary:
llvm-ar's mri-utf8.test test relies on the en_US.UTF-8 locale to be
installed for its last RUN line to work. If not installed, the unicode
string gets encoded (interpreted) as ascii which fails since the most
significant byte is non zero. This commit changes the call to open to
use a binary literal of the UTF-8 encoding for the pound sign instead,
thus bypassing the encoding step.

Note that the echo to create the <pound sign>.txt file will work
regardless of the locale because both the shell and the echo (in case
it's not a builtin of the shell concerned) only care about ascii
character to operate. Indeed, the mri-utf8.test file (and in particular
the pound sign) is encoded in UTF-8 and UTF-8 guarantees only ascii
characters can create bytes that can be interpreted as ascii characters
(i.e. bytes with the most significant bit null).

So the process to break down the filename in the line goes something
along:
- find an ascii chevron '>'
- find beginning of the filename by removing ascii space-like characters
- find ascii newline character indicating the end of the redirection (no
  semicolon ';', closing curly bracket '}' or parenthesis ')' or the
  like
- create a file whose name is made of all the bytes in between beginning
  and end of filename *without interpretting them*

Reviewers: gbreynoo, MaskRay, rupprecht, JamesNagurne, jfb

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 373700
2019-10-04 07:13:46 +00:00
Martin Storsjo 30cb220115 [test] Remove a needless declaration of REQUIRES: target-windows
This test only relies on running on a case insensitive file system,
the exact target triple of the toolchain shouldn't matter.

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

llvm-svn: 373697
2019-10-04 07:05:29 +00:00
Owen Reynolds b4e2d471f7 [llvm-ar][test] Move MRI tests from "llvm/test/Object/"
llvm/test/Object/ contains tests for the ArchiveWriter library, however
support for MRI scripts is found in llvm-ar and not the library. This
diff moves the MRI related tests and removes those that are duplicates.

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

llvm-svn: 372973
2019-09-26 12:32:11 +00:00
Owen Reynolds 25040f8dec Reapply [llvm-ar] Include a line number when failing to parse an MRI script
Reapply r372309

Errors that occur when reading an MRI script now include a corresponding
line number.

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

llvm-svn: 372374
2019-09-20 08:10:14 +00:00
Fangrui Song c768ad94b7 [llvm-ar] Removes repetition in the error message
As per bug 40244, fixed an error where the error message was repeated.

Differential Revision: https://reviews.llvm.org/D67038
Patch by Yu Jian (wyjw)

llvm-svn: 372370
2019-09-20 04:40:44 +00:00
Owen Reynolds aa03c14827 Revert [llvm-ar] Include a line number when failing to parse an MRI script
Revert r372309 due to buildbot failures

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

llvm-svn: 372311
2019-09-19 11:22:59 +00:00
Owen Reynolds 04398c729b [llvm-ar] Include a line number when failing to parse an MRI script
Errors that occur when reading an MRI script now include a corresponding
line number.

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

llvm-svn: 372309
2019-09-19 10:51:43 +00:00
Fangrui Song 1ecba6f8ef [llvm-ar] Parse 'h' and '-h': display help and exit
Support `llvm-ar h` and `llvm-ar -h` because they may be what users try
at first. Note, operation 'h' is undocumented in GNU ar.

Reviewed By: jhenderson

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

llvm-svn: 372088
2019-09-17 09:25:52 +00:00
Fangrui Song 8a468031cd [llvm-ar] Uncapitalize error messages and delete full stop
Most GNU binutils don't append full stops in error messages. This
convention has been adopted by a bunch of LLVM binary utilities. Make
llvm-ar follow the convention as well.

Reviewed By: grimar

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

llvm-svn: 371912
2019-09-14 01:18:47 +00:00
Owen Reynolds 47298393d2 [llvm-ar] Accept file paths with windows format slashes
The internal representation of llvm-ar archives uses linux style slashes
for paths, no matter the OS. In the case of windows this meant file
paths input intending to match existing members would only match if
linux style slashes where used. This change allows either slash
direction to be input by the user.

This change includes removing an unnecessary call to normalisePath and
moving the call of another.

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

llvm-svn: 368573
2019-08-12 14:00:28 +00:00
Owen Reynolds 20b2cd3c0b [llvm-ar][test] Correct tests marked as expected fails
In diff D64802 I marked three tests as expected failures for darwin but
James Nagurne saw these fail on his downstream embedded ARM cross
compiler.
I believe XFAIL: system-darwin should be used instead of using XFAIL:
darwin due to the problem being related to the darwin host and not the
target.

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

llvm-svn: 368564
2019-08-12 13:04:02 +00:00
Owen Reynolds 18c2671352 [llvm-ar][test] Fix move operation tests
This fixes two tests that did not remove existing archives
before testing due to mistyped archive names.

llvm-svn: 366908
2019-07-24 14:26:18 +00:00
Owen Reynolds 629273ec09 [llvm-ar][test] Add tests failing on Darwin
These tests that failed on Darwin but passed on other machines due to the default archive format differing
on a Darwin machine, and what looks to be bugs in the output of this format.
I can not investigate these issue further so the tests are considered expected failures on Darwin.

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

llvm-svn: 366334
2019-07-17 15:10:02 +00:00
Fangrui Song 62069ac310 [llvm-ar][test] \r\n -> \n
Also simplify some empty output tests with 'count 0'

llvm-svn: 366324
2019-07-17 13:40:42 +00:00
Owen Reynolds 247add6f3a [llvm-ar][test] Add coverage for replace and update key letters
Some more tests to increase llvm-ar test coverage, this time for replace 'r' and update 'u'.

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

llvm-svn: 366309
2019-07-17 10:16:44 +00:00
Owen Reynolds 8e482eb5cb [llvm-ar][test] Add to llvm-ar test coverage
This change adds tests to cover existing llvm-ar functionality.
print.test is omitted due to failing on Darwin.

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

llvm-svn: 366209
2019-07-16 14:25:37 +00:00
Owen Reynolds 3a6aaa4391 Reapply [llvm-ar][test] Increase llvm-ar test coverage
This reapplies 365316 without extract.test due to failing on Darwin.

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

llvm-svn: 366206
2019-07-16 12:53:59 +00:00
Owen Reynolds 971ac4ca2c Reapply [llvm-ar][test] Add to MRI test coverage
This reapplies 363232 without mri-utf8.test due to failing on Darwin.

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

llvm-svn: 366201
2019-07-16 11:02:11 +00:00
JF Bastien 5a6941820b Revert "Reapply [llvm-ar][test] Increase llvm-ar test coverage"
llvm-ar.extract.test has been failing on greendragon and gone unfixed.

llvm-svn: 365383
2019-07-08 20:06:36 +00:00
Owen Reynolds 1159fe3f6e Reapply [llvm-ar][test] Increase llvm-ar test coverage
This change adds tests to cover existing llvm-ar functionality.

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

llvm-svn: 365318
2019-07-08 13:41:52 +00:00
Owen Reynolds 0c5fe7a440 Revert [llvm-ar][test] Increase llvm-ar test coverage
Reverted due to test failures

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

llvm-svn: 365317
2019-07-08 13:08:25 +00:00
Owen Reynolds 870d9c61b0 [llvm-ar][test] Increase llvm-ar test coverage
This change adds tests to cover existing llvm-ar functionality.

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

llvm-svn: 365316
2019-07-08 12:54:24 +00:00
JF Bastien 223ad85c69 Revert "[llvm-ar][test] Add to MRI test coverage"
This reverts commit 250015bacf.
r365039 was re-commit of D63197 and failed on Mac. Reid XFAIL'd it, but I'd rather jsut revert and have it fixed properly.

llvm-svn: 365084
2019-07-03 20:47:53 +00:00
Reid Kleckner f12b75b6a7 Try to XFAIL mri-utf8.test on Mac
llvm-svn: 365076
2019-07-03 20:14:54 +00:00
Owen Reynolds 250015bacf [llvm-ar][test] Add to MRI test coverage
This reapplies 363232 that was reverted due to a buildbot test failure, this build bot has now been fixed.

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

llvm-svn: 365039
2019-07-03 13:47:29 +00:00
Sam Clegg b72664fd21 Partial revert of "[llvm-ar] Document response file support in --help"
This is partial revert of 70a8027c60.

The test apparently failed on win32 bots due to the way slashes in
pathnames are handled.

llvm-svn: 364705
2019-06-29 01:53:26 +00:00
Sam Clegg 70a8027c60 [llvm-ar] Document response file support in --help
Also a test for this.

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

llvm-svn: 364673
2019-06-28 18:48:05 +00:00
Owen Reynolds 8d59f5370d Revert [llvm-ar][test] Add to MRI test coverage
This reverts 363232 due to mru-utf8.test buildbot test failure

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

llvm-svn: 363239
2019-06-13 09:02:33 +00:00
Owen Reynolds 02eac87ba3 [llvm-ar][test] Add to MRI test coverage
This change adds tests to cover existing MRI script functionality.

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

llvm-svn: 363232
2019-06-13 07:45:12 +00:00
Jordan Rupprecht 146a154e61 [llvm-ar][test] Relax lit directory assumptions in thin-archive.test
Summary: thin-archive.test assumes the Output/<testname> structure that lit creates. Rewrite the test in a way that still tests the same thing (creating via relative path and adding via absolute path) but doesn't assume this specific lit structure, making it possible to run in a lit emulator.

Reviewers: gbreynoo

Reviewed By: gbreynoo

Subscribers: llvm-commits, bkramer

Tags: #llvm

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

llvm-svn: 363189
2019-06-12 18:41:27 +00:00
Owen Reynolds bf5bca5bea [llvm-ar] Create thin archives with MRI scripts
This patch implements the "CREATE_THIN" MRI script command, allowing thin archives to be created via MRI scripts. 

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

llvm-svn: 362704
2019-06-06 13:19:50 +00:00