platform/upstream/linaro-gcc.git
7 years agoFix the UBSan inexpensive call sanitization 57/94857/5
Slava Barinov [Fri, 30 Sep 2016 09:36:36 +0000 (12:36 +0300)]
Fix the UBSan inexpensive call sanitization

The change imported in order to fix false positive -Wmaybe-uninitialized
in several packages in UBSan builds.

* gimple.c: Include builtins.h
(gimple_inexpensive_call_p): New function.
* gimple.h (gimple_inexpensive_call_p): Declare.
* tree-ssa-loop-ch.c (should_duplicate_loop_header_p): Use it.
* tree-ssa-loop-ivcanon.c (tree_estimate_loop_size): Likewise;
fix formatting.

upstream hash: f18de397b1e0523fd840800399ec6ea21ec04af8
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237172 138bc75d-0d04-0410-961f-82ee72b054a4

Authored-by: hubicka
Change-Id: Ia58f6110f777f444c3679631f5406376e9e9925f
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoFix the static initializer build with UBSan 56/94856/2
Slava Barinov [Wed, 28 Sep 2016 14:44:47 +0000 (17:44 +0300)]
Fix the static initializer build with UBSan

The idea is borrowed from the upstream 56ac70e (trunk@212499).
Without the check initializer is not fold to constant and therefore structure
cannot be initialized.

* gcc/fold-const.c (tree_single_nonzero_warnv_p): Check if local object
is WEAK to remove then NULL check.
* gcc.dg/ubsan/static-init-null.c: New testcase.

Change-Id: I895708e5ae8b1cffcdbdf060ce8894a029937e75
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoImport UBSAN_NULL check bugfix from upstream 55/94855/4
Slava Barinov [Fri, 23 Sep 2016 11:09:09 +0000 (14:09 +0300)]
Import UBSAN_NULL check bugfix from upstream

The whole original patch introduces too many changes including new
features so only the changes crucial for bugfix are imported.

The ASan internal function mode is switched to R together with UBSan one.

Upstream hash: 32cf7025dfa4a65f3e4dafb3b46b4816b119a75b
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@219695 138bc75d-0d04-0410-961f-82ee72b054a4

Change-Id: I22448d08ddca269f802844b284b3177c3ae97404
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoubsan-build-env package created 54/94854/3
Slava Barinov [Tue, 30 Aug 2016 09:21:55 +0000 (12:21 +0300)]
ubsan-build-env package created

The package contains UBSAN_OPTIONS to force log writing to file and
script to pack logs into rpm package.

Change-Id: If902ab5e416ab4d273eb688f793c6f5a222c5af1
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoSet 0644 mode to sanitizer tool report 53/94853/3
Slava Barinov [Wed, 31 Aug 2016 14:41:46 +0000 (17:41 +0300)]
Set 0644 mode to sanitizer tool report

Without setting up the file mode explicitly its impossible to read the
logs by users in OBS.

Change-Id: Icaa540b434fc6266cbd0b1ad3391e21b8cbb692f
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoAdd binary name printing support to UBSan 52/94852/3
Slava Barinov [Tue, 30 Aug 2016 09:09:23 +0000 (12:09 +0300)]
Add binary name printing support to UBSan

The binary name is needed for reporting with log_path since PID is not
always enough to identify the process right.

Change-Id: Ibefe22bac9f4d2a89eaacb40e6d7dc860b08d5f9
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoAdd SanitizerToolName to UBSan report message 51/94851/2
Slava Barinov [Thu, 25 Aug 2016 09:51:43 +0000 (12:51 +0300)]
Add SanitizerToolName to UBSan report message

Change-Id: Ia258f1e3906bb095ca0d33d3354dd9b1f640c89f
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoAdd verification to libgomp.graphite/force-parallel-6.c 74/81874/2 accepted/tizen/base/20161028.154612 submit/tizen_base/20161026.065426
vries [Fri, 27 Mar 2015 12:10:16 +0000 (12:10 +0000)]
Add verification to libgomp.graphite/force-parallel-6.c

2015-03-27  Tom de Vries  <tom@codesourcery.com>

PR testsuite/65594
* testsuite/libgomp.graphite/force-parallel-6.c (abort): Declare.
(init, check): New function.
(foo): Change return type to void.
(main): Call init and check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221728 138bc75d-0d04-0410-961f-82ee72b054a4

Conflicts:
libgomp/ChangeLog

Change-Id: If4a50ccdfc2e0e590ed3128d1d1bf2a3696f9c7f

7 years agoScale down libgomp.graphite/force-parallel-6.c 73/81873/2
vries [Fri, 27 Mar 2015 12:10:07 +0000 (12:10 +0000)]
Scale down libgomp.graphite/force-parallel-6.c

2015-03-27  Tom de Vries  <tom@codesourcery.com>

PR testsuite/65594
* testsuite/libgomp.graphite/force-parallel-6.c (M): Define.
(foo): Use M for non-inner loops to scale down test-case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221727 138bc75d-0d04-0410-961f-82ee72b054a4

Conflicts:
libgomp/ChangeLog

Change-Id: I6acd9383b16209b507f326c7ca60dba47a80a74a

7 years agoDeliver sanitizer-sources package. 93/89193/2 accepted/tizen/3.0/base/20161028.102939 accepted/tizen/base/20161016.035602 submit/tizen_3.0_base/20161028.062323 submit/tizen_base/20161012.051812
Maxim Ostapenko [Wed, 21 Sep 2016 15:40:22 +0000 (18:40 +0300)]
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>
7 years agoAdd x86 and arm in lsan_arch. Add liblsan-32bit for x86_64. 58/88558/4
Maxim Ostapenko [Mon, 8 Aug 2016 10:45:10 +0000 (13:45 +0300)]
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>
7 years agoAdd temporal fix for https://github.com/google/sanitizers/issues/703. 57/88557/4
Maxim Ostapenko [Mon, 19 Sep 2016 14:38:07 +0000 (17:38 +0300)]
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>
7 years agoDeliver LSan fixes for Tizen. 56/88556/4
Maxim Ostapenko [Mon, 19 Sep 2016 14:35:24 +0000 (17:35 +0300)]
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>
7 years agoMake lsan-force-options and lsan-build-env more usable. Factor out common 55/88555/3
Maxim Ostapenko [Tue, 12 Jul 2016 07:26:08 +0000 (10:26 +0300)]
Make lsan-force-options and lsan-build-env more usable. Factor out common
code from {A, UB}San to sanitizer_common code.

Add -fno-omit-frame-pointer -U_FORTIFY_SOURCE to lsan-force-options because
LSan heavily relies on frame pointers. Disable LSan in QEMU builds through
LSAN_OPTIONS file. Refactor Tizen specific patches in ASan and UBSan.

Change-Id: I95f59243352e75d6cd0eae22e7aaa02ab0e96cfc
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
7 years agoSet right preload path for libasan.so 68/89468/1 tizen_3.0 accepted/tizen/base/20161004.080439 submit/tizen_base/20160930.082827
Slava Barinov [Thu, 1 Sep 2016 10:10:35 +0000 (13:10 +0300)]
Set right preload path for libasan.so

ld.so isn't capable of using library names without path.
LSan package has the right path but ASan didn't have it.

Change-Id: I21580515805861ac02f4e8b55c50f36dbfbbdb77
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoEnable GCC plugin infrastructure 17/85517/2 accepted/tizen/base/20160902.074347 submit/tizen_base/20160831.021716
Slava Barinov [Mon, 22 Aug 2016 07:56:07 +0000 (10:56 +0300)]
Enable GCC plugin infrastructure

The plugin infrastructure is required for Fault Sanitizer project.

Default compiler packages are not affected; package gcc-plugin-devel with
required headers is created, the package which want to build plugin must
require it for build.

Change-Id: I12d99e7c07c909f36ba7b2769113fefbdbd89bfa
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
7 years agoMerge "2014-09-05 Joey Ye <joey.ye@arm.com>" into tizen_base
Dongkyun Son [Wed, 31 Aug 2016 02:00:05 +0000 (19:00 -0700)]
Merge "2014-09-05  Joey Ye  <joey.ye@arm.com>" into tizen_base

8 years agoAdd %restore_fcommon RPM macro 58/85458/4
Slava Barinov [Thu, 25 Aug 2016 07:31:51 +0000 (10:31 +0300)]
Add %restore_fcommon RPM macro

The macro is needed to restore the -fcommon flag switched off by default
in asan-force-options package. The flag is needed for some OpenSource
packages' build.

Change-Id: I0484893f3a681d2fa841ed23b46f02b930a186b9
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
8 years ago2014-09-05 Joey Ye <joey.ye@arm.com> 16/85516/1
jye2 [Fri, 5 Sep 2014 06:52:17 +0000 (06:52 +0000)]
2014-09-05  Joey Ye  <joey.ye@arm.com>

    Backport from GCC mainline.

    PR plugin/59335
    * Makefile.in (PLUGIN_HEADERS): Add wide-int.h, signop.h, hash-map.h,

Change-Id: Iab123cdc0da30b73227c2bed054c1bfcb5e7138e
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214938 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agoProvide possibility of UBSan and LSan unforcing 93/84993/2
Slava Barinov [Tue, 23 Aug 2016 07:30:05 +0000 (10:30 +0300)]
Provide possibility of UBSan and LSan unforcing

The possibility of unforcing/reforcing is needed for all sanitizers, not
only for ASan.

This patch is equal to ad12df9 but adds support for UBSan and LSan too.

Change-Id: Ib72d28bc2286fa189f0ad8704e1b81bd998e01ad
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
8 years agoFix ASan tests. 76/82576/1 accepted/tizen/base/20160805.171139 submit/tizen_base/20160805.015701
Maxim Ostapenko [Thu, 4 Aug 2016 08:27:22 +0000 (11:27 +0300)]
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>
8 years agoAdd manifest file. 30/81430/5
Maxim Ostapenko [Mon, 25 Jul 2016 08:47:53 +0000 (11:47 +0300)]
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>
8 years agoSet detect_leaks = false and halt_on_error = false by default. 29/81429/3
Maxim Ostapenko [Thu, 14 Jul 2016 14:44:53 +0000 (17:44 +0300)]
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>
8 years agoRemove redundant calls of MaybeMountProcFS and refactor it. 96/79196/4
Maxim Ostapenko [Wed, 6 Jul 2016 10:04:28 +0000 (13:04 +0300)]
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>
8 years agoSplit asan-build-env to two packages. 95/79195/3
Maxim Ostapenko [Thu, 30 Jun 2016 10:56:01 +0000 (13:56 +0300)]
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>
8 years agopackaging: keep to use version 4.9.2 05/79805/1
Dongkyun, Son [Wed, 29 Jun 2016 01:03:31 +0000 (10:03 +0900)]
packaging: keep to use version 4.9.2

Change-Id: I438876a009a4b537943bac8442eeff1e8a7c83ff
Signed-off-by: Dongkyun, Son <dongkyun.s@samsung.com>
8 years agoDeliver sanitizer-devel.rpm package. 65/77865/2
Maxim Ostapenko [Tue, 28 Jun 2016 11:06:34 +0000 (14:06 +0300)]
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>
8 years agoMake /emul/ writable to provide possibility of unforcing ASan related options. 64/77864/2
Maxim Ostapenko [Wed, 15 Jun 2016 13:04:29 +0000 (16:04 +0300)]
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>
8 years agoBackport from GCC mainline. 63/77863/2
Maxim Ostapenko [Tue, 14 Jun 2016 07:58:45 +0000 (10:58 +0300)]
Backport from GCC mainline.

2016-06-10  Maxim Ostapenko  <m.ostapenko@samsung.com>

PR sanitizer/71480
* varasm.c (place_block_symbol): Adjust alignment for asan protected
STRING_CSTs even if TREE_CONSTANT_POOL_ADDRESS_P.

* c-c++-common/asan/pr71480.c: New test.

Change-Id: Icbfd5b352bcc46a376c7c8bee62f73e54d4d87c2
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237306 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agopackaing: added '--enable-lto' to configure option
Dongkyun, Son [Sat, 30 Apr 2016 12:56:17 +0000 (21:56 +0900)]
packaing: added '--enable-lto' to configure option

Change-Id: Ie71c36be6c3c178d72e1854c6643a681ff16fd9f
Signed-off-by: Dongkyun, Son <dongkyun.s@samsung.com>
8 years agoInstall ASAN_OPTIONS from file 15/72515/1
Slava Barinov [Thu, 12 May 2016 10:06:59 +0000 (13:06 +0300)]
Install ASAN_OPTIONS from file

Using ASAN_OPTIONS file is simpler solution that post-install script and
prevents issues with sanitized bash.

Change-Id: Iaa2b362f0cff0d7269635780dfc88bd6c3ec7d52
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
8 years agoMove sanitizer libraries to corresponding packages 14/72514/1
Slava Barinov [Wed, 11 May 2016 08:52:36 +0000 (11:52 +0300)]
Move sanitizer libraries to corresponding packages

Currently libasan.so, libtsan.so and liblsan.so symlinks are packaged
into gcc.rpm but asan-build-env script pushes 'libasan.so' name without
suffix into /etc/ld.so.preload which breaks sanitized builds.

Now they are moved into corresponding packages and will be created
during sanitizer rpm installation.

Change-Id: I0917185adb0084048ef54c1cf9b40874006b71e0
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
8 years agoSupport *-build-env packages with no ld.so.preload 13/72513/1
Slava Barinov [Fri, 29 Apr 2016 14:15:02 +0000 (17:15 +0300)]
Support *-build-env packages with no ld.so.preload

In environments where there is no existing ld.so.preload file the
post-install script from *-build-env packages fails on 'mv' command and
does not add libasan as first library which leads to build failure with
message "ASan runtime does not come first in initial library list"

Change-Id: I7f22c4bca808adf728cb4ba42482c05f9f4c919e
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
8 years agogcc-force-options: Create symlink gcc-real to allow acceleration of gcc with forced... 12/72512/1
Yury Usishchev [Tue, 22 Mar 2016 08:05:41 +0000 (11:05 +0300)]
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>
8 years agoEnable sanitizers for Aarch64 in spec files: 82/72382/1
Maxim Ostapenko [Thu, 24 Mar 2016 12:11:16 +0000 (15:11 +0300)]
Enable sanitizers for Aarch64 in spec files:
Deliver {a, l, ub}san-force-options and {a, l}san-build-env packages.

Change-Id: I2b49fabac8068ffa1170fdc4b2b96fe9a42eb25b
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
8 years agoBackport Tizen specific stuff from VDLinux 6. 81/72381/1
Maxim Ostapenko [Thu, 24 Mar 2016 12:12:41 +0000 (15:12 +0300)]
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>
8 years agoFix c-c++-common/asan/pr64820.c testcase to pass output pattern tests under 80/72380/1
Maxim Ostapenko [Thu, 24 Mar 2016 12:12:35 +0000 (15:12 +0300)]
Fix c-c++-common/asan/pr64820.c testcase to pass output pattern tests under
qemu-aarch64. Adjust halt_on_error tests.

gcc/testsuite/

* c-c++-common/asan/pr64820.c: Adjust output patterns.
* c-c++-common/asan/halt_on_error-1.c: Adjust.
* c-c++-common/asan/halt_on_error-1.c: Likewise.

Change-Id: Ic7be1b413b6761d4a89c4a6aa428b2255c7608e8
Signed-off-by: Maxim Ostapenko <m.ostapenko@samsung.com>
8 years agoBackport manual fixes for GCC in order to fix various build and runtime errors. 79/72379/1
Maxim Ostapenko [Thu, 24 Mar 2016 12:12:28 +0000 (15:12 +0300)]
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>
8 years agoBackport recovery mode related stuff from LLVM mainline. 78/72378/1
Maxim Ostapenko [Thu, 24 Mar 2016 12:12:07 +0000 (15:12 +0300)]
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>
8 years agoBackport sanitizer patches from GCC mainline. 77/72377/1
Maxim Ostapenko [Thu, 24 Mar 2016 12:11:55 +0000 (15:11 +0300)]
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>
8 years agopackaing: gcc up-version to 4.9.4
Dongkyun, Son [Tue, 24 May 2016 04:38:35 +0000 (13:38 +0900)]
packaing: gcc up-version to 4.9.4

Change-Id: I4f7ca239883f1d0b2bd75a2163746d1c0af7709c
Signed-off-by: Dongkyun, Son <dongkyun.s@samsung.com>
8 years agopackaging: add --with-tune option
Chan Lee [Thu, 25 Feb 2016 07:44:59 +0000 (16:44 +0900)]
packaging: add --with-tune option

Change-Id: If870c80a2d0c87fd557838b678c71891bea9a135
Signed-off-by: Chan Lee <chan45.lee@samsung.com>
8 years agoremove --with-* option
Chan Lee [Thu, 18 Feb 2016 09:44:01 +0000 (18:44 +0900)]
remove --with-* option

remove -with-* option on arm archtecture.
We'd prefer to define this options in global option.

Change-Id: I9eeb9589d14236fda35ba4c7459e8885d8297886
Signed-off-by: Chan Lee <chan45.lee@samsung.com>
8 years agopackaging: change pkgversion for Tizen/Linaro
Chan Lee [Tue, 2 Feb 2016 05:44:14 +0000 (14:44 +0900)]
packaging: change pkgversion for Tizen/Linaro

change pkgversion like "Tizen/Linaro GCC [version] [release]" like
Tizen 2.4.
and remove prerelease string.
You can see this by typing 'gcc --version' or 'gcc -v'.

Change-Id: I27f9320f4e625d9219f0669d7ec85a38f83c8373
Signed-off-by: Chan Lee <chan45.lee@samsung.com>
8 years agopackaging: define --disable-libquadmath option for all
Chan Lee [Mon, 1 Feb 2016 00:30:39 +0000 (09:30 +0900)]
packaging: define --disable-libquadmath option for all

Change-Id: I89abe2cad14da483e0b6f3489ec66ca273485b0f
Signed-off-by: Chan Lee <chan45.lee@samsung.com>
8 years agopackaging: remove --enable-ssp
Chan Lee [Fri, 29 Jan 2016 05:38:50 +0000 (14:38 +0900)]
packaging: remove --enable-ssp

This configure option is not defined in gcc and ignored.

Change-Id: I2e853bc5812a248438b3825c846677d60738339f
Signed-off-by: Chan Lee <chan45.lee@samsung.com>
8 years agopackaging: remove --enable-linux-futex
Chan Lee [Thu, 28 Jan 2016 05:53:14 +0000 (14:53 +0900)]
packaging: remove --enable-linux-futex

Change-Id: Ie235d5d438937b6f7af834fc41f3fef158df51ca
Signed-off-by: Chan Lee <chan45.lee@samsung.com>
8 years agopackaging: remove --disable-libstdcxx-pch
Chan Lee [Thu, 28 Jan 2016 01:24:58 +0000 (10:24 +0900)]
packaging: remove --disable-libstdcxx-pch

--enable-libstdcxx-pch is default

Change-Id: I6b30a8aa2d08cd52c81aa87a804a684a0c8e16a2
Signed-off-by: Chan Lee <chan45.lee@samsung.com>
8 years agopackaging: Disable builidng FORTRAN compiler - remove fortran related gcc configure...
Hyung-Kyu (HQ) Choi [Tue, 2 Feb 2016 05:57:25 +0000 (14:57 +0900)]
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>
8 years agoFIXME: packaing: fix build error
Dongkyun, Son [Sat, 9 Jan 2016 07:49:12 +0000 (16:49 +0900)]
FIXME: packaing: fix build error

{standard input}: Assembler messages:
{standard input}:183: Error: thumb conditional instruction should be in IT block -- `movcc ip,#0'
{standard input}:184: Error: thumb conditional instruction should be in IT block -- `movcs ip,#-1'
{standard input}:219: Error: thumb conditional instruction should be in IT block -- `movcc ip,#0'
{standard input}:220: Error: thumb conditional instruction should be in IT block -- `movcs ip,#-1'
Makefile:409: recipe for target 'div_qr_1n_pi1.lo' failed

Change-Id: I44bb49c1ffa8d509143bade3b4c0946ac2e00fae

8 years agoFIXME: packaging: Added gmp/mpc/mpfr/cloog/isr source to build.
Dongkyun, Son [Sat, 9 Jan 2016 07:26:36 +0000 (16:26 +0900)]
FIXME: packaging: Added gmp/mpc/mpfr/cloog/isr source to build.

Change-Id: I4e73a399e17caa484db0645f4684233450b36035

8 years agoFIXME: Revert "packaging: Dependency packages build integration"
Dongkyun, Son [Wed, 20 Jan 2016 03:13:04 +0000 (12:13 +0900)]
FIXME: Revert "packaging: Dependency packages build integration"

This reverts commit 080b24cd93e01d07e77e1bb7d67b048516be069c.

Change-Id: Iedfe02f760be24a134c593be1d1cf777f67599fa

8 years agoFIXME: Revert "--ignorearch added for rpm"
Dongkyun, Son [Wed, 20 Jan 2016 03:12:19 +0000 (12:12 +0900)]
FIXME: Revert "--ignorearch added for rpm"

This reverts commit b13a8a51629764a352ef35791618ff75416144ed.

Change-Id: Id91caaedde29606ce32ff226adab5ef4dba60bc4

8 years agopackaging: renamed gcc.spec -> linaro-gcc.spec
Dongkyun, Son [Tue, 19 Jan 2016 08:42:52 +0000 (17:42 +0900)]
packaging: renamed gcc.spec -> linaro-gcc.spec

Change-Id: If089aa6ba827441768e8981b6f7f7a7ff9ec1818
Signed-off-by: Dongkyun, Son <dongkyun.s@samsung.com>
8 years ago--ignorearch added for rpm
Vyacheslav Barinov [Mon, 18 Jan 2016 07:51:29 +0000 (10:51 +0300)]
--ignorearch added for rpm

Without the flag build will only work for native build roots but not for OBS
cross-builds

Change-Id: If24f0675ea01e925792480944736ddc468a0ff55
Signed-off-by: Vyacheslav Barinov <v.barinov@samsung.com>
8 years agopackaging: Dependency packages build integration
Vyacheslav Barinov [Thu, 14 Jan 2016 07:35:33 +0000 (10:35 +0300)]
packaging: Dependency packages build integration

Now gmp, mpfr, mpc, isl and cloog-isl are built inside GCC build and do
not require packages in OBS.

This is done due to license issues with LGPLv3 version of GNU GMP
library, we must ensure there is no way to link Tizen apps with this
library and to install it on device.

Change-Id: I9d744c4a554cfbe46a623841cc11f50084aa31c5
Signed-off-by: Vyacheslav Barinov <v.barinov@samsung.com>
8 years agopackaging: removed *-static dependency
Dongkyun, Son [Wed, 13 Jan 2016 10:40:52 +0000 (19:40 +0900)]
packaging: removed *-static dependency

Change-Id: Iaf064836a4aec942e4a47b76eabdc45f22cd997d
Signed-off-by: Dongkyun, Son <dongkyun.s@samsung.com>
8 years ago2014-08-07 Marat Zakirov <m.zakirov@samsung.com>
mzakirov [Thu, 7 Aug 2014 07:34:33 +0000 (07:34 +0000)]
2014-08-07 Marat Zakirov <m.zakirov@samsung.com>

* config/arm/thumb1.md (*thumb1_movhi_insn): Handle stack pointer.
(*thumb1_movqi_insn): Likewise.
* config/arm/thumb2.md (*thumb2_movhi_insn): Likewise.

Change-Id: Iaf99474d30284516a0c8f713376d315b94d69b08
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213695 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agogcc/ 2014-07-11 Marat Zakirov <m.zakirov@samsung.com>
mzakirov [Fri, 11 Jul 2014 09:02:39 +0000 (09:02 +0000)]
gcc/ 2014-07-11 Marat Zakirov <m.zakirov@samsung.com>

PR target/61561
* config/arm/arm.md (*movhi_insn_arch4): Handle stack pointer.
(*movhi_bytes): Likewise.
(*arm_movqi_insn): Likewise.

gcc/testsuite/
2014-07-11  Marat Zakirov  <m.zakirov@samsung.com>

PR target/61561
* gcc.dg/pr61561.c: New test.

Change-Id: I977cff643e5fa4b119a3c662510bdf7664d8a2e6
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212450 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agomake gmp, mpc, mpfr, isl and cloog-isl deps static
Yury Usishchev [Wed, 21 Oct 2015 11:32:02 +0000 (14:32 +0300)]
make gmp, mpc, mpfr, isl and cloog-isl deps static

Change-Id: I6af8833f6f9b45672d891ffc9a7e0cd7f83e0d65

8 years agoAdd symlink to liblto_plugin to bfd-plugins directory
Yury Usishchev [Tue, 25 Aug 2015 15:10:20 +0000 (18:10 +0300)]
Add symlink to liblto_plugin to bfd-plugins directory

Change-Id: Iefe8a944c0159af77e29d786f4ce4a5d7f1dbb92

8 years agoRework packaging for Tizen.
Yury Usishchev [Thu, 2 Jul 2015 16:14:00 +0000 (19:14 +0300)]
Rework packaging for Tizen.

Change-Id: Idc6ae14ce9fcd767e45cd2285097565bdc5865ab

8 years agoMerge branches/gcc-4_9-branch rev 229467 upstream/4.9.4
yroux [Mon, 2 Nov 2015 10:01:13 +0000 (10:01 +0000)]
Merge branches/gcc-4_9-branch rev 229467

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@229653 138bc75d-0d04-0410-961f-82ee72b054a4

8 years agogcc/
yroux [Wed, 28 Oct 2015 09:00:47 +0000 (09:00 +0000)]
gcc/
2015-10-28 Yvan Roux  <yvan.roux@linaro.org>
   Sebastian Pop  <s.pop@samsung.com>

Backport from trunk r221007, r221675, r222011.
2015-04-11  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/65735
* tree-ssa-threadedge.c (fsm_find_control_statement_thread_paths):
Remove visited_phis argument, add visited_bbs, avoid recursing into the
same bb rather than just into the same phi node.
(thread_through_normal_block): Adjust caller.

2015-03-25  Sebastian Pop  <s.pop@samsung.com>

PR tree-optimization/65177
* tree-ssa-threadupdate.c (verify_seme): Renamed verify_jump_thread.
(bb_in_bbs): New.
(duplicate_seme_region): Renamed duplicate_thread_path.  Redirect all
edges not adjacent on the path to the original code.

2015-02-26  Sebastian Pop  <s.pop@samsung.com>

PR tree-optimization/65048
* tree-ssa-threadupdate.c (valid_jump_thread_path): New.
(thread_through_all_blocks): Call valid_jump_thread_path.
Remove invalid FSM jump-thread paths.

gcc/testsuite/
2015-10-28 Yvan Roux  <yvan.roux@linaro.org>
   Sebastian Pop  <s.pop@samsung.com>

Backport from trunk r221007, r221675, r222011.
2015-04-11  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/65735
* gcc.c-torture/compile/pr65735.c: New test.

2015-03-25  Sebastian Pop  <s.pop@samsung.com>

PR tree-optimization/65177
* gcc.dg/tree-ssa/ssa-dom-thread-10.c: New.

2015-02-26  Sebastian Pop  <s.pop@samsung.com>

PR tree-optimization/65048
* gcc.dg/tree-ssa/ssa-dom-thread-9.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@229478 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoBump version number, post release.
clyon [Wed, 5 Aug 2015 08:25:39 +0000 (08:25 +0000)]
Bump version number, post release.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@226615 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMake Linaro GCC Snapshot 4.9-2015.06-1.
clyon [Wed, 5 Aug 2015 08:19:01 +0000 (08:19 +0000)]
Make Linaro GCC Snapshot 4.9-2015.06-1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@226613 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoBump version number, post release.
clyon [Wed, 8 Jul 2015 13:38:25 +0000 (13:38 +0000)]
Bump version number, post release.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@225556 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMake Linaro GCC4.9-2015.06.
clyon [Wed, 8 Jul 2015 13:37:01 +0000 (13:37 +0000)]
Make Linaro GCC4.9-2015.06.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@225554 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMerge branches/gcc-4_9-branch rev 225109.
clyon [Thu, 2 Jul 2015 18:53:16 +0000 (18:53 +0000)]
Merge branches/gcc-4_9-branch rev 225109.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@225352 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-06-02 Christophe Lyon <christophe.lyon@linaro.org>
clyon [Thu, 4 Jun 2015 12:43:03 +0000 (12:43 +0000)]
2015-06-02  Christophe Lyon  <christophe.lyon@linaro.org>

Backport from trunk r217753.
2014-11-19  Jakub Jelinek  <jakub@redhat.com>

PR rtl-optimization/63843
gcc/
* simplify-rtx.c (simplify_binary_operation_1) <case ASHIFTRT>: For
optimization of ashiftrt of subreg of lshiftrt, check that code
is ASHIFTRT.

gcc/testsuite
* gcc.c-torture/execute/pr63843.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@224125 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoBump version number, post release.
clyon [Thu, 16 Apr 2015 20:05:06 +0000 (20:05 +0000)]
Bump version number, post release.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@222158 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMake Linaro GCC Snapshot 4.9-2015.04
clyon [Thu, 16 Apr 2015 19:28:22 +0000 (19:28 +0000)]
Make Linaro GCC Snapshot 4.9-2015.04

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@222155 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-15 Christophe Lyon <christophe.lyon@linaro.org>
clyon [Wed, 15 Apr 2015 08:11:56 +0000 (08:11 +0000)]
2015-04-15  Christophe Lyon  <christophe.lyon@linaro.org>

Backport from trunk r220348.
2015-02-02  Tejas Belagod  <tejas.belagod@arm.com>
    Andrew Pinski  <pinskia@gcc.gnu.org>
    Jakub Jelinek  <jakub@gcc.gnu.org>

PR target/64231
* config/aarch64/aarch64.c (aarch64_classify_symbol): Fix large
integer typing for small model. Use IN_RANGE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@222119 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-14 Michael Collison <michael.collison@linaro.org>
collison [Wed, 15 Apr 2015 06:13:53 +0000 (06:13 +0000)]
2015-04-14  Michael Collison  <michael.collison@linaro.org>

Backport from trunk r220399, r220413.

2015-02-04  Matthew Wahab  <matthew.wahab@arm.com>

* config/aarch64/aarch64-cores.def: Add cortex-a72 and
cortex-a72.cortex-a53.
* config/aarch64/aarch64-tune.md: Regenerate.
* doc/invoke.texi (AArch64 Options/-mtune): Add "cortex-a72".

2015-02-04  Matthew Wahab  <matthew.wahab@arm.com>

* config/arm/arm-cores.def: Add cortex-a72 and
cortex-a72.cortex-a53.
* config/arm/bpabi.h (BE8_LINK_SPEC): Likewise.
* config/arm/t-aprofile (MULTILIB_MATCHES): Likewise.
* config/arm/arm-tune.md: Regenerate.
* config/arm/arm-tables.opt: Add entries for "cortex-a72" and
"cortex-a72.cortex-a53".
* doc/invoke.texi (ARM Options/-mtune): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@222113 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-13 Michael Collison <michael.collison@linaro.org>
collison [Mon, 13 Apr 2015 23:49:16 +0000 (23:49 +0000)]
2015-04-13  Michael Collison  <michael.collison@linaro.org>

Backport from trunk r219724, 219746, r220103.

2014-01-25  James Greenhalgh  <james.greenhalgh@arm.com>

* config/arm/arm-cores.def (cortex-a57): Use the new Cortex-A57
pipeline model.
config/arm/arm.md: Include the new Cortex-A57 model.
(generic_sched): Don't use generic_sched when tuning for
Cortex-A57.

2015-01-16  James Greenhalgh  <james.greenhalgh@arm.com>

* config/arm/cortex-a57.md: Remove duplicate of file accidentally
introduced in revision 219724.

2015-01-16  James Greenhalgh  <james.greenhalgh@arm.com>

* config/arm/cortex-a57.md: New.
* config/aarch64/aarch64.md: Include it.
* config/aarch64/aarch64-cores.def (cortex-a57): Tune for it.
* config/aarch64/aarch64-tune.md: Regenerate.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@222066 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMerge branches/gcc-4_9-branch rev 222035
yroux [Mon, 13 Apr 2015 11:45:32 +0000 (11:45 +0000)]
Merge branches/gcc-4_9-branch rev 222035

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@222048 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFixed ordering of ChangeLog in stacked ChangeLog entires to order by date.
collison [Fri, 10 Apr 2015 20:29:45 +0000 (20:29 +0000)]
Fixed ordering of ChangeLog in stacked ChangeLog entires to order by date.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221988 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-10 Michael Collison <michael.collison@linaro.org>
collison [Fri, 10 Apr 2015 16:52:09 +0000 (16:52 +0000)]
2015-04-10  Michael Collison  <michael.collison@linaro.org>

Backport from trunk r218145, r218146, r219472.
2014-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* config/arm/arm.md (generic_sched): Specify cortexa17 in 'no' list.
Include cortex-a17.md.
* config/arm/arm.c (arm_issue_rate): Specify 2 for cortexa17.
* config/arm/arm-cores.def (cortex-a17): New entry.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-tune.md: Regenerate.
* config/arm/bpabi.h (BE8_LINK_SPEC): Specify mcpu=cortex-a17.
* config/arm/cortex-a17.md: New file.
* config/arm/cortex-a17-neon.md: New file.
* config/arm/driver-arm.c (arm_cpu_table): Add entry for cortex-a17.
* config/arm/t-aprofile: Add cortex-a17 entries to MULTILIB_MATCHES.

2014-11-28  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* config/arm/arm-cores.def (cortex-a17.cortex-a7): New entry.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-tune.md: Regenerate.
* config/arm/bpabi.h (BE8_LINK_SPEC): Add mcpu=cortex-a17.cortex-a7.
* config/arm/t-aprofile: Add cortex-a17.cortex-a7 entry to
MULTILIB_MATCHES.

2015-01-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* config/arm/arm.c (arm_cortex_a12_tune): Update entries to match
Cortex-A17 tuning parameters.
* config/arm/arm-cores.def (cortex-a12): Schedule for cortex-a17.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221977 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMerge branches/gcc-4_9-branch rev 221939
yroux [Thu, 9 Apr 2015 14:24:33 +0000 (14:24 +0000)]
Merge branches/gcc-4_9-branch rev 221939

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221950 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-09 Yvan Roux <yvan.roux@linaro.org>
yroux [Thu, 9 Apr 2015 11:26:29 +0000 (11:26 +0000)]
2015-04-09  Yvan Roux  <yvan.roux@linaro.org>

Fix partial backport done at r221911.
* gcc/config/aarch64/aarch64.c: Fix cost tables for APM XGene-1

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221946 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-09 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
kugan [Wed, 8 Apr 2015 21:37:47 +0000 (21:37 +0000)]
2015-04-09  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>

Backport from trunk r219745.
2015-01-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
            Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>

PR target/64263
* config/aarch64/aarch64.md (*movsi_aarch64): Don't split if the
destination is not a GP reg.
(*movdi_aarch64): Likewise.

2015-04-09  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>

Backport from trunk r219745.
2015-01-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

PR target/64263
* gcc.target/aarch64/pr64263_1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221936 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-09 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
kugan [Wed, 8 Apr 2015 21:04:56 +0000 (21:04 +0000)]
2015-04-09  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>

        Backport from trunk r219578.
        2015-01-14  Joey Ye  <joey.ye@arm.com>

        * config/arm/arm.c (arm_compute_save_reg_mask):
        Do not save lr in case of tail call.
        * config/arm/thumb2.md (*thumb2_pop_single): New pattern.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221935 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-09 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
kugan [Wed, 8 Apr 2015 20:55:05 +0000 (20:55 +0000)]
2015-04-09  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>

Backport from trunk r219544.
2015-01-13  Renlin Li  <renlin.li@arm.com>

* config/arm/arm.h (CLZ_DEFINED_VALUE_AT_ZERO): Return 2.
(CTZ_DEFINED_VALUE_AT_ZERO): Ditto

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221934 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFixed up Changelog.linaro
cbaylis [Wed, 8 Apr 2015 17:14:01 +0000 (17:14 +0000)]
Fixed up Changelog.linaro

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221924 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoMerged individual ChangeLog entries for r219656, r219657, r219659, r219661, and r2196...
collison [Wed, 8 Apr 2015 17:06:18 +0000 (17:06 +0000)]
Merged individual ChangeLog entries for r219656, r219657, r219659, r219661, and r219679 into one entry.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221923 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-08 Charles Baylis <charles.baylis@linaro.org>
cbaylis [Wed, 8 Apr 2015 06:44:59 +0000 (06:44 +0000)]
2015-04-08  Charles Baylis  <charles.baylis@linaro.org>

        Backport from trunk r216672.

        * config/aarch64/arm_neon.h (__LD2_LANE_FUNC): Rewrite using builtins,
        update uses to use new macro arguments.
        (__LD3_LANE_FUNC): Likewise.
        (__LD4_LANE_FUNC): Likewise.

2015-04-08  Charles Baylis  <charles.baylis@linaro.org>

        Backport from trunk r216671.
        2014-10-24  Charles Baylis  <charles.baylis@linaro.org>
        * config/aarch64/aarch64-builtins.c
        (aarch64_types_loadstruct_lane_qualifiers): Define.
        * config/aarch64/aarch64-simd-builtins.def (ld2_lane, ld3_lane,
        ld4_lane): New builtins.
        * config/aarch64/aarch64-simd.md (aarch64_vec_load_lanesoi_lane<mode>):
        New pattern.
        (aarch64_vec_load_lanesci_lane<mode>): Likewise.
        (aarch64_vec_load_lanesxi_lane<mode>): Likewise.
        (aarch64_ld2_lane<mode>): New expand.
        (aarch64_ld3_lane<mode>): Likewise.
        (aarch64_ld4_lane<mode>): Likewise.
        * config/aarch64/aarch64.md (define_c_enum "unspec"): Add
        UNSPEC_LD2_LANE, UNSPEC_LD3_LANE, UNSPEC_LD4_LANE.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221915 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-07 Michael Collison <michael.collison@linaro.org>
collison [Tue, 7 Apr 2015 21:05:46 +0000 (21:05 +0000)]
2015-04-07  Michael Collison  <michael.collison@linaro.org>

Backport from trunk r219679.
2015-01-15  Richard Earnshaw  <rearnsha@arm.com>

* arm.c (arm_xgene_tune): Add default initializer for instruction
fusion.

2015-04-07  Michael Collison  <michael.collison@linaro.org>

Backport from trunk r219661.
2015-01-15  Philipp Tomsich  <philipp.tomsich@theobroma-systems.com>

* config/arm/arm.md (generic_sched): Specify xgene1 in 'no' list.
Include xgene1.md.
* config/arm/arm.c (arm_issue_rate): Specify 4 for xgene1.
* config/arm/arm-cores.def (xgene1): New entry.
* config/arm/arm-tables.opt: Regenerate.
* config/arm/arm-tune.md: Regenerate.
* config/arm/bpabi.h (BE8_LINK_SPEC): Specify mcpu=xgene1.

2015-04-07  Michael Collison  <michael.collison@linaro.org>

Backport from trunk r219657.
2015-01-15  Philipp Tomsich  <ptomsich@theobroma-systems.com>

* config/aarch64/aarch64.md: Include xgene1.md.
* config/aarch64/xgene1.md: New file.

2015-04-07  Michael Collison  <michael.collison@linaro.org>

Backport from trunk r219656.
2015-01-15  Philipp Tomsich  <philipp.tomsich@theobroma-systems.com>

* config/aarch64/aarch64-cores.def (xgene1): Update/add the
xgene1 (APM XGene-1) core definition.
* gcc/config/aarch64/aarch64.c: Add cost tables for APM XGene-1
* config/arm/aarch-cost-tables.h: Add cost tables for APM XGene-1
* doc/invoke.texi: Document -mcpu=xgene1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221911 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/
yroux [Tue, 7 Apr 2015 13:24:05 +0000 (13:24 +0000)]
gcc/
2015-04-07  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r217062, r217646, r218658.
2014-12-12  Zhenqiang Chen  <zhenqiang.chen@arm.com>

PR rtl-optimization/63917
* ifcvt.c (cc_in_cond): New function.
(end_ifcvt_sequence): Make sure new generated insns do not clobber CC.
(noce_process_if_block, check_cond_move_block): Check CC references.

2014-11-17  Zhenqiang Chen  <zhenqiang.chen@arm.com>

* ifcvt.c (HAVE_cbranchcc4): Define.
(noce_emit_cmove, noce_get_alt_condition, noce_get_condition):
Use HAVE_cbranchcc4.

2014-11-04  Zhenqiang Chen  <zhenqiang.chen@arm.com>

Revert:
2014-11-03  Zhenqiang Chen  <zhenqiang.chen@arm.com>
* ifcvt.c (noce_emit_cmove, noce_get_alt_condition, noce_get_condition):
Allow CC mode if HAVE_cbranchcc4.

gcc/testsuite/
2015-04-07  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218658.
2014-12-12  Zhenqiang Chen  <zhenqiang.chen@arm.com>

* gcc.dg/pr64007.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221894 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFix testcase backported from trunk
mkuvyrkov [Thu, 2 Apr 2015 08:58:11 +0000 (08:58 +0000)]
Fix testcase backported from trunk

* gcc/testsuite/gcc.dg/pr64935-1.c: Ignore warnings that can't be
disabled with not-yet-existing -Wno-shift-count-overflow.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221832 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/
yroux [Thu, 2 Apr 2015 07:21:06 +0000 (07:21 +0000)]
gcc/
2015-04-02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218958, r218960, r218961.
2014-12-19  Alan Lawrence  <alan.lawrence@arm.com>

* config/aarch64/aarch64.c (<LOGICAL:optab>_one_cmpl<mode>3):
Reparameterize to...
(<NLOGICAL:optab>_one_cmpl<mode>3): with extra SIMD-register variant.
(xor_one_cmpl<mode>3): New define_insn_and_split.

* config/aarch64/iterators.md (NLOGICAL): New define_code_iterator.

2014-12-19  Alan Lawrence  <alan.lawrence@arm.com>

* config/aarch64/aarch64.md (<optab><mode>3, one_cmpl<mode>2):
Add SIMD-register variant.
* config/aarch64/iterators.md (Vbtype): Add value for SI.

2014-12-19  Alan Lawrence  <alan.lawrence@arm.com>

* config/aarch64/aarch64.md (subdi3, adddi3_aarch64): Don't penalize
SIMD reg variant.

gcc/testsuite/
2015-04-02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218961.
2014-12-19  Alan Lawrence  <alan.lawrence@arm.com>

* gcc.target/aarch64/eon_1.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221829 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-02 Yvan Roux <yvan.roux@linaro.org>
yroux [Thu, 2 Apr 2015 07:15:01 +0000 (07:15 +0000)]
2015-04-02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218897.
2014-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

* doc/invoke.texi (ARM options): Remove mention of Advanced RISC
Machines.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221827 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-02 Yvan Roux <yvan.roux@linaro.org>
yroux [Thu, 2 Apr 2015 07:04:28 +0000 (07:04 +0000)]
2015-04-02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218895.
2014-12-19  Xingxing Pan <xxingpan@marvell.com>

* config/arm/cortex-a9-neon.md (cortex_a9_neon_vmov): Change
reservation to cortex_a9_neon_dp.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221826 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoAdd missing testcase in previous commit.
yroux [Thu, 2 Apr 2015 07:00:01 +0000 (07:00 +0000)]
Add missing testcase in previous commit.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221825 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/
yroux [Thu, 2 Apr 2015 06:58:52 +0000 (06:58 +0000)]
gcc/
2015-04-02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218530.
2014-12-09  Alan Lawrence  <alan.lawrence@arm.com>

* config/aarch64/aarch64.md (absdi2): Remove scratch operand by
earlyclobbering result operand.

* config/aarch64/aarch64-builtins.c (aarch64_types_unop_qualifiers):
Remove final qualifier_internal.
(aarch64_fold_builtin): Stop folding abs builtins, except on floats.

gcc/testsuite/
2015-04-02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218530.
2014-12-09  Alan Lawrence  <alan.lawrence@arm.com>

* gcc.target/aarch64/vabs_intrinsic_2.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221824 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04.02 Yvan Roux <yvan.roux@linaro.org>
yroux [Thu, 2 Apr 2015 06:55:26 +0000 (06:55 +0000)]
2015-04.02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218526.
2014-12-09  Wilco Dijkstra  <wilco.dijkstra@arm.com>

* gcc/config/aarch64/aarch64-protos.h (tune-params): Add reasociation
tuning parameters.
* gcc/config/aarch64/aarch64.c (TARGET_SCHED_REASSOCIATION_WIDTH):
Define.
(aarch64_reassociation_width): New function.
(generic_tunings): Add reassociation tuning parameters.
(cortexa53_tunings): Likewise.
(cortexa57_tunings): Likewise.
(thunderx_tunings): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221823 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04.02 Yvan Roux <yvan.roux@linaro.org>
yroux [Thu, 2 Apr 2015 06:52:53 +0000 (06:52 +0000)]
2015-04.02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218866.
2014-12-18  Wilco Dijkstra  <wilco.dijkstra@arm.com>

* gcc/config/aarch64/aarch64.c (TARGET_MIN_DIVISIONS_FOR_RECIP_MUL):
Define.
(aarch64_min_divisions_for_recip_mul): New function.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221822 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/
yroux [Thu, 2 Apr 2015 06:50:24 +0000 (06:50 +0000)]
gcc/
2015-04.02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218867, r218868.
2014-12-18  Alan Lawrence  <alan.lawrence@arm.com>

* config/aarch64/aarch64-simd.md (aarch64_lshr_simddi): Handle shift
by 64 by moving const0_rtx.
(aarch64_ushr_simddi): Delete.

* config/aarch64/aarch64.md (enum unspec): Delete UNSPEC_USHR64.

2014-12-18  Alan Lawrence  <alan.lawrence@arm.com>

* config/aarch64/aarch64.md (enum "unspec"): Remove UNSPEC_SSHR64.

* config/aarch64/aarch64-simd.md (aarch64_ashr_simddi): Change shift
amount to 63 if was 64.
(aarch64_sshr_simddi): Remove.

gcc/testsuite/
2015-04-02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218868.
2014-12-18  Alan Lawrence  <alan.lawrence@arm.com>

* gcc.target/aarch64/ushr64_1.c: Remove scan-assembler "ushr...64".

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221821 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agogcc/
yroux [Thu, 2 Apr 2015 06:45:24 +0000 (06:45 +0000)]
gcc/
2015-04.02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218855.
2014-12-18  Bin Cheng  <bin.cheng@arm.com>

PR tree-optimization/62178
* tree-ssa-loop-ivopts.c (cheaper_cost_with_cand): New function.
(iv_ca_replace): New function.
(try_improve_iv_set): New parameter try_replace_p.
Break local optimal fixed-point by calling iv_ca_replace.
(find_optimal_iv_set_1): Pass new argument to try_improve_iv_set.

gcc/testsuite/
2015-04:02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218855.
2014-12-18  Bin Cheng  <bin.cheng@arm.com>

PR tree-optimization/62178
* gcc.target/aarch64/pr62178.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221820 138bc75d-0d04-0410-961f-82ee72b054a4

9 years ago2015-04-02 Yvan Roux <yvan.roux@linaro.org>
yroux [Thu, 2 Apr 2015 06:39:59 +0000 (06:39 +0000)]
2015-04-02  Yvan Roux  <yvan.roux@linaro.org>

Backport from trunk r218829.
2014-12-17  James Greenhalgh  <james.greenhalgh@arm.com>

* config/aarch64/aarch64.md (generic_sched): Delete it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221819 138bc75d-0d04-0410-961f-82ee72b054a4

9 years agoFix ChangeLog entries.
clyon [Mon, 30 Mar 2015 21:02:47 +0000 (21:02 +0000)]
Fix ChangeLog entries.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@221779 138bc75d-0d04-0410-961f-82ee72b054a4