This repository has been archived by the owner on Aug 27, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/…
…mmarek/kbuild Pull misc non-critical kbuild changes from Michal Marek: - Fix for make TAGS - Fix for make rpm - Some new coccinelle semantic patches * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: scripts/coccinelle: find constant additions that could be bit ors coccicheck: Allow to show the executed command line coccicheck: Allow the user to give a V= (verbose) argument scripts/coccinelle/misc/memcpy-assign.cocci: Replace memcpy with struct assignment kbuild: clear KBUILD_SRC when calling 'make' in RPM spec scripts/coccinelle/misc/semicolon.cocci: Add unneeded semicolon test scripts/tags.sh: Fix regex syntax for etags
- Loading branch information
Showing
7 changed files
with
302 additions
and
34 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
// | ||
// Replace memcpy with struct assignment. | ||
// | ||
// Confidence: High | ||
// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6. GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Comments: | ||
// Options: --no-includes --include-headers | ||
|
||
virtual patch | ||
virtual report | ||
virtual context | ||
virtual org | ||
|
||
@r1 depends on !patch@ | ||
identifier struct_name; | ||
struct struct_name to; | ||
struct struct_name from; | ||
struct struct_name *top; | ||
struct struct_name *fromp; | ||
position p; | ||
@@ | ||
memcpy@p(\(&(to)\|top\), \(&(from)\|fromp\), \(sizeof(to)\|sizeof(from)\|sizeof(struct struct_name)\|sizeof(*top)\|sizeof(*fromp)\)) | ||
|
||
@script:python depends on report@ | ||
p << r1.p; | ||
@@ | ||
coccilib.report.print_report(p[0],"Replace memcpy with struct assignment") | ||
@depends on context@ | ||
position r1.p; | ||
@@ | ||
*memcpy@p(...); | ||
|
||
@script:python depends on org@ | ||
p << r1.p; | ||
@@ | ||
cocci.print_main("Replace memcpy with struct assignment",p) | ||
@depends on patch@ | ||
identifier struct_name; | ||
struct struct_name to; | ||
struct struct_name from; | ||
@@ | ||
( | ||
-memcpy(&(to), &(from), sizeof(to)); | ||
+to = from; | ||
| | ||
-memcpy(&(to), &(from), sizeof(from)); | ||
+to = from; | ||
| | ||
-memcpy(&(to), &(from), sizeof(struct struct_name)); | ||
+to = from; | ||
) | ||
|
||
@depends on patch@ | ||
identifier struct_name; | ||
struct struct_name to; | ||
struct struct_name *from; | ||
@@ | ||
( | ||
-memcpy(&(to), from, sizeof(to)); | ||
+to = *from; | ||
| | ||
-memcpy(&(to), from, sizeof(*from)); | ||
+to = *from; | ||
| | ||
-memcpy(&(to), from, sizeof(struct struct_name)); | ||
+to = *from; | ||
) | ||
|
||
@depends on patch@ | ||
identifier struct_name; | ||
struct struct_name *to; | ||
struct struct_name from; | ||
@@ | ||
( | ||
-memcpy(to, &(from), sizeof(*to)); | ||
+ *to = from; | ||
| | ||
-memcpy(to, &(from), sizeof(from)); | ||
+ *to = from; | ||
| | ||
-memcpy(to, &(from), sizeof(struct struct_name)); | ||
+ *to = from; | ||
) | ||
|
||
@depends on patch@ | ||
identifier struct_name; | ||
struct struct_name *to; | ||
struct struct_name *from; | ||
@@ | ||
( | ||
-memcpy(to, from, sizeof(*to)); | ||
+ *to = *from; | ||
| | ||
-memcpy(to, from, sizeof(*from)); | ||
+ *to = *from; | ||
| | ||
-memcpy(to, from, sizeof(struct struct_name)); | ||
+ *to = *from; | ||
) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
/// Check for constants that are added but are used elsewhere as bitmasks | ||
/// The results should be checked manually to ensure that the nonzero | ||
/// bits in the two constants are actually disjoint. | ||
/// | ||
// Confidence: Moderate | ||
// Copyright: (C) 2013 Julia Lawall, INRIA/LIP6. GPLv2. | ||
// Copyright: (C) 2013 Gilles Muller, INRIA/LIP6. GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Comments: | ||
// Options: -no_includes -include_headers | ||
|
||
virtual org | ||
virtual report | ||
virtual context | ||
|
||
@r@ | ||
constant c; | ||
identifier i; | ||
expression e; | ||
@@ | ||
|
||
( | ||
e | c@i | ||
| | ||
e & c@i | ||
| | ||
e |= c@i | ||
| | ||
e &= c@i | ||
) | ||
|
||
@s@ | ||
constant r.c,c1; | ||
identifier i1; | ||
position p; | ||
@@ | ||
|
||
( | ||
c1 + c - 1 | ||
| | ||
*c1@i1 +@p c | ||
) | ||
|
||
@script:python depends on org@ | ||
p << s.p; | ||
@@ | ||
cocci.print_main("sum of probable bitmasks, consider |",p) | ||
@script:python depends on report@ | ||
p << s.p; | ||
@@ | ||
msg = "WARNING: sum of probable bitmasks, consider |" | ||
coccilib.report.print_report(p[0],msg) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
/// | ||
/// Removes unneeded semicolon. | ||
/// | ||
// Confidence: Moderate | ||
// Copyright: (C) 2012 Peter Senna Tschudin, INRIA/LIP6. GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Comments: Some false positives on empty default cases in switch statements. | ||
// Options: --no-includes --include-headers | ||
|
||
virtual patch | ||
virtual report | ||
virtual context | ||
virtual org | ||
|
||
@r_default@ | ||
position p; | ||
@@ | ||
switch (...) | ||
{ | ||
default: ...;@p | ||
} | ||
|
||
@r_case@ | ||
position p; | ||
@@ | ||
( | ||
switch (...) | ||
{ | ||
case ...:;@p | ||
} | ||
| | ||
switch (...) | ||
{ | ||
case ...:... | ||
case ...:;@p | ||
} | ||
| | ||
switch (...) | ||
{ | ||
case ...:... | ||
case ...: | ||
case ...:;@p | ||
} | ||
) | ||
|
||
@r1@ | ||
statement S; | ||
position p1; | ||
position p != {r_default.p, r_case.p}; | ||
identifier label; | ||
@@ | ||
( | ||
label:; | ||
| | ||
S@p1;@p | ||
) | ||
|
||
@script:python@ | ||
p << r1.p; | ||
p1 << r1.p1; | ||
@@ | ||
if p[0].line != p1[0].line_end: | ||
cocci.include_match(False) | ||
@depends on patch@ | ||
position r1.p; | ||
@@ | ||
-;@p | ||
|
||
@script:python depends on report@ | ||
p << r1.p; | ||
@@ | ||
coccilib.report.print_report(p[0],"Unneeded semicolon") | ||
@depends on context@ | ||
position r1.p; | ||
@@ | ||
*;@p | ||
|
||
@script:python depends on org@ | ||
p << r1.p; | ||
@@ | ||
cocci.print_main("Unneeded semicolon",p) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters