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, or *-* 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, *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.
: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
+++ /dev/null
-## 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
#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"
}
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))
if (OutputFormat == sysv || SizeSort)
PrintSize = true;
if (InputFilenames.empty())
- InputFilenames.push_back("-");
+ InputFilenames.push_back("a.out");
if (InputFilenames.size() > 1)
MultipleFiles = true;