SHA-1: c707756ebb45d88362c58f12444af0ebe1e24ac1 * Remove support for Splint static source code analyzer Splint has not been updated since 2007 and doesn’t 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 -# 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 -# 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, 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 (Secure Programming Lint) -available from http://www.splint.org/ that should compile on any -Unix-like platform. - -There are C and targets in Makefile, but you may have to +There is a C 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 doesn’t 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; }