gcc-8 coverity hack

Coverity still has issues with gcc-7, not to mention gcc-8. Hack around
it, until they fix it.

Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
Jes Sorensen 2018-06-04 14:49:59 -04:00
parent 7d4815f84c
commit 28156667e5
2 changed files with 21 additions and 4 deletions

View File

@ -42,6 +42,10 @@ KLIBC=/home/src/klibc/klibc-0.77
KLIBC_GCC = gcc -nostdinc -iwithprefix include -I$(KLIBC)/klibc/include -I$(KLIBC)/linux/include -I$(KLIBC)/klibc/arch/i386/include -I$(KLIBC)/klibc/include/bits32
ifdef COVERITY
COVERITY_FLAGS=-include coverity-gcc-hack.h
endif
CC ?= $(CROSS_COMPILE)gcc
CXFLAGS ?= -ggdb
CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter
@ -177,6 +181,9 @@ everything-test: all mdadm.static swap_super test_stripe \
# mdadm.uclibc doesn't work on x86-64
# mdadm.tcc doesn't work..
%.o: %.c
$(CC) $(CFLAGS) $(CPPFLAGS) $(COVERITY_FLAGS) -o $@ -c $<
mdadm : $(OBJS) | check_rundir
$(CC) $(CFLAGS) $(LDFLAGS) -o mdadm $(OBJS) $(LDLIBS)
@ -291,10 +298,10 @@ test: mdadm mdmon test_stripe swap_super raid6check
clean :
rm -f mdadm mdmon $(OBJS) $(MON_OBJS) $(STATICOBJS) core *.man \
mdadm.tcc mdadm.uclibc mdadm.static *.orig *.porig *.rej *.alt .merge_file_* \
mdadm.Os mdadm.O2 mdmon.O2 swap_super \
init.cpio.gz mdadm.uclibc.static test_stripe raid6check raid6check.o mdmon \
mdadm.8
mdadm.tcc mdadm.uclibc mdadm.static *.orig *.porig *.rej *.alt \
.merge_file_* mdadm.Os mdadm.O2 mdmon.O2 swap_super init.cpio.gz \
mdadm.uclibc.static test_stripe raid6check raid6check.o mdmon mdadm.8
rm -rf cov-int
dist : clean
./makedist

10
coverity-gcc-hack.h Normal file
View File

@ -0,0 +1,10 @@
#if !defined(__KERNEL__) && defined(__x86_64__) && defined(__COVERITY_GCC_VERSION_AT_LEAST)
#if __COVERITY_GCC_VERSION_AT_LEAST(7, 0)
typedef float _Float128 __attribute__((__vector_size__(128)));
typedef float _Float64 __attribute__((__vector_size__(64)));
typedef float _Float32 __attribute__((__vector_size__(32)));
typedef float _Float128x __attribute__((__vector_size__(128)));
typedef float _Float64x __attribute__((__vector_size__(64)));
typedef float _Float32x __attribute__((__vector_size__(32)));
#endif
#endif