From a15b5bd3a08805c8d4d1a4d785659ab92f9600e7 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 11 Feb 2017 10:56:13 +0100 Subject: [PATCH] 7.0.1-0.8 --- .gitignore | 1 + gcc.spec | 25 +++---- gcc7-pr79341.patch | 104 +++++++----------------------- gcc7-pr79388.patch | 76 ++++++++++++++++++++++ gcc7-s390x-libsanitizer-CVE.patch | 46 ------------- sources | 2 +- 6 files changed, 115 insertions(+), 139 deletions(-) create mode 100644 gcc7-pr79388.patch delete mode 100644 gcc7-s390x-libsanitizer-CVE.patch diff --git a/.gitignore b/.gitignore index ce2a86d..d0b1268 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /gcc-7.0.1-20170201.tar.bz2 /gcc-7.0.1-20170204.tar.bz2 /gcc-7.0.1-20170209.tar.bz2 +/gcc-7.0.1-20170211.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 975d2e7..09e0712 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20170209 -%global SVNREV 245310 +%global DATE 20170211 +%global SVNREV 245356 %global gcc_version 7.0.1 %global gcc_major 7 # Note, gcc_release must be integer, if you want to add suffixes to # %{release}, append them after %{gcc_release} on Release: line. -%global gcc_release 0.7 +%global gcc_release 0.8 %global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f %global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24 %global _unpackaged_files_terminate_build 0 @@ -234,7 +234,7 @@ Patch10: gcc7-foffload-default.patch Patch11: gcc7-pr79232.patch Patch12: gcc7-pr79288.patch Patch13: gcc7-pr79341.patch -Patch14: gcc7-s390x-libsanitizer-CVE.patch +Patch14: gcc7-pr79388.patch Patch1000: nvptx-tools-no-ptxas.patch Patch1001: nvptx-tools-build.patch @@ -825,7 +825,7 @@ package or when debugging this package. %patch11 -p0 -b .pr79232~ %patch12 -p0 -b .pr79288~ %patch13 -p0 -b .pr79341~ -%patch14 -p0 -b .s390x-libsanitizer-CVE~ +%patch14 -p0 -b .pr79388~ cd nvptx-tools-%{nvptx_tools_gitrev} %patch1000 -p1 -b .nvptx-tools-no-ptxas~ @@ -1758,18 +1758,14 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libatomic.so.1.* | sed 's, %if %{build_libasan} rm -f libasan.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.4.* | sed 's,^.*liba,liba,'`' )' > libasan.so -%ifnarch s390x echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.4.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so mv ../../../../lib/libasan_preinit.o 32/libasan_preinit.o %endif -%endif %if %{build_libubsan} rm -f libubsan.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libubsan.so.0.* | sed 's,^.*libu,libu,'`' )' > libubsan.so -%ifnarch s390x echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libubsan.so.0.* | sed 's,^.*libu,libu,'`' )' > 32/libubsan.so %endif -%endif %if %{build_libcilkrts} rm -f libcilkrts.so echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libcilkrts.so.5.* | sed 's,^.*libc,libc,'`' )' > libcilkrts.so @@ -2500,7 +2496,6 @@ fi %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.so %endif -%ifnarch s390x %if %{build_libasan} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.so @@ -2510,7 +2505,6 @@ fi %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.so %endif -%endif %if %{build_libcilkrts} %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libcilkrts.a %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libcilkrts.so @@ -3247,6 +3241,15 @@ fi %endif %changelog +* Sat Feb 11 2017 Jakub Jelinek 7.0.1-0.8 +- update from the trunk + - PRs c++/71285, c++/78897, c++/78908, c++/79143, c++/79184, c++/79316, + c++/79350, c++/79401, c++/79435, c++/79457, ipa/70795, + middle-end/79454, target/79295, tree-optimization/66612, + tree-optimization/79411 +- fix combiner get_last_value handling (PRs rtl-optimization/79388, + rtl-optimization/79450) + * Thu Feb 9 2017 Jakub Jelinek 7.0.1-0.7 - update from the trunk - PRs c++/70448, c++/71193, c++/79360, c++/79372, c++/79377, c++/79379, diff --git a/gcc7-pr79341.patch b/gcc7-pr79341.patch index 7a4f485..0fd726d 100644 --- a/gcc7-pr79341.patch +++ b/gcc7-pr79341.patch @@ -1,84 +1,26 @@ -2017-02-08 Jakub Jelinek +2017-02-10 Jakub Jelinek PR sanitizer/79341 - * sanitizer_common/sanitizer_common_interceptors.inc - (INIT_TLS_GET_ADDR): INTERCEPT_FUNCTION __tls_get_offset rather than - __tls_get_addr_internal. - (__tls_get_addr_internal): Call __tls_get_offset_wrapper with - REAL(__tls_get_offset) as another arugment instead of calling - REAL(__tls_get_addr_internal). - (__tls_get_offset): Call __tls_get_addr_hidden instead of - __interceptor___tls_get_addr_internal_protected. - (__tls_get_offset_wrapper): New function. + * c-c++-common/ubsan/float-cast-overflow-8.c (TEST): Make min and max + variables volatile. ---- libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc.jj 2017-02-07 11:08:15.000000000 -0500 -+++ libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc 2017-02-08 05:28:58.656850984 -0500 -@@ -4550,11 +4550,15 @@ void *__tls_get_addr_opt(void *arg); - // descriptor offset as an argument instead of a pointer. GOT address - // is passed in r12, so it's necessary to write it in assembly. This is - // the function used by the compiler. --#define INIT_TLS_GET_ADDR COMMON_INTERCEPT_FUNCTION(__tls_get_addr_internal) -+extern "C" uptr __tls_get_offset_wrapper (void *arg, uptr (*fn) (void *)); -+#define INIT_TLS_GET_ADDR COMMON_INTERCEPT_FUNCTION(__tls_get_offset) -+DEFINE_REAL(uptr, __tls_get_offset, void *arg) -+extern "C" uptr __tls_get_offset (void *arg); -+extern "C" uptr __interceptor___tls_get_offset (void *arg); - INTERCEPTOR(uptr, __tls_get_addr_internal, void *arg) { - void *ctx; - COMMON_INTERCEPTOR_ENTER(ctx, __tls_get_addr_internal, arg); -- uptr res = REAL(__tls_get_addr_internal)(arg); -+ uptr res = __tls_get_offset_wrapper(arg, REAL(__tls_get_offset)); - uptr tp = reinterpret_cast(__builtin_thread_pointer()); - void *ptr = reinterpret_cast(res + tp); - uptr tls_begin, tls_end; -@@ -4569,29 +4573,42 @@ INTERCEPTOR(uptr, __tls_get_addr_interna - // We need a protected symbol aliasing the above, so that we can jump - // directly to it from the assembly below. - extern "C" __attribute__((alias("__interceptor___tls_get_addr_internal"), -- visibility("protected"))) --uptr __interceptor___tls_get_addr_internal_protected(void *arg); -+ visibility("hidden"))) -+uptr __tls_get_addr_hidden(void *arg); - // Now carefully intercept __tls_get_offset. - asm( - ".text\n" -- ".global __tls_get_offset\n" -- "__tls_get_offset:\n" - // The __intercept_ version has to exist, so that gen_dynamic_list.py - // exports our symbol. -+ ".weak __tls_get_offset\n" -+ ".type __tls_get_offset, @function\n" -+ "__tls_get_offset:\n" - ".global __interceptor___tls_get_offset\n" -+ ".type __interceptor___tls_get_offset, @function\n" - "__interceptor___tls_get_offset:\n" - #ifdef __s390x__ - "la %r2, 0(%r2,%r12)\n" -- "jg __interceptor___tls_get_addr_internal_protected\n" -+ "jg __tls_get_addr_hidden\n" - #else - "basr %r3,0\n" - "0: la %r2,0(%r2,%r12)\n" - "l %r4,1f-0b(%r3)\n" - "b 0(%r4,%r3)\n" -- "1: .long __interceptor___tls_get_addr_internal_protected - 0b\n" -+ "1: .long __tls_get_addr_hidden - 0b\n" - #endif -- ".type __tls_get_offset, @function\n" -- ".size __tls_get_offset, .-__tls_get_offset\n" -+ ".size __interceptor___tls_get_offset, .-__interceptor___tls_get_offset\n" -+// Assembly wrapper to call REAL(__tls_get_offset)(arg) -+ ".type __tls_get_offset_wrapper, @function\n" -+ "__tls_get_offset_wrapper:\n" -+#ifdef __s390x__ -+ "sgr %r2,%r12\n" -+ "lgr %r1,%r3\n" -+#else -+ "sr %r2,%r12\n" -+ "lr %r1,%r3\n" -+#endif -+ "br %r1\n" -+ ".size __tls_get_offset_wrapper, .-__tls_get_offset_wrapper\n" - ); - #endif // SANITIZER_S390 - #else +--- gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-8.c.jj 2015-10-29 09:14:30.000000000 +0100 ++++ gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-8.c 2017-02-10 18:09:47.767251774 +0100 +@@ -8,7 +8,7 @@ + #define TEST(type1, type2) \ + if (type1##_MIN) \ + { \ +- type2 min = type1##_MIN; \ ++ volatile type2 min = type1##_MIN; \ + type2 add = -1.0; \ + while (1) \ + { \ +@@ -28,7 +28,7 @@ + volatile type1 tem3 = cvt_##type1##_##type2 (-1.0f); \ + } \ + { \ +- type2 max = type1##_MAX; \ ++ volatile type2 max = type1##_MAX; \ + type2 add = 1.0; \ + while (1) \ + { \ diff --git a/gcc7-pr79388.patch b/gcc7-pr79388.patch new file mode 100644 index 0000000..097e0eb --- /dev/null +++ b/gcc7-pr79388.patch @@ -0,0 +1,76 @@ +2017-02-10 Jakub Jelinek + + PR rtl-optimization/79388 + PR rtl-optimization/79450 + * combine.c (distribute_notes): When removing TEM_INSN for which + corresponding dest has last value recorded, invalidate that last + value. + + * gcc.c-torture/execute/pr79388.c: New test. + * gcc.c-torture/execute/pr79450.c: New test. + +--- gcc/combine.c.jj 2017-01-30 09:31:48.000000000 +0100 ++++ gcc/combine.c 2017-02-10 17:05:57.500482518 +0100 +@@ -14288,6 +14288,11 @@ distribute_notes (rtx notes, rtx_insn *f + NULL_RTX, NULL_RTX, NULL_RTX); + distribute_links (LOG_LINKS (tem_insn)); + ++ unsigned int regno = REGNO (XEXP (note, 0)); ++ reg_stat_type *rsp = ®_stat[regno]; ++ if (rsp->last_set == tem_insn) ++ record_value_for_reg (XEXP (note, 0), NULL, NULL_RTX); ++ + SET_INSN_DELETED (tem_insn); + if (tem_insn == i2) + i2 = NULL; +--- gcc/testsuite/gcc.c-torture/execute/pr79388.c.jj 2017-02-10 17:03:01.993814529 +0100 ++++ gcc/testsuite/gcc.c-torture/execute/pr79388.c 2017-02-10 17:02:50.000000000 +0100 +@@ -0,0 +1,23 @@ ++/* PR rtl-optimization/79388 */ ++/* { dg-additional-options "-fno-tree-coalesce-vars" } */ ++ ++unsigned int a, c; ++ ++__attribute__ ((noinline, noclone)) unsigned int ++foo (unsigned int p) ++{ ++ p |= 1; ++ p &= 0xfffe; ++ p %= 0xffff; ++ c = p; ++ return a + p; ++} ++ ++int ++main (void) ++{ ++ int x = foo (6); ++ if (x != 6) ++ __builtin_abort(); ++ return 0; ++} +--- gcc/testsuite/gcc.c-torture/execute/pr79450.c.jj 2017-02-10 17:03:45.698233423 +0100 ++++ gcc/testsuite/gcc.c-torture/execute/pr79450.c 2017-02-10 17:03:39.000000000 +0100 +@@ -0,0 +1,22 @@ ++/* PR rtl-optimization/79450 */ ++ ++unsigned int ++foo (unsigned char x, unsigned long long y) ++{ ++ do ++ { ++ x &= !y; ++ x %= 24; ++ } ++ while (x < y); ++ return x + y; ++} ++ ++int ++main (void) ++{ ++ unsigned int x = foo (1, 0); ++ if (x != 1) ++ __builtin_abort (); ++ return 0; ++} diff --git a/gcc7-s390x-libsanitizer-CVE.patch b/gcc7-s390x-libsanitizer-CVE.patch deleted file mode 100644 index bae9f9b..0000000 --- a/gcc7-s390x-libsanitizer-CVE.patch +++ /dev/null @@ -1,46 +0,0 @@ -2017-02-08 Jakub Jelinek - - PR sanitizer/79341 - * sanitizer_common/sanitizer_linux_s390.cc (FixedCVE_2016_2143): - Whiltelist fixed RHEL6 and RHEL7 kernels. - ---- libsanitizer/sanitizer_common/sanitizer_linux_s390.cc 2016-11-09 15:22:41.917353799 +0100 -+++ libsanitizer/sanitizer_common/sanitizer_linux_s390.cc 2017-02-08 15:36:44.335857387 +0100 -@@ -134,6 +134,18 @@ static bool FixedCVE_2016_2143() { - if (ptr[0] == '.') - patch = internal_simple_strtoll(ptr+1, &ptr, 10); - if (major < 3) { -+ if (major == 2 && minor == 6 && patch == 32 && ptr[0] == '-' -+ && internal_strstr(ptr, ".el6")) { -+ // Check RHEL6 -+ int r1 = internal_simple_strtoll(ptr+1, &ptr, 10); -+ if (r1 >= 657) // 2.6.32-657.el6 or later -+ return true; -+ if (r1 == 642 && ptr[0] == '.') { -+ int r2 = internal_simple_strtoll(ptr+1, &ptr, 10); -+ if (r2 >= 9) // 2.6.32-642.9.1.el6 or later -+ return true; -+ } -+ } - // <3.0 is bad. - return false; - } else if (major == 3) { -@@ -143,6 +155,18 @@ static bool FixedCVE_2016_2143() { - // 3.12.58+ is OK. - if (minor == 12 && patch >= 58) - return true; -+ if (minor == 10 && patch == 0 && ptr[0] == '-' -+ && internal_strstr(ptr, ".el7")) { -+ // Check RHEL7 -+ int r1 = internal_simple_strtoll(ptr+1, &ptr, 10); -+ if (r1 >= 426) // 3.10.0-426.el7 or later -+ return true; -+ if (r1 == 327 && ptr[0] == '.') { -+ int r2 = internal_simple_strtoll(ptr+1, &ptr, 10); -+ if (r2 >= 27) // 3.10.0-327.27.1.el7 or later -+ return true; -+ } -+ } - // Otherwise, bad. - return false; - } else if (major == 4) { diff --git a/sources b/sources index 68def56..043ea9e 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-7.0.1-20170209.tar.bz2) = 44841b8d87a8d34ec9bd944858a34a4a51f70290b76adabd01bddcf559f7f37dc187adb7d1b8e60d22bc08c363c2a048b8e84c61c4a6e51c022f654415c11940 +SHA512 (gcc-7.0.1-20170211.tar.bz2) = bcc672ca80bb0c6e8e396bcf2f3f7fb22d3a8688317181c193c9085bcd0379b945cc25d8d44b0eded94661b50079dbce4c26ff947ae51b42b7509eb9c384ec60 SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.bz2) = 38f97c9297ad108568352a4d28277455a3c01fd8b7864e798037e5006b6f757022e874bbf3f165775fe3b873781bc108137bbeb42dd5ed3c7d3e6747746fa918 SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.bz2) = 95b577a06a93bb044dbc8033e550cb36bcf2ab2687da030a7318cdc90e7467ed49665e247dcafb5ff4a7e92cdc264291d19728bd17fab902fb64b22491269330