Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
Pull misc kbuild updates from Michal Marek: "This is the less critical kbuild stuff for v3.18-rc1: - make deb-pkg debuginfo fix, ppc64el support and warning fix for recent dpkg tools - make TAGS fixes - new coccinelle patch - kbuild documentation improvements" * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: deb-pkg: remove obsolete -isp option to dpkg-gencontrol coccinelle: misc: semantic patch to delete overly complex return code processing deb-pkg: Add support for powerpc little endian builddeb: put the dbg files into the correct directory scripts/tags.sh: fix DEFINE_HASHTABLE in emacs case scripts/tags.sh: remove *PCGFLAGS regular expressions scripts/tags.sh: Don't specify kind-spec for emacs' ctags/etags Documentation: kbuild: Improve grammar Documentation: kbuild: Remove obsolete dtc_cpp section Documentation: kbuild: Improve if_changed documentation Documentation: kbuild: Remove obsolete include/asm symlink step
This commit is contained in:
commit
da92da3638
|
@ -174,7 +174,7 @@ more details, with real examples.
|
||||||
|
|
||||||
--- 3.3 Loadable module goals - obj-m
|
--- 3.3 Loadable module goals - obj-m
|
||||||
|
|
||||||
$(obj-m) specify object files which are built as loadable
|
$(obj-m) specifies object files which are built as loadable
|
||||||
kernel modules.
|
kernel modules.
|
||||||
|
|
||||||
A module may be built from one source file or several source
|
A module may be built from one source file or several source
|
||||||
|
@ -277,7 +277,7 @@ more details, with real examples.
|
||||||
down in the ext2 directory.
|
down in the ext2 directory.
|
||||||
Kbuild only uses this information to decide that it needs to visit
|
Kbuild only uses this information to decide that it needs to visit
|
||||||
the directory, it is the Makefile in the subdirectory that
|
the directory, it is the Makefile in the subdirectory that
|
||||||
specifies what is modules and what is built-in.
|
specifies what is modular and what is built-in.
|
||||||
|
|
||||||
It is good practice to use a CONFIG_ variable when assigning directory
|
It is good practice to use a CONFIG_ variable when assigning directory
|
||||||
names. This allows kbuild to totally skip the directory if the
|
names. This allows kbuild to totally skip the directory if the
|
||||||
|
@ -403,7 +403,7 @@ more details, with real examples.
|
||||||
echoing information to user in a rule is often a good practice
|
echoing information to user in a rule is often a good practice
|
||||||
but when execution "make -s" one does not expect to see any output
|
but when execution "make -s" one does not expect to see any output
|
||||||
except for warnings/errors.
|
except for warnings/errors.
|
||||||
To support this kbuild define $(kecho) which will echo out the
|
To support this kbuild defines $(kecho) which will echo out the
|
||||||
text following $(kecho) to stdout except if "make -s" is used.
|
text following $(kecho) to stdout except if "make -s" is used.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -417,7 +417,7 @@ more details, with real examples.
|
||||||
|
|
||||||
The kernel may be built with several different versions of
|
The kernel may be built with several different versions of
|
||||||
$(CC), each supporting a unique set of features and options.
|
$(CC), each supporting a unique set of features and options.
|
||||||
kbuild provide basic support to check for valid options for $(CC).
|
kbuild provides basic support to check for valid options for $(CC).
|
||||||
$(CC) is usually the gcc compiler, but other alternatives are
|
$(CC) is usually the gcc compiler, but other alternatives are
|
||||||
available.
|
available.
|
||||||
|
|
||||||
|
@ -456,8 +456,8 @@ more details, with real examples.
|
||||||
Note: as-instr-option uses KBUILD_AFLAGS for $(AS) options
|
Note: as-instr-option uses KBUILD_AFLAGS for $(AS) options
|
||||||
|
|
||||||
cc-option
|
cc-option
|
||||||
cc-option is used to check if $(CC) supports a given option, and not
|
cc-option is used to check if $(CC) supports a given option, and if
|
||||||
supported to use an optional second option.
|
not supported to use an optional second option.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
#arch/x86/Makefile
|
#arch/x86/Makefile
|
||||||
|
@ -557,8 +557,8 @@ more details, with real examples.
|
||||||
false ; \
|
false ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
In this example for a specific GCC version the build will error out explaining
|
In this example for a specific GCC version the build will error out
|
||||||
to the user why it stops.
|
explaining to the user why it stops.
|
||||||
|
|
||||||
cc-cross-prefix
|
cc-cross-prefix
|
||||||
cc-cross-prefix is used to check if there exists a $(CC) in path with
|
cc-cross-prefix is used to check if there exists a $(CC) in path with
|
||||||
|
@ -656,7 +656,7 @@ Both possibilities are described in the following.
|
||||||
In the example above the executable is composed of the C++ file
|
In the example above the executable is composed of the C++ file
|
||||||
qconf.cc - identified by $(qconf-cxxobjs).
|
qconf.cc - identified by $(qconf-cxxobjs).
|
||||||
|
|
||||||
If qconf is composed by a mixture of .c and .cc files, then an
|
If qconf is composed of a mixture of .c and .cc files, then an
|
||||||
additional line can be used to identify this.
|
additional line can be used to identify this.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -733,7 +733,7 @@ Both possibilities are described in the following.
|
||||||
hostprogs-$(CONFIG_KALLSYMS) += kallsyms
|
hostprogs-$(CONFIG_KALLSYMS) += kallsyms
|
||||||
|
|
||||||
Kbuild knows about both 'y' for built-in and 'm' for module.
|
Kbuild knows about both 'y' for built-in and 'm' for module.
|
||||||
So if a config symbol evaluate to 'm', kbuild will still build
|
So if a config symbol evaluates to 'm', kbuild will still build
|
||||||
the binary. In other words, Kbuild handles hostprogs-m exactly
|
the binary. In other words, Kbuild handles hostprogs-m exactly
|
||||||
like hostprogs-y. But only hostprogs-y is recommended to be used
|
like hostprogs-y. But only hostprogs-y is recommended to be used
|
||||||
when no CONFIG symbols are involved.
|
when no CONFIG symbols are involved.
|
||||||
|
@ -754,8 +754,8 @@ Additional files can be specified in kbuild makefiles by use of $(clean-files).
|
||||||
#drivers/pci/Makefile
|
#drivers/pci/Makefile
|
||||||
clean-files := devlist.h classlist.h
|
clean-files := devlist.h classlist.h
|
||||||
|
|
||||||
When executing "make clean", the two files "devlist.h classlist.h" will
|
When executing "make clean", the two files "devlist.h classlist.h" will be
|
||||||
be deleted. Kbuild will assume files to be in same relative directory as the
|
deleted. Kbuild will assume files to be in the same relative directory as the
|
||||||
Makefile except if an absolute path is specified (path starting with '/').
|
Makefile except if an absolute path is specified (path starting with '/').
|
||||||
|
|
||||||
To delete a directory hierarchy use:
|
To delete a directory hierarchy use:
|
||||||
|
@ -786,7 +786,7 @@ is not sufficient this sometimes needs to be explicit.
|
||||||
The above assignment instructs kbuild to descend down in the
|
The above assignment instructs kbuild to descend down in the
|
||||||
directory compressed/ when "make clean" is executed.
|
directory compressed/ when "make clean" is executed.
|
||||||
|
|
||||||
To support the clean infrastructure in the Makefiles that builds the
|
To support the clean infrastructure in the Makefiles that build the
|
||||||
final bootimage there is an optional target named archclean:
|
final bootimage there is an optional target named archclean:
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -818,17 +818,16 @@ a few targets.
|
||||||
When kbuild executes, the following steps are followed (roughly):
|
When kbuild executes, the following steps are followed (roughly):
|
||||||
1) Configuration of the kernel => produce .config
|
1) Configuration of the kernel => produce .config
|
||||||
2) Store kernel version in include/linux/version.h
|
2) Store kernel version in include/linux/version.h
|
||||||
3) Symlink include/asm to include/asm-$(ARCH)
|
3) Updating all other prerequisites to the target prepare:
|
||||||
4) Updating all other prerequisites to the target prepare:
|
|
||||||
- Additional prerequisites are specified in arch/$(ARCH)/Makefile
|
- Additional prerequisites are specified in arch/$(ARCH)/Makefile
|
||||||
5) Recursively descend down in all directories listed in
|
4) Recursively descend down in all directories listed in
|
||||||
init-* core* drivers-* net-* libs-* and build all targets.
|
init-* core* drivers-* net-* libs-* and build all targets.
|
||||||
- The values of the above variables are expanded in arch/$(ARCH)/Makefile.
|
- The values of the above variables are expanded in arch/$(ARCH)/Makefile.
|
||||||
6) All object files are then linked and the resulting file vmlinux is
|
5) All object files are then linked and the resulting file vmlinux is
|
||||||
located at the root of the obj tree.
|
located at the root of the obj tree.
|
||||||
The very first objects linked are listed in head-y, assigned by
|
The very first objects linked are listed in head-y, assigned by
|
||||||
arch/$(ARCH)/Makefile.
|
arch/$(ARCH)/Makefile.
|
||||||
7) Finally, the architecture-specific part does any required post processing
|
6) Finally, the architecture-specific part does any required post processing
|
||||||
and builds the final bootimage.
|
and builds the final bootimage.
|
||||||
- This includes building boot records
|
- This includes building boot records
|
||||||
- Preparing initrd images and the like
|
- Preparing initrd images and the like
|
||||||
|
@ -927,7 +926,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
|
|
||||||
KBUILD_AFLAGS_MODULE Options for $(AS) when building modules
|
KBUILD_AFLAGS_MODULE Options for $(AS) when building modules
|
||||||
|
|
||||||
$(KBUILD_AFLAGS_MODULE) is used to add arch specific options that
|
$(KBUILD_AFLAGS_MODULE) is used to add arch-specific options that
|
||||||
are used for $(AS).
|
are used for $(AS).
|
||||||
From commandline AFLAGS_MODULE shall be used (see kbuild.txt).
|
From commandline AFLAGS_MODULE shall be used (see kbuild.txt).
|
||||||
|
|
||||||
|
@ -938,13 +937,13 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
|
|
||||||
KBUILD_CFLAGS_MODULE Options for $(CC) when building modules
|
KBUILD_CFLAGS_MODULE Options for $(CC) when building modules
|
||||||
|
|
||||||
$(KBUILD_CFLAGS_MODULE) is used to add arch specific options that
|
$(KBUILD_CFLAGS_MODULE) is used to add arch-specific options that
|
||||||
are used for $(CC).
|
are used for $(CC).
|
||||||
From commandline CFLAGS_MODULE shall be used (see kbuild.txt).
|
From commandline CFLAGS_MODULE shall be used (see kbuild.txt).
|
||||||
|
|
||||||
KBUILD_LDFLAGS_MODULE Options for $(LD) when linking modules
|
KBUILD_LDFLAGS_MODULE Options for $(LD) when linking modules
|
||||||
|
|
||||||
$(KBUILD_LDFLAGS_MODULE) is used to add arch specific options
|
$(KBUILD_LDFLAGS_MODULE) is used to add arch-specific options
|
||||||
used when linking modules. This is often a linker script.
|
used when linking modules. This is often a linker script.
|
||||||
From commandline LDFLAGS_MODULE shall be used (see kbuild.txt).
|
From commandline LDFLAGS_MODULE shall be used (see kbuild.txt).
|
||||||
|
|
||||||
|
@ -1066,7 +1065,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
|
|
||||||
extra-y
|
extra-y
|
||||||
|
|
||||||
extra-y specify additional targets created in the current
|
extra-y specifies additional targets created in the current
|
||||||
directory, in addition to any targets specified by obj-*.
|
directory, in addition to any targets specified by obj-*.
|
||||||
|
|
||||||
Listing all targets in extra-y is required for two purposes:
|
Listing all targets in extra-y is required for two purposes:
|
||||||
|
@ -1093,7 +1092,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
target: source(s) FORCE
|
target: source(s) FORCE
|
||||||
$(call if_changed,ld/objcopy/gzip)
|
$(call if_changed,ld/objcopy/gzip/...)
|
||||||
|
|
||||||
When the rule is evaluated, it is checked to see if any files
|
When the rule is evaluated, it is checked to see if any files
|
||||||
need an update, or the command line has changed since the last
|
need an update, or the command line has changed since the last
|
||||||
|
@ -1111,7 +1110,7 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
significant; for instance, the below will fail (note the extra space
|
significant; for instance, the below will fail (note the extra space
|
||||||
after the comma):
|
after the comma):
|
||||||
target: source(s) FORCE
|
target: source(s) FORCE
|
||||||
#WRONG!# $(call if_changed, ld/objcopy/gzip)
|
#WRONG!# $(call if_changed, ld/objcopy/gzip/...)
|
||||||
|
|
||||||
ld
|
ld
|
||||||
Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
|
Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
|
||||||
|
@ -1142,8 +1141,8 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
2) delete target during make clean
|
2) delete target during make clean
|
||||||
|
|
||||||
The ": %: %.o" part of the prerequisite is a shorthand that
|
The ": %: %.o" part of the prerequisite is a shorthand that
|
||||||
free us from listing the setup.o and bootsect.o files.
|
frees us from listing the setup.o and bootsect.o files.
|
||||||
Note: It is a common mistake to forget the "target :=" assignment,
|
Note: It is a common mistake to forget the "targets :=" assignment,
|
||||||
resulting in the target file being recompiled for no
|
resulting in the target file being recompiled for no
|
||||||
obvious reason.
|
obvious reason.
|
||||||
|
|
||||||
|
@ -1164,29 +1163,6 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
clean-files += *.dtb
|
clean-files += *.dtb
|
||||||
DTC_FLAGS ?= -p 1024
|
DTC_FLAGS ?= -p 1024
|
||||||
|
|
||||||
dtc_cpp
|
|
||||||
This is just like dtc as describe above, except that the C pre-
|
|
||||||
processor is invoked upon the .dtsp file before compiling the result
|
|
||||||
with dtc.
|
|
||||||
|
|
||||||
In order for build dependencies to work, all files compiled using
|
|
||||||
dtc_cpp must use the C pre-processor's #include functionality and not
|
|
||||||
dtc's /include/ functionality.
|
|
||||||
|
|
||||||
Using the C pre-processor allows use of #define to create named
|
|
||||||
constants. In turn, the #defines will typically appear in a header
|
|
||||||
file, which may be shared with regular C code. Since the dtc language
|
|
||||||
represents a data structure rather than code in C syntax, similar
|
|
||||||
restrictions are placed on a header file included by a device tree
|
|
||||||
file as for a header file included by an assembly language file.
|
|
||||||
In particular, the C pre-processor is passed -x assembler-with-cpp,
|
|
||||||
which sets macro __ASSEMBLY__. __DTS__ is also set. These allow header
|
|
||||||
files to restrict their content to that compatible with device tree
|
|
||||||
source.
|
|
||||||
|
|
||||||
A central rule exists to create $(obj)/%.dtb from $(src)/%.dtsp;
|
|
||||||
architecture Makefiles do no need to explicitly write out that rule.
|
|
||||||
|
|
||||||
--- 6.8 Custom kbuild commands
|
--- 6.8 Custom kbuild commands
|
||||||
|
|
||||||
When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand
|
When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand
|
||||||
|
@ -1237,11 +1213,11 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
When building the *.lds target, kbuild uses the variables:
|
When building the *.lds target, kbuild uses the variables:
|
||||||
KBUILD_CPPFLAGS : Set in top-level Makefile
|
KBUILD_CPPFLAGS : Set in top-level Makefile
|
||||||
cppflags-y : May be set in the kbuild makefile
|
cppflags-y : May be set in the kbuild makefile
|
||||||
CPPFLAGS_$(@F) : Target specific flags.
|
CPPFLAGS_$(@F) : Target-specific flags.
|
||||||
Note that the full filename is used in this
|
Note that the full filename is used in this
|
||||||
assignment.
|
assignment.
|
||||||
|
|
||||||
The kbuild infrastructure for *lds file are used in several
|
The kbuild infrastructure for *lds files is used in several
|
||||||
architecture-specific files.
|
architecture-specific files.
|
||||||
|
|
||||||
--- 6.10 Generic header files
|
--- 6.10 Generic header files
|
||||||
|
@ -1254,11 +1230,11 @@ When kbuild executes, the following steps are followed (roughly):
|
||||||
|
|
||||||
=== 7 Kbuild syntax for exported headers
|
=== 7 Kbuild syntax for exported headers
|
||||||
|
|
||||||
The kernel include a set of headers that is exported to userspace.
|
The kernel includes a set of headers that is exported to userspace.
|
||||||
Many headers can be exported as-is but other headers require a
|
Many headers can be exported as-is but other headers require a
|
||||||
minimal pre-processing before they are ready for user-space.
|
minimal pre-processing before they are ready for user-space.
|
||||||
The pre-processing does:
|
The pre-processing does:
|
||||||
- drop kernel specific annotations
|
- drop kernel-specific annotations
|
||||||
- drop include of compiler.h
|
- drop include of compiler.h
|
||||||
- drop all sections that are kernel internal (guarded by ifdef __KERNEL__)
|
- drop all sections that are kernel internal (guarded by ifdef __KERNEL__)
|
||||||
|
|
||||||
|
@ -1268,7 +1244,7 @@ See subsequent chapter for the syntax of the Kbuild file.
|
||||||
|
|
||||||
--- 7.1 header-y
|
--- 7.1 header-y
|
||||||
|
|
||||||
header-y specify header files to be exported.
|
header-y specifies header files to be exported.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
#include/linux/Kbuild
|
#include/linux/Kbuild
|
||||||
|
@ -1278,7 +1254,7 @@ See subsequent chapter for the syntax of the Kbuild file.
|
||||||
The convention is to list one file per line and
|
The convention is to list one file per line and
|
||||||
preferably in alphabetic order.
|
preferably in alphabetic order.
|
||||||
|
|
||||||
header-y also specify which subdirectories to visit.
|
header-y also specifies which subdirectories to visit.
|
||||||
A subdirectory is identified by a trailing '/' which
|
A subdirectory is identified by a trailing '/' which
|
||||||
can be seen in the example above for the usb subdirectory.
|
can be seen in the example above for the usb subdirectory.
|
||||||
|
|
||||||
|
@ -1296,9 +1272,9 @@ See subsequent chapter for the syntax of the Kbuild file.
|
||||||
|
|
||||||
--- 7.3 destination-y
|
--- 7.3 destination-y
|
||||||
|
|
||||||
When an architecture have a set of exported headers that needs to be
|
When an architecture has a set of exported headers that needs to be
|
||||||
exported to a different directory destination-y is used.
|
exported to a different directory destination-y is used.
|
||||||
destination-y specify the destination directory for all exported
|
destination-y specifies the destination directory for all exported
|
||||||
headers in the file where it is present.
|
headers in the file where it is present.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -1391,9 +1367,9 @@ The top Makefile exports the following variables:
|
||||||
|
|
||||||
INSTALL_MOD_STRIP
|
INSTALL_MOD_STRIP
|
||||||
|
|
||||||
If this variable is specified, will cause modules to be stripped
|
If this variable is specified, it will cause modules to be stripped
|
||||||
after they are installed. If INSTALL_MOD_STRIP is '1', then the
|
after they are installed. If INSTALL_MOD_STRIP is '1', then the
|
||||||
default option --strip-debug will be used. Otherwise,
|
default option --strip-debug will be used. Otherwise, the
|
||||||
INSTALL_MOD_STRIP value will be used as the option(s) to the strip
|
INSTALL_MOD_STRIP value will be used as the option(s) to the strip
|
||||||
command.
|
command.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,180 @@
|
||||||
|
/// Simplify a trivial if-return sequence. Possibly combine with a
|
||||||
|
/// preceding function call.
|
||||||
|
//
|
||||||
|
// Confidence: High
|
||||||
|
// Copyright: (C) 2014 Julia Lawall, INRIA/LIP6. GPLv2.
|
||||||
|
// Copyright: (C) 2014 Gilles Muller, INRIA/LiP6. GPLv2.
|
||||||
|
// URL: http://coccinelle.lip6.fr/
|
||||||
|
// Comments:
|
||||||
|
// Options: --no-includes --include-headers
|
||||||
|
|
||||||
|
virtual patch
|
||||||
|
virtual context
|
||||||
|
virtual org
|
||||||
|
virtual report
|
||||||
|
|
||||||
|
@r depends on patch@
|
||||||
|
local idexpression e;
|
||||||
|
identifier i,f,fn;
|
||||||
|
@@
|
||||||
|
|
||||||
|
fn(...) { <...
|
||||||
|
- e@i =
|
||||||
|
+ return
|
||||||
|
f(...);
|
||||||
|
-if (i != 0) return i;
|
||||||
|
-return 0;
|
||||||
|
...> }
|
||||||
|
|
||||||
|
@depends on patch@
|
||||||
|
identifier r.i;
|
||||||
|
type t;
|
||||||
|
@@
|
||||||
|
|
||||||
|
-t i;
|
||||||
|
... when != i
|
||||||
|
|
||||||
|
@depends on patch@
|
||||||
|
expression e;
|
||||||
|
@@
|
||||||
|
|
||||||
|
-if (e != 0)
|
||||||
|
return e;
|
||||||
|
-return 0;
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@s1 depends on context || org || report@
|
||||||
|
local idexpression e;
|
||||||
|
identifier i,f,fn;
|
||||||
|
position p,p1,p2;
|
||||||
|
@@
|
||||||
|
|
||||||
|
fn(...) { <...
|
||||||
|
* e@i@p = f(...);
|
||||||
|
if (\(i@p1 != 0\|i@p2 < 0\))
|
||||||
|
return i;
|
||||||
|
return 0;
|
||||||
|
...> }
|
||||||
|
|
||||||
|
@s2 depends on context || org || report forall@
|
||||||
|
identifier s1.i;
|
||||||
|
type t;
|
||||||
|
position q,s1.p;
|
||||||
|
expression e,f;
|
||||||
|
@@
|
||||||
|
|
||||||
|
* t i@q;
|
||||||
|
... when != i
|
||||||
|
e@p = f(...);
|
||||||
|
|
||||||
|
@s3 depends on context || org || report@
|
||||||
|
expression e;
|
||||||
|
position p1!=s1.p1;
|
||||||
|
position p2!=s1.p2;
|
||||||
|
@@
|
||||||
|
|
||||||
|
*if (\(e@p1 != 0\|e@p2 < 0\))
|
||||||
|
return e;
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@script:python depends on org@
|
||||||
|
p << s1.p;
|
||||||
|
p1 << s1.p1;
|
||||||
|
q << s2.q;
|
||||||
|
@@
|
||||||
|
|
||||||
|
cocci.print_main("decl",q)
|
||||||
|
cocci.print_secs("use",p)
|
||||||
|
cocci.include_match(False)
|
||||||
|
|
||||||
|
@script:python depends on org@
|
||||||
|
p << s1.p;
|
||||||
|
p2 << s1.p2;
|
||||||
|
q << s2.q;
|
||||||
|
@@
|
||||||
|
|
||||||
|
cocci.print_main("decl",q)
|
||||||
|
cocci.print_secs("use with questionable test",p)
|
||||||
|
cocci.include_match(False)
|
||||||
|
|
||||||
|
@script:python depends on org@
|
||||||
|
p << s1.p;
|
||||||
|
p1 << s1.p1;
|
||||||
|
@@
|
||||||
|
|
||||||
|
cocci.print_main("use",p)
|
||||||
|
|
||||||
|
@script:python depends on org@
|
||||||
|
p << s1.p;
|
||||||
|
p2 << s1.p2;
|
||||||
|
@@
|
||||||
|
|
||||||
|
cocci.print_main("use with questionable test",p)
|
||||||
|
|
||||||
|
@script:python depends on org@
|
||||||
|
p << s3.p1;
|
||||||
|
@@
|
||||||
|
|
||||||
|
cocci.print_main("test",p)
|
||||||
|
|
||||||
|
@script:python depends on org@
|
||||||
|
p << s3.p2;
|
||||||
|
@@
|
||||||
|
|
||||||
|
cocci.print_main("questionable test",p)
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------
|
||||||
|
|
||||||
|
@script:python depends on report@
|
||||||
|
p << s1.p;
|
||||||
|
p1 << s1.p1;
|
||||||
|
q << s2.q;
|
||||||
|
@@
|
||||||
|
|
||||||
|
msg = "WARNING: end returns can be simpified and declaration on line %s can be dropped" % (q[0].line)
|
||||||
|
coccilib.report.print_report(p[0],msg)
|
||||||
|
cocci.include_match(False)
|
||||||
|
|
||||||
|
@script:python depends on report@
|
||||||
|
p << s1.p;
|
||||||
|
p1 << s1.p1;
|
||||||
|
q << s2.q
|
||||||
|
;
|
||||||
|
@@
|
||||||
|
|
||||||
|
msg = "WARNING: end returns may be simpified if negative or 0 value and declaration on line %s can be dropped" % (q[0].line)
|
||||||
|
coccilib.report.print_report(p[0],msg)
|
||||||
|
cocci.include_match(False)
|
||||||
|
|
||||||
|
@script:python depends on report@
|
||||||
|
p << s1.p;
|
||||||
|
p1 << s1.p1;
|
||||||
|
@@
|
||||||
|
|
||||||
|
msg = "WARNING: end returns can be simpified"
|
||||||
|
coccilib.report.print_report(p[0],msg)
|
||||||
|
|
||||||
|
@script:python depends on report@
|
||||||
|
p << s1.p;
|
||||||
|
p2 << s1.p2;
|
||||||
|
@@
|
||||||
|
|
||||||
|
msg = "WARNING: end returns can be simpified if negative or 0 value"
|
||||||
|
coccilib.report.print_report(p[0],msg)
|
||||||
|
|
||||||
|
@script:python depends on report@
|
||||||
|
p << s3.p1;
|
||||||
|
@@
|
||||||
|
|
||||||
|
msg = "WARNING: end returns can be simpified"
|
||||||
|
coccilib.report.print_report(p[0],msg)
|
||||||
|
|
||||||
|
@script:python depends on report@
|
||||||
|
p << s3.p2;
|
||||||
|
@@
|
||||||
|
|
||||||
|
msg = "WARNING: end returns can be simpified if tested value is negative or 0"
|
||||||
|
coccilib.report.print_report(p[0],msg)
|
|
@ -37,7 +37,7 @@ create_package() {
|
||||||
s390*)
|
s390*)
|
||||||
debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
|
debarch=s390$(grep -q CONFIG_64BIT=y $KCONFIG_CONFIG && echo x || true) ;;
|
||||||
ppc*)
|
ppc*)
|
||||||
debarch=powerpc ;;
|
debarch=$(grep -q CPU_LITTLE_ENDIAN=y $KCONFIG_CONFIG && echo ppc64el || echo powerpc) ;;
|
||||||
parisc*)
|
parisc*)
|
||||||
debarch=hppa ;;
|
debarch=hppa ;;
|
||||||
mips*)
|
mips*)
|
||||||
|
@ -64,7 +64,7 @@ create_package() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create the package
|
# Create the package
|
||||||
dpkg-gencontrol -isp $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir"
|
dpkg-gencontrol $forcearch -Vkernel:debarch="${debarch:-$(dpkg --print-architecture)}" -p$pname -P"$pdir"
|
||||||
dpkg --build "$pdir" ..
|
dpkg --build "$pdir" ..
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,18 +152,16 @@ if grep -q '^CONFIG_MODULES=y' $KCONFIG_CONFIG ; then
|
||||||
rmdir "$tmpdir/lib/modules/$version"
|
rmdir "$tmpdir/lib/modules/$version"
|
||||||
fi
|
fi
|
||||||
if [ -n "$BUILD_DEBUG" ] ; then
|
if [ -n "$BUILD_DEBUG" ] ; then
|
||||||
(
|
for module in $(find $tmpdir/lib/modules/ -name *.ko -printf '%P\n'); do
|
||||||
cd $tmpdir
|
module=lib/modules/$module
|
||||||
for module in $(find lib/modules/ -name *.ko); do
|
mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
|
||||||
mkdir -p $(dirname $dbg_dir/usr/lib/debug/$module)
|
# only keep debug symbols in the debug file
|
||||||
# only keep debug symbols in the debug file
|
$OBJCOPY --only-keep-debug $tmpdir/$module $dbg_dir/usr/lib/debug/$module
|
||||||
$OBJCOPY --only-keep-debug $module $dbg_dir/usr/lib/debug/$module
|
# strip original module from debug symbols
|
||||||
# strip original module from debug symbols
|
$OBJCOPY --strip-debug $tmpdir/$module
|
||||||
$OBJCOPY --strip-debug $module
|
# then add a link to those
|
||||||
# then add a link to those
|
$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $tmpdir/$module
|
||||||
$OBJCOPY --add-gnu-debuglink=$dbg_dir/usr/lib/debug/$module $module
|
done
|
||||||
done
|
|
||||||
)
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -193,10 +193,6 @@ exuberant()
|
||||||
--regex-c++='/TESTCLEARFLAG_FALSE\(([^,)]*).*/TestClearPage\1/' \
|
--regex-c++='/TESTCLEARFLAG_FALSE\(([^,)]*).*/TestClearPage\1/' \
|
||||||
--regex-c++='/__TESTCLEARFLAG_FALSE\(([^,)]*).*/__TestClearPage\1/' \
|
--regex-c++='/__TESTCLEARFLAG_FALSE\(([^,)]*).*/__TestClearPage\1/' \
|
||||||
--regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/' \
|
--regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/' \
|
||||||
--regex-c++='/TESTPCGFLAG\(([^,)]*).*/PageCgroup\1/' \
|
|
||||||
--regex-c++='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/' \
|
|
||||||
--regex-c++='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/' \
|
|
||||||
--regex-c++='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \
|
|
||||||
--regex-c++='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/' \
|
--regex-c++='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/' \
|
||||||
--regex-c++='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/' \
|
--regex-c++='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/' \
|
||||||
--regex-c++='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/'\
|
--regex-c++='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/'\
|
||||||
|
@ -259,17 +255,13 @@ emacs()
|
||||||
--regex='/__CLEARPAGEFLAG_NOOP(\([^,)]*\).*/__ClearPage\1/' \
|
--regex='/__CLEARPAGEFLAG_NOOP(\([^,)]*\).*/__ClearPage\1/' \
|
||||||
--regex='/TESTCLEARFLAG_FALSE(\([^,)]*\).*/TestClearPage\1/' \
|
--regex='/TESTCLEARFLAG_FALSE(\([^,)]*\).*/TestClearPage\1/' \
|
||||||
--regex='/__TESTCLEARFLAG_FALSE(\([^,)]*\).*/__TestClearPage\1/' \
|
--regex='/__TESTCLEARFLAG_FALSE(\([^,)]*\).*/__TestClearPage\1/' \
|
||||||
--regex='/TESTPCGFLAG\(([^,)]*).*/PageCgroup\1/' \
|
|
||||||
--regex='/SETPCGFLAG\(([^,)]*).*/SetPageCgroup\1/' \
|
|
||||||
--regex='/CLEARPCGFLAG\(([^,)]*).*/ClearPageCgroup\1/' \
|
|
||||||
--regex='/TESTCLEARPCGFLAG\(([^,)]*).*/TestClearPageCgroup\1/' \
|
|
||||||
--regex='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/' \
|
--regex='/TASK_PFA_TEST\([^,]*,\s*([^)]*)\)/task_\1/' \
|
||||||
--regex='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/' \
|
--regex='/TASK_PFA_SET\([^,]*,\s*([^)]*)\)/task_set_\1/' \
|
||||||
--regex='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/' \
|
--regex='/TASK_PFA_CLEAR\([^,]*,\s*([^)]*)\)/task_clear_\1/' \
|
||||||
--regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/' \
|
--regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/' \
|
||||||
--regex='/PCI_OP_READ(\([a-z]*[a-z]\).*[1-4])/pci_bus_read_config_\1/' \
|
--regex='/PCI_OP_READ(\([a-z]*[a-z]\).*[1-4])/pci_bus_read_config_\1/' \
|
||||||
--regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'\
|
--regex='/PCI_OP_WRITE(\([a-z]*[a-z]\).*[1-4])/pci_bus_write_config_\1/'\
|
||||||
--regex='/DEFINE_HASHTABLE\((\w*)/\1/v/'
|
--regex='/[^#]*DEFINE_HASHTABLE(\([^,)]*\)/\1/'
|
||||||
|
|
||||||
all_kconfigs | xargs $1 -a \
|
all_kconfigs | xargs $1 -a \
|
||||||
--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'
|
--regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'
|
||||||
|
|
Loading…
Reference in New Issue