Files
MSYS2-packages/perl/Remove-support-for-Splint-static.patch
2017-04-08 15:11:05 +02:00

235 lines
7.2 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
SHA-1: c707756ebb45d88362c58f12444af0ebe1e24ac1
* Remove support for Splint static source code analyzer
Splint has not been updated since 2007 and doesnt even build for me.
As far as I know, I'm the only person who's ever worked with Splint on
Perl 5.
Here's what changes:
* Makefile target "splint"
* Macros in XSUB.h and perl.h
* Support in regen/embed.pl
---
Makefile.SH | 30 ------------------------------
XSUB.h | 21 +++++----------------
perl.h | 7 +------
pod/perlhacktips.pod | 8 ++------
regen/embed.pl | 17 +++--------------
5 files changed, 11 insertions(+), 72 deletions(-)
diff --git a/Makefile.SH b/Makefile.SH
index a094f8783c..10003fdac6 100755
--- a/Makefile.SH
+++ b/Makefile.SH
@@ -559,32 +559,6 @@ lintflags = \
-erroff=E_STATIC_UNUSED \
-erroff=E_TRUE_LOGICAL_EXPR
-splintflags = \
- -I/usr/lib/gcc/i486-linux-gnu/4.0.2/include/ \
- -D__builtin_va_list=va_list \
- -Dsigjmp_buf=jmp_buf \
- -warnposix \
- \
- +boolint \
- +charintliteral \
- -fixedformalarray \
- -mustfreefresh \
- -nestedextern \
- -predboolint \
- -predboolothers \
- -preproc \
- -boolops \
- -shadow \
- -nullstate \
- +longintegral \
- +matchanyintegral \
- -type \
- \
- +line-len 999 \
- +weak
-
-splintfiles = $(c1)
-
.c$(OBJ_EXT):
@echo `$(CCCMD)` $(PLDLFLAGS) $*.c
@`$(CCCMD)` $(PLDLFLAGS) $*.c
@@ -1424,10 +1398,6 @@ lint: $(c)
rm -f *.ln
lint $(lintflags) -DPERL_CORE -D_REENTRANT -DDEBUGGING -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(c)
-.PHONY: splint
-splint: $(c)
- splint $(splintflags) -DPERL_CORE -D_REENTRANT -DDEBUGGING -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(splintfiles)
-
cscopeflags = -Rb # Recursive, build-only.
.PHONY: cscope
diff --git a/XSUB.h b/XSUB.h
index e64bc83b92..e74abae26f 100644
--- a/XSUB.h
+++ b/XSUB.h
@@ -93,12 +93,7 @@ is a lexical C<$_> in scope.
*/
#ifndef PERL_UNUSED_ARG
-# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
-# include <note.h>
-# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
-# else
-# define PERL_UNUSED_ARG(x) ((void)x)
-# endif
+# define PERL_UNUSED_ARG(x) ((void)x)
#endif
#ifndef PERL_UNUSED_VAR
# define PERL_UNUSED_VAR(x) ((void)x)
@@ -164,12 +159,7 @@ is a lexical C<$_> in scope.
#define dITEMS I32 items = (I32)(SP - MARK)
-#if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
-# define dXSARGS \
- NOTE(ARGUNUSED(cv)) \
- dSP; dAXMARK; dITEMS
-#else
-# define dXSARGS \
+#define dXSARGS \
dSP; dAXMARK; dITEMS
/* These 3 macros are replacements for dXSARGS macro only in bootstrap.
They factor out common code in every BOOT XSUB. Computation of vars mark
@@ -177,19 +167,18 @@ is a lexical C<$_> in scope.
optimized away since BOOT must return &PL_sv_yes by default from xsubpp.
Note these macros are not drop in replacements for dXSARGS since they set
PL_xsubfilename. */
-# define dXSBOOTARGSXSAPIVERCHK \
+#define dXSBOOTARGSXSAPIVERCHK \
I32 ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
SV **mark = PL_stack_base + ax; dSP; dITEMS
-# define dXSBOOTARGSAPIVERCHK \
+#define dXSBOOTARGSAPIVERCHK \
I32 ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
SV **mark = PL_stack_base + ax; dSP; dITEMS
/* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do
#undef dXSBOOTARGSXSAPIVERCHK
#define dXSBOOTARGSXSAPIVERCHK dXSBOOTARGSNOVERCHK */
-# define dXSBOOTARGSNOVERCHK \
+#define dXSBOOTARGSNOVERCHK \
I32 ax = XS_SETXSUBFN_POPMARK; \
SV **mark = PL_stack_base + ax; dSP; dITEMS
-#endif
#define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
? PAD_SV(PL_op->op_targ) : sv_newmortal())
diff --git a/perl.h b/perl.h
index 9595b3cd63..d832db4531 100644
--- a/perl.h
+++ b/perl.h
@@ -322,12 +322,7 @@
* or variables/arguments that are used only in certain configurations.
*/
#ifndef PERL_UNUSED_ARG
-# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
-# include <note.h>
-# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
-# else
-# define PERL_UNUSED_ARG(x) ((void)sizeof(x))
-# endif
+# define PERL_UNUSED_ARG(x) ((void)sizeof(x))
#endif
#ifndef PERL_UNUSED_VAR
# define PERL_UNUSED_VAR(x) ((void)sizeof(x))
diff --git a/pod/perlhacktips.pod b/pod/perlhacktips.pod
index 5aa0b63a04..8b3392d361 100644
--- a/pod/perlhacktips.pod
+++ b/pod/perlhacktips.pod
@@ -1023,18 +1023,14 @@ and looking at the resulting graph, what does it tell about the
execution and data flows. As a matter of fact, this is exactly how C
compilers know to give warnings about dubious code.
-=head2 lint, splint
+=head2 lint
The good old C code quality inspector, C<lint>, is available in several
platforms, but please be aware that there are several different
implementations of it by different vendors, which means that the flags
are not identical across different platforms.
-There is a lint variant called C<splint> (Secure Programming Lint)
-available from http://www.splint.org/ that should compile on any
-Unix-like platform.
-
-There are C<lint> and <splint> targets in Makefile, but you may have to
+There is a C<lint> target in Makefile, but you may have to
diddle with the flags (see above).
=head2 Coverity
SHA-1: c707756ebb45d88362c58f12444af0ebe1e24ac1
* Remove support for Splint static source code analyzer
Splint has not been updated since 2007 and doesnt even build for me.
As far as I know, I'm the only person who's ever worked with Splint on
Perl 5.
Here's what changes:
* Makefile target "splint"
* Macros in XSUB.h and perl.h
* Support in regen/embed.pl
diff --git a/regen/embed.pl b/regen/embed.pl
index f1b7449b0b..9b432ba825 100755
--- a/regen/embed.pl
+++ b/regen/embed.pl
@@ -30,7 +30,6 @@ BEGIN {
require './regen/embed_lib.pl';
}
-my $SPLINT = 0; # Turn true for experimental splint support http://www.splint.org
my $unflagged_pointers;
#
@@ -95,13 +94,6 @@ my ($embed, $core, $ext, $api) = setup_embed();
$scope_type_flag_count++ if $flags =~ /p/;
warn "$plain_func: i, p, and s flags are all mutually exclusive"
if $scope_type_flag_count > 1;
- my $splint_flags = "";
- if ( $SPLINT && !$commented_out ) {
- $splint_flags .= '/*@noreturn@*/ ' if $never_returns;
- if ($can_ignore && ($retval ne 'void') && ($retval !~ /\*/)) {
- $retval .= " /*\@alt void\@*/";
- }
- }
if ($flags =~ /([si])/) {
my $type;
@@ -111,14 +103,14 @@ my ($embed, $core, $ext, $api) = setup_embed();
else {
$type = $1 eq 's' ? "STATIC" : "PERL_STATIC_INLINE";
}
- $retval = "$type $splint_flags$retval";
+ $retval = "$type $retval";
}
else {
if ($never_returns) {
- $retval = "PERL_CALLCONV_NO_RET $splint_flags$retval";
+ $retval = "PERL_CALLCONV_NO_RET $retval";
}
else {
- $retval = "PERL_CALLCONV $splint_flags$retval";
+ $retval = "PERL_CALLCONV $retval";
}
}
$func = full_name($plain_func, $flags);
@@ -148,9 +140,6 @@ my ($embed, $core, $ext, $api) = setup_embed();
&& ($temp_arg !~ /\w+\s+(\w+)(?:\[\d+\])?\s*$/) ) {
warn "$func: $arg ($n) doesn't have a name\n";
}
- if ( $SPLINT && $nullok && !$commented_out ) {
- $arg = '/*@null@*/ ' . $arg;
- }
if (defined $1 && $nn && !($commented_out && !$binarycompat)) {
push @names_of_nn, $1;
}