Hello community,
here is the log from the commit of package sparse for openSUSE:Factory checked in at 2015-11-11 10:29:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sparse (Old)
and /work/SRC/openSUSE:Factory/.sparse.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "sparse"
Changes:
--------
--- /work/SRC/openSUSE:Factory/sparse/sparse.changes 2015-01-20 12:26:50.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.sparse.new/sparse.changes 2015-11-11 10:30:05.000000000 +0100
@@ -1,0 +2,8 @@
+Fri Oct 9 10:26:19 UTC 2015 - jslaby@suse.com
+
+- update to 20150124
+ * Teach sparse about the __COUNTER__ predefined macro
+ * Make macro expanded string immutable
+ * s390x: add the proper defines for data types
+
+-------------------------------------------------------------------
Old:
----
sparse-20141211.tar.xz
New:
----
sparse-20150124.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ sparse.spec ++++++
--- /var/tmp/diff_new_pack.Z0aBzW/_old 2015-11-11 10:30:06.000000000 +0100
+++ /var/tmp/diff_new_pack.Z0aBzW/_new 2015-11-11 10:30:06.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package sparse
#
-# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -20,14 +20,16 @@
Summary: A semantic parser of source files
License: MIT
Group: Development/Tools/Building
-Version: 20141211
+Version: 20150124
Release: 0
Url: https://sparse.wiki.kernel.org/index.php/Main_Page
Source: sparse-%{version}.tar.xz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildRequires: gcc
BuildRequires: gtk2-devel
BuildRequires: libxml2-devel
+BuildRequires: make
BuildRequires: pkg-config
BuildRequires: xz
@@ -70,7 +72,7 @@
PKGCONFIGDIR=%{_datadir}/pkgconfig CFLAGS="%{optflags}"
%install
-make install DESTDIR=$RPM_BUILD_ROOT \
+%{makeinstall} \
PREFIX=%{_prefix} LIBDIR=%{_libdir} MANDIR=%{_mandir} \
PKGCONFIGDIR=%{_datadir}/pkgconfig
++++++ sparse-20141211.tar.xz -> sparse-20150124.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sparse-20141211/cgcc new/sparse-20150124/cgcc
--- old/sparse-20141211/cgcc 2015-01-14 15:55:41.000000000 +0100
+++ new/sparse-20150124/cgcc 2015-10-09 12:22:11.000000000 +0200
@@ -279,6 +279,12 @@
&float_types (1, 1, 21, [24,8], [53,11], [113,15]) .
&define_size_t ($m64 ? "long unsigned int" : "unsigned int") .
' -D__SIZEOF_POINTER__=' . ($m64 ? '8' : '4'));
+ } elsif ($spec eq 's390x') {
+ return (' -D__s390x__ -D__s390__ -D_BIG_ENDIAN' .
+ &integer_types (8, 16, 32, $m64 ? 64 : 32, 64) .
+ &float_types (1, 1, 36, [24,8], [53,11], [113,15]) .
+ &define_size_t ("long unsigned int") .
+ ' -D__SIZEOF_POINTER__=' . ($m64 ? '8' : '4'));
} elsif ($spec eq 'host_os_specs') {
my $os = `uname -s`;
chomp $os;
@@ -294,6 +300,8 @@
return &add_specs ('x86_64');
} elsif ($arch =~ /^(ppc)$/i) {
return &add_specs ('ppc');
+ } elsif ($arch =~ /^(s390x)$/i) {
+ return &add_specs ('s390x');
} elsif ($arch =~ /^(sparc64)$/i) {
return &add_specs ('sparc64');
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sparse-20141211/char.c new/sparse-20150124/char.c
--- old/sparse-20141211/char.c 2015-01-14 15:55:41.000000000 +0100
+++ new/sparse-20150124/char.c 2015-10-09 12:22:11.000000000 +0200
@@ -93,6 +93,7 @@
static char buffer[MAX_STRING];
int len = 0;
int bits;
+ int esc_count = 0;
while (!done) {
switch (token_type(next)) {
@@ -111,6 +112,8 @@
const char *p = token->string->data;
const char *end = p + token->string->length - 1;
while (p < end) {
+ if (*p == '\\')
+ esc_count++;
p = parse_escape(p, &v, end, bits, token->pos);
if (len < MAX_STRING)
buffer[len] = v;
@@ -123,11 +126,13 @@
len = MAX_STRING;
}
- if (len >= string->length) /* can't cannibalize */
- string = __alloc_string(len+1);
- string->length = len+1;
- memcpy(string->data, buffer, len);
- string->data[len] = '\0';
+ if (esc_count || len >= string->length) {
+ if (string->immutable || len >= string->length) /* can't cannibalize */
+ string = __alloc_string(len+1);
+ string->length = len+1;
+ memcpy(string->data, buffer, len);
+ string->data[len] = '\0';
+ }
expr->string = string;
expr->wide = is_wide;
return token;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sparse-20141211/ident-list.h new/sparse-20150124/ident-list.h
--- old/sparse-20141211/ident-list.h 2015-01-14 15:55:41.000000000 +0100
+++ new/sparse-20150124/ident-list.h 2015-10-09 12:22:11.000000000 +0200
@@ -108,6 +108,7 @@
__IDENT(__func___ident, "__func__", 0);
__IDENT(__FUNCTION___ident, "__FUNCTION__", 0);
__IDENT(__PRETTY_FUNCTION___ident, "__PRETTY_FUNCTION__", 0);
+__IDENT(__COUNTER___ident, "__COUNTER__", 0);
/* Sparse commands */
IDENT_RESERVED(__context__);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sparse-20141211/pre-process.c new/sparse-20150124/pre-process.c
--- old/sparse-20141211/pre-process.c 2015-01-14 15:55:41.000000000 +0100
+++ new/sparse-20150124/pre-process.c 2015-10-09 12:22:11.000000000 +0200
@@ -45,6 +45,7 @@
#include "scope.h"
static int false_nesting = 0;
+static int counter_macro = 0; // __COUNTER__ expansion
#define INCLUDEPATHS 300
const char *includepath[INCLUDEPATHS+1] = {
@@ -181,6 +182,8 @@
time(&t);
strftime(buffer, 9, "%T", localtime(&t));
replace_with_string(token, buffer);
+ } else if (token->ident == &__COUNTER___ident) {
+ replace_with_integer(token, counter_macro++);
}
return 1;
}
@@ -209,7 +212,7 @@
static void preprocessor_line(struct stream *stream, struct token **line);
-static struct token *collect_arg(struct token *prev, int vararg, struct position *pos)
+static struct token *collect_arg(struct token *prev, int vararg, struct position *pos, int count)
{
struct stream *stream = input_streams + prev->pos.stream;
struct token **p = &prev->next;
@@ -231,6 +234,11 @@
case TOKEN_STREAMBEGIN:
*p = &eof_token_entry;
return next;
+ case TOKEN_STRING:
+ case TOKEN_WIDE_STRING:
+ if (count > 1)
+ next->string->immutable = 1;
+ break;
}
if (false_nesting) {
*p = next->next;
@@ -276,7 +284,7 @@
arglist = arglist->next; /* skip counter */
if (!wanted) {
- next = collect_arg(start, 0, &what->pos);
+ next = collect_arg(start, 0, &what->pos, 0);
if (eof_token(next))
goto Eclosing;
if (!eof_token(start->next) || !match_op(next, ')')) {
@@ -286,7 +294,7 @@
} else {
for (count = 0; count < wanted; count++) {
struct argcount *p = &arglist->next->count;
- next = collect_arg(start, p->vararg, &what->pos);
+ next = collect_arg(start, p->vararg, &what->pos, p->normal);
arglist = arglist->next->next;
if (eof_token(next))
goto Eclosing;
@@ -323,7 +331,7 @@
goto out;
Emany:
while (match_op(next, ',')) {
- next = collect_arg(next, 0, &what->pos);
+ next = collect_arg(next, 0, &what->pos, 0);
count++;
}
if (eof_token(next))
@@ -1259,8 +1267,15 @@
} else {
try_arg(token, TOKEN_MACRO_ARGUMENT, arglist);
}
- if (token_type(token) == TOKEN_ERROR)
+ switch (token_type(token)) {
+ case TOKEN_ERROR:
goto Earg;
+
+ case TOKEN_STRING:
+ case TOKEN_WIDE_STRING:
+ token->string->immutable = 1;
+ break;
+ }
}
token = alloc_token(&expansion->pos);
token_type(token) = TOKEN_UNTAINT;
@@ -1882,6 +1897,7 @@
sym->normal = 0;
}
+ counter_macro = 0;
}
static void handle_preprocessor_line(struct stream *stream, struct token **line, struct token *start)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sparse-20141211/token.h new/sparse-20150124/token.h
--- old/sparse-20141211/token.h 2015-01-14 15:55:41.000000000 +0100
+++ new/sparse-20150124/token.h 2015-10-09 12:22:11.000000000 +0200
@@ -164,7 +164,8 @@
};
struct string {
- unsigned int length;
+ unsigned int length:31;
+ unsigned int immutable:1;
char data[];
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sparse-20141211/validation/preprocessor/counter1.c new/sparse-20150124/validation/preprocessor/counter1.c
--- old/sparse-20141211/validation/preprocessor/counter1.c 1970-01-01 01:00:00.000000000 +0100
+++ new/sparse-20150124/validation/preprocessor/counter1.c 2015-10-09 12:22:11.000000000 +0200
@@ -0,0 +1,12 @@
+__COUNTER__
+__COUNTER__
+/*
+ * check-name: __COUNTER__ #1
+ * check-command: sparse -E $file
+ *
+ * check-output-start
+
+0
+1
+ * check-output-end
+ */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/sparse-20141211/validation/preprocessor/counter2.c new/sparse-20150124/validation/preprocessor/counter2.c
--- old/sparse-20141211/validation/preprocessor/counter2.c 1970-01-01 01:00:00.000000000 +0100
+++ new/sparse-20150124/validation/preprocessor/counter2.c 2015-10-09 12:22:11.000000000 +0200
@@ -0,0 +1,14 @@
+__FILE__ __COUNTER__
+#include