summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-readobj/COFFDumper.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2016-05-31 18:15:23 +0000
committerReid Kleckner <rnk@google.com>2016-05-31 18:15:23 +0000
commit3b3f490f9c5706bb4d216068283f78694826100b (patch)
tree8650d5915d5e56361abd1bbe86ce90c3e4ba84c4 /llvm/tools/llvm-readobj/COFFDumper.cpp
parent3836482abcd2e26630026d71100852f45b25aa20 (diff)
downloadbcm5719-llvm-3b3f490f9c5706bb4d216068283f78694826100b.tar.gz
bcm5719-llvm-3b3f490f9c5706bb4d216068283f78694826100b.zip
[codeview] Add a CVTypeDumper::dump(ArrayRef<uint8_t>) overload
This is a convenient wrapper when the type record is already laid out as bytes in memory. llvm-svn: 271309
Diffstat (limited to 'llvm/tools/llvm-readobj/COFFDumper.cpp')
-rw-r--r--llvm/tools/llvm-readobj/COFFDumper.cpp26
1 files changed, 2 insertions, 24 deletions
diff --git a/llvm/tools/llvm-readobj/COFFDumper.cpp b/llvm/tools/llvm-readobj/COFFDumper.cpp
index bf6a7b4a2b0..0949436a8f3 100644
--- a/llvm/tools/llvm-readobj/COFFDumper.cpp
+++ b/llvm/tools/llvm-readobj/COFFDumper.cpp
@@ -1052,18 +1052,7 @@ void COFFDumper::printCodeViewTypeSection(StringRef SectionName,
if (Magic != COFF::DEBUG_SECTION_MAGIC)
return error(object_error::parse_failed);
- ArrayRef<uint8_t> BinaryData(reinterpret_cast<const uint8_t *>(Data.data()),
- Data.size());
- ByteStream Stream(BinaryData);
- CVTypeArray Types;
- StreamReader Reader(Stream);
- if (auto EC = Reader.readArray(Types, Reader.getLength())) {
- consumeError(std::move(EC));
- W.flush();
- error(object_error::parse_failed);
- }
-
- if (!CVTD.dump(Types)) {
+ if (!CVTD.dump({Data.bytes_begin(), Data.bytes_end()})) {
W.flush();
error(object_error::parse_failed);
}
@@ -1513,18 +1502,7 @@ void llvm::dumpCodeViewMergedTypes(
Buf.append(R->data(), R->data() + R->size());
});
CVTypeDumper CVTD(Writer, opts::CodeViewSubsectionBytes);
- ArrayRef<uint8_t> BinaryData(reinterpret_cast<const uint8_t *>(Buf.data()),
- Buf.size());
- ByteStream Stream(BinaryData);
- CVTypeArray Types;
- StreamReader Reader(Stream);
- if (auto EC = Reader.readArray(Types, Reader.getLength())) {
- consumeError(std::move(EC));
- Writer.flush();
- error(object_error::parse_failed);
- }
-
- if (!CVTD.dump(Types)) {
+ if (!CVTD.dump({Buf.str().bytes_begin(), Buf.str().bytes_end()})) {
Writer.flush();
error(object_error::parse_failed);
}
OpenPOWER on IntegriCloud