Apply several fixes for {a, l}san-tuntime packages to improve usability.
* Add log_path_exe=1 option to {A, L}SAN_OPTIONS.
* Add print_cmdline=true to LSAN_OPTIONS.
* Intruduce LSan suppressions file.
* Set necessary smack rules to {A, L}SAN_OPTIONS, /etc/ld.so.preload
and /lsan.supp files.
Change-Id: I83c8b2c8d0989778fe0ff3d70bed1aaf97faf3d1
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Signed-off-by: Dongkyun Son <dongkyun.s@samsung.com>
Support print_cmdline in LSan.
Change-Id: I65d37582e6b5c3d54f8628e96edbaf4cbfc7c337
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Signed-off-by: Dongkyun, Son <dongkyun.s@samsung.com>
Move SanitizerToolName definition before MaybeMountProcFS.
The MaybeMountProcFS uses SanitizerToolName in its failure messages so we
need it defined at this point.
Change-Id: I6a568e1ebf3d646ecfbdb53fd8e48910e9b66559
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Deliver sanitizer-sources package.
Some Tizen developers may need custom sanitizer builds (with package-specific
changes) in their packages. Libsanitizer doesn't support standalone build, but
we can provide its sources to be reused in another packages.
Change-Id: I3668c75e6fbfe8f7f723d68098f697526d038488
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Add x86 and arm in lsan_arch. Add liblsan-32bit for x86_64.
Change-Id: I41036b3e03d6e4d9985d747c23ffbffa5853f9fa
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Add temporal fix for https://github.com/google/sanitizers/issues/703.
Redefine SANITIZER_MMAP_RANGE_SIZE to (1UL << 40) for AArch64. This is a
workaround for https://github.com/google/sanitizers/issues/703 that speeds
up LSan and makes it usable for AArch64.
Change-Id: I31672b4feab6c91a2ec17fae76ab9d1d494aeb5c
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Deliver LSan fixes for Tizen.
* Read LSAN_OPTIONS from /LSAN_OPTIONS file.
* Add MaybeMountProcFS stuff for LSan. This would allow us to preload
liblsan.so even for systemd when /proc/ isn't mounted yet.
* Add ARM and x86 ports for LSan.
* Add PointsIntoChunk method to protect against segfault when pointer
points to metadata.
* Make cf.exitcode = 0 by default.
Change-Id: Ic88622ec1bc7b91c4541568070c8757f7f14be12
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Fix ASan tests.
Some ASan tests fail due to:
1) Unable to unwind malloc trace.
2) Return invalid code due to hant_on_error=false enabled by default.
Let's fix this.
Change-Id: I634c5bff0e21a693a4168eaa12f443cee114a83e
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Add manifest file.
We need it to avoid such errors on target device:
sh-3.2# rpm -Uvh --nodeps --force libasan-4.9.2-11.7.armv7l.rpm
Preparing... ################################# [100%]
No manifest in this package. Creating default one
Updating / installing...
1:libasan-4.9.2-11.7 ################################# [ 50%]
/sbin/ldconfig: Cannot lstat /lib/libasan.so.3.0.0: Permission denied
-----------------------------------------------------
There is no symbolic link.
Change-Id: I972b3b5fb3a194c9e452d43d9ba1ed16886e9a3c
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Set detect_leaks = false and halt_on_error = false by default.
Set detect_leaks and halt_on_error to false by default because mic
installs asan-build-env package too late.
Change-Id: I69d55fdc0b3761d59a625e4cd221e41dc2a09fb3
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Remove redundant calls of MaybeMountProcFS and refactor it.
It seems that we have lots of redundant MaybeMountProcFS, in particular
each mapped sanitized shared library calls it from AsanInitializer constructor.
Remove redudant MaybeMountProcFS calls from AsanInitializer and __asan_init.
Also, it seems that under qemu-aarch64 opening /proc/self/maps for reading
might be very expensive, so replace OpenFile("/proc/self/maps", RdOnly) with
FileExists("/proc/self/maps") in MaybeMountProcFS to avoid expensive calls.
Change-Id: I8ba28dbbc102be519fa2b284520509f601ec5cf7
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Split asan-build-env to two packages.
It seems that we need different ASan runtime options for OBS build process
and for ASan running on target device. Split asan-build-env package to
asan-build-env and asan-runtime-env packages to install different options for
ASan depending on whether it runs under QEMU or on target device.
Change-Id: I13441a2edc04500d4ce0676c09e0ceeb5bc2901e
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Deliver sanitizer-devel.rpm package.
For now, this package contains asan_symbolize.py script for proper
ASan reports symbolization.
Change-Id: If8d60b5bdf0a685e837caab6d71cb3d7cf94c433
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Make /emul/ writable to provide possibility of unforcing ASan related options.
Some packages fail to build with ASan because we force -fno-common compiler
switch in ASan builds. Athough the right thing to do would be fixing failed
packages itselves, sometimes it's not possible due to, say, difficult
package structure.
asan-force-options now makes /emul/ writable to provide possibility of
unforcing ASan related options. That would allow us to run gcc-unforce-options
right in package's spec file and re-force ASan related options without
-fno-common switch.
Change-Id: I285b299883a971eb50d4d3f5d3ca2fb448dcacbd
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
gcc-force-options: Create symlink gcc-real to allow acceleration of gcc with forced options.
gcc-force-options script moves gcc binary from /usr/bin/gcc to /usr/bin/gcc-real.
To correctly accelerate new binary qemu-binfmt requires symlink in /emul dirrectory.
Change-Id: Ie72fdc2775cbb2e1da00c2d8144a267bbfcfd9cf
Signed-off-by: Yury Usishchev <y.usishchev@samsung.com>
Backport Tizen specific stuff from VDLinux 6.
Backport from VDLinux 5. Optionally mount /proc in __asan_init to allow
systemd sanitization.
2014-10-21 Yury Gribov <y.gribov@samsung.com>
JIRA: MAVDT-64
* libsanitizer/asan/asan_rtl.cc (MaybeMountProcFS): New function.
(__asan_init): Call MaybeMountProcFS.
Mount /proc not only in AsanInitInternal, but also in __asan_init and AsanInitializer to
ensure we have proc mounted when needed.
* libsanitizer/asan/asan_rtl.cc (__asan_init): Call MaybeMountProcFS.
* (AsanInitializer): Likewise.
Set address space unlimited if it is not.
* libsanitizer/asan/asan_rtl.cc (MaybeDisableUlimit): New function.
(AsanInitInternal): Call it.
Read ASan and UBSan options from predefined file if it is available.
* libsanitizer/asan/asan_flags.cc: Read ASAN_OPTIONS from predefined
file if available.
* libsanitizer/ubsan/ubsan_flags.cc: Likewise.
Change-Id: I43c68a801fef60c6b8c7adb86695fd178f408c21
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Backport manual fixes for GCC in order to fix various build and runtime errors.
- Return to old hash table.
- Define missing void_zero_node macro.
- Add missing tree_int_cst_le function.
- Add missing gcc/signop.h header.
- Add missing macro.
- Add missing specialization stuff for double_int class.
- Add missing wi::clz and wi::clrsb functions. Add new file wide-int.cc.
- Remove include of double-int.h from gcc/gengtype.c and gcc/gengtype-state.c.
- Small fix for hash table. Change operator '->' to '.' because we have
a reference to hash table, not a pointer.
- Change varpool_node::finalize_decl (var) back to varpool_finalize_decl (var).
- Fix sanopt.c optimizing part to fit old style pointer map.
- Fix for CHECK_TYPE_SIZE(__kernel_old_uid_t) and CHECK_TYPE_SIZE(__kernel_old_gid_t)
fails on Aarch64.
- Replace gcall back to gimple_statement_call.
- Use old cgraph interface.
- Define missing void_node macro.
- Add missing SUBREG_PROMOTED_SIGN macro.
- Fix ICE in ubsan_type_descriptor due to overflow in tree_fits_uhwi_p.
Change-Id: I9741e28505c96c37fb1ff89f4721725c1a5a5eaf
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Backport recovery mode related stuff from LLVM mainline.
Backport ASan reports deduplication in recovery mode.
Backport from LLVM upstream r255228.
Optionally print reproducer cmdline in ASan reports.
Backport from LLVM upstream r258037.
Fix internal CHECK failure on double free in recovery mode.
Backport from LLVM upstream r259473.
Bail out on stack overflow in ASan recovery mode.
Backport from LLVM upstream r268713.
Change-Id: I11ad0ddf94e803a0f240bf76cdff529e1b72f576
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
Backport sanitizer patches from GCC mainline.
Backport from mainline. Enable Address Sanitizer for AArch64.
2014-09-26 Christophe Lyon <christophe.lyon@linaro.org>
gcc/
* config/aarch64/aarch64-linux.h (ASAN_CC1_SPEC): Define.
(CC1_SPEC): Define.
* config/aarch64/aarch64.c (aarch64_asan_shadow_offset): New function.
(TARGET_ASAN_SHADOW_OFFSET): Define.
libsanitizer/
* configure.tgt: Enable build on aarch64*-linux.
Conflicts:
ChangeLog.vd
2014-05-14 Yury Gribov <y.gribov@samsung.com>
PR sanitizer/61100
* Makefile.am (nodist_saninclude_HEADERS): Install
public headers.
* Makefile.in: Regenerate.
* c-c++-common/asan/asan-interface-1.c: New test.
* lib/asan-dg.exp (asan_include_flags): New function.
(asan_init): Call asan_include_flags to obtain path
to sanitizer headers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210413
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/testsuite/c-c++-common/asan/asan-interface-1.c
PR sanitizer/61272
* ubsan.c (is_ubsan_builtin_p): Turn assert into a condition.
* g++.dg/ubsan/pr61272.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210723
138bc75d-0d04-0410-961f-
82ee72b054a4
libsanitizer merge from upstream r209283
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210743
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc
libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
* g++.dg/asan/asan_test.C: Add -std=c++11 and
-DSANITIZER_USE_DEJAGNU_GTEST=1 to dg-options, remove
-DASAN_USE_DEJAGNU_GTEST=1.
* g++.dg/asan/asan_mem_test.cc: Updated from upstream
r209283.
* g++.dg/asan/asan_oob_test.cc: Likewise.
* g++.dg/asan/sanitizer_test_utils.h: Likewise.
* g++.dg/asan/asan_str_test.cc: Likewise.
* g++.dg/asan/asan_test_utils.h: Likewise.
* g++.dg/asan/sanitizer_test_config.h: Likewise.
* g++.dg/asan/asan_test.cc: Likewise. Allow size 12
for long double.
* g++.dg/asan/sanitizer_pthread_wrappers.h: New file.
Imported from upstream r209283.
* g++.dg/asan/asan_test_config.h: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211090
138bc75d-0d04-0410-961f-
82ee72b054a4
2014-04-15 Max Ostapenko <m.ostapenko@partner.samsung.com>
* c-c++-common/asan/null-deref-1.c: Change regexp to pass test
under qemu-arm.
* c-c++-common/ubsan/div-by-zero-1.c: Likewise.
* c-c++-common/ubsan/div-by-zero-2.c: Likewise.
* c-c++-common/ubsan/div-by-zero-3.c: Likewise.
* c-c++-common/ubsan/load-bool-enum.c (foo): Likewise.
* c-c++-common/ubsan/null-1.c: Likewise.
* c-c++-common/ubsan/null-10.c: Likewise.
* c-c++-common/ubsan/null-11.c: Likewise.
* c-c++-common/ubsan/null-2.c: Likewise.
* c-c++-common/ubsan/null-3.c: Likewise.
* c-c++-common/ubsan/null-4.c: Likewise.
* c-c++-common/ubsan/null-5.c: Likewise.
* c-c++-common/ubsan/null-6.c: Likewise.
* c-c++-common/ubsan/null-7.c: Likewise.
* c-c++-common/ubsan/null-8.c: Likewise.
* c-c++-common/ubsan/null-9.c: Likewise.
* c-c++-common/ubsan/overflow-add-2.c: Likewise.
* c-c++-common/ubsan/overflow-int128.c: Likewise.
* c-c++-common/ubsan/overflow-mul-2.c: Likewise.
* c-c++-common/ubsan/overflow-mul-4.c: Likewise.
* c-c++-common/ubsan/overflow-negate-1.c: Likewise.
* c-c++-common/ubsan/overflow-sub-2.c: Likewise.
* c-c++-common/ubsan/pr59333.c: Likewise.
* c-c++-common/ubsan/pr59667.c: Likewise.
* c-c++-common/ubsan/pr60613-2.c: Likewise.
* c-c++-common/ubsan/pr60636.c: Likewise.
* c-c++-common/ubsan/shift-1.c: Likewise.
* c-c++-common/ubsan/shift-2.c: Likewise.
* c-c++-common/ubsan/vla-1.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209402
138bc75d-0d04-0410-961f-
82ee72b054a4
PR middle-end/60281
* asan.c (asan_emit_stack_protection): Force the base to align to
appropriate bits if STRICT_ALIGNMENT. Set shadow_mem align to
appropriate bits if STRICT_ALIGNMENT.
* cfgexpand.c (expand_stack_vars): Set base_align appropriately
when asan is on.
(expand_used_vars): Leave a space in the stack frame for alignment
if STRICT_ALIGNMENT.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209554
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/60275
* common.opt (fsanitize-recover, fsanitize-undefined-trap-on-error):
New options.
* gcc.c (sanitize_spec_function): Don't return "" for "undefined"
if flag_sanitize_undefined_trap_on_error.
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT,
BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS_ABORT,
BUILT_IN_UBSAN_HANDLE_VLA_BOUND_NOT_POSITIVE_ABORT,
BUILT_IN_UBSAN_HANDLE_TYPE_MISMATCH_ABORT,
BUILT_IN_UBSAN_HANDLE_ADD_OVERFLOW_ABORT,
BUILT_IN_UBSAN_HANDLE_SUB_OVERFLOW_ABORT,
BUILT_IN_UBSAN_HANDLE_MUL_OVERFLOW_ABORT,
BUILT_IN_UBSAN_HANDLE_NEGATE_OVERFLOW_ABORT,
BUILT_IN_UBSAN_HANDLE_LOAD_INVALID_VALUE_ABORT): New builtins.
* ubsan.c (ubsan_instrument_unreachable): Return
__builtin_trap () if flag_sanitize_undefined_trap_on_error.
(ubsan_expand_null_ifn): Emit __builtin_trap ()
if flag_sanitize_undefined_trap_on_error and
__ubsan_handle_type_mismatch_abort if !flag_sanitize_recover.
(ubsan_expand_null_ifn, ubsan_build_overflow_builtin,
instrument_bool_enum_load): Emit __builtin_trap () if
flag_sanitize_undefined_trap_on_error and
__builtin_handle_*_abort () if !flag_sanitize_recover.
* doc/invoke.texi (-fsanitize-recover,
-fsanitize-undefined-trap-on-error): Document.
c-family/
* c-ubsan.c (ubsan_instrument_return): Return __builtin_trap ()
if flag_sanitize_undefined_trap_on_error.
(ubsan_instrument_division, ubsan_instrument_shift,
ubsan_instrument_vla): Likewise. Use __ubsan_handle_*_abort ()
if !flag_sanitize_recover.
testsuite/
* g++.dg/ubsan/return-2.C: Revert 2014-03-24 changes, add
-fno-sanitize-recover to dg-options.
* g++.dg/ubsan/cxx11-shift-1.C: Remove c++11 target restriction,
add -std=c++11 to dg-options.
* g++.dg/ubsan/cxx11-shift-2.C: Likewise.
* g++.dg/ubsan/cxx1y-vla.C: Remove c++1y target restriction,
add -std=c++1y to dg-options.
* c-c++-common/ubsan/undefined-1.c: Revert 2014-03-24 changes, add
-fno-sanitize-recover to dg-options.
* c-c++-common/ubsan/overflow-sub-1.c: Likewise.
* c-c++-common/ubsan/vla-4.c: Likewise.
* c-c++-common/ubsan/pr59503.c: Likewise.
* c-c++-common/ubsan/vla-3.c: Likewise.
* c-c++-common/ubsan/save-expr-1.c: Likewise.
* c-c++-common/ubsan/overflow-add-1.c: Likewise.
* c-c++-common/ubsan/shift-3.c: Likewise.
* c-c++-common/ubsan/overflow-1.c: Likewise.
* c-c++-common/ubsan/overflow-negate-2.c: Likewise.
* c-c++-common/ubsan/vla-2.c: Likewise.
* c-c++-common/ubsan/overflow-mul-1.c: Likewise.
* c-c++-common/ubsan/pr60613-1.c: Likewise.
* c-c++-common/ubsan/shift-6.c: Likewise.
* c-c++-common/ubsan/overflow-mul-3.c: Likewise.
* c-c++-common/ubsan/overflow-add-3.c: New test.
* c-c++-common/ubsan/overflow-add-4.c: New test.
* c-c++-common/ubsan/div-by-zero-6.c: New test.
* c-c++-common/ubsan/div-by-zero-7.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209672
138bc75d-0d04-0410-961f-
82ee72b054a4
Fix ubsan internal-fn.c handling.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/wide-int@209699
138bc75d-0d04-0410-961f-
82ee72b054a4
* gcc.c (sanitize_spec_function): Handle SANITIZE_FLOAT_DIVIDE.
* builtins.def: Initialize builtins even for SANITIZE_FLOAT_DIVIDE.
* flag-types.h (enum sanitize_code): Add SANITIZE_FLOAT_DIVIDE.
* opts.c (common_handle_option): Add -fsanitize=float-divide-by-zero.
c-family/
* c-ubsan.c (ubsan_instrument_division): Handle REAL_TYPEs. Perform
INT_MIN / -1 sanitization only for integer types.
c/
* c-typeck.c (build_binary_op): Call ubsan_instrument_division
also when SANITIZE_FLOAT_DIVIDE is on.
cp/
* typeck.c (cp_build_binary_op): Call ubsan_instrument_division
even when SANITIZE_FLOAT_DIVIDE is on. Set doing_div_or_mod even
for non-integer types.
testsuite/
* c-c++-common/ubsan/div-by-zero-5.c: Fix formatting.
* c-c++-common/ubsan/float-div-by-zero-1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209927
138bc75d-0d04-0410-961f-
82ee72b054a4
* doc/invoke.texi: Describe -fsanitize=float-divide-by-zero.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210002
138bc75d-0d04-0410-961f-
82ee72b054a4
* builtins.def: Change SANITIZE_FLOAT_DIVIDE to SANITIZE_NONDEFAULT.
* gcc.c (sanitize_spec_function): Likewise.
* convert.c (convert_to_integer): Include "ubsan.h". Add
floating-point to integer instrumentation.
* doc/invoke.texi: Document -fsanitize=float-cast-overflow.
* flag-types.h (enum sanitize_code): Add SANITIZE_FLOAT_CAST and
SANITIZE_NONDEFAULT.
* opts.c (common_handle_option): Handle -fsanitize=float-cast-overflow.
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_FLOAT_CAST_OVERFLOW,
BUILT_IN_UBSAN_HANDLE_FLOAT_CAST_OVERFLOW_ABORT): Add.
* ubsan.c: Include "realmpfr.h" and "dfp.h".
(get_ubsan_type_info_for_type): Handle REAL_TYPEs.
(ubsan_type_descriptor): Set tkind to 0xffff for types other than
float/double/long double.
(ubsan_instrument_float_cast): New function.
* ubsan.h (ubsan_instrument_float_cast): Declare.
testsuite/
* c-c++-common/ubsan/float-cast-overflow-1.c: New test.
* c-c++-common/ubsan/float-cast-overflow-10.c: New test.
* c-c++-common/ubsan/float-cast-overflow-2.c: New test.
* c-c++-common/ubsan/float-cast-overflow-3.c: New test.
* c-c++-common/ubsan/float-cast-overflow-4.c: New test.
* c-c++-common/ubsan/float-cast-overflow-5.c: New test.
* c-c++-common/ubsan/float-cast-overflow-6.c: New test.
* c-c++-common/ubsan/float-cast-overflow-7.c: New test.
* c-c++-common/ubsan/float-cast-overflow-7.h: New file.
* c-c++-common/ubsan/float-cast-overflow-8.c: New test.
* c-c++-common/ubsan/float-cast-overflow-9.c: New test.
* c-c++-common/ubsan/float-cast.h: New file.
* g++.dg/ubsan/float-cast-overflow-bf.C: New test.
* gcc.dg/ubsan/float-cast-overflow-bf.c: New test.
libsanitizer/
* ubsan/ubsan_value.cc (getFloatValue): Handle 96-bit
floating-point types.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210862
138bc75d-0d04-0410-961f-
82ee72b054a4
2014-05-27 Dominique d'Humieres <dominiq@lps.ens.fr>
PR testsuite/61319
* c-c++-common/ubsan/float-cast-overflow-1.c: Make the sign of
-nan optional.
* c-c++-common/ubsan/float-cast-overflow-2.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-4.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210958
138bc75d-0d04-0410-961f-
82ee72b054a4
PR testsuite/61319
* c-c++-common/ubsan/float-cast.h: Conditionally define LLONG_MAX,
LLONG_MIN, and ULLONG_MAX.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@210970
138bc75d-0d04-0410-961f-
82ee72b054a4
* sanitizer_common/sanitizer_stacktrace.cc: Cherry pick upstream
r209879.
* sanitizer_common/sanitizer_common.h: Likewise.
* asan/asan_mapping.h: Likewise.
* asan/asan_linux.cc: Likewise.
* tsan/tsan_mman.cc: Cherry pick upstream r209744.
* sanitizer_common/sanitizer_allocator.h: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211080
138bc75d-0d04-0410-961f-
82ee72b054a4
2014-06-11 Richard Biener <rguenther@suse.de>
* asan/asan_linux.cc: Cherry pick upstream r210012.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211453
138bc75d-0d04-0410-961f-
82ee72b054a4
* 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.
Conflicts:
gcc/c-family/c-ubsan.c
gcc/ubsan.c
2014-06-23 Paolo Carlini <paolo.carlini@oracle.com>
* sanitizer_common/sanitizer_common_interceptors.inc:
Cherry pick upstream r211008.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211912
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-c++-common/ubsan/bounds-2.c: Adjust dg-output.
(fn1): Remove store to out-of-bounds location. Add memory barrier.
(fn2): Likewise.
(fn5): Likewise.
(fn6): Likewise.
(fn7): Likewise.
(fn8): Likewise.
(fn9): Likewise.
(fn11): Likewise.
* c-c++-common/ubsan/bounds-5.c (fn1): Remove store to out-of-bounds
location. Add memory barrier.
(fn2): Likewise.
(fn3): Likewise.
(fn4): Likewise.
(fn5): Likewise.
* c-c++-common/ubsan/bounds-7.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212061
138bc75d-0d04-0410-961f-
82ee72b054a4
* doc/invoke.texi (-fsanitize=bounds): Move to the table with
-fsanitize=undefined suboptions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212146
138bc75d-0d04-0410-961f-
82ee72b054a4
* convert.c (convert_to_integer): Don't instrument conversions if the
function has no_sanitize_undefined attribute.
* ubsan.c: Don't run the ubsan pass if the function has
no_sanitize_undefined attribute.
c/
* c-decl.c (grokdeclarator): Don't instrument VLAs if the function
has no_sanitize_undefined attribute.
cp/
* cp-gimplify.c (cp_genericize): Don't instrument returns if the
function has no_sanitize_undefined attribute.
* decl.c (compute_array_index_type): Don't instrument VLAs if the
function has no_sanitize_undefined attribute.
testsuite/
* c-c++-common/ubsan/attrib-2.c: New test.
* g++.dg/ubsan/return-3.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212148
138bc75d-0d04-0410-961f-
82ee72b054a4
* doc/invoke.texi (-fsanitize=bounds): Tweak wording.
(-fsanitize=float-divide-by-zero): Move to the table with
-fsanitize=undefined suboptions.
(-fsanitize=float-cast-overflow): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212260
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-ubsan.c (ubsan_instrument_bounds): Don't instrument if
TYPE_MAX_VALUE is NULL.
* gcc.dg/ubsan/bounds-1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212552
138bc75d-0d04-0410-961f-
82ee72b054a4
gcc/testsuite/
2014-07-17 Max Ostapenko <m.ostapenko@partner.samsung.com>
* c-c++-common/ubsan/bounds-2.c: Change output pattern.
* c-c++-common/ubsan/bounds-5.c: Likewise.
* c-c++-common/ubsan/bounds-6.c: Likewise.
* c-c++-common/ubsan/bounds-7.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-1.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-10.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-2.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-3.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-4.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-5.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-6.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
* gcc.dg/ubsan/float-cast-overflow-bf.c: Likewise.
* g++.dg/ubsan/float-cast-overflow-bf.C: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212755
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-c++-common/ubsan/bounds-2.c (fn4): Adjust to check the array size
in the structure.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212933
138bc75d-0d04-0410-961f-
82ee72b054a4
* opts.c (common_handle_option): Handle -fsanitize=alignment.
* ubsan.h (enum ubsan_null_ckind): Add UBSAN_CTOR_CALL.
(ubsan_expand_bounds_ifn, ubsan_expand_null_ifn): Change return
type to bool.
* stor-layout.h (min_align_of_type): New prototype.
* asan.c (pass_sanopt::execute): Don't perform gsi_next if
ubsan_expand* told us not to do it. Remove the extra gsi_end_p
check.
* ubsan.c: Include builtins.h.
(ubsan_expand_bounds_ifn): Change return type to bool,
always return true.
(ubsan_expand_null_ifn): Change return type to bool, change
argument to gimple_stmt_iterator *. Handle both null and alignment
sanitization, take type from ckind argument's type rather than
first argument.
(instrument_member_call): Removed.
(instrument_mem_ref): Remove t argument, add mem and base arguments.
Handle both null and alignment sanitization, don't say whole
struct access is member access. Build 3 argument IFN_UBSAN_NULL
call instead of 2 argument.
(instrument_null): Adjust instrument_mem_ref caller. Don't
instrument calls here.
(pass_ubsan::gate, pass_ubsan::execute): Handle SANITIZE_ALIGNMENT
like SANITIZE_NULL.
* stor-layout.c (min_align_of_type): New function.
* flag-types.h (enum sanitize_code): Add SANITIZE_ALIGNMENT.
Or it into SANITIZE_UNDEFINED.
* doc/invoke.texi (-fsanitize=alignment): Document.
cp/
* cp-gimplify.c (cp_genericize_r): For -fsanitize=null and/or
-fsanitize=alignment call ubsan_maybe_instrument_reference
for casts to REFERENCE_TYPE and ubsan_maybe_instrument_member_call
for calls to member functions.
c-family/
* c-common.h (min_align_of_type): Removed prototype.
* c-common.c (min_align_of_type): Removed.
* c-ubsan.h (ubsan_maybe_instrument_reference,
ubsan_maybe_instrument_member_call): New prototypes.
* c-ubsan.c: Include stor-layout.h and builtins.h.
(ubsan_maybe_instrument_reference_or_call,
ubsan_maybe_instrument_reference, ubsan_maybe_instrument_call): New
functions.
testsuite/
* c-c++-common/ubsan/align-1.c: New test.
* c-c++-common/ubsan/align-2.c: New test.
* c-c++-common/ubsan/align-3.c: New test.
* c-c++-common/ubsan/align-4.c: New test.
* c-c++-common/ubsan/align-5.c: New test.
* c-c++-common/ubsan/attrib-4.c: New test.
* g++.dg/ubsan/align-1.C: New test.
* g++.dg/ubsan/align-2.C: New test.
* g++.dg/ubsan/align-3.C: New test.
* g++.dg/ubsan/attrib-1.C: New test.
* g++.dg/ubsan/null-1.C: New test.
* g++.dg/ubsan/null-2.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213406
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/asan.c
gcc/c-family/c-common.c
2014-08-28 Yury Gribov <y.gribov@samsung.com>
* c-c++-common/asan/pr62089.c: Fix test on 32-bit platforms.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214673
138bc75d-0d04-0410-961f-
82ee72b054a4
gcc/
* flag-types.h (enum sanitize_code): Add SANITIZE_NONNULL_ATTRIBUTE
and SANITIZE_RETURNS_NONNULL_ATTRIBUTE, or them into SANITIZE_UNDEFINED.
* opts.c (common_handle_option): Handle SANITIZE_NONNULL_ATTRIBUTE and
SANITIZE_RETURNS_NONNULL_ATTRIBUTE and disable
flag_delete_null_pointer_checks for them.
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_NONNULL_ARG,
BUILT_IN_UBSAN_HANDLE_NONNULL_ARG_ABORT,
BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN,
BUILT_IN_UBSAN_HANDLE_NONNULL_RETURN_ABORT): New.
* ubsan.c (instrument_bool_enum_load): Set *gsi back to
stmt's iterator.
(instrument_nonnull_arg, instrument_nonnull_return): New functions.
(pass_ubsan::gate): Return true even for SANITIZE_NONNULL_ATTRIBUTE
or SANITIZE_RETURNS_NONNULL_ATTRIBUTE.
(pass_ubsan::execute): Call instrument_nonnull_{arg,return}.
* doc/invoke.texi (-fsanitize=nonnull-attribute,
-fsanitize=returns-nonnull-attribute): Document.
gcc/testsuite/
* c-c++-common/ubsan/attrib-3.c: New test.
* c-c++-common/ubsan/nonnull-1.c: New test.
* c-c++-common/ubsan/nonnull-2.c: New test.
* c-c++-common/ubsan/nonnull-3.c: New test.
* c-c++-common/ubsan/nonnull-4.c: New test.
* c-c++-common/ubsan/nonnull-5.c: New test.
libsanitizer/
* ubsan/ubsan_handlers.cc, ubsan/ubsan_handlers.h: Cherry pick
upstream r215485, r217389, r217391 and r217400.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215118
138bc75d-0d04-0410-961f-
82ee72b054a4
gcc/ChangeLog:
2014-09-19 Marat Zakirov <m.zakirov@samsung.com>
* asan.c (build_check_stmt): Alignment arg was added.
(asan_expand_check_ifn): Optimization for alignment >= 8.
gcc/testsuite/ChangeLog:
2014-09-19 Marat Zakirov <m.zakirov@samsung.com>
* c-c++-common/asan/red-align-1.c: New test.
* c-c++-common/asan/red-align-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215380
138bc75d-0d04-0410-961f-
82ee72b054a4
[libsanitizer merge from upstream r218156]
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215527
138bc75d-0d04-0410-961f-
82ee72b054a4
libiberty/
2014-09-26 Max Ostapenko <m.ostapenko@partner.samsung.com>
* pex-common.h (struct pex_funcs): Add new parameter for open_write field.
* pex-unix.c (pex_unix_open_write): Add support for new parameter.
* pex-djgpp.c (pex_djgpp_open_write): Likewise.
* pex-win32.c (pex_win32_open_write): Likewise.
* pex-common.c (pex_run_in_environment): Likewise.
include/
2014-09-26 Max Ostapenko <m.ostapenko@partner.samsung.com>
* libiberty.h (PEX_STDOUT_APPEND): New flag.
(PEX_STDERR_APPEND): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215632
138bc75d-0d04-0410-961f-
82ee72b054a4
gcc/
2014-09-26 Jakub Jelinek <jakub@redhat.com>
Max Ostapenko <m.ostapenko@partner.samsung.com>
* common.opt: New option.
* doc/invoke.texi: Describe new option.
* gcc.c (execute): Don't free first string early, but at the end
of the function. Call retry_ice if compiler exited with
ICE_EXIT_CODE.
(main): Factor out common code.
(print_configuration): New function.
(files_equal_p): Likewise.
(check_repro): Likewise.
(run_attempt): Likewise.
(do_report_bug): Likewise.
(append_text): Likewise.
(try_generate_repro): Likewise
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215633
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63316
* asan.c (asan_expand_check_ifn): Fix up align >= 8 optimization.
* c-c++-common/asan/pr63316.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215547
138bc75d-0d04-0410-961f-
82ee72b054a4
PR c/61405
PR c/53874
gcc/
* asan.c (maybe_instrument_call): Add default case.
* ipa-pure-const.c (special_builtin_state): Likewise.
* predict.c (expr_expected_value_1): Likewise.
* lto-streamer-out.c (write_symbol): Initialize variable.
gcc/c-family/
* c-common.h (struct c_common_resword): Don't define CPP_KEYWORD.
gcc/c/
* c-parser.c: Don't define CPP_KEYWORD.
(c_parser_switch_statement): Pass original type to c_finish_case.
* c-tree.h (c_finish_case): Update declaration.
* c-typeck.c (c_finish_case): Add TYPE parameter. Pass it
conditionally to c_do_switch_warnings.
gcc/cp/
* semantics.c (finish_switch_cond): Call unlowered_expr_type.
* tree.c (bot_manip): Add default case.
* parser.c (cp_parser_primary_expression): Cast the controlling
expression of a switch to an int.
(cp_parser_unqualified_id): Likewise.
gcc/testsuite/
* c-c++-common/pr53874.c: New test.
* c-c++-common/pr61405.c: New test.
libcpp/
* include/cpplib.h (enum cpp_ttype): Define CPP_KEYWORD.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215559
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/c/c-tree.h
2014-10-03 Yury Gribov <y.gribov@samsung.com>
* asan.c (asan_finish_file): Disable __asan_init calls for KASan;
don't emit empty ctors.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215851
138bc75d-0d04-0410-961f-
82ee72b054a4
* ubsan.h (ubsan_get_source_location): New prototype.
* ubsan.c (ubsan_source_location_type): New variable.
Function renamed to ...
(ubsan_get_source_location_type): ... this. Cache
return value in ubsan_source_location_type variable.
(ubsan_source_location, ubsan_create_data): Use
ubsan_get_source_location_type instead of
ubsan_source_location_type.
* asan.c (asan_protect_global): Don't protect globals
with ubsan_get_source_location_type () type.
(asan_add_global): Provide global decl location info
if possible.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215916
138bc75d-0d04-0410-961f-
82ee72b054a4
* doc/invoke.texi: Document -fsanitize=bool and -fsanitize=enum.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216033
138bc75d-0d04-0410-961f-
82ee72b054a4
* asan.c (pass_sanopt::execute): Handle IFN_UBSAN_OBJECT_SIZE.
* doc/invoke.texi: Document -fsanitize=object-size.
* flag-types.h (enum sanitize_code): Add SANITIZE_OBJECT_SIZE and
or it into SANITIZE_UNDEFINED.
* gimple-fold.c (gimple_fold_call): Optimize IFN_UBSAN_OBJECT_SIZE.
* internal-fn.c (expand_UBSAN_OBJECT_SIZE): New function.
* internal-fn.def (UBSAN_OBJECT_SIZE): Define.
* opts.c (common_handle_option): Handle -fsanitize=object-size.
* ubsan.c: Include tree-object-size.h.
(ubsan_type_descriptor): Call tree_to_uhwi instead of tree_to_shwi.
(ubsan_expand_bounds_ifn): Use false instead of 0.
(ubsan_expand_objsize_ifn): New function.
(instrument_object_size): New function.
(pass_ubsan::execute): Add object size instrumentation.
* ubsan.h (ubsan_expand_objsize_ifn): Declare.
testsuite/
* c-c++-common/ubsan/object-size-1.c: New test.
* c-c++-common/ubsan/object-size-2.c: New test.
* c-c++-common/ubsan/object-size-3.c: New test.
* c-c++-common/ubsan/object-size-4.c: New test.
* c-c++-common/ubsan/object-size-5.c: New test.
* c-c++-common/ubsan/object-size-6.c: New test.
* c-c++-common/ubsan/object-size-7.c: New test.
* c-c++-common/ubsan/object-size-8.c: New test.
* c-c++-common/ubsan/object-size-9.c: New test.
* g++.dg/ubsan/object-size-1.C: New test.
* gcc.dg/ubsan/object-size-9.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216099
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/internal-fn.c
gcc/ChangeLog:
2014-09-19 Marat Zakirov <m.zakirov@samsung.com>
* asan.c (instrument_derefs): BIT_FIELD_REF added.
gcc/testsuite/ChangeLog:
2014-09-19 Marat Zakirov <m.zakirov@samsung.com>
* c-c++-common/asan/bitfield-5.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216144
138bc75d-0d04-0410-961f-
82ee72b054a4
* ubsan/Makefile.am (DEFS): Add -DPIC.
* ubsan/Makefile.in: Regenerated.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216206
138bc75d-0d04-0410-961f-
82ee72b054a4
Fix sanitizer build on sparc.
* sanitizer_common/sanitizer_platform_limits_linux.cc (time_t):
Define at __kernel_time_t, as needed for sparc.
(struct __old_kernel_stat): Don't check if __sparc__ is defined.
* libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
(__sanitizer): Define struct___old_kernel_stat_sz,
struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc.
(__sanitizer_ipc_perm): Adjust for sparc targets.
(__sanitizer_shmid_ds): Likewsie.
(__sanitizer_sigaction): Likewsie.
(IOC_SIZE): Likewsie.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216224
138bc75d-0d04-0410-961f-
82ee72b054a4
* flag-types.h (sanitize_code): Don't assume targets have 32-bit
integers.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216349
138bc75d-0d04-0410-961f-
82ee72b054a4
New syntax for -fsanitize-recover.
2014-10-22 Jakub Jelinek <jakub@redhat.com>
Yury Gribov <y.gribov@samsung.com>
gcc/
* common.opt (flag_sanitize_recover): New variable.
(fsanitize-recover): Remove Var/Init, deprecate.
(fsanitize-recover=): New option.
* doc/invoke.texi (fsanitize-recover): Update docs.
* opts.c (finish_options): Use opts->x_flag_sanitize
instead of flag_sanitize. Prohibit -fsanitize-recover
for anything besides UBSan. Formatting.
(common_handle_option): Handle OPT_fsanitize_recover_
and OPT_fsanitize_recover. Use opts->x_flag_sanitize
instead of flag_sanitize.
* asan.c (pass_sanopt::execute): Fix up formatting.
* ubsan.c (ubsan_expand_bounds_ifn, ubsan_expand_null_ifn,
ubsan_expand_objsize_ifn, ubsan_build_overflow_builtin,
instrument_bool_enum_load, ubsan_instrument_float_cast,
instrument_nonnull_arg, instrument_nonnull_return): Check
bits in flag_sanitize_recover bitmask instead of
flag_sanitize_recover as bool flag.
gcc/c-family/
* c-ubsan.c (ubsan_instrument_division, ubsan_instrument_shift,
ubsan_instrument_vla): Check bits in flag_sanitize_recover bitmask
instead of flag_sanitize_recover as bool flag.
gcc/testsuite/
* c-c++-common/ubsan/align-1.c: Update cmdline options.
* c-c++-common/ubsan/align-3.c: Likewise.
* c-c++-common/ubsan/bounds-1.c: Likewise.
* c-c++-common/ubsan/div-by-zero-7.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-10.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-7.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
* c-c++-common/ubsan/nonnull-2.c: Likewise.
* c-c++-common/ubsan/nonnull-3.c: Likewise.
* c-c++-common/ubsan/object-size-3.c: Likewise.
* c-c++-common/ubsan/overflow-1.c: Likewise.
* c-c++-common/ubsan/overflow-add-1.c: Likewise.
* c-c++-common/ubsan/overflow-add-3.c: Likewise.
* c-c++-common/ubsan/overflow-mul-1.c: Likewise.
* c-c++-common/ubsan/overflow-mul-3.c: Likewise.
* c-c++-common/ubsan/overflow-negate-2.c: Likewise.
* c-c++-common/ubsan/overflow-sub-1.c: Likewise.
* c-c++-common/ubsan/pr59503.c: Likewise.
* c-c++-common/ubsan/pr60613-1.c: Likewise.
* c-c++-common/ubsan/save-expr-1.c: Likewise.
* c-c++-common/ubsan/shift-3.c: Likewise.
* c-c++-common/ubsan/shift-6.c: Likewise.
* c-c++-common/ubsan/undefined-1.c: Likewise.
* c-c++-common/ubsan/vla-2.c: Likewise.
* c-c++-common/ubsan/vla-3.c: Likewise.
* c-c++-common/ubsan/vla-4.c: Likewise.
* g++.dg/ubsan/cxx11-shift-1.C: Likewise.
* g++.dg/ubsan/return-2.C: Likewise.
* c-c++-common/ubsan/recovery-1.c: New test.
* c-c++-common/ubsan/recovery-2.c: New test.
* c-c++-common/ubsan/recovery-3.c: New test.
* c-c++-common/ubsan/recovery-common.inc: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216552
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-ubsan.c (ubsan_instrument_shift): Perform the MINUS_EXPR
in unsigned type.
* c-c++-common/ubsan/undefined-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216593
138bc75d-0d04-0410-961f-
82ee72b054a4
Allow to override Asan shadow offset.
2014-10-28 Yury Gribov <y.gribov@samsung.com>
gcc/
* asan.c (set_asan_shadow_offset): New function.
(asan_shadow_offset): Likewise.
(asan_emit_stack_protection): Call asan_shadow_offset.
(build_shadow_mem_access): Likewise.
* asan.h (set_asan_shadow_offset): Declare.
* common.opt (fasan-shadow-offset): New option.
(frandom-seed): Fixed parameter name.
* doc/invoke.texi (fasan-shadow-offset): Describe new option.
(frandom-seed): Fixed parameter name.
* opts-global.c (handle_common_deferred_options): Handle
-fasan-shadow-offset.
* opts.c (common_handle_option): Likewise.
gcc/testsuite/
* c-c++-common/asan/shadow-offset-1.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216773
138bc75d-0d04-0410-961f-
82ee72b054a4
Add strtoll and strtoull to libiberty.
2014-10-28 Yury Gribov <y.gribov@samsung.com>
include/
* libiberty.h (strtol, strtoul, strtoll, strtoull): New prototypes.
libiberty/
* strtoll.c: New file.
* strtoull.c: New file.
* configure.ac: Add long long checks. Add harness for strtoll and
strtoull. Check decls for strtol, strtoul, strtoll, strtoull.
* Makefile.in (CFILES, CONFIGURED_OFILES): Add strtoll and strtoull.
* config.in: Regenerate.
* configure: Regenerate.
* functions.texi: Regenerate.
* testsuite/Makefile.in (check-strtol): New rule.
(test-strtol): Likewise.
(mostlyclean): Clean up strtol test.
* testsuite/test-strtol.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216772
138bc75d-0d04-0410-961f-
82ee72b054a4
Enable -fsanitize-recover for KASan.
2014-10-28 Yury Gribov <y.gribov@samsung.com>
gcc/
* asan.c (report_error_func): Add noabort path.
(check_func): Ditto. Formatting.
(asan_expand_check_ifn): Handle noabort path.
* common.opt (flag_sanitize_recover): Add SANITIZE_KERNEL_ADDRESS
to default value.
* doc/invoke.texi (-fsanitize-recover=): Mention KASan.
* opts.c (finish_options): Reword comment.
* sanitizer.def: Add noabort ASan builtins.
gcc/testsuite/
* c-c++-common/asan/kasan-recover-1.c: New test.
* c-c++-common/asan/kasan-recover-2.c: New test.
* c-c++-common/asan/instrument-with-calls-1.c: Get rid of -save-temps.
* c-c++-common/asan/instrument-with-calls-2.c: Likewise.
* c-c++-common/asan/instrument-with-calls-3.c: Likewise.
* c-c++-common/asan/kasan-recover-1.c: Likewise.
* c-c++-common/asan/kasan-recover-2.c: Likewise.
* c-c++-common/asan/no-asan-globals.c: Likewise.
* c-c++-common/asan/no-instrument-reads.c: Likewise.
* c-c++-common/asan/no-instrument-writes.c: Likewise.
* c-c++-common/asan/no-use-after-return.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216778
138bc75d-0d04-0410-961f-
82ee72b054a4
Don't inline GCC memory builtins if ASan is enabled.
gcc/
2014-10-28 Max Ostapenko <m.ostapenko@partner.samsung.com>
* asan.h (asan_intercepted_p): New function.
* asan.c (asan_mem_ref_hasher::hash): Remove MEM_REF access size from
hash value construction. Call iterative_hash_expr instead of explicit
hash building.
(asan_mem_ref_hasher::equal): Change condition.
(has_mem_ref_been_instrumented): Likewise.
(update_mem_ref_hash_table): Likewise.
(maybe_update_mem_ref_hash_table): New function.
(instrument_strlen_call): Removed.
(get_mem_refs_of_builtin_call): Handle new parameter.
(instrument_builtin_call): Call maybe_update_mem_ref_hash_table instead
of instrument_mem_region_access if intercepted_p is true.
(instrument_mem_region_access): Instrument only base with len instead of
base and end with 1.
(build_check_stmt): Remove start_instrumented and end_instrumented
parameters.
(enum asan_check_flags): Remove ASAN_CHECK_START_INSTRUMENTED and
ASAN_CHECK_END_INSTRUMENTED. Change ASAN_CHECK_LAST.
(asan_expand_check_ifn): Remove start_instrumented and end_instrumented.
* builtins.c (expand_builtin): Include asan.h. Don't expand string/memory
builtin functions that have interceptors if ASan is enabled.
gcc/testsuite/
* c-c++-common/asan/no-redundant-instrumentation-1.c: Updated test.
* c-c++-common/asan/no-redundant-instrumentation-4.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-5.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-6.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-7.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-8.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-2.c: Removed.
* c-c++-common/asan/no-redundant-instrumentation-9.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-10.c: New test.
* c-c++-common/asan/no-redundant-instrumentation-11.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-12.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-13.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-14.c: Likewise.
* c-c++-common/asan/no-redundant-instrumentation-15.c: Likewise.
* c-c++-common/asan/pr63638.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216783
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63697
* tree-vrp.c (simplify_internal_call_using_ranges): For subcode ==
MINUS_EXPR, check overflow on vr0.min - vr1.max and vr0.max - vr1.min
instead of vr0.min - vr1.min and vr0.max - vr1.max.
* c-c++-common/ubsan/overflow-sub-3.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216962
138bc75d-0d04-0410-961f-
82ee72b054a4
* ubsan.c (instrument_object_size): Optimize [x & CST] array accesses.
testsuite/
* c-c++-common/ubsan/object-size-10.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217071
138bc75d-0d04-0410-961f-
82ee72b054a4
* Makefile.in (OBJS): Add sanopt.o.
(GTFILES): Add sanopt.c.
* asan.h (asan_expand_check_ifn): Declare.
* asan.c (asan_expand_check_ifn): No longer static.
(class pass_sanopt, pass_sanopt::execute, make_pass_sanopt): Move...
* sanopt.c: ...here. New file.
testsuite/
* c-c++-common/ubsan/align-2.c: Remove dg-output.
* c-c++-common/ubsan/align-4.c: Likewise.
* g++.dg/ubsan/null-1.C: Likewise.
* g++.dg/ubsan/null-2.C: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217099
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/asan.c
* sanopt.c (sanopt_optimize_walker): Limit removal of the checks.
Remove vector limit.
testsuite/
* c-c++-common/ubsan/align-2.c: Add dg-output.
* c-c++-common/ubsan/align-4.c: Likewise.
* c-c++-common/ubsan/align-6.c: New test.
* c-c++-common/ubsan/align-7.c: New test.
* c-c++-common/ubsan/align-8.c: New test.
* g++.dg/ubsan/null-1.C: Add dg-output.
* g++.dg/ubsan/null-2.C: Likewise.
* g++.dg/ubsan/null-3.C: New test.
* g++.dg/ubsan/null-4.C: New test.
* g++.dg/ubsan/null-5.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217189
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-c++-common/ubsan/align-7.c: Skip for -flto -fno-fat-lto-objects.
* c-c++-common/ubsan/align-8.c: Likewise.
* g++.dg/ubsan/null-4.C: Likewise.
* g++.dg/ubsan/null-5.C: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217282
138bc75d-0d04-0410-961f-
82ee72b054a4
Avoid tail call in c-c++-common/asan/strlen-overflow-1.c
PR testsuite/63830
* c-c++-common/asan/strlen-overflow-1.c (main): Avoid tail call.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217417
138bc75d-0d04-0410-961f-
82ee72b054a4
* doc/invoke.texi: Document -fsanitize=bool and -fsanitize=enum.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216033
138bc75d-0d04-0410-961f-
82ee72b054a4
* fold-const.c (fold_binary_loc): Don't fold if the result
is undefined.
* match.pd (A + (-B) -> A - B, A - (-B) -> A + B,
-(-A) -> A): Likewise.
* c-c++-common/ubsan/overflow-sub-4.c: New test.
* c-c++-common/ubsan/overflow-sub-2.c: Adjust dg-output.
* c-c++-common/ubsan/overflow-int128.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217427
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/match.pd
libsanitizer merge from upstream r221802
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217518
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
libsanitizer/asan/Makefile.in
PR sanitizer/63839
* asan.c (ATTR_CONST_NORETURN_NOTHROW_LEAF_LIST,
ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST): Define.
* builtin-attrs.def (ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST):
Define.
* builtins.c (fold_builtin_0): Don't include ubsan.h. Don't
instrument BUILT_IN_UNREACHABLE here.
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE): Make
const.
* sanopt.c (pass_sanopt::execute): Instrument BUILT_IN_UNREACHABLE.
* tree-ssa-ccp.c (optimize_unreachable): Bail out if
SANITIZE_UNREACHABLE.
* ubsan.c (ubsan_instrument_unreachable): Rewrite for GIMPLE.
* ubsan.h (ubsan_instrument_unreachable): Adjust declaration.
testsuite/
* c-c++-common/ubsan/pr63839.c: New test.
* c-c++-common/ubsan/unreachable-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217553
138bc75d-0d04-0410-961f-
82ee72b054a4
* fold-const.c (fold_negate_expr): Don't fold INTEGER_CST if
that overflows when SANITIZE_SI_OVERFLOW is on. Guard -(-A)
folding with TYPE_OVERFLOW_SANITIZED.
* c-c++-common/ubsan/overflow-negate-3.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217556
138bc75d-0d04-0410-961f-
82ee72b054a4
2014-08-12 Yury Gribov <y.gribov@samsung.com>
gcc/
* internal-fn.c (init_internal_fns): Fix off-by-one.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213848
138bc75d-0d04-0410-961f-
82ee72b054a4
* tree-ssa-reassoc.c (optimize_range_tests_diff): Perform
MINUS_EXPR in unsigned type to avoid undefined behavior.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216252
138bc75d-0d04-0410-961f-
82ee72b054a4
* sanitizer_common/Makefile.am (AM_CXXFLAGS): Use -std=gnu++11.
* asan/Makefile.am (AM_CXXFLAGS): Ditto.
* lsan/Makefile.am (AM_CXXFLAGS): Ditto.
* interception/Makefile.am (AM_CXXFLAGS): Ditto.
* tsan/Makefile.am (AM_CXXFLAGS): Ditto.
* libbacktrace/Makefile.am (AM_CXXFLAGS): Ditto.
* ubsan/Makefile.am (AM_CXXFLAGS): Ditto.
* sanitizer_common/Makefile.in: Regenerate.
* asan/Makefile.in: Ditto.
* lsan/Makefile.in: Ditto.
* interception/Makefile.in: Ditto.
* tsan/Makefile.in: Ditto.
* libbacktrace/Makefile.in: Ditto.
* ubsan/Makefile.in: Ditto.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217562
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
libsanitizer/asan/Makefile.in
* sanopt.c: Include tree-ssa-operands.h.
(struct sanopt_info): Add has_freeing_call_p,
has_freeing_call_computed_p, imm_dom_path_with_freeing_call_p,
imm_dom_path_with_freeing_call_computed_p, freeing_call_events,
being_visited_p fields.
(struct sanopt_ctx): Add asan_check_map field.
(imm_dom_path_with_freeing_call, maybe_optimize_ubsan_null_ifn,
maybe_optimize_asan_check_ifn): New functions.
(sanopt_optimize_walker): Use them, optimize even ASAN_CHECK
internal calls.
(pass_sanopt::execute): Call sanopt_optimize even for
-fsanitize=address.
* gimple.c (nonfreeing_call_p): Return true for non-ECF_LEAF
internal calls.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217581
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/sanopt.c
Export "detect_leaks=0"
PR bootstrap/63888
* bootstrap-asan.mk (ASAN_OPTIONS): Export "detect_leaks=0".
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217678
138bc75d-0d04-0410-961f-
82ee72b054a4
2014-11-18 Yury Gribov <y.gribov@samsung.com>
PR sanitizer/63802
gcc/
* stor-layout.c (min_align_of_type): Respect user alignment
more.
gcc/testsuite/
* c-c++-common/ubsan/pr63802.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217689
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/stor-layout.c
gcc
2014-11-18 Marat Zakirov <m.zakirov@samsung.com>
* opts.c (finish_options): Disable aggressive opts for sanitizer.
(common_handle_option): Move code to finish_options.
gcc/testsuite
2014-11-18 Marat Zakirov <m.zakirov@samsung.com>
* c-c++-common/asan/aggressive-opts.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217690
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63866
* asan.c (asan_global_struct): Create a TYPE_DECL for "__asan_global",
put it into TYPE_NAME and TYPE_STUB_DECL.
* ubsan.c (ubsan_type_descriptor_type): New variable.
Function renamed to ...
(ubsan_get_type_descriptor_type): ... this. Cache
return value in ubsan_type_descriptor_type variable.
Create a TYPE_DECL for "__ubsan_type_descriptor", put it into
TYPE_NAME and TYPE_STUB_DECL.
(ubsan_get_source_location_type): Create a TYPE_DECL for
"__ubsan_source_location", put it into TYPE_NAME and TYPE_STUB_DECL.
(ubsan_type_descriptor, ubsan_create_data): Call
ubsan_get_type_descriptor_type instead of ubsan_type_descriptor_type.
Create a TYPE_DECL for name, put it into TYPE_NAME and TYPE_STUB_DECL.
* c-c++-common/ubsan/pr63866.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217718
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63813
* c-ubsan.c (ubsan_maybe_instrument_reference_or_call): Change type
argument to ptype, set type to TREE_TYPE (ptype). Don't call
get_pointer_alignment for non-pointers. Use ptype, or if it is
reference type, corresponding pointer type, as type of kind
argument.
(ubsan_maybe_instrument_reference,
ubsan_maybe_instrument_member_call): Adjust callers.
* g++.dg/ubsan/pr63813.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217741
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63913
* ubsan.c: Include tree-eh.h.
(instrument_bool_enum_load): Handle loads that can throw.
* g++.dg/ubsan/pr63913.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217755
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63520
* internal-fn.c (expand_ubsan_result_store): New function.
(expand_addsub_overflow, expand_neg_overflow, expand_mul_overflow):
Use it instead of just emit_move_insn.
* c-c++-common/ubsan/pr63520.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217758
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/internal-fn.c
PR sanitizer/63879
* fold-const.c (negate_expr_p) <case NEGATE_EXPR>: Return
!TYPE_OVERFLOW_SANITIZED.
(fold_negate_expr) <case INTEGER_CST>: Fold when overflow
does not trap and when overflow wraps, or when SANITIZE_SI_OVERFLOW
is 0.
* c-c++-common/ubsan/pr63879-1.c: New test.
* c-c++-common/ubsan/pr63879-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217766
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/62132
* c-c++-common/asan/misalign-1.c: Pass -fno-omit-frame-pointer on
darwin, adjust dg-output.
* c-c++-common/asan/misalign-2.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217777
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63690
* ubsan.c (instrument_object_size): Check for MEM_REF.
* gcc.dg/ubsan/pr63690.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217778
138bc75d-0d04-0410-961f-
82ee72b054a4
Fixing the mess I did with the two previous commits. Sorry!
PR sanitizer/62132
* c-c++-common/asan/misalign-1.c: Pass -fno-omit-frame-pointer on
darwin, adjust dg-output.
* c-c++-common/asan/misalign-2.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217779
138bc75d-0d04-0410-961f-
82ee72b054a4
Fix up accidentally twice-applied patch.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217784
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63939
* c-c++-common/asan/global-overflow-1.c: Allow extra spaces after
stack pointer address, to fit darwin output when symbolizer is not
present.
* c-c++-common/asan/heap-overflow-1.c: Likewise.
* c-c++-common/asan/memcmp-1.c: Likewise.
* c-c++-common/asan/misalign-1.c: Likewise.
* c-c++-common/asan/misalign-2.c: Likewise.
* c-c++-common/asan/null-deref-1.c: Likewise.
* c-c++-common/asan/stack-overflow-1.c: Likewise.
* c-c++-common/asan/strlen-overflow-1.c: Likewise.
* c-c++-common/asan/strncpy-overflow-1.c: Likewise.
* c-c++-common/asan/use-after-free-1.c: Likewise.
* g++.dg/asan/deep-stack-uaf-1.C: Likewise.
* g++.dg/asan/deep-tail-call-1.C: Likewise.
* g++.dg/asan/large-func-test-1.C: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217817
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/64013
* sanitizer_common/sanitizer_linux.cc (FileExists): Cherry pick
upstream r222532.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217921
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63788
* asan.c (initialize_sanitizer_builtins): Add BT_FN_SIZE_CONST_PTR_INT
var. Conditionally build BUILT_IN_OBJECT_SIZE decl.
(ATTR_PURE_NOTHROW_LEAF_LIST): Define.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218084
138bc75d-0d04-0410-961f-
82ee72b054a4
* gcc.c (SANITIZER_SPEC): Don't error on -fsanitize=thread
without -pie or -shared, error on -fsanitize=thread -static instead.
* lib/tsan-dg.exp (check_effective_target_fsanitize_thread,
tsan_init): Don't use -fPIE or -pie.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218097
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/testsuite/lib/tsan-dg.exp
PR c/63862
c-family/
* c-ubsan.c (ubsan_instrument_shift): Change the type of a MINUS_EXPR
to op1_utype.
* c-gimplify.c (c_gimplify_expr): Convert right operand of a shift
expression to unsigned_type_node.
c/
* c-typeck.c (build_binary_op) <RSHIFT_EXPR, LSHIFT_EXPR>: Don't
convert the right operand to integer type.
cp/
* typeck.c (cp_build_binary_op) <RSHIFT_EXPR, LSHIFT_EXPR>: Don't
convert the right operand to integer type.
testsuite/
* gcc.c-torture/execute/shiftopt-1.c: Don't XFAIL anymore.
* c-c++-common/ubsan/shift-7.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218142
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-ubsan.c (ubsan_instrument_shift): Use op1_utype for MINUS_EXPR
instead of unsigned_type_node.
* c-c++-common/ubsan/shift-8.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218163
138bc75d-0d04-0410-961f-
82ee72b054a4
2015-02-09 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/64981
* builtins.c (expand_builtin): Call targetm.expand_builtin
for BUILT_IN_MD builtins regardless of asan_intercepted_p.
* gcc.dg/asan/pr64981.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220551
138bc75d-0d04-0410-961f-
82ee72b054a4
Backport from GCC mainline.
2015-03-16 Max Ostapenko <m.ostapenko@partner.samsung.com>
PR sanitizer/64820
gcc/
* cfgexpand.c (align_base): New function.
(alloc_stack_frame_space): Call it.
(expand_stack_vars): Align prev_frame to be sure
data->asan_vec elements aligned properly.
gcc/testsuite/
* c-c++-common/asan/pr64820.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221457
138bc75d-0d04-0410-961f-
82ee72b054a4
Backport from GCC mainline.
2015-04-01 Max Ostapenko <m.ostapenko@partner.samsung.com>
PR target/65624
gcc/
* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_builtin): Increase
args array size by one to avoid buffer overflow.
gcc/testsuite/
* gcc.target/aarch64/pr65624.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221807
138bc75d-0d04-0410-961f-
82ee72b054a4
Backport from GCC trunk.
2015-04-13 Yury Gribov <y.gribov@samsung.com>
PR sanitizer/64839
libsanitizer/
* sanitizer_common/sanitizer_platform.h: Cherry pick
upstream r234470.
* sanitizer_common/sanitizer_platform_limits_posix.cc: Ditto.
* configure.ac (RPC_DEFS): Check for precense of RPC headers.
* sanitizer_common/Makefile.am (DEFS): Pass info to compiler.
* Makefile.in: Regenerate.
* asan/Makefile.in: Regenerate.
* config.h.in: Regenerate.
* configure: Regenerate.
* interception/Makefile.in: Regenerate.
* libbacktrace/Makefile.in: Regenerate.
* lsan/Makefile.in: Regenerate.
* sanitizer_common/Makefile.in: Regenerate.
* tsan/Makefile.in: Regenerate.
* ubsan/Makefile.in: Regenerate.
Backport from GCC trunk.
2015-04-17 Yury Gribov <y.gribov@samsung.com>
gcc/
* asan.c (set_sanitized_sections): New function.
(section_sanitized_p): Ditto.
(asan_protect_global): Optionally sanitize user-defined
sections.
* asan.h (set_sanitized_sections): Declare new function.
* common.opt (fsanitize-sections): New option.
* doc/invoke.texi (-fsanitize-sections): Document new option.
* opts-global.c (handle_common_deferred_options): Handle new
option.
gcc/testsuite/
* c-c++-common/asan/user-section-1.c: New test.
Backport from mainline.
PR testsuite/66046
* c-c++-common/ubsan/align-6.c: Don't match trailing newlines in the
last dg-output.
* c-c++-common/ubsan/align-7.c: Likewise.
* c-c++-common/ubsan/bounds-8.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
* c-c++-common/ubsan/load-bool-enum.c: Likewise.
* c-c++-common/ubsan/null-1.c: Likewise.
* c-c++-common/ubsan/null-10.c: Likewise.
* c-c++-common/ubsan/null-11.c: Likewise.
* c-c++-common/ubsan/null-2.c: Likewise.
* c-c++-common/ubsan/null-3.c: Likewise.
* c-c++-common/ubsan/null-4.c: Likewise.
* c-c++-common/ubsan/null-5.c: Likewise.
* c-c++-common/ubsan/null-6.c: Likewise.
* c-c++-common/ubsan/null-7.c: Likewise.
* c-c++-common/ubsan/null-8.c: Likewise.
* c-c++-common/ubsan/null-9.c: Likewise.
* c-c++-common/ubsan/object-size-1.c: Likewise.
* c-c++-common/ubsan/object-size-10.c: Likewise.
* c-c++-common/ubsan/object-size-4.c: Likewise.
* c-c++-common/ubsan/object-size-5.c: Likewise.
* c-c++-common/ubsan/object-size-7.c: Likewise.
* c-c++-common/ubsan/object-size-8.c: Likewise.
* c-c++-common/ubsan/object-size-9.c: Likewise.
* c-c++-common/ubsan/overflow-add-2.c: Likewise.
* c-c++-common/ubsan/overflow-int128.c: Likewise.
* c-c++-common/ubsan/overflow-mul-2.c: Likewise.
* c-c++-common/ubsan/overflow-mul-4.c: Likewise.
* c-c++-common/ubsan/overflow-negate-1.c: Likewise.
* c-c++-common/ubsan/overflow-negate-3.c: Likewise.
* c-c++-common/ubsan/overflow-sub-2.c: Likewise.
* c-c++-common/ubsan/overflow-sub-4.c: Likewise.
* c-c++-common/ubsan/pr59333.c: Likewise.
* c-c++-common/ubsan/pr59667.c: Likewise.
* c-c++-common/ubsan/pr60613-2.c: Likewise.
* c-c++-common/ubsan/pr60636.c: Likewise.
* c-c++-common/ubsan/pr63802.c: Likewise.
* c-c++-common/ubsan/recovery-1.c: Likewise.
* c-c++-common/ubsan/recovery-3.c: Likewise.
* c-c++-common/ubsan/shift-1.c: Likewise.
* c-c++-common/ubsan/shift-2.c: Likewise.
* c-c++-common/ubsan/shift-4.c: Likewise.
* c-c++-common/ubsan/shift-7.c: Likewise.
* c-c++-common/ubsan/undefined-2.c: Likewise.
* c-c++-common/ubsan/vla-1.c: Likewise.
* g++.dg/ubsan/null-1.C: Likewise.
* g++.dg/ubsan/null-3.C: Likewise.
* g++.dg/ubsan/null-4.C: Likewise.
* g++.dg/ubsan/vptr-8.C: Likewise.
* g++.dg/ubsan/vptr-9.C: Likewise.
* gcc.dg/ubsan/bounds-2.c: Likewise.
* gcc.dg/ubsan/object-size-9.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222878
138bc75d-0d04-0410-961f-
82ee72b054a4
Backport from mainline.
2015-04-22 Yury Gribov <y.gribov@samsung.com>
Allow wildcards in -fsanitize-sections.
gcc/
* asan.c (set_sanitized_sections): Parse incoming arg.
(section_sanitized_p): Support wildcards.
* doc/invoke.texi (-fsanitize-sections): Update description.
gcc/testsuite/
* c-c++-common/asan/user-section-1.c: New test.
* c-c++-common/asan/user-section-2.c: New test.
* c-c++-common/asan/user-section-3.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222322
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/63956
* ubsan.c (is_ubsan_builtin_p): Check also built-in class.
cp/
* constexpr.c: Include ubsan.h.
(cxx_eval_call_expression): Bail out for IFN_UBSAN_{NULL,BOUNDS}
internal functions and for ubsan builtins.
* error.c: Include internal-fn.h.
(dump_expr): Add printing of internal functions.
testsuite/
* c-c++-common/ubsan/shift-5.c: Add xfails.
* g++.dg/ubsan/div-by-zero-1.C: Don't use -w. Add xfail.
* g++.dg/ubsan/pr63956.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218221
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/cp/constexpr.c
PR sanitizer/64121
* ubsan.c (instrument_object_size): Stop searching if the base
occurs in abnormal phi.
* c-c++-common/ubsan/pr64121.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218222
138bc75d-0d04-0410-961f-
82ee72b054a4
* constexpr.c (cxx_eval_check_shift_p): New function.
(cxx_eval_binary_expression): Call it. Set NON_CONSTANT_P if it
returns true.
* g++.dg/cpp0x/constexpr-shift1.C: New test.
* g++.dg/cpp1y/constexpr-shift1.C: New test.
* g++.dg/ubsan/pr63956.C: Add dg-errors.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218279
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/cp/constexpr.c
PR middle-end/56917
* fold-const.c (fold_unary_loc): Perform the negation in A's type
when transforming ~ (A - 1) or ~ (A + -1) to -A.
* c-c++-common/ubsan/pr56917.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218395
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/64289
* c-convert.c: Include ubsan.h.
(convert): For real -> integral casts and
-fsanitize=float-cast-overflow don't call convert_to_integer, but
instead instrument the float cast directly.
* c-c++-common/ubsan/pr64289.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@218811
138bc75d-0d04-0410-961f-
82ee72b054a4
* lib/ubsan-dg.exp: Add library path for libstdc++.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219035
138bc75d-0d04-0410-961f-
82ee72b054a4
* lib/ubsan-dg.exp (check_effective_target_fsanitize_undefined):
Check if testcases run without errors, not just if they compile.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219084
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/testsuite/lib/ubsan-dg.exp
PR sanitizer/64344
* ubsan.h (ubsan_instrument_float_cast): Add ARG argument.
* ubsan.c (ubsan_instrument_float_cast): Add ARG argument, pass
it to libubsan handler instead of EXPR. Fold comparisons earlier,
if the result is integer_zerop, return NULL_TREE.
* convert.c (convert_to_integer): Pass expr as ARG.
c/
* c-typeck.c (convert_for_assignment, c_finish_return): For
-fsanitize=float-cast-overflow casts from REAL_TYPE to integer/enum
types also set in_late_binary_op around convert call.
* c-convert.c (convert): For -fsanitize=float-cast-overflow REAL_TYPE
to integral type casts, if not in_late_binary_op, pass c_fully_fold
result on expr as last argument to ubsan_instrument_float_cast,
if in_late_binary_op, don't use c_save_expr but save_expr.
testsuite/
* c-c++-common/ubsan/pr64344-1.c: New test.
* c-c++-common/ubsan/pr64344-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219201
138bc75d-0d04-0410-961f-
82ee72b054a4
* opts.c (common_handle_option): Add support for
-fno-sanitize=all and -f{,no-}sanitize-recover=all.
* doc/invoke.texi: Document -fno-sanitize=all,
-f{,no-}sanitize-recover=all. Document that
-fsanitize=float-cast-overflow is not enabled
by -fsanitize=undefined. Fix up documentation
of -f{,no-}sanitize-recover.
* c-c++-common/asan/sanitize-all-1.c: New test.
* c-c++-common/ubsan/sanitize-all-1.c: New test.
* c-c++-common/ubsan/sanitize-all-2.c: New test.
* c-c++-common/ubsan/sanitize-all-3.c: New test.
* c-c++-common/ubsan/sanitize-all-4.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219241
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/64632
* ubsan/ubsan_type_hash.cc: Cherry pick upstream r224972.
* g++.dg/ubsan/pr64632.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219912
138bc75d-0d04-0410-961f-
82ee72b054a4
2015-01-27 Jakub Jelinek <jakub@redhat.com>
Yury Gribov <y.gribov@samsung.com>
PR ubsan/64741
* ubsan.c (ubsan_source_location): Refactor code.
(ubsan_type_descriptor): Update type size. Refactor code.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220159
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/ubsan.c
* g++.dg/ubsan/shift-1.C: New test.
* gcc.dg/ubsan/c-shift-2.c: New test.
* c-c++-common/ubsan/shift-5.c: Remove file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220631
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/65019
* ubsan.c (ubsan_expand_objsize_ifn): Always return true.
* g++.dg/ubsan/pr65019.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220641
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/64984
* except.c (check_noexcept_r): Return NULL for internal
calls.
* g++.dg/ubsan/pr64984.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220649
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/65000
* g++.dg/ubsan/pr65000.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220663
138bc75d-0d04-0410-961f-
82ee72b054a4
PR bootstrap/63888
* asan/asan_globals.cc (RegisterGlobal): Disable detect_odr_violation
support until it is rewritten upstream.
* c-c++-common/asan/pr63888.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220919
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-c++-common/ubsan/bounds-6.c: Use dg-do run.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221217
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/65280
* doc/invoke.texi: Update description of -fsanitize=bounds.
* c-ubsan.c (ubsan_instrument_bounds): Check for COMPONENT_REF
before trying to figure out whether we have a flexible array member.
* c-c++-common/ubsan/bounds-1.c: Add testing of flexible array
member-like arrays.
* c-c++-common/ubsan/bounds-8.c: New test.
* c-c++-common/ubsan/bounds-9.c: New test.
* gcc.dg/ubsan/bounds-2.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221250
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/65367
* ubsan.c (ubsan_expand_objsize_ifn): Update GSI instead of GSI_ORIG
when only removing the statement. Handle expanding UBSAN_OBJECT_SIZE
separately.
* c-c++-common/ubsan/pr65367.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221325
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/65583
* ubsan.c (ubsan_create_edge): New function.
(instrument_bool_enum_load): Call it.
(instrument_nonnull_arg): Likewise.
(instrument_nonnull_return): Likewise.
(instrument_object_size): Likewise.
* g++.dg/ubsan/pr65583.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221723
138bc75d-0d04-0410-961f-
82ee72b054a4
PR tree-optimization/65709
* ubsan.c (instrument_mem_ref): Use TREE_TYPE (base) instead of
TREE_TYPE (TREE_TYPE (t)).
* c-c++-common/ubsan/align-9.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221958
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/testsuite/ChangeLog
* c-ubsan.c (ubsan_instrument_bounds): Don't skip instrumenting
flexible member array-like members if SANITIZE_BOUNDS_STRICT.
* doc/invoke.texi: Document -fsanitize=bounds-strict.
* flag-types.h (enum sanitize_code): Add SANITIZE_BOUNDS_STRICT, or it
into SANITIZE_NONDEFAULT.
* opts.c (common_handle_option): Handle -fsanitize=bounds-strict.
* c-c++-common/ubsan/bounds-10.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222871
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
gcc/c-family/ChangeLog
gcc/flag-types.h
* c-ubsan.c (ubsan_instrument_shift): Use type0.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223646
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/66452
* toplev.c (check_global_declaration): Don't warn about artificial
decls.
* g++.dg/ubsan/pr66452.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224216
138bc75d-0d04-0410-961f-
82ee72b054a4
* common.opt (fsanitize-undefined-trap-on-error): Add Driver.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@224708
138bc75d-0d04-0410-961f-
82ee72b054a4
Backport from mainline.
libstdc++-v3/
* include/bits/regex_compiler.h (_S_cache_size): Multiply the
RHS of the shift-expression by _IsChar::value.
Conditionally include target specific files while building TSAN
2015-01-25 Venkataramanan Kumar <venkataramanan.kumar@linaro.org>
* configure.ac (TSAN_TARGET_DEPENDENT_OBJECTS): Define.
* configure: Regenerate.
* tsan/Makefile.am (EXTRA_libtsan_la_SOURCES): Define.
(libtsan_la_DEPENDENCIES): Likewise.
* Makefile.in: Regenerate.
* asan/Makefile.in: Regenerate.
* interception/Makefile.in: Regenerate.
* libbacktrace/Makefile.in: Regenerate.
* lsan/Makefile.in: Regenerate.
* sanitizer_common/Makefile.in: Regenerate.
* tsan/Makefile.in: Regenerate.
* ubsan/Makefile.in: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220034
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
libsanitizer/configure
libsanitizer/tsan/Makefile.am
libsanitizer/tsan/Makefile.in
libsanitizer merge from upstream r250806.
libsanitizer/
2015-10-20 Maxim Ostapenko <m.ostapenko@partner.samsung.com>
* All source files: Merge from upstream r250806.
* configure.ac (link_sanitizer_common): Add -lrt flag.
* configure.tgt: Enable TSAN and LSAN for aarch64-linux targets.
Set CXX_ABI_NEEDED=true for darwin.
* asan/Makefile.am (asan_files): Add new files.
(DEFS): Add DCAN_SANITIZE_UB=0 and remove unused and legacy
DASAN_FLEXIBLE_MAPPING_AND_OFFSET=0.
* asan/Makefile.in: Regenerate.
* ubsan/Makefile.am (ubsan_files): Add new files.
(DEFS): Add DCAN_SANITIZE_UB=1.
(libubsan_la_LIBADD): Add -lc++abi if CXX_ABI_NEEDED is true.
* ubsan/Makefile.in: Regenerate.
* tsan/Makefile.am (tsan_files): Add new files.
(DEFS): Add DCAN_SANITIZE_UB=0.
* tsan/Makefile.in: Regenerate.
* sanitizer_common/Makefile.am (sanitizer_common_files): Add new files.
* sanitizer_common/Makefile.in: Regenerate.
* asan/libtool-version: Bump the libasan SONAME.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229111
138bc75d-0d04-0410-961f-
82ee72b054a4
libsanitizer merge from upstream r250806, compiler part.
gcc/
* asan.c (asan_emit_stack_protection): Don't pass local stack to
asan_stack_malloc_[n] anymore. Check if asan_stack_malloc_[n] returned
NULL and use local stack than.
(asan_finish_file): Insert __asan_version_mismatch_check_v[n] call
in addition to __asan_init.
* sanitizer.def (BUILT_IN_ASAN_INIT): Rename to __asan_init.
(BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Add new builtin call.
* asan.h (asan_intercepted_p): Handle new string builtins.
* ubsan.c (ubsan_use_new_style_p): New function.
(ubsan_instrument_float_cast): If location is unknown, assign
input_location to loc. Propagate loc to ubsan_create_data if
ubsan_use_new_style_p returned true.
config/
* bootstrap-asan.mk: Replace ASAN_OPTIONS=detect_leaks with
LSAN_OPTIONS=detect_leaks.
gcc/testsuite/
* c-c++-common/ubsan/float-cast-overflow-10.c: Adjust test.
* c-c++-common/ubsan/float-cast-overflow-8.c: Likewise.
* c-c++-common/ubsan/float-cast-overflow-9.c: Likewise.
* g++.dg/asan/default-options-1.C: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229112
138bc75d-0d04-0410-961f-
82ee72b054a4
libsanitizer/
PR sanitizer/63958
Reapply:
2014-10-14 David S. Miller <davem@davemloft.net>
* sanitizer_common/sanitizer_platform_limits_linux.cc (time_t):
Define at __kernel_time_t, as needed for sparc.
(struct __old_kernel_stat): Don't check if __sparc__ is defined.
* libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
(__sanitizer): Define struct___old_kernel_stat_sz,
struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc.
(__sanitizer_ipc_perm): Adjust for sparc targets.
(__sanitizer_shmid_ds): Likewsie.
(__sanitizer_sigaction): Likewise.
(IOC_SIZE): Likewsie.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229113
138bc75d-0d04-0410-961f-
82ee72b054a4
libsanitizer/
PR bootstrap/63888
Reapply:
2015-02-20 Jakub Jelinek <jakub@redhat.com>
* asan/asan_globals.cc (RegisterGlobal): Disable detect_odr_violation
support until it is rewritten upstream.
* c-c++-common/asan/pr63888.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229114
138bc75d-0d04-0410-961f-
82ee72b054a4
libsanitizer/
* sanitizer_common/sanitizer_stacktrace.cc (GetCanonicFrame): Assume we
compiled code with GCC when extracting the caller PC for ARM if no
valid frame pointer is available.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229115
138bc75d-0d04-0410-961f-
82ee72b054a4
libsanitizer/
* HOWTO_MERGE: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229116
138bc75d-0d04-0410-961f-
82ee72b054a4
Update HOWTO_MERGE file for libsanitizer.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229215
138bc75d-0d04-0410-961f-
82ee72b054a4
Fix ASan output pattern tests on Darwin.
gcc/testsuite/
PR sanitizer/68042
* c-c++-common/asan/memcmp-1.c: Adjust test to pass on Darwin.
* c-c++-common/asan/sanity-check-pure-c-1.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229212
138bc75d-0d04-0410-961f-
82ee72b054a4
Fix bootstrap on x86_64-apple-darwin14 after r229119.
libsanitizer/
PR bootstrap/68041
* configure.ac (link_sanitizer_common): Link against librt only if it
contains shm_open, required by sanitizers.
(CXX_ABI_NEEDED): Remove variable.
* configure: Regenerate.
* ubsan/Makefile.am (libubsan_la_LIBADD): Do not add -lc++abi anymore.
* ubsan/Makefile.in: Regenerate.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229168
138bc75d-0d04-0410-961f-
82ee72b054a4
libsanitizer merge from upstream r253555.
libsanitizer/
2015-11-23 Maxim Ostapenko <m.ostapenko@partner.samsung.com>
* All source files: Merge from upstream r253555.
* configure.tgt: Enable LSan on aarch64-*-linux* targets. Add new
dependences for TSan for aarch64-*-linux* targets.
* tsan/Makefile.am: Add new source files.
* configure: Regenerate.
* tsan/Makefile.in: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230739
138bc75d-0d04-0410-961f-
82ee72b054a4
Conflicts:
libsanitizer/tsan/Makefile.am
libsanitizer/tsan/Makefile.in
libsanitizer merge from upstream r253555, compiler part.
gcc/
* opts.c (finish_options): Allow -fsanitize-recover=address for
userspace sanitization.
* asan.c (asan_expand_check_ifn): Redefine recover_p.
* doc/invoke.texi (fsanitize-recover): Update documentation.
gcc/testsuite/
* c-c++-common/asan/halt_on_error-1.c: New test.
* c-c++-common/asan/halt_on_error-2.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230741
138bc75d-0d04-0410-961f-
82ee72b054a4
Fix libsanitizer build with old kernel headers on ARM after r230739.
libsanitizer/
* include/system/linux/asm/ptrace.h: New header.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230790
138bc75d-0d04-0410-961f-
82ee72b054a4
Move ptrace.h to appropriate place.
libsanitizer/
* include/system/linux/asm/ptrace.h: Move to ...
* include/system/asm/ptrace.h: ... this.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230804
138bc75d-0d04-0410-961f-
82ee72b054a4
Backport from mainline r219968. Fix ASan build on Aarch64 42-bit VMA and
Glibc < 2.21.
PR sanitizer/64435
* sanitizer_common/sanitizer_platform_limits_posix.cc: Cherry pick upstream
r226637.
* sanitizer_common/sanitizer_posix.cc: Cherry pick upstream r226639.
libbacktrace/
2016-03-02 Maxim Ostapenko <m.ostapenko@partner.samsung.com>
* elf.c (backtrace_initialize): Properly initialize elf_fileline_fn to
avoid possible crash.
(elf_add): Don't set *fileline_fn to elf_nodebug value in case of
missing debug info anymore.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233911
138bc75d-0d04-0410-961f-
82ee72b054a4
Backport from mainline.
gcc/
* config/elfos.h (ASM_DECLARE_OBJECT_NAME): Use decl size
instead of type size.
(ASM_FINISH_DECLARE_OBJECT): Likewise.
gcc/testsuite/
* gcc.target/i386/struct-size.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213699
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/66908
* c-ubsan.c: Include gimplify.h.
(ubsan_instrument_division): Unshare OP0 and OP1.
(ubsan_instrument_shift): Likewise.
* c-c++-common/ubsan/pr66908.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226110
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/66977
* typeck.c (get_member_function_from_ptrfunc): Don't sanitize
RSHIFT_EXPR.
* g++.dg/ubsan/pr66977.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226440
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-ubsan.c (ubsan_instrument_division): Use unshare_expr throughout.
(ubsan_instrument_shift): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@226116
138bc75d-0d04-0410-961f-
82ee72b054a4
2015-08-21 Yury Gribov <y.gribov@samsung.com>
* sanitizer.def (BUILT_IN_UBSAN_HANDLE_NONNULL_ARG,
BUILT_IN_UBSAN_HANDLE_NONNULL_ARG): Fix builtin types.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227054
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/67279
* c-typeck.c (build_binary_op): Don't instrument static initializers.
* gcc.dg/ubsan/pr67279.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227491
138bc75d-0d04-0410-961f-
82ee72b054a4
2015-09-17 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR sanitizer/64078
* c-c++-common/ubsan/object-size-9.c (s): Add alignment attribute.
(f2, f3): Make the function static.
* c-c++-common/ubsan/object-size-10.c (a, b): Add alignment attribute.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@227886
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/64906
* c-ubsan.c (ubsan_instrument_division): Also pre-evaluate OP1.
* c-c++-common/ubsan/pr64906.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228112
138bc75d-0d04-0410-961f-
82ee72b054a4
* c-ubsan.c (ubsan_instrument_division): Remove unnecessary code.
(ubsan_instrument_shift): Likewise.
* c-c++-common/ubsan/bounds-11.c: New test.
* c-c++-common/ubsan/bounds-12.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228114
138bc75d-0d04-0410-961f-
82ee72b054a4
2015-10-29 Richard Biener <rguenther@suse.de>
PR middle-end/56956
* fold-const.c (fold_cond_expr_with_comparison): Do not fold
unsigned conditonal negation to ABS_EXPR.
* c-c++-common/ubsan/pr56956.c: New testcase.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@229517
138bc75d-0d04-0410-961f-
82ee72b054a4
PR c++/67941
* lambda.c (maybe_add_lambda_conv_op): Mark _FUN as
no_sanitize_undefined.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230897
138bc75d-0d04-0410-961f-
82ee72b054a4
* lambda.c (maybe_add_lambda_conv_op): Only set
no_sanitize_undefined if SANITIZE_NULL.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@230908
138bc75d-0d04-0410-961f-
82ee72b054a4
gcc:
PR sanitizer/68418
* c-family/c-ubsan.c (ubsan_instrument_shift): Disable
sanitization of left shifts for wrapping signed types as well.
gcc/testsuite:
PR sanitizer/68418
* gcc.dg/ubsan/c99-wrapv-shift-1.c,
gcc.dg/ubsan/c99-wrapv-shift-2.c: New testcases.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231582
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/69055
* ubsan.c (ubsan_instrument_float_cast): Call
initialize_sanitizer_builtins.
* gfortran.dg/pr69055.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232024
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/69099
* c-convert.c (convert) [INTEGER_TYPE]: Drop ARG. Don't pass ARG to
ubsan_instrument_float_cast. Fold EXPR. Use NULL_TREE instead of
NULL.
* convert.c (convert_to_integer_1): Adjust call to
ubsan_instrument_float_cast. Use NULL_TREE instead of NULL.
* ubsan.c (ubsan_instrument_float_cast): Drop the ARG parameter. Use
EXPR instead of ARG.
* ubsan.h (ubsan_instrument_float_cast): Adjust declaration.
* gcc.dg/ubsan/float-cast-overflow-atomic.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232099
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/68824
* tsan/tsan_interceptors.cc (NEED_TLS_GET_ADDR, __tls_get_addr,
InitializeInterceptors): Cherry pick upstream r258119.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232555
138bc75d-0d04-0410-961f-
82ee72b054a4
Fix PR sanitizer/69276
* g++.dg/asan/pr69276.C: New test.
PR sanitizer/PR69276
* asan.c (has_stmt_been_instrumented_p): Instrument gimple calls
that are gimple_store_p.
(maybe_instrument_call): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233137
138bc75d-0d04-0410-961f-
82ee72b054a4
Do not emit red stack zones for a fn with no_sanitize_address
PR sanitizer/69863
* cfgexpand.c (asan_sanitize_stack_p): New function.
(partition_stack_vars): Use the function.
(expand_stack_vars): Likewise.
(defer_stack_allocation): Likewise.
(expand_used_vars): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233524
138bc75d-0d04-0410-961f-
82ee72b054a4
2016-04-08 Maxim Ostapenko <m.ostapenko@samsung.com>
PR sanitizer/70541
* asan.c (instrument_derefs): If we get unknown location, extract it
with EXPR_LOCATION.
(maybe_instrument_call): Instrument gimple_call's arguments if needed.
* c-c++-common/asan/pr70541.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@234827
138bc75d-0d04-0410-961f-
82ee72b054a4
PR sanitizer/70712
* cfgexpand.c (expand_stack_vars): Fix typo.
* c-c++-common/asan/pr70712.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235384
138bc75d-0d04-0410-961f-
82ee72b054a4
Change-Id: Ie47e8a2109bfedb19d2cd756a4683c4fd405f64e
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
packaging: Disable builidng FORTRAN compiler - remove fortran related gcc configure options - remove fortran related RPM packaging rules
And qemu-accel should be update to diable fortran correctly.
Change-Id: I29a188e096d77770ccfe014c1ddd08530a3ec595
Signed-off-by: Hyung-Kyu (HQ) Choi <hk0110.choi@samsung.com>
FIXME: packaging: Added gmp/mpc/mpfr/cloog/isr source to build.
Change-Id: I4e73a399e17caa484db0645f4684233450b36035
Rework packaging for Tizen.
Change-Id: Idc6ae14ce9fcd767e45cd2285097565bdc5865ab