forked from OSchip/llvm-project
[llvm-readobj] Print error when executed with no input files
This patch changes llvm-readelf (and llvm-readobj for consistency) behavior to print an error when executed with no input files. Reading from stdin can be achieved via a '-' for the input object. Fixes https://bugs.llvm.org/show_bug.cgi?id=46400 Differential Revision: https://reviews.llvm.org/D83704 Reviewed by: jhenderson, MaskRay, sbc, jyknight
This commit is contained in:
parent
b36a3e6140
commit
df952cb914
|
@ -14,7 +14,7 @@ DESCRIPTION
|
||||||
The :program:`llvm-readelf` tool displays low-level format-specific information
|
The :program:`llvm-readelf` tool displays low-level format-specific information
|
||||||
about one or more object files.
|
about one or more object files.
|
||||||
|
|
||||||
If ``input`` is "``-``" or omitted, :program:`llvm-readelf` reads from standard
|
If ``input`` is "``-``", :program:`llvm-readelf` reads from standard
|
||||||
input. Otherwise, it will read from the specified ``filenames``.
|
input. Otherwise, it will read from the specified ``filenames``.
|
||||||
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
|
|
|
@ -14,7 +14,7 @@ DESCRIPTION
|
||||||
The :program:`llvm-readobj` tool displays low-level format-specific information
|
The :program:`llvm-readobj` tool displays low-level format-specific information
|
||||||
about one or more object files.
|
about one or more object files.
|
||||||
|
|
||||||
If ``input`` is "``-``" or omitted, :program:`llvm-readobj` reads from standard
|
If ``input`` is "``-``", :program:`llvm-readobj` reads from standard
|
||||||
input. Otherwise, it will read from the specified ``filenames``.
|
input. Otherwise, it will read from the specified ``filenames``.
|
||||||
|
|
||||||
DIFFERENCES TO LLVM-READELF
|
DIFFERENCES TO LLVM-READELF
|
||||||
|
|
|
@ -123,7 +123,9 @@ During this release ...
|
||||||
Changes to the LLVM tools
|
Changes to the LLVM tools
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
During this release ...
|
* llvm-readobj and llvm-readelf behavior has changed to report an error when
|
||||||
|
executed with no input files instead of reading an input from stdin.
|
||||||
|
Reading from stdin can still be achieved by specifying `-` as an input file.
|
||||||
|
|
||||||
Changes to LLDB
|
Changes to LLDB
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
|
@ -4,6 +4,11 @@ RUN: not llvm-readelf %t.blah 2>&1 | FileCheck --check-prefix=ENOENT -DTOOL=read
|
||||||
|
|
||||||
ENOENT: llvm-[[TOOL]]{{(\.exe)?}}: error: '{{.*}}.blah': {{[Nn]}}o such file or directory
|
ENOENT: llvm-[[TOOL]]{{(\.exe)?}}: error: '{{.*}}.blah': {{[Nn]}}o such file or directory
|
||||||
|
|
||||||
|
# Test case with no input file.
|
||||||
|
RUN: not llvm-readobj 2>&1 | FileCheck %s --check-prefix=NO-FILE
|
||||||
|
RUN: not llvm-readelf 2>&1 | FileCheck %s --check-prefix=NO-FILE
|
||||||
|
NO-FILE: error: no input files specified
|
||||||
|
|
||||||
# Test case where input file is too small to be a recognised object file.
|
# Test case where input file is too small to be a recognised object file.
|
||||||
RUN: touch %t.empty
|
RUN: touch %t.empty
|
||||||
RUN: not llvm-readobj %t.empty 2>&1 | FileCheck --check-prefix=EMPTY %s
|
RUN: not llvm-readobj %t.empty 2>&1 | FileCheck --check-prefix=EMPTY %s
|
||||||
|
|
|
@ -690,6 +690,11 @@ int main(int argc, const char *argv[]) {
|
||||||
|
|
||||||
cl::ParseCommandLineOptions(argc, argv, "LLVM Object Reader\n");
|
cl::ParseCommandLineOptions(argc, argv, "LLVM Object Reader\n");
|
||||||
|
|
||||||
|
// Default to print error if no filename is specified.
|
||||||
|
if (opts::InputFilenames.empty()) {
|
||||||
|
error("no input files specified");
|
||||||
|
}
|
||||||
|
|
||||||
if (opts::All) {
|
if (opts::All) {
|
||||||
opts::FileHeaders = true;
|
opts::FileHeaders = true;
|
||||||
opts::ProgramHeaders = true;
|
opts::ProgramHeaders = true;
|
||||||
|
@ -714,10 +719,6 @@ int main(int argc, const char *argv[]) {
|
||||||
opts::SectionHeaders = true;
|
opts::SectionHeaders = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default to stdin if no filename is specified.
|
|
||||||
if (opts::InputFilenames.empty())
|
|
||||||
opts::InputFilenames.push_back("-");
|
|
||||||
|
|
||||||
ScopedPrinter Writer(fouts());
|
ScopedPrinter Writer(fouts());
|
||||||
for (const std::string &I : opts::InputFilenames)
|
for (const std::string &I : opts::InputFilenames)
|
||||||
dumpInput(I, Writer);
|
dumpInput(I, Writer);
|
||||||
|
|
Loading…
Reference in New Issue