mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-19 03:24:09 +00:00
llvm-cxxdump: Rename llvm-vtabledump to llvm-cxxdump
llvm-vtabledump has grown enough functionality not related to vtables that it deserves a name which is more descriptive. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232301 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -28,6 +28,7 @@ set(LLVM_TEST_DEPENDS
|
|||||||
llvm-bcanalyzer
|
llvm-bcanalyzer
|
||||||
llvm-c-test
|
llvm-c-test
|
||||||
llvm-cov
|
llvm-cov
|
||||||
|
llvm-cxxdump
|
||||||
llvm-diff
|
llvm-diff
|
||||||
llvm-dis
|
llvm-dis
|
||||||
llvm-dsymutil
|
llvm-dsymutil
|
||||||
@ -46,7 +47,6 @@ set(LLVM_TEST_DEPENDS
|
|||||||
llvm-size
|
llvm-size
|
||||||
llvm-symbolizer
|
llvm-symbolizer
|
||||||
llvm-tblgen
|
llvm-tblgen
|
||||||
llvm-vtabledump
|
|
||||||
macho-dump
|
macho-dump
|
||||||
opt
|
opt
|
||||||
FileCheck
|
FileCheck
|
||||||
|
@ -41,7 +41,7 @@ config.test_format = lit.formats.ShTest(execute_external)
|
|||||||
|
|
||||||
# suffixes: A list of file extensions to treat as test files. This is overriden
|
# suffixes: A list of file extensions to treat as test files. This is overriden
|
||||||
# by individual lit.local.cfg files in the test subdirectories.
|
# by individual lit.local.cfg files in the test subdirectories.
|
||||||
config.suffixes = ['.ll', '.c', '.cpp', '.test', '.txt', '.s']
|
config.suffixes = ['.ll', '.c', '.cxx', '.test', '.txt', '.s']
|
||||||
|
|
||||||
# excludes: A list of directories to exclude from the testsuite. The 'Inputs'
|
# excludes: A list of directories to exclude from the testsuite. The 'Inputs'
|
||||||
# subdirectories contain auxiliary inputs for various tests in their parent
|
# subdirectories contain auxiliary inputs for various tests in their parent
|
||||||
@ -228,6 +228,7 @@ for pattern in [r"\bbugpoint\b(?!-)",
|
|||||||
r"\bllvm-bcanalyzer\b",
|
r"\bllvm-bcanalyzer\b",
|
||||||
r"\bllvm-config\b",
|
r"\bllvm-config\b",
|
||||||
r"\bllvm-cov\b",
|
r"\bllvm-cov\b",
|
||||||
|
r"\bllvm-cxxdump\b",
|
||||||
r"\bllvm-diff\b",
|
r"\bllvm-diff\b",
|
||||||
r"\bllvm-dis\b",
|
r"\bllvm-dis\b",
|
||||||
r"\bllvm-dsymutil\b",
|
r"\bllvm-dsymutil\b",
|
||||||
@ -246,7 +247,6 @@ for pattern in [r"\bbugpoint\b(?!-)",
|
|||||||
r"\bllvm-rtdyld\b",
|
r"\bllvm-rtdyld\b",
|
||||||
r"\bllvm-size\b",
|
r"\bllvm-size\b",
|
||||||
r"\bllvm-tblgen\b",
|
r"\bllvm-tblgen\b",
|
||||||
r"\bllvm-vtabledump\b",
|
|
||||||
r"\bllvm-c-test\b",
|
r"\bllvm-c-test\b",
|
||||||
r"\bmacho-dump\b",
|
r"\bmacho-dump\b",
|
||||||
NOJUNK + r"\bopt\b",
|
NOJUNK + r"\bopt\b",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
RUN: llvm-vtabledump %p/Inputs/eh.obj.coff-i386 \
|
RUN: llvm-cxxdump %p/Inputs/eh.obj.coff-i386 \
|
||||||
RUN: | FileCheck %s --check-prefix=COFF-I386
|
RUN: | FileCheck %s --check-prefix=COFF-I386
|
||||||
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
RUN: llvm-vtabledump %p/Inputs/trivial.obj.coff-i386 \
|
RUN: llvm-cxxdump %p/Inputs/trivial.obj.coff-i386 \
|
||||||
RUN: | FileCheck %s --check-prefix=COFF-I386
|
RUN: | FileCheck %s --check-prefix=COFF-I386
|
||||||
|
|
||||||
RUN: llvm-vtabledump %p/Inputs/trivial.obj.elf-i386 \
|
RUN: llvm-cxxdump %p/Inputs/trivial.obj.elf-i386 \
|
||||||
RUN: | FileCheck %s --check-prefix=ELF-I386
|
RUN: | FileCheck %s --check-prefix=ELF-I386
|
||||||
|
|
||||||
COFF-I386: ??_7S@@6B@[0]: ??_R4S@@6B@
|
COFF-I386: ??_7S@@6B@[0]: ??_R4S@@6B@
|
@ -37,7 +37,7 @@ add_llvm_tool_subdirectory(llvm-readobj)
|
|||||||
add_llvm_tool_subdirectory(llvm-rtdyld)
|
add_llvm_tool_subdirectory(llvm-rtdyld)
|
||||||
add_llvm_tool_subdirectory(llvm-dwarfdump)
|
add_llvm_tool_subdirectory(llvm-dwarfdump)
|
||||||
add_llvm_tool_subdirectory(dsymutil)
|
add_llvm_tool_subdirectory(dsymutil)
|
||||||
add_llvm_tool_subdirectory(llvm-vtabledump)
|
add_llvm_tool_subdirectory(llvm-cxxdump)
|
||||||
if( LLVM_USE_INTEL_JITEVENTS )
|
if( LLVM_USE_INTEL_JITEVENTS )
|
||||||
add_llvm_tool_subdirectory(llvm-jitlistener)
|
add_llvm_tool_subdirectory(llvm-jitlistener)
|
||||||
else()
|
else()
|
||||||
|
@ -33,7 +33,7 @@ PARALLEL_DIRS := opt llvm-as llvm-dis llc llvm-ar llvm-nm llvm-link \
|
|||||||
macho-dump llvm-objdump llvm-readobj llvm-rtdyld \
|
macho-dump llvm-objdump llvm-readobj llvm-rtdyld \
|
||||||
llvm-dwarfdump llvm-cov llvm-size llvm-stress llvm-mcmarkup \
|
llvm-dwarfdump llvm-cov llvm-size llvm-stress llvm-mcmarkup \
|
||||||
llvm-profdata llvm-symbolizer obj2yaml yaml2obj llvm-c-test \
|
llvm-profdata llvm-symbolizer obj2yaml yaml2obj llvm-c-test \
|
||||||
llvm-vtabledump verify-uselistorder dsymutil llvm-pdbdump
|
llvm-cxxdump verify-uselistorder dsymutil llvm-pdbdump
|
||||||
|
|
||||||
# If Intel JIT Events support is configured, build an extra tool to test it.
|
# If Intel JIT Events support is configured, build an extra tool to test it.
|
||||||
ifeq ($(USE_INTEL_JITEVENTS), 1)
|
ifeq ($(USE_INTEL_JITEVENTS), 1)
|
||||||
|
@ -4,7 +4,7 @@ set(LLVM_LINK_COMPONENTS
|
|||||||
Support
|
Support
|
||||||
)
|
)
|
||||||
|
|
||||||
add_llvm_tool(llvm-vtabledump
|
add_llvm_tool(llvm-cxxdump
|
||||||
llvm-vtabledump.cpp
|
llvm-cxxdump.cpp
|
||||||
Error.cpp
|
Error.cpp
|
||||||
)
|
)
|
@ -1,4 +1,4 @@
|
|||||||
//===- Error.cpp - system_error extensions for llvm-vtabledump --*- C++ -*-===//
|
//===- Error.cxx - system_error extensions for llvm-cxxdump -----*- C++ -*-===//
|
||||||
//
|
//
|
||||||
// The LLVM Compiler Infrastructure
|
// The LLVM Compiler Infrastructure
|
||||||
//
|
//
|
||||||
@ -7,7 +7,7 @@
|
|||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
//
|
//
|
||||||
// This defines a new error_category for the llvm-vtabledump tool.
|
// This defines a new error_category for the llvm-cxxdump tool.
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
@ -17,27 +17,27 @@
|
|||||||
using namespace llvm;
|
using namespace llvm;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
class vtabledump_error_category : public std::error_category {
|
class cxxdump_error_category : public std::error_category {
|
||||||
public:
|
public:
|
||||||
const char *name() const LLVM_NOEXCEPT override { return "llvm.vtabledump"; }
|
const char *name() const LLVM_NOEXCEPT override { return "llvm.cxxdump"; }
|
||||||
std::string message(int ev) const override {
|
std::string message(int ev) const override {
|
||||||
switch (static_cast<vtabledump_error>(ev)) {
|
switch (static_cast<cxxdump_error>(ev)) {
|
||||||
case vtabledump_error::success:
|
case cxxdump_error::success:
|
||||||
return "Success";
|
return "Success";
|
||||||
case vtabledump_error::file_not_found:
|
case cxxdump_error::file_not_found:
|
||||||
return "No such file.";
|
return "No such file.";
|
||||||
case vtabledump_error::unrecognized_file_format:
|
case cxxdump_error::unrecognized_file_format:
|
||||||
return "Unrecognized file type.";
|
return "Unrecognized file type.";
|
||||||
}
|
}
|
||||||
llvm_unreachable(
|
llvm_unreachable(
|
||||||
"An enumerator of vtabledump_error does not have a message defined.");
|
"An enumerator of cxxdump_error does not have a message defined.");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
const std::error_category &vtabledump_category() {
|
const std::error_category &cxxdump_category() {
|
||||||
static vtabledump_error_category o;
|
static cxxdump_error_category o;
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
} // namespace llvm
|
} // namespace llvm
|
@ -1,4 +1,4 @@
|
|||||||
//===- Error.h - system_error extensions for llvm-vtabledump ----*- C++ -*-===//
|
//===- Error.h - system_error extensions for llvm-cxxdump -------*- C++ -*-===//
|
||||||
//
|
//
|
||||||
// The LLVM Compiler Infrastructure
|
// The LLVM Compiler Infrastructure
|
||||||
//
|
//
|
||||||
@ -7,33 +7,33 @@
|
|||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
//
|
//
|
||||||
// This declares a new error_category for the llvm-vtabledump tool.
|
// This declares a new error_category for the llvm-cxxdump tool.
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#ifndef LLVM_TOOLS_LLVM_VTABLEDUMP_ERROR_H
|
#ifndef LLVM_TOOLS_LLVM_CXXDUMP_ERROR_H
|
||||||
#define LLVM_TOOLS_LLVM_VTABLEDUMP_ERROR_H
|
#define LLVM_TOOLS_LLVM_CXXDUMP_ERROR_H
|
||||||
|
|
||||||
#include <system_error>
|
#include <system_error>
|
||||||
|
|
||||||
namespace llvm {
|
namespace llvm {
|
||||||
const std::error_category &vtabledump_category();
|
const std::error_category &cxxdump_category();
|
||||||
|
|
||||||
enum class vtabledump_error {
|
enum class cxxdump_error {
|
||||||
success = 0,
|
success = 0,
|
||||||
file_not_found,
|
file_not_found,
|
||||||
unrecognized_file_format,
|
unrecognized_file_format,
|
||||||
};
|
};
|
||||||
|
|
||||||
inline std::error_code make_error_code(vtabledump_error e) {
|
inline std::error_code make_error_code(cxxdump_error e) {
|
||||||
return std::error_code(static_cast<int>(e), vtabledump_category());
|
return std::error_code(static_cast<int>(e), cxxdump_category());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace llvm
|
} // namespace llvm
|
||||||
|
|
||||||
namespace std {
|
namespace std {
|
||||||
template <>
|
template <>
|
||||||
struct is_error_code_enum<llvm::vtabledump_error> : std::true_type {};
|
struct is_error_code_enum<llvm::cxxdump_error> : std::true_type {};
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -1,4 +1,4 @@
|
|||||||
;===- ./tools/llvm-vtabledump/LLVMBuild.txt --------------------*- Conf -*--===;
|
;===- ./tools/llvm-cxxdump/LLVMBuild.txt -----------------------*- Conf -*--===;
|
||||||
;
|
;
|
||||||
; The LLVM Compiler Infrastructure
|
; The LLVM Compiler Infrastructure
|
||||||
;
|
;
|
||||||
@ -17,6 +17,6 @@
|
|||||||
|
|
||||||
[component_0]
|
[component_0]
|
||||||
type = Tool
|
type = Tool
|
||||||
name = llvm-vtabledump
|
name = llvm-cxxdump
|
||||||
parent = Tools
|
parent = Tools
|
||||||
required_libraries = all-targets BitReader Object
|
required_libraries = all-targets BitReader Object
|
@ -1,4 +1,4 @@
|
|||||||
##===- tools/llvm-vtabledump/Makefile ----------------------*- Makefile -*-===##
|
##===- tools/llvm-cxxdump/Makefile -------------------------*- Makefile -*-===##
|
||||||
#
|
#
|
||||||
# The LLVM Compiler Infrastructure
|
# The LLVM Compiler Infrastructure
|
||||||
#
|
#
|
||||||
@ -8,7 +8,7 @@
|
|||||||
##===----------------------------------------------------------------------===##
|
##===----------------------------------------------------------------------===##
|
||||||
|
|
||||||
LEVEL := ../..
|
LEVEL := ../..
|
||||||
TOOLNAME := llvm-vtabledump
|
TOOLNAME := llvm-cxxdump
|
||||||
LINK_COMPONENTS := bitreader object all-targets
|
LINK_COMPONENTS := bitreader object all-targets
|
||||||
|
|
||||||
# This tool has no plugins, optimize startup time.
|
# This tool has no plugins, optimize startup time.
|
@ -1,4 +1,4 @@
|
|||||||
//===- llvm-vtabledump.cpp - Dump vtables in an Object File -----*- C++ -*-===//
|
//===- llvm-cxxdump.cpp - Dump C++ data in an Object File -------*- C++ -*-===//
|
||||||
//
|
//
|
||||||
// The LLVM Compiler Infrastructure
|
// The LLVM Compiler Infrastructure
|
||||||
//
|
//
|
||||||
@ -7,11 +7,11 @@
|
|||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
//
|
//
|
||||||
// Dumps VTables resident in object files and archives.
|
// Dumps C++ data resident in object files and archives.
|
||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#include "llvm-vtabledump.h"
|
#include "llvm-cxxdump.h"
|
||||||
#include "Error.h"
|
#include "Error.h"
|
||||||
#include "llvm/ADT/ArrayRef.h"
|
#include "llvm/ADT/ArrayRef.h"
|
||||||
#include "llvm/Object/Archive.h"
|
#include "llvm/Object/Archive.h"
|
||||||
@ -134,7 +134,7 @@ static bool collectRelocationOffsets(
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dumpVTables(const ObjectFile *Obj) {
|
static void dumpCXXData(const ObjectFile *Obj) {
|
||||||
struct CompleteObjectLocator {
|
struct CompleteObjectLocator {
|
||||||
StringRef Symbols[2];
|
StringRef Symbols[2];
|
||||||
ArrayRef<little32_t> Data;
|
ArrayRef<little32_t> Data;
|
||||||
@ -333,7 +333,8 @@ static void dumpVTables(const ObjectFile *Obj) {
|
|||||||
auto Key = std::make_pair(SymName, SymOffI);
|
auto Key = std::make_pair(SymName, SymOffI);
|
||||||
if (VTableSymEntries.count(Key))
|
if (VTableSymEntries.count(Key))
|
||||||
continue;
|
continue;
|
||||||
const char *DataPtr = SymContents.substr(SymOffI, BytesInAddress).data();
|
const char *DataPtr =
|
||||||
|
SymContents.substr(SymOffI, BytesInAddress).data();
|
||||||
int64_t VData;
|
int64_t VData;
|
||||||
if (BytesInAddress == 8)
|
if (BytesInAddress == 8)
|
||||||
VData = *reinterpret_cast<const little64_t *>(DataPtr);
|
VData = *reinterpret_cast<const little64_t *>(DataPtr);
|
||||||
@ -347,8 +348,7 @@ static void dumpVTables(const ObjectFile *Obj) {
|
|||||||
// FIXME: Do something with these!
|
// FIXME: Do something with these!
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const std::pair<std::pair<StringRef, uint64_t>, StringRef> &VFTableEntry :
|
for (const auto &VFTableEntry : VFTableEntries) {
|
||||||
VFTableEntries) {
|
|
||||||
StringRef VFTableName = VFTableEntry.first.first;
|
StringRef VFTableName = VFTableEntry.first.first;
|
||||||
uint64_t Offset = VFTableEntry.first.second;
|
uint64_t Offset = VFTableEntry.first.second;
|
||||||
StringRef SymName = VFTableEntry.second;
|
StringRef SymName = VFTableEntry.second;
|
||||||
@ -369,7 +369,8 @@ static void dumpVTables(const ObjectFile *Obj) {
|
|||||||
outs() << COLName << "[OffsetToTop]: " << COL.Data[1] << '\n';
|
outs() << COLName << "[OffsetToTop]: " << COL.Data[1] << '\n';
|
||||||
outs() << COLName << "[VFPtrOffset]: " << COL.Data[2] << '\n';
|
outs() << COLName << "[VFPtrOffset]: " << COL.Data[2] << '\n';
|
||||||
outs() << COLName << "[TypeDescriptor]: " << COL.Symbols[0] << '\n';
|
outs() << COLName << "[TypeDescriptor]: " << COL.Symbols[0] << '\n';
|
||||||
outs() << COLName << "[ClassHierarchyDescriptor]: " << COL.Symbols[1] << '\n';
|
outs() << COLName << "[ClassHierarchyDescriptor]: " << COL.Symbols[1]
|
||||||
|
<< '\n';
|
||||||
}
|
}
|
||||||
for (const std::pair<StringRef, ClassHierarchyDescriptor> &CHDPair : CHDs) {
|
for (const std::pair<StringRef, ClassHierarchyDescriptor> &CHDPair : CHDs) {
|
||||||
StringRef CHDName = CHDPair.first;
|
StringRef CHDName = CHDPair.first;
|
||||||
@ -395,7 +396,8 @@ static void dumpVTables(const ObjectFile *Obj) {
|
|||||||
outs() << BCDName << "[VBPtrOffset]: " << BCD.Data[2] << '\n';
|
outs() << BCDName << "[VBPtrOffset]: " << BCD.Data[2] << '\n';
|
||||||
outs() << BCDName << "[OffsetInVBTable]: " << BCD.Data[3] << '\n';
|
outs() << BCDName << "[OffsetInVBTable]: " << BCD.Data[3] << '\n';
|
||||||
outs() << BCDName << "[Flags]: " << BCD.Data[4] << '\n';
|
outs() << BCDName << "[Flags]: " << BCD.Data[4] << '\n';
|
||||||
outs() << BCDName << "[ClassHierarchyDescriptor]: " << BCD.Symbols[1] << '\n';
|
outs() << BCDName << "[ClassHierarchyDescriptor]: " << BCD.Symbols[1]
|
||||||
|
<< '\n';
|
||||||
}
|
}
|
||||||
for (const std::pair<StringRef, TypeDescriptor> &TDPair : TDs) {
|
for (const std::pair<StringRef, TypeDescriptor> &TDPair : TDs) {
|
||||||
StringRef TDName = TDPair.first;
|
StringRef TDName = TDPair.first;
|
||||||
@ -515,17 +517,16 @@ static void dumpArchive(const Archive *Arc) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ObjectFile *Obj = dyn_cast<ObjectFile>(&*ChildOrErr.get()))
|
if (ObjectFile *Obj = dyn_cast<ObjectFile>(&*ChildOrErr.get()))
|
||||||
dumpVTables(Obj);
|
dumpCXXData(Obj);
|
||||||
else
|
else
|
||||||
reportError(Arc->getFileName(),
|
reportError(Arc->getFileName(), cxxdump_error::unrecognized_file_format);
|
||||||
vtabledump_error::unrecognized_file_format);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dumpInput(StringRef File) {
|
static void dumpInput(StringRef File) {
|
||||||
// If file isn't stdin, check that it exists.
|
// If file isn't stdin, check that it exists.
|
||||||
if (File != "-" && !sys::fs::exists(File)) {
|
if (File != "-" && !sys::fs::exists(File)) {
|
||||||
reportError(File, vtabledump_error::file_not_found);
|
reportError(File, cxxdump_error::file_not_found);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -540,9 +541,9 @@ static void dumpInput(StringRef File) {
|
|||||||
if (Archive *Arc = dyn_cast<Archive>(&Binary))
|
if (Archive *Arc = dyn_cast<Archive>(&Binary))
|
||||||
dumpArchive(Arc);
|
dumpArchive(Arc);
|
||||||
else if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
|
else if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
|
||||||
dumpVTables(Obj);
|
dumpCXXData(Obj);
|
||||||
else
|
else
|
||||||
reportError(File, vtabledump_error::unrecognized_file_format);
|
reportError(File, cxxdump_error::unrecognized_file_format);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, const char *argv[]) {
|
int main(int argc, const char *argv[]) {
|
||||||
@ -556,7 +557,7 @@ int main(int argc, const char *argv[]) {
|
|||||||
// Register the target printer for --version.
|
// Register the target printer for --version.
|
||||||
cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);
|
cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion);
|
||||||
|
|
||||||
cl::ParseCommandLineOptions(argc, argv, "LLVM VTable Dumper\n");
|
cl::ParseCommandLineOptions(argc, argv, "LLVM C++ ABI Data Dumper\n");
|
||||||
|
|
||||||
// Default to stdin if no filename is specified.
|
// Default to stdin if no filename is specified.
|
||||||
if (opts::InputFilenames.size() == 0)
|
if (opts::InputFilenames.size() == 0)
|
@ -1,4 +1,4 @@
|
|||||||
//===-- llvm-vtabledump.h ---------------------------------------*- C++ -*-===//
|
//===-- llvm-cxxdump.h ------------------------------------------*- C++ -*-===//
|
||||||
//
|
//
|
||||||
// The LLVM Compiler Infrastructure
|
// The LLVM Compiler Infrastructure
|
||||||
//
|
//
|
||||||
@ -7,8 +7,8 @@
|
|||||||
//
|
//
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
#ifndef LLVM_TOOLS_LLVM_VTABLEDUMP_LLVM_VTABLEDUMP_H
|
#ifndef LLVM_TOOLS_LLVM_CXXDUMP_LLVM_CXXDUMP_H
|
||||||
#define LLVM_TOOLS_LLVM_VTABLEDUMP_LLVM_VTABLEDUMP_H
|
#define LLVM_TOOLS_LLVM_CXXDUMP_LLVM_CXXDUMP_H
|
||||||
|
|
||||||
#include "llvm/Support/CommandLine.h"
|
#include "llvm/Support/CommandLine.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
@ -17,7 +17,7 @@ namespace opts {
|
|||||||
extern llvm::cl::list<std::string> InputFilenames;
|
extern llvm::cl::list<std::string> InputFilenames;
|
||||||
} // namespace opts
|
} // namespace opts
|
||||||
|
|
||||||
#define LLVM_VTABLEDUMP_ENUM_ENT(ns, enum) \
|
#define LLVM_CXXDUMP_ENUM_ENT(ns, enum) \
|
||||||
{ #enum, ns::enum }
|
{ #enum, ns::enum }
|
||||||
|
|
||||||
#endif
|
#endif
|
Reference in New Issue
Block a user