linux-imx/Documentation/dontdiff
Emese Revfy 6b90bd4ba4 GCC plugin infrastructure
This patch allows to build the whole kernel with GCC plugins. It was ported from
grsecurity/PaX. The infrastructure supports building out-of-tree modules and
building in a separate directory. Cross-compilation is supported too.
Currently the x86, arm, arm64 and uml architectures enable plugins.

The directory of the gcc plugins is scripts/gcc-plugins. You can use a file or a directory
there. The plugins compile with these options:
 * -fno-rtti: gcc is compiled with this option so the plugins must use it too
 * -fno-exceptions: this is inherited from gcc too
 * -fasynchronous-unwind-tables: this is inherited from gcc too
 * -ggdb: it is useful for debugging a plugin (better backtrace on internal
    errors)
 * -Wno-narrowing: to suppress warnings from gcc headers (ipa-utils.h)
 * -Wno-unused-variable: to suppress warnings from gcc headers (gcc_version
    variable, plugin-version.h)

The infrastructure introduces a new Makefile target called gcc-plugins. It
supports all gcc versions from 4.5 to 6.0. The scripts/gcc-plugin.sh script
chooses the proper host compiler (gcc-4.7 can be built by either gcc or g++).
This script also checks the availability of the included headers in
scripts/gcc-plugins/gcc-common.h.

The gcc-common.h header contains frequently included headers for GCC plugins
and it has a compatibility layer for the supported gcc versions.

The gcc-generate-*-pass.h headers automatically generate the registration
structures for GIMPLE, SIMPLE_IPA, IPA and RTL passes.

Note that 'make clean' keeps the *.so files (only the distclean or mrproper
targets clean all) because they are needed for out-of-tree modules.

Based on work created by the PaX Team.

Signed-off-by: Emese Revfy <re.emese@gmail.com>
Acked-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Michal Marek <mmarek@suse.com>
2016-06-07 22:57:10 +02:00

2.5 KiB

*.a *.aux *.bc *.bin .bz2 .c.[012]. *.cis *.cpio *.csp *.dsp *.dvi *.elf *.eps *.fw *.gcno *.gcov .gen.S .gif .grep .grp .gz .html .i .jpeg .ko .ll .log .lst .lzma .lzo .mo .moc .mod.c .o .o. .order .orig .out .patch .pdf .plist .png .pot .ps .rej .s .sgml .so .so.dbg .symtypes .tab.c .tab.h .tex .ver .xml .xz _MODULES _vga16.c ~ ## .9 . ..d .mm 53c700_d.h CVS ChangeSet GPATH GRTAGS GSYMS GTAGS Image Module.markers Module.symvers PENDING SCCS System.map TAGS aconf af_names.h aic7reg.h aic7reg_print.c aic7seq.h aicasm aicdb.h altivec.c asm-offsets.h asm_offsets.h autoconf.h av_permissions.h bbootsect bin2c binkernel.spec bootsect bounds.h bsetup btfixupprep build bvmlinux bzImage capability_names.h capflags.c classlist.h comp.log compile.h conf config config- config_data.h config.mak config.mak.autogen conmakehash consolemap_deftbl.c cpustr.h crc32table.h cscope. defkeymap.c devlist.h dnotify_test docproc dslm elf2ecoff elfconfig.h evergreen_reg_safe.h fixdep flask.h fore200e_mkfirm fore200e_pca_fw.c gconf gconf.glade.h gen-devlist gen_crc32table gen_init_cpio generated genheaders genksyms _gray256.c hpet_example hugepage-mmap hugepage-shm ihex2fw ikconfig.h inat-tables.c initramfs_list int16.c int1.c int2.c int32.c int4.c int8.c kallsyms kconfig keywords.c ksym.c ksym.h kxgettext lex.c lex..c linux logo_.c logo_clut224.c logo_mono.c lxdialog mach-types mach-types.h machtypes.h map map_hugetlb mconf miboot mk_elfconfig mkboot mkbugboot mkcpustr mkdep mkprep mkregtable mktables mktree modpost modules.builtin modules.order modversions.h nconf ncscope. offset.h oui.c page-types parse.c parse.h patches pca200e.bin pca200e_ecd.bin2 perf.data perf.data.old perf-archive piggyback piggy.gzip piggy.S pnmtologo ppc_defs.h pss_boot.h qconf r100_reg_safe.h r200_reg_safe.h r300_reg_safe.h r420_reg_safe.h r600_reg_safe.h recordmcount relocs rlim_names.h rn50_reg_safe.h rs600_reg_safe.h rv515_reg_safe.h series setup setup.bin setup.elf sImage sm_tbl split-include syscalltab.h tables.c tags test_get_len tftpboot.img timeconst.h times.h trix_boot.h utsrelease.h vdso-syms.lds vdso.lds vdso32-int80-syms.lds vdso32-syms.lds vdso32-syscall-syms.lds vdso32-sysenter-syms.lds vdso32.lds vdso32.so.dbg vdso64.lds vdso64.so.dbg version.h vmImage vmlinux vmlinux- vmlinux.aout vmlinux.bin.all vmlinux.lds vmlinuz voffset.h vsyscall.lds vsyscall_32.lds wanxlfw.inc uImage unifdef wakeup.bin wakeup.elf wakeup.lds zImage zconf.hash.c zoffset.h