Go to file
Marek Polacek 0e37a2f33d asan.c (pass_sanopt::execute): Handle IFN_UBSAN_BOUNDS.
* asan.c (pass_sanopt::execute): Handle IFN_UBSAN_BOUNDS.
	* flag-types.h (enum sanitize_code): Add SANITIZE_BOUNDS and or it
	into SANITIZE_UNDEFINED.
	* doc/invoke.texi: Describe -fsanitize=bounds.
	* gimplify.c (gimplify_call_expr): Add gimplification of internal
	functions created in the FEs.
	* internal-fn.c: Move "internal-fn.h" after "tree.h".
	(expand_UBSAN_BOUNDS): New function.
	* internal-fn.def (UBSAN_BOUNDS): New internal function.
	* internal-fn.h: Don't define internal functions here.
	* opts.c (common_handle_option): Add -fsanitize=bounds.
	* sanitizer.def (BUILT_IN_UBSAN_HANDLE_OUT_OF_BOUNDS,
	BUILT_IN_UBSAN_HANDLE_OUT_OF_BOUNDS_ABORT): Add.
	* tree-core.h: Define internal functions here.
	(struct tree_base): Add ifn field.
	* tree-pretty-print.c: Include "internal-fn.h".
	(dump_generic_node): Handle functions without CALL_EXPR_FN.
	* tree.c (get_callee_fndecl): Likewise.
	(build_call_expr_internal_loc): New function.
	* tree.def (CALL_EXPR): Update description.
	* tree.h (CALL_EXPR_IFN): Define.
	(build_call_expr_internal_loc): Declare.
	* ubsan.c (get_ubsan_type_info_for_type): Return 0 for non-arithmetic
	types.
	(ubsan_type_descriptor): Change bool parameter to enum
	ubsan_print_style.  Adjust the code.  Add handling of
	UBSAN_PRINT_ARRAY.
	(ubsan_expand_bounds_ifn): New function.
	(ubsan_expand_null_ifn): Adjust ubsan_type_descriptor call.
	(ubsan_build_overflow_builtin): Likewise.
	(instrument_bool_enum_load): Likewise.
	(ubsan_instrument_float_cast): Likewise.
	* ubsan.h (enum ubsan_print_style): New enum.
	(ubsan_expand_bounds_ifn): Declare.
	(ubsan_type_descriptor): Adjust declaration.  Use a default parameter.
c-family/
	* c-gimplify.c: Include "c-ubsan.h" and "pointer-set.h".
	(ubsan_walk_array_refs_r): New function.
	(c_genericize): Instrument array bounds.
	* c-ubsan.c: Include "internal-fn.h".
	(ubsan_instrument_division): Mark instrumented arrays as having
	side effects.  Adjust ubsan_type_descriptor call.
	(ubsan_instrument_shift): Likewise.
	(ubsan_instrument_vla): Adjust ubsan_type_descriptor call.
	(ubsan_instrument_bounds): New function.
	(ubsan_array_ref_instrumented_p): New function.
	(ubsan_maybe_instrument_array_ref): New function.
	* c-ubsan.h (ubsan_instrument_bounds): Declare.
	(ubsan_array_ref_instrumented_p): Declare.
	(ubsan_maybe_instrument_array_ref): Declare.
testsuite/
	* c-c++-common/ubsan/bounds-1.c: New test.
	* c-c++-common/ubsan/bounds-2.c: New test.
	* c-c++-common/ubsan/bounds-3.c: New test.
	* c-c++-common/ubsan/bounds-4.c: New test.
	* c-c++-common/ubsan/bounds-5.c: New test.
	* c-c++-common/ubsan/bounds-6.c: New test.

From-SVN: r211859
2014-06-20 21:20:51 +00:00
boehm-gc
config
contrib dg-extract-results.py: For Python 3, force sys.stdout to handle surrogate escape sequences. 2014-06-14 09:49:07 +00:00
fixincludes
gcc asan.c (pass_sanopt::execute): Handle IFN_UBSAN_BOUNDS. 2014-06-20 21:20:51 +00:00
gnattools
include [PR lto/61334] Declare prototype for strnlen, if needed. 2014-06-10 11:45:00 +02:00
INSTALL
intl
libada
libatomic Makefile.am (libatomic_la_LDFLAGS): Add lt_host_flags. 2014-06-17 22:43:18 +02:00
libbacktrace
libcilkrts
libcpp re PR c++/61038 (g++ -E is unusable with UDL strings) 2014-06-05 11:17:25 +00:00
libdecnumber
libffi
libgcc bpabi.c (__gnu_uldivmod_helper): Remove. 2014-06-18 15:44:45 +00:00
libgfortran trans-intrinsic.c (conv_co_minmaxsum): Fix argument passing. 2014-06-19 09:16:34 +02:00
libgo re PR go/52583 (Several new go testsuite failues on Solaris) 2014-06-13 13:56:14 +00:00
libgomp gimplify.c (omp_notice_variable): If n is non-NULL and no flags change in ORT_TARGET region, don't jump to do_outer. 2014-06-18 09:16:12 +02:00
libiberty Delete temporary string within demangler even in failure cases. 2014-06-11 10:57:27 +00:00
libitm
libjava
libobjc
libquadmath
libsanitizer asan_linux.cc: Cherry pick upstream r210012. 2014-06-11 11:35:48 +00:00
libssp
libstdc++-v3 Fix libstdc++/61536 - Export out of line typeinfo comparison operators 2014-06-18 09:44:15 +00:00
libvtv
lto-plugin Allow overriding the libiberty used for building the LTO plugin. 2014-06-13 16:30:46 +02:00
maintainer-scripts crontab: Remove 4.7 snapshot entry. 2014-06-12 11:57:33 +00:00
zlib
.dir-locals.el
.gitignore Ignore gcc_update output 2014-06-18 17:47:18 -07:00
ABOUT-NLS
ChangeLog Ignore gcc_update output 2014-06-18 17:47:18 -07:00
ChangeLog.tree-ssa
compile
config-ml.in * config-ml.in: Robustify ac_configure_args parsing. 2014-06-13 16:32:29 +02:00
config.guess
config.rpath
config.sub
configure Non-host system configuration for linker plugins. 2014-06-13 16:32:16 +02:00
configure.ac Non-host system configuration for linker plugins. 2014-06-13 16:32:16 +02:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.RUNTIME
depcomp
install-sh
libtool-ldflags
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS Add myself to MAINTAINERS. 2014-06-10 15:44:06 +00:00
Makefile.def Non-host system configuration for linker plugins. 2014-06-13 16:32:16 +02:00
Makefile.in Non-host system configuration for linker plugins. 2014-06-13 16:32:16 +02:00
Makefile.tpl Allow for overriding a module's srcdir. 2014-06-13 16:32:03 +02:00
missing
mkdep
mkinstalldirs
move-if-change
README
symlink-tree
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.