summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-objdump
diff options
context:
space:
mode:
authorDerek Schuff <dschuff@google.com>2016-11-30 16:49:11 +0000
committerDerek Schuff <dschuff@google.com>2016-11-30 16:49:11 +0000
commit2c6f75ddc51f486f17c07f6215bca0848d3d84fe (patch)
tree64c836a6a2a1bedaf6dba6fbca891a581b6c8a6b /llvm/tools/llvm-objdump
parent288c088c177f0a9a994d37b3d7006c2c99f3df57 (diff)
downloadbcm5719-llvm-2c6f75ddc51f486f17c07f6215bca0848d3d84fe.tar.gz
bcm5719-llvm-2c6f75ddc51f486f17c07f6215bca0848d3d84fe.zip
[WebAssembly] Add llvm-objdump support for wasm file format
This is the first part of an effort to add wasm binary support across all llvm tools. Patch by Sam Clegg Differential Revision: https://reviews.llvm.org/D26172 llvm-svn: 288251
Diffstat (limited to 'llvm/tools/llvm-objdump')
-rw-r--r--llvm/tools/llvm-objdump/CMakeLists.txt1
-rw-r--r--llvm/tools/llvm-objdump/WasmDump.cpp28
-rw-r--r--llvm/tools/llvm-objdump/llvm-objdump.cpp2
-rw-r--r--llvm/tools/llvm-objdump/llvm-objdump.h1
4 files changed, 32 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objdump/CMakeLists.txt b/llvm/tools/llvm-objdump/CMakeLists.txt
index f1239a280ce..27e6145dfc1 100644
--- a/llvm/tools/llvm-objdump/CMakeLists.txt
+++ b/llvm/tools/llvm-objdump/CMakeLists.txt
@@ -19,6 +19,7 @@ add_llvm_tool(llvm-objdump
COFFDump.cpp
ELFDump.cpp
MachODump.cpp
+ WasmDump.cpp
)
if(HAVE_LIBXAR)
diff --git a/llvm/tools/llvm-objdump/WasmDump.cpp b/llvm/tools/llvm-objdump/WasmDump.cpp
new file mode 100644
index 00000000000..0d8ffba6ba4
--- /dev/null
+++ b/llvm/tools/llvm-objdump/WasmDump.cpp
@@ -0,0 +1,28 @@
+//===-- WasmDump.cpp - wasm-specific dumper ---------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// \brief This file implements the wasm-specific dumper for llvm-objdump.
+///
+//===----------------------------------------------------------------------===//
+
+#include "llvm-objdump.h"
+#include "llvm/Object/Wasm.h"
+
+using namespace llvm;
+using namespace object;
+
+void llvm::printWasmFileHeader(const object::ObjectFile *Obj) {
+ const WasmObjectFile *File = dyn_cast<const WasmObjectFile>(Obj);
+
+ outs() << "Program Header:\n";
+ outs() << "Version: 0x";
+ outs().write_hex(File->getHeader().Version);
+ outs() << "\n";
+}
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp
index cbb74a3abd2..319d8afcc0b 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -1910,6 +1910,8 @@ static void printPrivateFileHeaders(const ObjectFile *o, bool onlyFirst) {
return printELFFileHeader(o);
if (o->isCOFF())
return printCOFFFileHeader(o);
+ if (o->isWasm())
+ return printWasmFileHeader(o);
if (o->isMachO()) {
printMachOFileHeader(o);
if (!onlyFirst)
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.h b/llvm/tools/llvm-objdump/llvm-objdump.h
index c87ef2deb22..dace82af3d0 100644
--- a/llvm/tools/llvm-objdump/llvm-objdump.h
+++ b/llvm/tools/llvm-objdump/llvm-objdump.h
@@ -79,6 +79,7 @@ void printCOFFSymbolTable(const object::COFFImportFile *i);
void printCOFFSymbolTable(const object::COFFObjectFile *o);
void printMachOFileHeader(const object::ObjectFile *o);
void printMachOLoadCommands(const object::ObjectFile *o);
+void printWasmFileHeader(const object::ObjectFile *o);
void printExportsTrie(const object::ObjectFile *o);
void printRebaseTable(const object::ObjectFile *o);
void printBindTable(const object::ObjectFile *o);
OpenPOWER on IntegriCloud