linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Emese Revfy <re.emese@gmail.com>
Cc: linux-kbuild <linux-kbuild@vger.kernel.org>,
	PaX Team <pageexec@freemail.hu>,
	Brad Spengler <spender@grsecurity.net>,
	"kernel-hardening@lists.openwall.com" 
	<kernel-hardening@lists.openwall.com>,
	Michal Marek <mmarek@suse.com>,
	Rasmus Villemoes <linux@rasmusvillemoes.dk>,
	Fengguang Wu <fengguang.wu@intel.com>,
	Dmitry Vyukov <dvyukov@google.com>,
	LKML <linux-kernel@vger.kernel.org>,
	David Brown <david.brown@linaro.org>,
	Masahiro Yamada <yamada.masahiro@socionext.com>
Subject: Re: [PATCH v9 0/4] Introduce GCC plugin infrastructure
Date: Tue, 24 May 2016 10:04:49 -0700	[thread overview]
Message-ID: <CAGXu5jKC=HuCe3FPuuzjAZ+SX6C5AnhMp5BWwLhi8xVXhTGjEg@mail.gmail.com> (raw)
In-Reply-To: <20160524000719.b456ed0cd2aafacb4e53f177@gmail.com>

On Mon, May 23, 2016 at 3:07 PM, Emese Revfy <re.emese@gmail.com> wrote:
> This patch set introduce the GCC plugin infrastructure with examples for testing
> and documentation.
>
> GCC plugins are loadable modules that provide extra features to the compiler.
> They are useful for runtime instrumentation and static analysis.
>
> The infrastructure supports all gcc versions from 4.5 to 6.0, building
> out-of-tree modules and building in a separate directory. Cross-compilation
> is supported too but currently only the x86, arm, arm64 and uml architectures enable plugins.
>
> This infrastructure was ported from grsecurity/PaX. Based on work created by the PaX Team.
> It is a CII project supported by the Linux Foundation.
>
> Emese Revfy (4):
>  Shared library support
>  GCC plugin infrastructure
>  Add Cyclomatic complexity plugin
>  Add sancov plugin

Michal, once -rc1 is out, can you carry this for -next? I'm happy to
use my tree for it, if you want me to do it.

-Kees

>
>
> Changes from v8:
>  * Use warnings instead of errors because of allmodconfig/allyesconfig builds
>    with old gcc versions
>     (Suggested-by: Michal Marek <mmarek@suse.com>)
>  * Order HAVE_GCC_PLUGINS alphabetically
>  * Moved exported variables from the top level Makefile to scripts/Makefile.gcc-plugins
>
> Changes from v7:
>  * Moved the "The GCC plugin infrastructure supports the arm and arm64 architectures too"
>    and the "Documentations of the GCC plugin infrastructre" patches
>    into the "GCC plugin infrastructure" patch
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Add gcc-plugin.sh to MAINTAINERS
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Makefile.host: Remove *shobjs from multi-depend
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Have distclean and mrproper targets clean the *.so files
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Simplied gcc-plugin-y to add plugins to HOSTLIBS
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Simplified Makefile.host
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Clean *.c.[012]*.*
>     (Suggested-by: Michal Marek <mmarek@suse.com>)
>  * Documentation: gcc plugins have to compilable as C and C++
>  * Enable GCC plugins for UML
>
> Changes from v6:
>  * Disable the sancov plugin whenever KCOV_INSTRUMENT is disabled
>     (Reported-by: Huang Ying <ying.huang@linux.intel.com>)
>  * Disable KCOV/sancov plugin because this is not a regular kernel code
>     (Reported-by: Huang Ying <ying.huang@linux.intel.com>)
>  * Removed unnecessary gcc plugin cflags
>     (Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Removed unnecessary gcc plugin aflags
>
> Changes from v5:
>  * Set important properties on the external fndecl (Add sancov plugin)
>  * Revert documentation change too (Shared library support)
>     (Suggested-by: Kees Cook <keescook@chromium.org>)
>  * The GCC plugin infrastructure now supports the arm and arm64 architectures too
>     (Signed-off-by: David Brown <david.brown@linaro.org>)
>  * Simplify the computation of PLUGINCC (GCC plugin infrastructure)
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Simplify the invocation of gcc-plugin.sh (GCC plugin infrastructure)
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Make use of multi-depend (Shared library support)
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Remove unnecessary exports (GCC plugin infrastructure)
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Simplify Makefile by using addprefix (GCC plugin infrastructure)
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Moved the gcc plugins from tools/ to scripts/ (GCC plugin infrastructure)
>     (Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * Removed plugins from KBUILD_CFLAGS_32 (GCC plugin infrastructure)
>  * Remove gcc-plugin target everywhere
>     (Suggested-by and partly Written-by: Masahiro Yamada <yamada.masahiro@socionext.com>)
>  * There is no leaf gcc attribute in gcc-4.5 (Add sancov plugin)
>  * Added support to the sancov plugin with kcov (Add sancov plugin)
>
> Changes from v4:
>  * Moved shared library support from the GCC plugin infrastructure patch into
>    a different patch
>  * Update gcc-*.h from PaX
>    * Fixed gcc-common.h for gcc 6
>    * Added pass cloning support to the gcc pass generators
>  * Disable all plugins in vdso because it is userland code
>  * Add sancov gcc plugin: another use case for gcc plugin support in the kernel
>    is when there is a feature in the latest gcc version and we would like to use
>    it with older gcc versions as well (e.g., distros).
>
> Changes from v3:
>  * Fix some indentation related warnings
>    (Suggested by checkpatch.pl)
>  * Add maintainer entries
>  * Don't run gcc_plugin.sh when the GCC_PLUGINS option is disabled or unsupported
>    (Reported-by: Fengguang Wu <fengguang.wu@intel.com>)
>
> Changes from v2:
>  * Fixed incorrectly encoded characters
>  * Generate the GIMPLE, IPA, SIMPLE_IPA and RTL pass structures
>    (Suggested-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>)
>  * Write plugin related warning messages to stderr instead of stdout
>    (Suggested-by: Kees Cook <keescook@chromium.org>)
>  * Mention the installation of the gcc plugin headers (Documentation)
>
> Changes from v1:
>  * Move the gcc-plugins make target into a separate Makefile because there may
>    be a lot of plugins (Suggested-by: Rasmus Villemoes)
>  * Simplify the dependencies of the plugin related config option
>    (Suggested-by: Kees Cook <keescook@chromium.org>)
>  * Removed the unnecessary example plugin
>
> ---
>  .gitignore                                         |   1 +
>  Documentation/dontdiff                             |   1 +
>  Documentation/gcc-plugins.txt                      |  87 +++
>  MAINTAINERS                                        |   9 +
>  Makefile                                           |  24 +-
>  arch/Kconfig                                       |  36 +
>  arch/arm/Kconfig                                   |   1 +
>  arch/arm64/Kconfig                                 |   1 +
>  arch/um/Kconfig.common                             |   1 +
>  arch/x86/Kconfig                                   |   1 +
>  arch/x86/entry/vdso/Makefile                       |   3 +-
>  arch/x86/purgatory/Makefile                        |   2 +
>  lib/Kconfig.debug                                  |   2 +
>  scripts/Makefile                                   |   2 +-
>  scripts/Makefile.build                             |   2 +-
>  scripts/Makefile.clean                             |   4 +-
>  scripts/Makefile.gcc-plugins                       |  43 ++
>  scripts/Makefile.host                              |  55 +-
>  scripts/gcc-plugin.sh                              |  51 ++
>  scripts/gcc-plugins/Makefile                       |  27 +
>  scripts/gcc-plugins/cyc_complexity_plugin.c        |  73 ++
>  scripts/gcc-plugins/gcc-common.h                   | 830 +++++++++++++++++++++
>  scripts/gcc-plugins/gcc-generate-gimple-pass.h     | 175 +++++
>  scripts/gcc-plugins/gcc-generate-ipa-pass.h        | 289 +++++++
>  scripts/gcc-plugins/gcc-generate-rtl-pass.h        | 175 +++++
>  scripts/gcc-plugins/gcc-generate-simple_ipa-pass.h | 175 +++++
>  scripts/gcc-plugins/sancov_plugin.c                | 144 ++++
>  scripts/link-vmlinux.sh                            |   2 +-
>  scripts/package/builddeb                           |   1 +
>  29 files changed, 2200 insertions(+), 17 deletions(-)



-- 
Kees Cook
Chrome OS & Brillo Security

  parent reply	other threads:[~2016-05-24 17:04 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-23 22:07 [PATCH v9 0/4] Introduce GCC plugin infrastructure Emese Revfy
2016-05-23 22:08 ` [PATCH v9 1/4] Shared library support Emese Revfy
2016-05-23 22:09 ` [PATCH v9 2/4] GCC plugin infrastructure Emese Revfy
2016-05-23 22:10 ` [PATCH v9 3/4] Add Cyclomatic complexity GCC plugin Emese Revfy
2016-06-14 19:29   ` Laura Abbott
2016-06-14 22:33     ` Emese Revfy
2016-06-15 20:53     ` Emese Revfy
2016-06-15 22:41       ` Kees Cook
2016-05-23 22:11 ` [PATCH v9 4/4] Add sancov plugin Emese Revfy
2016-05-24 17:04 ` Kees Cook [this message]
2016-05-25 10:46   ` [PATCH v9 0/4] Introduce GCC plugin infrastructure Michal Marek
2016-05-25 17:12     ` Kees Cook
2016-06-07 20:58       ` Michal Marek
2016-06-07 20:59         ` Kees Cook
2016-06-07 21:59           ` Emese Revfy
2016-06-07 21:58             ` Kees Cook
2016-06-08  6:59               ` Michal Marek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAGXu5jKC=HuCe3FPuuzjAZ+SX6C5AnhMp5BWwLhi8xVXhTGjEg@mail.gmail.com' \
    --to=keescook@chromium.org \
    --cc=david.brown@linaro.org \
    --cc=dvyukov@google.com \
    --cc=fengguang.wu@intel.com \
    --cc=kernel-hardening@lists.openwall.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=mmarek@suse.com \
    --cc=pageexec@freemail.hu \
    --cc=re.emese@gmail.com \
    --cc=spender@grsecurity.net \
    --cc=yamada.masahiro@socionext.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).