mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-27 06:54:30 +00:00
[llvm-ar] Support an options string that start with a dash
Some projects call $AR like "$AR -crs output input1 input2". Differential Revision: https://reviews.llvm.org/D39538 llvm-svn: 317358
This commit is contained in:
parent
9583dc1ef1
commit
2af6576330
@ -4,7 +4,8 @@ RUN: yaml2obj %S/Inputs/coff.yaml -o %t-coff.o
|
||||
RUN: rm -f %t.ar
|
||||
RUN: llvm-ar crs %t.ar %t-macho.o
|
||||
RUN: grep -q __.SYMDEF %t.ar
|
||||
RUN: llvm-ar crs %t.ar %t-coff.o
|
||||
Test that an option string prefixed by a dash works.
|
||||
RUN: llvm-ar -crs %t.ar %t-coff.o
|
||||
RUN: grep -q __.SYMDEF %t.ar
|
||||
|
||||
RUN: rm -f %t.ar
|
||||
|
@ -127,6 +127,8 @@ static cl::extrahelp MoreHelp(
|
||||
" [v] - be verbose about actions taken\n"
|
||||
);
|
||||
|
||||
static const char OptionChars[] = "dmpqrtxabiosSTucv";
|
||||
|
||||
// This enumeration delineates the kinds of operations on an archive
|
||||
// that are permitted.
|
||||
enum ArchiveOperation {
|
||||
@ -864,6 +866,24 @@ int main(int argc, char **argv) {
|
||||
Stem.find("lib") != StringRef::npos)
|
||||
return libDriverMain(makeArrayRef(argv, argc));
|
||||
|
||||
for (int i = 1; i < argc; i++) {
|
||||
// If an argument starts with a dash and only contains chars
|
||||
// that belong to the options chars set, remove the dash.
|
||||
// We can't handle it after the command line options parsing
|
||||
// is done, since it will error out on an unrecognized string
|
||||
// starting with a dash.
|
||||
// Make sure this doesn't match the actual llvm-ar specific options
|
||||
// that start with a dash.
|
||||
StringRef S = argv[i];
|
||||
if (S.startswith("-") &&
|
||||
S.find_first_not_of(OptionChars, 1) == StringRef::npos) {
|
||||
argv[i]++;
|
||||
break;
|
||||
}
|
||||
if (S == "--")
|
||||
break;
|
||||
}
|
||||
|
||||
// Have the command line options parsed and handle things
|
||||
// like --help and --version.
|
||||
cl::ParseCommandLineOptions(argc, argv,
|
||||
|
Loading…
x
Reference in New Issue
Block a user