mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
[tools] [llvm-nm] Default to reading from stdin not a.out
Summary: This moves away from defaulting to a.out and uses stdin only if stdin has a file redirected to it. This has been discussed on the llvm-dev mailing list [[ https://lists.llvm.org/pipermail/llvm-dev/2019-July/133642.html | here ]]. Reviewers: jhenderson, rupprecht, MaskRay, chrisjackson Reviewed By: jhenderson, MaskRay Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64290 llvm-svn: 365889
This commit is contained in:
parent
4cf81cc46f
commit
c32a25d72b
@ -13,9 +13,8 @@ DESCRIPTION
|
||||
|
||||
The :program:`llvm-nm` utility lists the names of symbols from LLVM bitcode
|
||||
files, object files, and archives. Each symbol is listed along with some simple
|
||||
information about its provenance. If no filename is specified, *a.out* is used
|
||||
as the input. If *-* is used as a filename, :program:`llvm-nm` will read a file
|
||||
from its standard input stream.
|
||||
information about its provenance. If no filename is specified, or *-* is used as
|
||||
a filename, :program:`llvm-nm` will read a file from its standard input stream.
|
||||
|
||||
:program:`llvm-nm`'s default output format is the traditional BSD :program:`nm`
|
||||
output format. Each such output record consists of an (optional) 8-digit
|
||||
|
33
test/tools/llvm-nm/stdin.test
Normal file
33
test/tools/llvm-nm/stdin.test
Normal file
@ -0,0 +1,33 @@
|
||||
## Test llvm-nm when using stdin both explicitly (using '-' as a filename)
|
||||
## and implicitly (not specifying any filename).
|
||||
|
||||
# RUN: yaml2obj %s -o %t.o
|
||||
|
||||
## Pass an explicit filename to produce a baseline output. llvm-nm should
|
||||
## have the same behavior when opening a file itself and when reading that
|
||||
## file from its standard input stream.
|
||||
# RUN: llvm-nm %t.o > %t.base 2> %t.err
|
||||
|
||||
## Make sure there is no warning message about no file redirected to stdin.
|
||||
# RUN: FileCheck %s --input-file=%t.err --allow-empty --implicit-check-not={{.}}
|
||||
|
||||
# RUN: llvm-nm - < %t.o > %t.explicit 2> %t.err
|
||||
# RUN: FileCheck %s --input-file=%t.err --allow-empty --implicit-check-not={{.}}
|
||||
# RUN: cmp %t.base %t.explicit
|
||||
|
||||
# RUN: llvm-nm < %t.o > %t.implicit 2> %t.err
|
||||
# RUN: FileCheck %s --input-file=%t.err --allow-empty --implicit-check-not={{.}}
|
||||
# RUN: cmp %t.base %t.implicit
|
||||
|
||||
!ELF
|
||||
FileHeader:
|
||||
Class: ELFCLASS64
|
||||
Data: ELFDATA2LSB
|
||||
Type: ET_REL
|
||||
Machine: EM_X86_64
|
||||
Sections:
|
||||
- Name: .text
|
||||
Type: SHT_PROGBITS
|
||||
Symbols:
|
||||
- Name: symbol_a
|
||||
Section: .text
|
@ -34,6 +34,7 @@
|
||||
#include "llvm/Support/Format.h"
|
||||
#include "llvm/Support/InitLLVM.h"
|
||||
#include "llvm/Support/MemoryBuffer.h"
|
||||
#include "llvm/Support/Process.h"
|
||||
#include "llvm/Support/Program.h"
|
||||
#include "llvm/Support/Signals.h"
|
||||
#include "llvm/Support/TargetSelect.h"
|
||||
@ -1751,6 +1752,12 @@ static bool checkMachOAndArchFlags(SymbolicFile *O, std::string &Filename) {
|
||||
}
|
||||
|
||||
static void dumpSymbolNamesFromFile(std::string &Filename) {
|
||||
if (Filename == "-" && sys::Process::StandardInIsUserInput()) {
|
||||
WithColor::warning(errs(), ToolName) << "can't read from terminal\n";
|
||||
cl::PrintHelpMessage();
|
||||
HadError = true;
|
||||
return;
|
||||
}
|
||||
ErrorOr<std::unique_ptr<MemoryBuffer>> BufferOrErr =
|
||||
MemoryBuffer::getFileOrSTDIN(Filename);
|
||||
if (error(BufferOrErr.getError(), Filename))
|
||||
@ -2082,7 +2089,7 @@ int main(int argc, char **argv) {
|
||||
if (OutputFormat == sysv || SizeSort)
|
||||
PrintSize = true;
|
||||
if (InputFilenames.empty())
|
||||
InputFilenames.push_back("a.out");
|
||||
InputFilenames.push_back("-");
|
||||
if (InputFilenames.size() > 1)
|
||||
MultipleFiles = true;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user