changeset 24315:7e17c5e0d17a

12013 fix smatch build for GCC4 Reviewed by: Dan McDonald <danmcd@joyent.com> Approved by: Robert Mustacchi <rm@fingolfin.org>
author John Levon <john.levon@joyent.com>
date Fri, 22 Nov 2019 13:16:49 +0000
parents 35689e4cc00c
children 6e954fd9b63c
files usr/src/tools/smatch/Makefile usr/src/tools/smatch/src/Makefile usr/src/tools/smatch/src/check_arm64_tagged.c usr/src/tools/smatch/src/ident-list.h usr/src/tools/smatch/src/smatch_data/illumos_kernel.skipped_functions usr/src/tools/smatch/src/smatch_data/illumos_user.skipped_functions usr/src/tools/smatch/src/smatch_kernel_user_data.c
diffstat 7 files changed, 21 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/tools/smatch/Makefile	Sun Nov 24 09:14:22 2019 -0800
+++ b/usr/src/tools/smatch/Makefile	Fri Nov 22 13:16:49 2019 +0000
@@ -20,7 +20,7 @@
 #
 
 PROG = smatch
-SPARSE_VERSION = 0.6.1-rc1-il-1
+SPARSE_VERSION = 0.6.1-rc1-il-2
 
 include ../Makefile.tools
 
--- a/usr/src/tools/smatch/src/Makefile	Sun Nov 24 09:14:22 2019 -0800
+++ b/usr/src/tools/smatch/src/Makefile	Fri Nov 22 13:16:49 2019 +0000
@@ -1,4 +1,4 @@
-VERSION=0.6.1-rc1-il-1
+VERSION=0.6.1-rc1-il-2
 
 ########################################################################
 # The following variables can be overwritten from the command line
@@ -9,7 +9,7 @@
 LD = $(CC)
 AR = ar
 
-CFLAGS ?= -O2 -g
+CFLAGS ?= -g
 
 DESTDIR ?=
 PREFIX ?= $(HOME)
--- a/usr/src/tools/smatch/src/check_arm64_tagged.c	Sun Nov 24 09:14:22 2019 -0800
+++ b/usr/src/tools/smatch/src/check_arm64_tagged.c	Fri Nov 22 13:16:49 2019 +0000
@@ -154,8 +154,13 @@
 
 static bool rl_is_tagged(struct range_list *rl)
 {
-	sval_t invalid = { .type = &ullong_ctype, .value = (1ULL << 56) };
-	sval_t invalid_kernel = { .type = &ullong_ctype, .value = (0xff8ULL << 52) };
+	sval_t invalid;
+	sval_t invalid_kernel;
+
+	invalid.type = &ullong_ctype;
+	invalid.value = 1ULL << 56;
+	invalid_kernel.type = &ullong_ctype;
+	invalid_kernel.value = 0xff8ULL << 52;
 
 	/*
 	 * We only care for tagged addresses, thus ignore anything where the
--- a/usr/src/tools/smatch/src/ident-list.h	Sun Nov 24 09:14:22 2019 -0800
+++ b/usr/src/tools/smatch/src/ident-list.h	Fri Nov 22 13:16:49 2019 +0000
@@ -31,7 +31,7 @@
 /* C99 keywords */
 IDENT(restrict); IDENT(__restrict); IDENT(__restrict__);
 IDENT(_Bool);
-IDENT(_Complex);
+IDENT_RESERVED(_Complex);
 IDENT_RESERVED(_Imaginary);
 
 /* C11 keywords */
--- a/usr/src/tools/smatch/src/smatch_data/illumos_kernel.skipped_functions	Sun Nov 24 09:14:22 2019 -0800
+++ b/usr/src/tools/smatch/src/smatch_data/illumos_kernel.skipped_functions	Fri Nov 22 13:16:49 2019 +0000
@@ -3,6 +3,7 @@
 dtrace_disx86
 elf32exec
 elfexec
+emlxs_sli4_process_unsol_rcv
 iscsi_ioctl
 lm_idle_chk
 ld64_sym_validate
--- a/usr/src/tools/smatch/src/smatch_data/illumos_user.skipped_functions	Sun Nov 24 09:14:22 2019 -0800
+++ b/usr/src/tools/smatch/src/smatch_data/illumos_user.skipped_functions	Fri Nov 22 13:16:49 2019 +0000
@@ -1,8 +1,6 @@
 /*
- * The below functions cause smatch to fail with "turning off implications after
- * 60 seconds" or similar, generally because they're too large for it to handle.
- *
- * This will disable analysis altogether.
+ * These are specific functions that are generally too complex for smatch to
+ * reasonably handle.
  */
 
 /* libast */
--- a/usr/src/tools/smatch/src/smatch_kernel_user_data.c	Sun Nov 24 09:14:22 2019 -0800
+++ b/usr/src/tools/smatch/src/smatch_kernel_user_data.c	Fri Nov 22 13:16:49 2019 +0000
@@ -681,10 +681,15 @@
 static struct range_list *strip_negatives(struct range_list *rl)
 {
 	sval_t min = rl_min(rl);
-	sval_t minus_one = { .type = rl_type(rl), .value = -1 };
-	sval_t over = { .type = rl_type(rl), .value = INT_MAX + 1ULL };
+	sval_t minus_one;
+	sval_t over;
 	sval_t max = sval_type_max(rl_type(rl));
 
+	minus_one.type = rl_type(rl);
+	minus_one.value = -1;
+	over.type = rl_type(rl);
+	over.value = INT_MAX + 1ULL;
+
 	if (!rl)
 		return NULL;