| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This change allows llvm-dis to disassemble multi-module bitcode
files, including the associated module summary.
Reviewers: tejohnson, pcc, mehdi_amini
Subscribers: llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D70153
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This recommits r365750 (git commit 8b222ecf2769ee133691f208f6166ce118c4a164)
Original message:
Currently invalid bitcode files can cause a crash, when OpNum exceeds
the number of elements in Record, like in the attached bitcode file.
The test case was generated by clusterfuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=15698
Reviewers: t.p.northover, thegameg, jfb
Reviewed By: jfb
Differential Revision: https://reviews.llvm.org/D64507
llvm-svn: 365750jkkkk
llvm-svn: 366018
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts r365750 (git commit 8b222ecf2769ee133691f208f6166ce118c4a164)
llvm-dis runs out of memory while opening invalid-fcmp-opnum.bc on
llvm-hexagon-elf, probably because the bitcode file contains other
suspicious values.
http://lab.llvm.org:8011/builders/llvm-hexagon-elf/builds/21949
llvm-svn: 365757
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently invalid bitcode files can cause a crash, when OpNum exceeds
the number of elements in Record, like in the attached bitcode file.
The test case was generated by clusterfuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=15698
Reviewers: t.p.northover, thegameg, jfb
Reviewed By: jfb
Differential Revision: https://reviews.llvm.org/D64507
llvm-svn: 365750
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is existing bitcode that we need to support where the structured nature
of pointer types is used to derive the result type of some operation. For
example a GEP's operation and result will be based on its input Type.
When pointers become opaque, the BitcodeReader will still have access to this
information because it's explicitly told how to construct the more complex
types used, but this information will not be attached to any Value that gets
looked up. This changes BitcodeReader so that in all places which use type
information in this manner, it's derived from a side-table rather than from the
Value in question.
llvm-svn: 364550
|
|
|
|
|
|
| |
On the armv8 bot the failure is slightly different in the number it prints. Don't check the numbers. This was caused by r364464.
llvm-svn: 364488
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The bitstream reader handles errors poorly. This has two effects:
* Bugs in file handling (especially modules) manifest as an "unexpected end of
file" crash
* Users of clang as a library end up aborting because the code unconditionally
calls `report_fatal_error`
The bitstream reader should be more resilient and return Expected / Error as
soon as an error is encountered, not way late like it does now. This patch
starts doing so and adopting the error handling where I think it makes sense.
There's plenty more to do: this patch propagates errors to be minimally useful,
and follow-ups will propagate them further and improve diagnostics.
https://bugs.llvm.org/show_bug.cgi?id=42311
<rdar://problem/33159405>
Differential Revision: https://reviews.llvm.org/D63518
llvm-svn: 364464
|
|
|
|
|
|
|
|
| |
Implement getLazyBitcodeModule() and parseBitcodeFile() in terms of it.
Differential Revision: https://reviews.llvm.org/D26719
llvm-svn: 287156
|
|
|
|
|
|
| |
Differential Revision: https://reviews.llvm.org/D26430
llvm-svn: 286323
|
|
|
|
|
|
|
|
| |
Should unbreak ocaml binding tests.
Also added an llvm-dis test that checks for the same thing.
llvm-svn: 285777
|
|
|
|
| |
llvm-svn: 271851
|
|
|
|
| |
llvm-svn: 271850
|
|
|
|
| |
llvm-svn: 271849
|
|
|
|
| |
llvm-svn: 271848
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The implementation is fairly obvious. This is preparation for using
some blobs in bitcode.
For clarity (and perhaps future-proofing?), I moved the call to
JumpToBit in BitstreamCursor::readRecord ahead of calling
MemoryObject::getPointer, since JumpToBit can theoretically (a) read
bytes, which (b) invalidates the blob pointer.
This isn't strictly necessary the two memory objects we have:
- The return of RawMemoryObject::getPointer is valid until the memory
object is destroyed.
- StreamingMemoryObject::getPointer is valid until the next chunk is
read from the stream. Since the JumpToBit call is only going ahead
to a word boundary, we'll never load another chunk.
However, reordering makes it clear by inspection that the blob returned
by BitstreamCursor::readRecord will be valid.
I added some tests for StreamingMemoryObject::getPointer and
BitstreamCursor::readRecord.
llvm-svn: 264549
|
|
|
|
|
|
|
| |
This reverts commit r264409 since it failed to bootstrap:
http://lab.llvm.org:8080/green/job/clang-stage2-configure-Rlto_build/8302/
llvm-svn: 264410
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Optimize output of MDStrings in bitcode. This emits them in big blocks
(currently 1024) in a pair of records:
- BULK_STRING_SIZES: the sizes of the strings in the block, and
- BULK_STRING_DATA: a single blob, which is the concatenation of all
the strings.
Inspired by Mehdi's similar patch, http://reviews.llvm.org/D18342, this
should (a) slightly reduce bitcode size, since there is less record
overhead, and (b) greatly improve reading speed, since blobs are super
cheap to deserialize.
I needed to add support for blobs to streaming input to get the test
suite passing.
- StreamingMemoryObject::getPointer reads ahead and returns the
address of the blob.
- To avoid a possible reallocation of StreamingMemoryObject::Bytes,
BitstreamCursor::readRecord needs to move the call to JumpToEnd
forward so that getPointer is the last bitstream operation.
llvm-svn: 264409
|
|
|
|
|
|
| |
Bug found with afl-fuzz.
llvm-svn: 252048
|
|
|
|
|
|
|
|
|
| |
This assert was reachable from user input. A minimized test case (no
FUNCTION_BLOCK_ID record) is attached.
Bug found with afl-fuzz
llvm-svn: 251910
|
|
|
|
|
|
| |
This reverts r251667 since it broke the bots.
llvm-svn: 251671
|
|
|
|
|
|
|
|
|
| |
This assert was reachable from user input. A minimized test case (no
FUNCTION_BLOCK_ID record) is attached.
Bug found with afl-fuzz
llvm-svn: 251667
|
|
|
|
|
|
| |
Bug found with afl-fuzz.
llvm-svn: 249396
|
|
|
|
|
|
| |
Bug found with AFL fuzz.
llvm-svn: 238895
|
|
|
|
|
|
| |
Bug found with AFL fuzz
llvm-svn: 238891
|
|
|
|
|
|
|
|
| |
It's reachable from user input.
Bug found with AFL fuzz.
llvm-svn: 238633
|
|
|
|
|
|
|
|
| |
It can be triggered by user input.
Bug found with AFL fuzz.
llvm-svn: 238272
|
|
|
|
|
|
| |
Bug found with AFL fuzz.
llvm-svn: 238269
|
|
|
|
|
|
| |
Bug found with AFL fuzz.
llvm-svn: 238265
|
|
|
|
|
|
|
|
| |
Shouldn't be an assert, since user input can trigger it.
Bug found with AFL fuzz.
llvm-svn: 238261
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Also tagged a FIXME comment, and added information about why it breaks.
Bug found using AFL fuzz.
Reviewers: rafael, craig.topper
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9729
llvm-svn: 237709
|
|
|
|
|
|
| |
Bug found with AFL fuzz.
llvm-svn: 237650
|
|
|
|
|
|
| |
Bug found with AFL fuzz.
llvm-svn: 237646
|
|
|
|
|
|
|
|
| |
the aggregate at those indices
Bug found with AFL-fuzz.
llvm-svn: 237628
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Added isLoadableOrStorableType to PointerType.
We were doing some checks in some places, occasionally assert()ing instead
of telling the caller. With this patch, I'm putting all type checking in
the same place for load/store type instructions, and verifying the same
thing every time.
I also added a check for load/store of a function type.
Applied extracted check to Load, Store, and Cmpxcg.
I don't have exhaustive tests for all of these, but all Error() calls in
TypeCheckLoadStoreInst are being tested (in invalid.test).
Reviewers: dblaikie, rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9785
llvm-svn: 237619
|
|
|
|
|
|
|
|
| |
This would trigger an assertion later.
Bug found with AFL fuzz.
llvm-svn: 237494
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Bug found with AFL fuzz.
Reviewers: rafael, dexonsmith
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9361
llvm-svn: 236200
|
|
|
|
|
|
| |
Bug found with AFL fuzz.
llvm-svn: 236193
|
|
|
|
|
|
|
|
| |
Make it an error instead.
Bug found with AFL fuzz.
llvm-svn: 236190
|
|
|
|
|
|
|
|
| |
Same as r236073 but for PointerType.
Bug found with AFL fuzz.
llvm-svn: 236079
|
|
|
|
|
|
| |
Bug found with AFL fuzz.
llvm-svn: 236076
|
|
|
|
|
|
|
|
| |
{Array,Struct}Type::get(Type)
Bug found with AFL fuzz.
llvm-svn: 236073
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
We don't seem to need to assert here, since this function's callers expect
to get a nullptr on error. This way we don't assert on user input.
Bug found with AFL fuzz.
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9308
llvm-svn: 236027
|
|
|
|
| |
llvm-svn: 235735
|
|
|
|
|
|
|
|
|
|
| |
insert/extract/shuffle
Added some additional checking for vector types + tests.
Bug found with AFL fuzz.
llvm-svn: 235710
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Bug found with AFL fuzz.
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9016
llvm-svn: 235596
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Make sure the abbrev operands are valid and that we can read/skip them
afterwards.
Bug found with AFL fuzz.
Reviewers: rafael
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9030
llvm-svn: 235595
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Bug found with AFL.
Reviewers: rafael, bkramer
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9015
llvm-svn: 235489
|
|
|
|
|
|
|
|
|
|
| |
Use an extra bit in the CCInfo to flag the newer version of the
instructiont hat includes the type explicitly.
Tested the newer error cases I added, but didn't add tests for the finer
granularity improvements to existing error paths.
llvm-svn: 235160
|
|
|
|
|
|
|
| |
This reverts r234984 since it seems to break some bots (most of them
seemed arm*-selfhost).
llvm-svn: 234998
|
|
|
|
|
|
| |
Also added an assert to ReadVBR64.
llvm-svn: 234984
|