1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-01-31 12:41:49 +01:00

[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
This commit is contained in:
Fangrui Song 2019-09-14 01:18:47 +00:00
parent 23932e2e9b
commit 9274a89b29
20 changed files with 55 additions and 56 deletions

View File

@ -58,4 +58,4 @@ RUN: llvm-ar p %p/Inputs/thin.a evenlen | FileCheck %s --check-prefix=EVENLEN
EVENLEN: evenlen
RUN: not llvm-ar p %p/Inputs/thin-path.a t/test2.o 2>&1 | FileCheck %s --check-prefix=MISSING
MISSING: {{N|n}}o such file or directory.
MISSING: error: {{N|n}}o such file or directory

View File

@ -76,7 +76,7 @@ THIN-PATH-NEXT: /41 0 0 0 644 4 `
THIN-PATH-NEXT: /65 0 0 0 644 4 `
RUN: not llvm-ar --format=bsd rcT bad.a 0123456789abcde 0123456789abcdef 2>&1 | FileCheck --check-prefix=BSD-THIN %s
BSD-THIN: Only the gnu format has a thin mode.
BSD-THIN: error: only the gnu format has a thin mode
If an archive has an object with no symbols, the linker and some other
tools on some versions of Solaris will abort operations if there is no

View File

@ -48,4 +48,4 @@ BOTH-FILES: bar
RUN: rm -f %t/tmp.a
RUN: llvm-ar --format=gnu rc %t/tmp.a foo
RUN: not llvm-ar --format=gnu rcT %t/tmp.a bar 2>&1 | FileCheck --check-prefix=ERROR %s
ERROR: Cannot convert a regular archive to a thin one.
ERROR: error: cannot convert a regular archive to a thin one

View File

@ -4,4 +4,4 @@
; RUN: echo end >> %t.mri
; RUN: not llvm-ar -M < %t.mri 2>&1 | FileCheck %s
; CHECK: Editing multiple archives not supported
; CHECK: error: editing multiple archives not supported

View File

@ -3,4 +3,4 @@
; RUN: echo end >> %t.mri
; RUN: not llvm-ar -M < %t.mri 2>&1 | FileCheck %s
; CHECK: File already saved.
; CHECK: error: file already saved

View File

@ -1,4 +1,4 @@
; RUN: echo abc > %t.mri
; RUN: not llvm-ar -M < %t.mri 2>&1 | FileCheck %s
; CHECK: Unknown command: abc.
; CHECK: error: unknown command: abc

View File

@ -1,2 +1,2 @@
; RUN: not llvm-ar -M t < %s 2>&1 | FileCheck %s
; CHECK: Cannot mix -M and other options.
; CHECK: error: cannot mix -M and other options

View File

@ -31,9 +31,9 @@ RUN: not llvm-ar xN 4 %t/archive.a foo.txt 2>&1 | FileCheck %s --check-prefix=ER
# N only applies to x/d.
RUN: not llvm-ar rN 1 %t/archive.a foo.txt 2>&1 | FileCheck %s --check-prefix=ERR-BAD-OP
ERR-NOT-NUM: error: Value for [count] must be numeric
ERR-NOT-POS: error: Value for [count] must be positive
ERR-BAD-OP: error: The 'N' modifier can only be specified with the 'x' or 'd' operations
ERR-NOT-NUM: error: value for [count] must be numeric
ERR-NOT-POS: error: value for [count] must be positive
ERR-BAD-OP: error: the 'N' modifier can only be specified with the 'x' or 'd' operations
ERR-NOT-FOUND: error: 'foo.txt' was not found
# Extract individual items.

View File

@ -43,7 +43,7 @@ RUN: not llvm-ar ra invalid.txt %t-invalid.a %t2.txt 2>&1 \
RUN: | FileCheck %s --check-prefix=ERROR
RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID
ERROR: error: Insertion point not found.
ERROR: error: insertion point not found
INVALID: 1.txt
INVALID-NEXT: 2.txt
INVALID-NEXT: 3.txt

View File

@ -43,7 +43,7 @@ RUN: not llvm-ar rb invalid.txt %t-invalid.a %t2.txt 2>&1 \
RUN: | FileCheck %s --check-prefix=ERROR
RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID
ERROR: error: Insertion point not found.
ERROR: error: insertion point not found
INVALID: 1.txt
INVALID-NEXT: 2.txt
INVALID-NEXT: 3.txt

View File

@ -1,5 +1,5 @@
Test that llvm-ar exits with 1 when there is an error.
RUN: not llvm-ar e 2>&1 | FileCheck %s
CHECK: unknown option e.
CHECK: error: unknown option e
CHECK: OVERVIEW: LLVM Archiver

View File

@ -43,7 +43,7 @@ RUN: not llvm-ar ma invalid.txt %t-invalid.a %t2.txt 2>&1 \
RUN: | FileCheck %s --check-prefix=ERROR
RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID
ERROR: error: Insertion point not found.
ERROR: error: insertion point not found
INVALID: 1.txt
INVALID-NEXT: 2.txt
INVALID-NEXT: 3.txt

View File

@ -43,7 +43,7 @@ RUN: not llvm-ar mb invalid.txt %t-invalid.a %t2.txt 2>&1 \
RUN: | FileCheck %s --check-prefix=ERROR
RUN: llvm-ar t %t-invalid.a | FileCheck %s --check-prefix=INVALID
ERROR: error: Insertion point not found.
ERROR: error: insertion point not found
INVALID: 1.txt
INVALID-NEXT: 2.txt
INVALID-NEXT: 3.txt

View File

@ -77,14 +77,14 @@
# RUN: not llvm-ar m 2>&1 \
# RUN: | FileCheck %s --check-prefix=NO-ARCHIVE
# NO-ARCHIVE: error: An archive name must be specified.
# NO-ARCHIVE: error: an archive name must be specified
## Member does not exist:
# RUN: llvm-ar rc %t/missing.a %t/1.o %t/2.o %t/3.o
# RUN: not llvm-ar m %t/missing.a %t/missing.txt 2>&1 \
# RUN: | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt
# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory.
# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory
--- !ELF
FileHeader:

View File

@ -22,7 +22,7 @@
# RUN: not llvm-ar -M < %t/badlib.mri 2>&1 | FileCheck --check-prefix=PARSE %s
# RUN: not ls %t/badlib.a
# PARSE: Could not parse library
# PARSE: error: could not parse library
## No create command.
# RUN: echo "ADDLIB %t/f.a" > %t/nocreate.mri

View File

@ -69,13 +69,13 @@ RUN: | FileCheck %s --check-prefix=SAME -DFILE=%t/2.txt
RUN: not llvm-ar p 2>&1 \
RUN: | FileCheck %s --check-prefix=NO-ARCHIVE
NO-ARCHIVE: error: An archive name must be specified.
NO-ARCHIVE: error: an archive name must be specified
# Archive does not exist:
RUN: not llvm-ar p %t/missing.a 2>&1 \
RUN: | FileCheck %s --check-prefix=MISSING-ARCHIVE -DARCHIVE=%t/missing.a
MISSING-ARCHIVE: error: error loading '[[ARCHIVE]]': {{[nN]}}o such file or directory.
MISSING-ARCHIVE: error: error loading '[[ARCHIVE]]': {{[nN]}}o such file or directory
# Member does not exist:
RUN: not llvm-ar p %t/archive.a %t-missing.txt 2>&1 \

View File

@ -54,13 +54,13 @@
# RUN: not llvm-ar qc 2>&1 \
# RUN: | FileCheck %s --check-prefix=NO-ARCHIVE
# NO-ARCHIVE: error: An archive name must be specified.
# NO-ARCHIVE: error: an archive name must be specified
## Member does not exist:
# RUN: not llvm-ar qc %t/missing.a %t/missing.txt 2>&1 \
# RUN: | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt
# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory.
# MISSING-FILE: error: [[FILE]]: {{[nN]}}o such file or directory
--- !ELF
FileHeader:

View File

@ -13,7 +13,7 @@
# RUN: not llvm-ar r %t/archive.a %t/3.txt \
# RUN: FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a
# ERROR: error: [[FILE]]: no such file or directory.
# ERROR: error: [[FILE]]: no such file or directory
# RUN: not llvm-ar q %t/archive.a %t/3.txt \
# RUN: FileCheck %s --check-prefix=ERROR -DFILE=%t/archive.a
@ -21,7 +21,7 @@
# RUN: not llvm-ar m %t/archive.a t/1.txt \
# RUN: FileCheck %s --check-prefix=ERROR-2 -DFILE=%t/archive.a
# ERROR-2: error: [[FILE]]: permission denied.
# ERROR-2: error: [[FILE]]: permission denied
# RUN: llvm-ar t %t/archive.a \
# RUN: | FileCheck %s --check-prefix=ARCHIVE --match-full-lines --implicit-check-not {{.}}

View File

@ -84,14 +84,14 @@
# RUN: not llvm-ar r 2>&1 \
# RUN: | FileCheck %s --check-prefix=NO-ARCHIVE
# NO-ARCHIVE: error: An archive name must be specified.
# NO-ARCHIVE: error: an archive name must be specified
## Member does not exist:
# RUN: llvm-ar rc %t/missing.a %t/1.o %t/2.o %t/3.o
# RUN: not llvm-ar r %t/missing.a %t/missing.txt 2>&1 \
# RUN: | FileCheck %s --check-prefix=MISSING-FILE -DFILE=%t/missing.txt
# MISSING-FILE: error: [[FILE]]: {{[Nn]}}o such file or directory.
# MISSING-FILE: error: [[FILE]]: {{[Nn]}}o such file or directory
--- !ELF
FileHeader:

View File

@ -118,7 +118,7 @@ void printHelpMessage() {
// Show the error message and exit.
LLVM_ATTRIBUTE_NORETURN static void fail(Twine Error) {
WithColor::error(errs(), ToolName) << Error << ".\n";
WithColor::error(errs(), ToolName) << Error << "\n";
printHelpMessage();
exit(1);
}
@ -209,7 +209,7 @@ static BumpPtrAllocator Alloc;
// associated with a, b, and i modifiers
static void getRelPos() {
if (PositionalArgs.empty())
fail("Expected [relpos] for a, b, or i modifier");
fail("expected [relpos] for 'a', 'b', or 'i' modifier");
RelPos = PositionalArgs[0];
PositionalArgs.erase(PositionalArgs.begin());
}
@ -218,19 +218,19 @@ static void getRelPos() {
// associated with the N modifier
static void getCountParam() {
if (PositionalArgs.empty())
fail("Expected [count] for N modifier");
fail("expected [count] for 'N' modifier");
auto CountParamArg = StringRef(PositionalArgs[0]);
if (CountParamArg.getAsInteger(10, CountParam))
fail("Value for [count] must be numeric, got: " + CountParamArg);
fail("value for [count] must be numeric, got: " + CountParamArg);
if (CountParam < 1)
fail("Value for [count] must be positive, got: " + CountParamArg);
fail("value for [count] must be positive, got: " + CountParamArg);
PositionalArgs.erase(PositionalArgs.begin());
}
// Get the archive file name from the command line
static void getArchive() {
if (PositionalArgs.empty())
fail("An archive name must be specified");
fail("an archive name must be specified");
ArchiveName = PositionalArgs[0];
PositionalArgs.erase(PositionalArgs.begin());
}
@ -246,12 +246,12 @@ std::vector<std::unique_ptr<object::Archive>> Archives;
static object::Archive &readLibrary(const Twine &Library) {
auto BufOrErr = MemoryBuffer::getFile(Library, -1, false);
failIfError(BufOrErr.getError(), "Could not open library " + Library);
failIfError(BufOrErr.getError(), "could not open library " + Library);
ArchiveBuffers.push_back(std::move(*BufOrErr));
auto LibOrErr =
object::Archive::create(ArchiveBuffers.back()->getMemBufferRef());
failIfError(errorToErrorCode(LibOrErr.takeError()),
"Could not parse library");
"could not parse library");
Archives.push_back(std::move(*LibOrErr));
return *Archives.back();
}
@ -264,7 +264,7 @@ static void runMRIScript();
static ArchiveOperation parseCommandLine() {
if (MRI) {
if (!PositionalArgs.empty() || !Options.empty())
fail("Cannot mix -M and other options");
fail("cannot mix -M and other options");
runMRIScript();
}
@ -383,31 +383,31 @@ static ArchiveOperation parseCommandLine() {
NumOperations = 1;
Operation = CreateSymTab;
if (!Members.empty())
fail("The s operation takes only an archive as argument");
fail("the 's' operation takes only an archive as argument");
}
// Perform various checks on the operation/modifier specification
// to make sure we are dealing with a legal request.
if (NumOperations == 0)
fail("You must specify at least one of the operations");
fail("you must specify at least one of the operations");
if (NumOperations > 1)
fail("Only one operation may be specified");
fail("only one operation may be specified");
if (NumPositional > 1)
fail("You may only specify one of a, b, and i modifiers");
fail("you may only specify one of 'a', 'b', and 'i' modifiers");
if (AddAfter || AddBefore)
if (Operation != Move && Operation != ReplaceOrInsert)
fail("The 'a', 'b' and 'i' modifiers can only be specified with "
fail("the 'a', 'b' and 'i' modifiers can only be specified with "
"the 'm' or 'r' operations");
if (CountParam)
if (Operation != Extract && Operation != Delete)
fail("The 'N' modifier can only be specified with the 'x' or 'd' "
fail("the 'N' modifier can only be specified with the 'x' or 'd' "
"operations");
if (OriginalDates && Operation != Extract)
fail("The 'o' modifier is only applicable to the 'x' operation");
fail("the 'o' modifier is only applicable to the 'x' operation");
if (OnlyUpdate && Operation != ReplaceOrInsert)
fail("The 'u' modifier is only applicable to the 'r' operation");
fail("the 'u' modifier is only applicable to the 'r' operation");
if (AddLibrary && Operation != QuickAppend)
fail("The 'L' modifier is only applicable to the 'q' operation");
fail("the 'L' modifier is only applicable to the 'q' operation");
// Return the parsed operation to the caller
return Operation;
@ -589,7 +589,7 @@ static void addChildMember(std::vector<NewArchiveMember> &Members,
const object::Archive::Child &M,
bool FlattenArchive = false) {
if (Thin && !M.getParent()->isThin())
fail("Cannot convert a regular archive to a thin one");
fail("cannot convert a regular archive to a thin one");
Expected<NewArchiveMember> NMOrErr =
NewArchiveMember::getOldMember(M, Deterministic);
failIfError(NMOrErr.takeError());
@ -783,7 +783,7 @@ computeNewArchiveMembers(ArchiveOperation Operation,
return Ret;
if (!RelPos.empty() && InsertPos == -1)
fail("Insertion point not found");
fail("insertion point not found");
if (RelPos.empty())
InsertPos = Ret.size();
@ -859,12 +859,12 @@ static void performWriteOperation(ArchiveOperation Operation,
break;
case BSD:
if (Thin)
fail("Only the gnu format has a thin mode");
fail("only the gnu format has a thin mode");
Kind = object::Archive::K_BSD;
break;
case DARWIN:
if (Thin)
fail("Only the gnu format has a thin mode");
fail("only the gnu format has a thin mode");
Kind = object::Archive::K_DARWIN;
break;
case Unknown:
@ -922,14 +922,13 @@ static int performOperation(ArchiveOperation Operation,
MemoryBuffer::getFile(ArchiveName, -1, false);
std::error_code EC = Buf.getError();
if (EC && EC != errc::no_such_file_or_directory)
fail("error opening '" + ArchiveName + "': " + EC.message() + "!");
fail("error opening '" + ArchiveName + "': " + EC.message());
if (!EC) {
Error Err = Error::success();
object::Archive Archive(Buf.get()->getMemBufferRef(), Err);
EC = errorToErrorCode(std::move(Err));
failIfError(EC,
"error loading '" + ArchiveName + "': " + EC.message() + "!");
failIfError(EC, "error loading '" + ArchiveName + "': " + EC.message());
if (Archive.isThin())
CompareFullPath = true;
performOperation(Operation, &Archive, std::move(Buf.get()), NewMembers);
@ -1003,9 +1002,9 @@ static void runMRIScript() {
case MRICommand::Create:
Create = true;
if (!ArchiveName.empty())
fail("Editing multiple archives not supported");
fail("editing multiple archives not supported");
if (Saved)
fail("File already saved");
fail("file already saved");
ArchiveName = Rest;
break;
case MRICommand::Delete: {
@ -1020,7 +1019,7 @@ static void runMRIScript() {
case MRICommand::End:
break;
case MRICommand::Invalid:
fail("Unknown command: " + CommandStr);
fail("unknown command: " + CommandStr);
}
}
@ -1108,7 +1107,7 @@ static int ranlib_main(int argc, char **argv) {
return 0;
} else {
if (ArchiveSpecified)
fail("Exactly one archive should be specified");
fail("exactly one archive should be specified");
ArchiveSpecified = true;
ArchiveName = argv[i];
}
@ -1136,5 +1135,5 @@ int main(int argc, char **argv) {
if (Stem.contains_lower("ar"))
return ar_main(argc, argv);
fail("Not ranlib, ar, lib or dlltool!");
fail("not ranlib, ar, lib or dlltool");
}