Skip to content

Commit

Permalink
overflow: disable failing tests for older clang versions
Browse files Browse the repository at this point in the history
Building the overflow kunit tests with clang-11 fails with:

$ ./tools/testing/kunit/kunit.py run --arch=arm --make_options LLVM=1 \
overflow
...
ld.lld: error: undefined symbol: __mulodi4
...

Clang 11 and earlier generate unwanted libcalls for signed output,
unsigned input.

Disable these tests for now, but should these become used in the kernel
we might consider that as justification for dropping clang-11 support.
Keep the clang-11 build alive a little bit longer.

Avoid -Wunused-function warnings via __maybe_unused.

Link: ClangBuiltLinux#1711
Link: llvm/llvm-project@3203143
Reported-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
  • Loading branch information
nickdesaulniers authored and intel-lab-lkp committed Oct 5, 2022
1 parent 833477f commit cf7d44f
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions lib/overflow_kunit.c
Expand Up @@ -254,6 +254,7 @@ static void do_test_ ## n(struct kunit *test, const struct test_ ## n *p) \
check_one_op(t, fmt, mul, "*", p->b, p->a, p->prod, p->p_of); \
} \
\
__maybe_unused \
static void n ## _overflow_test(struct kunit *test) { \
unsigned i; \
\
Expand Down Expand Up @@ -716,12 +717,23 @@ static struct kunit_case overflow_test_cases[] = {
KUNIT_CASE(u32_u32__u32_overflow_test),
KUNIT_CASE(s32_s32__s32_overflow_test),
/* Clang 13 and earlier generate unwanted libcalls on 32-bit. */
#if BITS_PER_LONG == 64
#if defined(CONFIG_CC_IS_GCC) || \
(defined(CONFIG_CC_IS_CLANG) && \
(__clang_major__ > 13 || BITS_PER_LONG == 64))
KUNIT_CASE(u64_u64__u64_overflow_test),
KUNIT_CASE(s64_s64__s64_overflow_test),
#endif
KUNIT_CASE(u32_u32__u8_overflow_test),
/*
* Clang 11 and earlier generate unwanted libcalls for signed output, unsigned
* input.
* https://github.com/llvm/llvm-project/commit/3203143f1356a4e4e3ada231156fc6da6e1a9f9d
*/
#if defined(CONFIG_CC_IS_GCC) || \
(defined(CONFIG_CC_IS_CLANG) && \
(__clang_major__ > 11 || BITS_PER_LONG == 64))
KUNIT_CASE(u32_u32__int_overflow_test),
#endif
KUNIT_CASE(u32_u32__u8_overflow_test),
KUNIT_CASE(u8_u8__int_overflow_test),
KUNIT_CASE(int_int__u8_overflow_test),
KUNIT_CASE(shift_sane_test),
Expand Down

0 comments on commit cf7d44f

Please sign in to comment.