~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/coccicheck

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/coccicheck (Version linux-6.12-rc7) and /scripts/coccicheck (Version linux-2.6.32.71)


  1 #!/usr/bin/env bash                               
  2 # SPDX-License-Identifier: GPL-2.0                
  3 # Linux kernel coccicheck                         
  4 #                                                 
  5 # Read Documentation/dev-tools/coccinelle.rst     
  6 #                                                 
  7 # This script requires at least spatch            
  8 # version 1.0.0-rc11.                             
  9                                                   
 10 DIR="$(dirname $(readlink -f $0))/.."             
 11 SPATCH="`which ${SPATCH:=spatch}`"                
 12                                                   
 13 if [ ! -x "$SPATCH" ]; then                       
 14     echo 'spatch is part of the Coccinelle pro    
 15     exit 1                                        
 16 fi                                                
 17                                                   
 18 SPATCH_VERSION=$($SPATCH --version | head -1 |    
 19                                                   
 20 USE_JOBS="no"                                     
 21 $SPATCH --help | grep -e "--jobs" > /dev/null     
 22                                                   
 23 # The verbosity may be set by the environmenta    
 24 # as for example with 'make V=1 coccicheck'       
 25                                                   
 26 if [ -n "$V" -a "$V" != "0" ]; then               
 27         VERBOSE="$V"                              
 28 else                                              
 29         VERBOSE=0                                 
 30 fi                                                
 31                                                   
 32 FLAGS="--very-quiet"                              
 33                                                   
 34 # You can use SPFLAGS to append extra argument    
 35 # heuristics done in this file as Coccinelle a    
 36 # options conflict.                               
 37 #                                                 
 38 # A good example for use of SPFLAGS is if you     
 39 # you can for instance use the following:         
 40 #                                                 
 41 # $ export COCCI=scripts/coccinelle/misc/irqf_    
 42 # $ make coccicheck MODE=report DEBUG_FILE="al    
 43 #                                                 
 44 # "--show-trying" should show you what rule is    
 45 # stdout, you do not need a debug file for tha    
 46 # be sent to stdout, if you provide a DEBUG_FI    
 47 # inspected there.                                
 48 #                                                 
 49 # --profile will not output if --very-quiet is    
 50 echo $SPFLAGS | grep -E -e "--profile|--show-t    
 51 if [ $? -eq 0 ]; then                             
 52         FLAGS="--quiet"                           
 53 fi                                                
 54                                                   
 55 # spatch only allows include directories with     
 56 # while gcc also allows "-Iinclude" and "-incl    
 57 COCCIINCLUDE=${LINUXINCLUDE//-I/-I }              
 58 COCCIINCLUDE=${COCCIINCLUDE// -include/ --incl    
 59                                                   
 60 if [ "$C" = "1" -o "$C" = "2" ]; then             
 61     ONLINE=1                                      
 62                                                   
 63     if [[ $# -le 0 ]]; then                       
 64             echo ''                               
 65             echo 'Specifying both the variable    
 66 command results in a shift count error.'          
 67             echo ''                               
 68             echo 'Try specifying "scripts/cocc    
 69             echo ''                               
 70             echo 'Example:      make C=2 CHECK    
 71             echo ''                               
 72             exit 1                                
 73     fi                                            
 74                                                   
 75     # Take only the last argument, which is th    
 76     shift $(( $# - 1 ))                           
 77     OPTIONS="$COCCIINCLUDE $1"                    
 78                                                   
 79     # No need to parallelize Coccinelle since     
 80     NPROC=1                                       
 81 else                                              
 82     ONLINE=0                                      
 83     if [ "$KBUILD_EXTMOD" = "" ] ; then           
 84         OPTIONS="--dir $srctree $COCCIINCLUDE"    
 85     else                                          
 86         OPTIONS="--dir $KBUILD_EXTMOD $COCCIIN    
 87     fi                                            
 88                                                   
 89     # Use only one thread per core by default     
 90     THREADS_PER_CORE=$(LANG=C lscpu | grep "Th    
 91     if [ -z "$J" ]; then                          
 92         NPROC=$(getconf _NPROCESSORS_ONLN)        
 93         if [ $THREADS_PER_CORE -gt 1 -a $NPROC    
 94                 NPROC=$((NPROC/2))                
 95         fi                                        
 96     else                                          
 97         NPROC="$J"                                
 98     fi                                            
 99 fi                                                
100                                                   
101 if [ "$KBUILD_EXTMOD" != "" ] ; then              
102     OPTIONS="--patch $srctree $OPTIONS"           
103 fi                                                
104                                                   
105 # You can override by using SPFLAGS               
106 if [ "$USE_JOBS" = "no" ]; then                   
107         trap kill_running SIGTERM SIGINT          
108         declare -a SPATCH_PID                     
109 elif [ "$NPROC" != "1" ]; then                    
110         # Using 0 should work as well, refer t    
111         # https://github.com/rdicosmo/parmap/b    
112         OPTIONS="$OPTIONS --jobs $NPROC --chun    
113 fi                                                
114                                                   
115 if [ "$MODE" = "" ] ; then                        
116     if [ "$ONLINE" = "0" ] ; then                 
117         echo 'You have not explicitly specifie    
118         echo 'Available modes are the followin    
119         echo 'You can specify the mode with "m    
120         echo 'Note however that some modes are    
121     fi                                            
122     MODE="report"                                 
123 fi                                                
124                                                   
125 if [ "$MODE" = "chain" ] ; then                   
126     if [ "$ONLINE" = "0" ] ; then                 
127         echo 'You have selected the "chain" mo    
128         echo 'All available modes will be trie    
129     fi                                            
130 elif [ "$MODE" = "report" -o "$MODE" = "org" ]    
131     FLAGS="--no-show-diff $FLAGS"                 
132 fi                                                
133                                                   
134 if [ "$ONLINE" = "0" ] ; then                     
135     echo ''                                       
136     echo 'Please check for false positives in     
137     echo 'When using "patch" mode, carefully r    
138     echo ''                                       
139 fi                                                
140                                                   
141 run_cmd_parmap() {                                
142         if [ $VERBOSE -ne 0 ] ; then              
143                 echo "Running ($NPROC in paral    
144         fi                                        
145         if [ "$DEBUG_FILE" != "/dev/null" -a "    
146                 echo $@>>$DEBUG_FILE              
147                 $@ 2>>$DEBUG_FILE                 
148         else                                      
149                 echo $@                           
150                 $@ 2>&1                           
151         fi                                        
152                                                   
153         err=$?                                    
154         if [[ $err -ne 0 ]]; then                 
155                 echo "coccicheck failed"          
156                 exit $err                         
157         fi                                        
158 }                                                 
159                                                   
160 run_cmd_old() {                                   
161         local i                                   
162         if [ $VERBOSE -ne 0 ] ; then              
163                 echo "Running ($NPROC in paral    
164         fi                                        
165         for i in $(seq 0 $(( NPROC - 1)) ); do    
166                 eval "$@ --max $NPROC --index     
167                 SPATCH_PID[$i]=$!                 
168                 if [ $VERBOSE -eq 2 ] ; then      
169                         echo "${SPATCH_PID[$i]    
170                 fi                                
171         done                                      
172         wait                                      
173 }                                                 
174                                                   
175 run_cmd() {                                       
176         if [ "$USE_JOBS" = "yes" ]; then          
177                 run_cmd_parmap $@                 
178         else                                      
179                 run_cmd_old $@                    
180         fi                                        
181 }                                                 
182                                                   
183 kill_running() {                                  
184         for i in $(seq 0 $(( NPROC - 1 )) ); d    
185                 if [ $VERBOSE -eq 2 ] ; then      
186                         echo "Killing ${SPATCH    
187                 fi                                
188                 kill ${SPATCH_PID[$i]} 2>/dev/    
189         done                                      
190 }                                                 
191                                                   
192 # You can override heuristics with SPFLAGS, th    
193 OPTIONS="$OPTIONS $SPFLAGS"                       
194                                                   
195 coccinelle () {                                   
196     COCCI="$1"                                    
197                                                   
198     OPT=`grep "Options:" $COCCI | cut -d':' -f    
199     REQ=`grep "Requires:" $COCCI | cut -d':' -    
200     if [ -n "$REQ" ] && ! { echo "$REQ"; echo     
201             echo "Skipping coccinelle SmPL pat    
202             echo "You have coccinelle:            
203             echo "This SmPL patch requires:       
204             return                                
205     fi                                            
206                                                   
207 #   The option '--parse-cocci' can be used to     
208 #                                                 
209 #    $SPATCH -D $MODE $FLAGS -parse_cocci $COC    
210                                                   
211     if [ $VERBOSE -ne 0 -a $ONLINE -eq 0 ] ; t    
212                                                   
213         FILE=${COCCI#$srctree/}                   
214                                                   
215         echo "Processing `basename $COCCI`"       
216         echo "with option(s) \"$OPT\""            
217         echo ''                                   
218         echo 'Message example to submit a patc    
219                                                   
220         sed -ne 's|^///||p' $COCCI                
221                                                   
222         if [ "$MODE" = "patch" ] ; then           
223             echo ' The semantic patch that mak    
224         elif [ "$MODE" = "report" ] ; then        
225             echo ' The semantic patch that mak    
226         elif [ "$MODE" = "context" ] ; then       
227             echo ' The semantic patch that spo    
228         elif [ "$MODE" = "org" ] ; then           
229             echo ' The semantic patch that mak    
230         else                                      
231             echo ' The semantic patch that mak    
232         fi                                        
233         echo " in $FILE."                         
234         echo ''                                   
235         echo ' More information about semantic    
236         echo ' http://coccinelle.lip6.fr/'        
237         echo ''                                   
238                                                   
239         if [ "`sed -ne 's|^//#||p' $COCCI`" ]     
240             echo 'Semantic patch information:'    
241             sed -ne 's|^//#||p' $COCCI            
242             echo ''                               
243         fi                                        
244     fi                                            
245                                                   
246     if [ "$MODE" = "chain" ] ; then               
247         run_cmd $SPATCH -D patch   \              
248                 $FLAGS --cocci-file $COCCI $OP    
249         run_cmd $SPATCH -D report  \              
250                 $FLAGS --cocci-file $COCCI $OP    
251         run_cmd $SPATCH -D context \              
252                 $FLAGS --cocci-file $COCCI $OP    
253         run_cmd $SPATCH -D org     \              
254                 $FLAGS --cocci-file $COCCI $OP    
255     elif [ "$MODE" = "rep+ctxt" ] ; then          
256         run_cmd $SPATCH -D report  \              
257                 $FLAGS --cocci-file $COCCI $OP    
258         run_cmd $SPATCH -D context \              
259                 $FLAGS --cocci-file $COCCI $OP    
260     else                                          
261         run_cmd $SPATCH -D $MODE   $FLAGS --co    
262     fi                                            
263                                                   
264 }                                                 
265                                                   
266 if [ "$DEBUG_FILE" != "/dev/null" -a "$DEBUG_F    
267         if [ -f $DEBUG_FILE ]; then               
268                 echo "Debug file $DEBUG_FILE e    
269                 exit                              
270         fi                                        
271 else                                              
272         DEBUG_FILE="/dev/null"                    
273 fi                                                
274                                                   
275 if [ "$COCCI" = "" ] ; then                       
276     for f in `find $srctree/scripts/coccinelle    
277         coccinelle $f                             
278     done                                          
279 else                                              
280     coccinelle $COCCI                             
281 fi                                                
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php