[Bitstream] Temporarily disable UBSan for invalid bitcode tests. This fixes failing...
authorAndrew Browne <browneee@google.com>
Mon, 7 Feb 2022 20:21:30 +0000 (12:21 -0800)
committerAndrew Browne <browneee@google.com>
Mon, 7 Feb 2022 21:55:15 +0000 (13:55 -0800)
Tests added by
  https://github.com/llvm/llvm-project/commit/3c86642edd28f1ce970882edaba8dce468ec7401
  https://github.com/llvm/llvm-project/commit/f4fca0fbb052e55935b483c8955c440b59511ce8
cause existing code to exhibit UB:
  https://github.com/llvm/llvm-project/blob/b4c6d1bb379192cb5b712fda9f60cd105f21194f/llvm/include/llvm/Bitstream/BitstreamReader.h#L244

llvm/include/llvm/Bitstream/BitstreamReader.h:244:51:
runtime error: shift exponent 35 is too large for 32-bit type 'unsigned int'

Hitting the UBSan error before the expected error causes the test to fail under UBSan:

Reviewed By: vitalybuka

Differential Revision: https://reviews.llvm.org/D119182

llvm/test/Bitcode/invalid-no-ubsan.test [new file with mode: 0644]
llvm/test/Bitcode/invalid.test

diff --git a/llvm/test/Bitcode/invalid-no-ubsan.test b/llvm/test/Bitcode/invalid-no-ubsan.test
new file mode 100644 (file)
index 0000000..2cc8e05
--- /dev/null
@@ -0,0 +1,19 @@
+# These tests cover invalid inputs.
+# When running under UBSan these tests hit UBSan issues before the validity
+# checks that the test is intending to exercise.
+# Under UBSan these tests fail because UBSan error is not the expected error.
+#
+# TODO: This code should be fixed to not exhibit UB, and these tests should be
+# incorporated back into invalid.test and run under UBSan again.
+
+UNSUPPORTED: ubsan
+
+RUN: not llvm-dis -disable-output %p/Inputs/size-not-plausible.bc 2>&1 | \
+RUN:   FileCheck --check-prefix=SIZE-NOT-PLAUSIBLE %s
+
+SIZE-NOT-PLAUSIBLE: Size is not plausible
+
+RUN: not llvm-dis -disable-output %p/Inputs/invalid-value-symbol-table-2.bc 2>&1 | \
+RUN:   FileCheck --check-prefix=INVALID-VALUE-SYMBOL-TABLE-2 %s
+
+INVALID-VALUE-SYMBOL-TABLE-2: Expected value symbol table subbloc
index fd0fae9..c5cbabf 100644 (file)
@@ -252,11 +252,6 @@ RUN:   FileCheck --check-prefix=INVALID-ABBREV-NUMBER %s
 
 INVALID-ABBREV-NUMBER: Invalid abbrev number
 
-RUN: not llvm-dis -disable-output %p/Inputs/size-not-plausible.bc 2>&1 | \
-RUN:   FileCheck --check-prefix=SIZE-NOT-PLAUSIBLE %s
-
-SIZE-NOT-PLAUSIBLE: Size is not plausible
-
 RUN: not llvm-dis -disable-output %p/Inputs/invalid-attribute-group-entry.bc 2>&1 | \
 RUN:   FileCheck --check-prefix=INVALID-ATTRIBUTE-GROUP-ENTRY %s
 
@@ -271,8 +266,3 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-value-symbol-table.bc 2>&1 |
 RUN:   FileCheck --check-prefix=INVALID-VALUE-SYMBOL-TABLE %s
 
 INVALID-VALUE-SYMBOL-TABLE: Invalid value reference in symbol table
-
-RUN: not llvm-dis -disable-output %p/Inputs/invalid-value-symbol-table-2.bc 2>&1 | \
-RUN:   FileCheck --check-prefix=INVALID-VALUE-SYMBOL-TABLE-2 %s
-
-INVALID-VALUE-SYMBOL-TABLE-2: Expected value symbol table subblock