Skip to content

Commit

Permalink
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/…
Browse files Browse the repository at this point in the history
…mmarek/kbuild-2.6

* 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
  Documentation/kbuild: add info that 'choice' can have a symbol name
  kbuild: add numeric --set-val option to scripts/config
  headers_check: Fix warning text
  headers_check: better search for functions in headers
  scripts/coccinelle: update for compatability with Coccinelle 0.2.4
  tags: put function prototypes back!
  Kconfig: fix single letter command in scripts/config
  gitignore: add scripts/recordmcount
  • Loading branch information
torvalds committed Jan 10, 2011
2 parents 1693ed2 + 0719e1d commit e316633
Show file tree
Hide file tree
Showing 8 changed files with 41 additions and 36 deletions.
4 changes: 4 additions & 0 deletions Documentation/coccinelle.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ as a regular user, and install it with

sudo make install

The semantic patches in the kernel will work best with Coccinelle version
0.2.4 or later. Using earlier versions may incur some parse errors in the
semantic patch code, but any results that are obtained should still be
correct.

Using Coccinelle on the Linux kernel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Expand Down
6 changes: 5 additions & 1 deletion Documentation/kbuild/kconfig-language.txt
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ separate list of options.

choices:

"choice"
"choice" [symbol]
<choice options>
<choice block>
"endchoice"
Expand All @@ -281,6 +281,10 @@ single driver can be compiled/loaded into the kernel, but all drivers
can be compiled as modules.
A choice accepts another option "optional", which allows to set the
choice to 'n' and no entry needs to be selected.
If no [symbol] is associated with a choice, then you can not have multiple
definitions of that choice. If a [symbol] is associated to the choice,
then you may define the same choice (ie. with the same entries) in another
place.

comment:

Expand Down
1 change: 1 addition & 0 deletions scripts/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ pnmtologo
bin2c
unifdef
ihex2fw
recordmcount
6 changes: 3 additions & 3 deletions scripts/coccinelle/misc/doubleinit.cocci
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// Copyright: (C) 2010 Julia Lawall, DIKU. GPLv2.
// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6. GPLv2.
// URL: http://coccinelle.lip6.fr/
// Comments:
// Comments: requires at least Coccinelle 0.2.4, lex or parse error otherwise
// Options: -no_includes -include_headers

virtual org
Expand All @@ -19,15 +19,15 @@ position p0,p;
expression E;
@@

struct I s =@p0 { ... .fld@p = E, ...};
struct I s =@p0 { ..., .fld@p = E, ...};

@s@
identifier I, s, r.fld;
position r.p0,p;
expression E;
@@

struct I s =@p0 { ... .fld@p = E, ...};
struct I s =@p0 { ..., .fld@p = E, ...};

@script:python depends on org@
p0 << r.p0;
Expand Down
39 changes: 14 additions & 25 deletions scripts/coccinelle/null/deref_null.cocci
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,10 @@
// Options:

virtual context
virtual patch
virtual org
virtual report

@initialize:python depends on !context && patch && !org && !report@
import sys
print >> sys.stderr, "This semantic patch does not support the 'patch' mode."
@depends on patch@
@@
this_rule_should_never_matches();
@ifm depends on !patch@
@ifm@
expression *E;
statement S1,S2;
position p1;
Expand All @@ -35,15 +24,15 @@ if@p1 ((E == NULL && ...) || ...) S1 else S2

// The following two rules are separate, because both can match a single
// expression in different ways
@pr1 depends on !patch expression@
@pr1 expression@
expression *ifm.E;
identifier f;
position p1;
@@

(E != NULL && ...) ? <+...E->f@p1...+> : ...

@pr2 depends on !patch expression@
@pr2 expression@
expression *ifm.E;
identifier f;
position p2;
Expand All @@ -59,7 +48,7 @@ position p2;

// For org and report modes

@r depends on !context && !patch && (org || report) exists@
@r depends on !context && (org || report) exists@
expression subE <= ifm.E;
expression *ifm.E;
expression E1,E2;
Expand Down Expand Up @@ -99,7 +88,7 @@ if@p1 ((E == NULL && ...) || ...)
}
else S3

@script:python depends on !context && !patch && !org && report@
@script:python depends on !context && !org && report@
p << r.p;
p1 << ifm.p1;
x << ifm.E;
Expand All @@ -109,7 +98,7 @@ msg="ERROR: %s is NULL but dereferenced." % (x)
coccilib.report.print_report(p[0], msg)
cocci.include_match(False)
@script:python depends on !context && !patch && org && !report@
@script:python depends on !context && org && !report@
p << r.p;
p1 << ifm.p1;
x << ifm.E;
Expand All @@ -120,7 +109,7 @@ msg_safe=msg.replace("[","@(").replace("]",")")
cocci.print_main(msg_safe,p)
cocci.include_match(False)
@s depends on !context && !patch && (org || report) exists@
@s depends on !context && (org || report) exists@
expression subE <= ifm.E;
expression *ifm.E;
expression E1,E2;
Expand Down Expand Up @@ -159,7 +148,7 @@ if@p1 ((E == NULL && ...) || ...)
}
else S3

@script:python depends on !context && !patch && !org && report@
@script:python depends on !context && !org && report@
p << s.p;
p1 << ifm.p1;
x << ifm.E;
Expand All @@ -168,7 +157,7 @@ x << ifm.E;
msg="ERROR: %s is NULL but dereferenced." % (x)
coccilib.report.print_report(p[0], msg)
@script:python depends on !context && !patch && org && !report@
@script:python depends on !context && org && !report@
p << s.p;
p1 << ifm.p1;
x << ifm.E;
Expand All @@ -180,7 +169,7 @@ cocci.print_main(msg_safe,p)
// For context mode
@depends on context && !patch && !org && !report exists@
@depends on context && !org && !report exists@
expression subE <= ifm.E;
expression *ifm.E;
expression E1,E2;
Expand Down Expand Up @@ -223,23 +212,23 @@ else S3
// The following three rules are duplicates of ifm, pr1 and pr2 respectively.
// It is need because the previous rule as already made a "change".

@ifm1 depends on !patch@
@ifm1@
expression *E;
statement S1,S2;
position p1;
@@

if@p1 ((E == NULL && ...) || ...) S1 else S2

@pr11 depends on !patch expression@
@pr11 expression@
expression *ifm1.E;
identifier f;
position p1;
@@

(E != NULL && ...) ? <+...E->f@p1...+> : ...

@pr12 depends on !patch expression@
@pr12 expression@
expression *ifm1.E;
identifier f;
position p2;
Expand All @@ -253,7 +242,7 @@ position p2;
sizeof(<+...E->f@p2...+>)
)

@depends on context && !patch && !org && !report exists@
@depends on context && !org && !report exists@
expression subE <= ifm1.E;
expression *ifm1.E;
expression E1,E2;
Expand Down
13 changes: 10 additions & 3 deletions scripts/config
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ commands:
--enable|-e option Enable option
--disable|-d option Disable option
--module|-m option Turn option into a module
--set-str option value
Set option to "value"
--set-str option string
Set option to "string"
--set-val option value
Set option to value
--state|-s option Print state of option (n,y,m,undef)
--enable-after|-E beforeopt option
Expand Down Expand Up @@ -86,7 +88,7 @@ while [ "$1" != "" ] ; do
B=$ARG
shift 2
;;
--*)
-*)
checkarg "$1"
shift
;;
Expand All @@ -109,6 +111,11 @@ while [ "$1" != "" ] ; do
shift
;;

--set-val)
set_var "CONFIG_$ARG" "CONFIG_$ARG=$1"
shift
;;

--state|-s)
if grep -q "# CONFIG_$ARG is not set" $FN ; then
echo n
Expand Down
6 changes: 3 additions & 3 deletions scripts/headers_check.pl
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,10 @@ sub check_include

sub check_declarations
{
if ($line =~m/^\s*extern\b/) {
if ($line =~m/^(\s*extern|unsigned|char|short|int|long|void)\b/) {
printf STDERR "$filename:$lineno: " .
"userspace cannot call function or variable " .
"defined in the kernel\n";
"userspace cannot reference function or " .
"variable defined in the kernel\n";
}
}

Expand Down
2 changes: 1 addition & 1 deletion scripts/tags.sh
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ exuberant()
-I ____cacheline_internodealigned_in_smp \
-I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
-I DEFINE_TRACE,EXPORT_TRACEPOINT_SYMBOL,EXPORT_TRACEPOINT_SYMBOL_GPL \
--extra=+f --c-kinds=-px \
--extra=+f --c-kinds=+px \
--regex-asm='/^ENTRY\(([^)]*)\).*/\1/' \
--regex-c='/^SYSCALL_DEFINE[[:digit:]]?\(([^,)]*).*/sys_\1/' \
--regex-c++='/^TRACE_EVENT\(([^,)]*).*/trace_\1/' \
Expand Down

0 comments on commit e316633

Please sign in to comment.