diff options
author | Akira Hatanaka <ahatanaka@apple.com> | 2016-01-29 05:55:09 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@apple.com> | 2016-01-29 05:55:09 +0000 |
commit | 4f472a886782431387d55f234584080f3a4f9a96 (patch) | |
tree | 9b919230f180fbc0b55983c17e946ae2cea755d4 /llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp | |
parent | f2bb710da516001a14ce9074c5ca1b8313426bce (diff) | |
download | bcm5719-llvm-4f472a886782431387d55f234584080f3a4f9a96.tar.gz bcm5719-llvm-4f472a886782431387d55f234584080f3a4f9a96.zip |
[llvm-bcanalyzer] Dump bitcode wrapper header
This patch enables llvm-bcanalyzer to print the bitcode wrapper header
if the file has one, which is needed to test the changes made in
r258627 (bitcode-wrapper-header-armv7m.ll is the test case for r258627).
Differential Revision: http://reviews.llvm.org/D16642
llvm-svn: 259162
Diffstat (limited to 'llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp')
-rw-r--r-- | llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp b/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp index fe68689def6..48523f99441 100644 --- a/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp +++ b/llvm/tools/llvm-bcanalyzer/llvm-bcanalyzer.cpp @@ -600,9 +600,28 @@ static bool openBitcodeFile(StringRef Path, // If we have a wrapper header, parse it and ignore the non-bc file contents. // The magic number is 0x0B17C0DE stored in little endian. - if (isBitcodeWrapper(BufPtr, EndBufPtr)) + if (isBitcodeWrapper(BufPtr, EndBufPtr)) { + if (EndBufPtr - BufPtr < BWH_HeaderSize) + return Error("Invalid bitcode wrapper header"); + + if (Dump) { + unsigned Magic = support::endian::read32le(&BufPtr[BWH_MagicField]); + unsigned Version = support::endian::read32le(&BufPtr[BWH_VersionField]); + unsigned Offset = support::endian::read32le(&BufPtr[BWH_OffsetField]); + unsigned Size = support::endian::read32le(&BufPtr[BWH_SizeField]); + unsigned CPUType = support::endian::read32le(&BufPtr[BWH_CPUTypeField]); + + outs() << "<BITCODE_WRAPPER_HEADER" + << " Magic=" << format_hex(Magic, 10) + << " Version=" << format_hex(Version, 10) + << " Offset=" << format_hex(Offset, 10) + << " Size=" << format_hex(Size, 10) + << " CPUType=" << format_hex(CPUType, 10) << "/>\n"; + } + if (SkipBitcodeWrapperHeader(BufPtr, EndBufPtr, true)) return Error("Invalid bitcode wrapper header"); + } StreamFile = BitstreamReader(BufPtr, EndBufPtr); Stream = BitstreamCursor(StreamFile); |