#include "llvm-vtabledump.h"
#include "Error.h"
#include "llvm/ADT/ArrayRef.h"
-#include "llvm/ADT/StringMap.h"
#include "llvm/Object/Archive.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Support/Debug.h"
static void dumpVTables(const ObjectFile *Obj) {
std::map<std::pair<StringRef, uint64_t>, StringRef> VFTableEntries;
- StringMap<ArrayRef<aligned_little32_t>> VBTables;
+ std::map<StringRef, ArrayRef<aligned_little32_t>> VBTables;
for (const object::SymbolRef &Sym : Obj->symbols()) {
StringRef SymName;
if (error(Sym.getName(SymName)))
StringRef SymName = VFTableEntry.second;
outs() << VFTableName << '[' << Offset << "]: " << SymName << '\n';
}
- for (const StringMapEntry<ArrayRef<aligned_little32_t>> &VBTable : VBTables) {
- StringRef VBTableName = VBTable.getKey();
+ for (const std::pair<StringRef, ArrayRef<aligned_little32_t>> &VBTable :
+ VBTables) {
+ StringRef VBTableName = VBTable.first;
uint32_t Idx = 0;
- for (aligned_little32_t Offset : VBTable.getValue()) {
+ for (aligned_little32_t Offset : VBTable.second) {
outs() << VBTableName << '[' << Idx << "]: " << Offset << '\n';
- Idx += sizeof(aligned_little32_t);
+ Idx += sizeof(Offset);
}
}
}
}
// Attempt to open the binary.
- ErrorOr<Binary *> BinaryOrErr = createBinary(File);
+ ErrorOr<OwningBinary<Binary>> BinaryOrErr = createBinary(File);
if (std::error_code EC = BinaryOrErr.getError()) {
reportError(File, EC);
return;
}
- std::unique_ptr<Binary> Binary(BinaryOrErr.get());
+ Binary &Binary = *BinaryOrErr.get().getBinary();
- if (Archive *Arc = dyn_cast<Archive>(Binary.get()))
+ if (Archive *Arc = dyn_cast<Archive>(&Binary))
dumpArchive(Arc);
- else if (ObjectFile *Obj = dyn_cast<ObjectFile>(Binary.get()))
+ else if (ObjectFile *Obj = dyn_cast<ObjectFile>(&Binary))
dumpVTables(Obj);
else
reportError(File, vtabledump_error::unrecognized_file_format);