From 5b794eb00418e7becbe020d4d5eb23ba3a04de29 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 24 Feb 2015 10:12:36 +0100 Subject: [PATCH] 5.0.0-0.16 --- .gitignore | 1 + gcc.spec | 33 ++--- gcc5-arm-fnsect.patch | 25 ++++ gcc5-pr32219-revert.patch | 269 -------------------------------------- gcc5-pr65074-test.patch | 27 ---- gcc5-pr65087.patch | 41 ------ sources | 2 +- 7 files changed, 45 insertions(+), 353 deletions(-) create mode 100644 gcc5-arm-fnsect.patch delete mode 100644 gcc5-pr32219-revert.patch delete mode 100644 gcc5-pr65074-test.patch delete mode 100644 gcc5-pr65087.patch diff --git a/.gitignore b/.gitignore index 14dd314..3110f6a 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ /gcc-5.0.0-20150214.tar.bz2 /gcc-5.0.0-20150216.tar.bz2 /gcc-5.0.0-20150217.tar.bz2 +/gcc-5.0.0-20150224.tar.bz2 diff --git a/gcc.spec b/gcc.spec index 39f2d93..159612f 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,9 +1,9 @@ -%global DATE 20150217 -%global SVNREV 220752 +%global DATE 20150224 +%global SVNREV 220934 %global gcc_version 5.0.0 # 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.15 +%global gcc_release 0.16 %global _unpackaged_files_terminate_build 0 %global _performance_build 1 %global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64 @@ -79,7 +79,7 @@ Summary: Various compilers (C, C++, Objective-C, Java, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.1 +Release: %{gcc_release}%{?dist} # libgcc, libgfortran, libgomp, libstdc++ and crtstuff have # GCC Runtime Exception. License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD @@ -198,9 +198,7 @@ Patch11: gcc5-no-add-needed.patch Patch12: gcc5-libgo-p224.patch Patch13: gcc5-aarch64-async-unw-tables.patch Patch14: gcc5-libsanitize-aarch64-va42.patch -Patch15: gcc5-pr32219-revert.patch -Patch16: gcc5-pr65074-test.patch -Patch17: gcc5-pr65087.patch +Patch15: gcc5-arm-fnsect.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -750,11 +748,7 @@ package or when debugging this package. rm -f libgo/go/crypto/elliptic/p224{,_test}.go %patch13 -p0 -b .aarch64-async-unw-tables~ %patch14 -p0 -b .libsanitize-aarch64-va42~ -%patch15 -p0 -b .pr32219-revert~ -%patch16 -p0 -b .pr65074-test~ -rm -f gcc/testsuite/gcc.target/i386/pr32219-*.c -rm -f gcc/testsuite/gcc.dg/visibility-2{2,3}.c -%patch17 -p0 -b .pr65087~ +%patch15 -p0 -b .arm-fnsect~ %if 0%{?_enable_debug_packages} mkdir dwz-wrapper @@ -2940,9 +2934,18 @@ fi %doc rpm.doc/changelogs/libcc1/ChangeLog* %changelog -* Sat Feb 21 2015 Till Maas - 5.0.0-0.15.1 -- Rebuilt for Fedora 23 Change - https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code +* Tue Feb 24 2015 Jakub Jelinek 5.0.0-0.16 +- update from the trunk + - PRs ada/65100, ada/65156, bootstrap/63888, debug/58123, fortran/61960, + fortran/63427, fortran/64980, gcov-profile/64634, ipa/65087, + libstdc++/58357, libstdc++/64695, libstdc++/65085, lto/65012, + middle-end/65074, sanitizer/65081, target/63892, target/64172, + target/64452, target/64793, target/65064, target/65109, target/65153, + target/65163, target/65172, target/65181, testsuite/64158, + testsuite/65093, testsuite/65107, testsuite/65116, testsuite/65126, + tree-optimization/62217, tree-optimization/65063, + tree-optimization/65136, tree-optimization/65170 +- fix arm_function_in_section_p * Tue Feb 17 2015 Jakub Jelinek 5.0.0-0.15 - update from the trunk diff --git a/gcc5-arm-fnsect.patch b/gcc5-arm-fnsect.patch new file mode 100644 index 0000000..33d8984 --- /dev/null +++ b/gcc5-arm-fnsect.patch @@ -0,0 +1,25 @@ +2015-02-19 Richard Henderson + + * config/arm/arm.c (arm_function_in_section_p): Delete bogus + TREE_STATIC check, use decl_binds_to_current_def_p instead of + targetm.binds_local_p. + +--- gcc/config/arm/arm.c ++++ gcc/config/arm/arm.c +@@ -6392,14 +6392,8 @@ arm_set_default_type_attributes (tree type) + static bool + arm_function_in_section_p (tree decl, section *section) + { +- /* We can only be certain about functions defined in the same +- compilation unit. */ +- if (!TREE_STATIC (decl)) +- return false; +- +- /* Make sure that SYMBOL always binds to the definition in this +- compilation unit. */ +- if (!targetm.binds_local_p (decl)) ++ /* We can only be certain about the prevailing symbol definition. */ ++ if (!decl_binds_to_current_def_p (decl)) + return false; + + /* If DECL_SECTION_NAME is set, assume it is trustworthy. */ diff --git a/gcc5-pr32219-revert.patch b/gcc5-pr32219-revert.patch deleted file mode 100644 index 8cbae7b..0000000 --- a/gcc5-pr32219-revert.patch +++ /dev/null @@ -1,269 +0,0 @@ -Revert: -2015-02-12 H.J. Lu - Richard Henderson - - PR rtl/32219 - * cgraphunit.c (cgraph_node::finalize_function): Set definition - before notice_global_symbol. - (varpool_node::finalize_decl): Likewise. - * varasm.c (default_binds_local_p_2): Rename from - default_binds_local_p_1, add weak_dominate argument. Use direct - returns instead of assigning to local variable. Unify varpool and - cgraph paths via symtab_node. Reject undef weak variables before - testing visibility. Reorder tests for simplicity. - (default_binds_local_p): Use default_binds_local_p_2. - (default_binds_local_p_1): Likewise. - (decl_binds_to_current_def_p): Unify varpool and cgraph paths - via symtab_node. - (default_elf_asm_output_external): Emit visibility when specified. - ---- gcc/cgraphunit.c (revision 220674) -+++ gcc/cgraphunit.c (revision 220673) -@@ -442,10 +442,8 @@ cgraph_node::finalize_function (tree dec - node->local.redefined_extern_inline = true; - } - -- /* Set definition first before calling notice_global_symbol so that -- it is available to notice_global_symbol. */ -- node->definition = true; - notice_global_symbol (decl); -+ node->definition = true; - node->lowered = DECL_STRUCT_FUNCTION (decl)->cfg != NULL; - - /* With -fkeep-inline-functions we are keeping all inline functions except -@@ -805,10 +803,8 @@ varpool_node::finalize_decl (tree decl) - - if (node->definition) - return; -- /* Set definition first before calling notice_global_symbol so that -- it is available to notice_global_symbol. */ -- node->definition = true; - notice_global_symbol (decl); -+ node->definition = true; - if (TREE_THIS_VOLATILE (decl) || DECL_PRESERVE_P (decl) - /* Traditionally we do not eliminate static variables when not - optimizing and when not doing toplevel reoder. */ ---- gcc/varasm.c (revision 220674) -+++ gcc/varasm.c (revision 220673) -@@ -6802,97 +6802,97 @@ resolution_local_p (enum ld_plugin_symbo - || resolution == LDPR_RESOLVED_EXEC); - } - --static bool --default_binds_local_p_2 (const_tree exp, bool shlib, bool weak_dominate) -+/* Assume ELF-ish defaults, since that's pretty much the most liberal -+ wrt cross-module name binding. */ -+ -+bool -+default_binds_local_p (const_tree exp) - { -+ return default_binds_local_p_1 (exp, flag_shlib); -+} -+ -+bool -+default_binds_local_p_1 (const_tree exp, int shlib) -+{ -+ bool local_p; -+ bool resolved_locally = false; -+ bool resolved_to_local_def = false; -+ -+ /* With resolution file in hands, take look into resolutions. -+ We can't just return true for resolved_locally symbols, -+ because dynamic linking might overwrite symbols -+ in shared libraries. */ -+ if (TREE_CODE (exp) == VAR_DECL && TREE_PUBLIC (exp) -+ && (TREE_STATIC (exp) || DECL_EXTERNAL (exp))) -+ { -+ varpool_node *vnode = varpool_node::get (exp); -+ if (vnode && (resolution_local_p (vnode->resolution) || vnode->in_other_partition)) -+ resolved_locally = true; -+ if (vnode -+ && resolution_to_local_definition_p (vnode->resolution)) -+ resolved_to_local_def = true; -+ } -+ else if (TREE_CODE (exp) == FUNCTION_DECL && TREE_PUBLIC (exp)) -+ { -+ struct cgraph_node *node = cgraph_node::get (exp); -+ if (node -+ && (resolution_local_p (node->resolution) || node->in_other_partition)) -+ resolved_locally = true; -+ if (node -+ && resolution_to_local_definition_p (node->resolution)) -+ resolved_to_local_def = true; -+ } -+ - /* A non-decl is an entry in the constant pool. */ - if (!DECL_P (exp)) -- return true; -- -+ local_p = true; - /* Weakrefs may not bind locally, even though the weakref itself is always - static and therefore local. Similarly, the resolver for ifunc functions - might resolve to a non-local function. - FIXME: We can resolve the weakref case more curefuly by looking at the - weakref alias. */ -- if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp)) -+ else if (lookup_attribute ("weakref", DECL_ATTRIBUTES (exp)) - || (TREE_CODE (exp) == FUNCTION_DECL - && lookup_attribute ("ifunc", DECL_ATTRIBUTES (exp)))) -- return false; -- -+ local_p = false; - /* Static variables are always local. */ -- if (! TREE_PUBLIC (exp)) -- return true; -- -- /* With resolution file in hand, take look into resolutions. -- We can't just return true for resolved_locally symbols, -- because dynamic linking might overwrite symbols -- in shared libraries. */ -- bool resolved_locally = false; -- bool defined_locally = false; -- if (symtab_node *node = symtab_node::get (exp)) -- { -- if ((node->definition && !DECL_EXTERNAL (node->decl)) -- || node->in_other_partition) -- { -- defined_locally = true; -- resolved_locally = (weak_dominate && !shlib); -- } -- if (resolution_to_local_definition_p (node->resolution)) -- defined_locally = resolved_locally = true; -- else if (resolution_local_p (node->resolution)) -- resolved_locally = true; -- } -- -- /* Undefined weak symbols are never defined locally. */ -- if (DECL_WEAK (exp) && !defined_locally) -- return false; -- -- /* A symbol is local if the user has said explicitly that it will be, -- or if we have a definition for the symbol. We cannot infer visibility -- for undefined symbols. */ -- if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT -- && (DECL_VISIBILITY_SPECIFIED (exp) || defined_locally)) -- return true; -- -+ else if (! TREE_PUBLIC (exp)) -+ local_p = true; -+ /* A variable is local if the user has said explicitly that it will -+ be. */ -+ else if ((DECL_VISIBILITY_SPECIFIED (exp) -+ || resolved_to_local_def) -+ && DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) -+ local_p = true; -+ /* Variables defined outside this object might not be local. */ -+ else if (DECL_EXTERNAL (exp) && !resolved_locally) -+ local_p = false; -+ /* If defined in this object and visibility is not default, must be -+ local. */ -+ else if (DECL_VISIBILITY (exp) != VISIBILITY_DEFAULT) -+ local_p = true; -+ /* Default visibility weak data can be overridden by a strong symbol -+ in another module and so are not local. */ -+ else if (DECL_WEAK (exp) -+ && !resolved_locally) -+ local_p = false; - /* If PIC, then assume that any global name can be overridden by - symbols resolved from other modules. */ -- if (shlib) -- return false; -- -- /* Variables defined outside this object might not be local. */ -- if (DECL_EXTERNAL (exp) && !resolved_locally) -- return false; -- -- /* Non-dominant weak symbols are not defined locally. */ -- if (DECL_WEAK (exp) && !resolved_locally) -- return false; -- -+ else if (shlib) -+ local_p = false; - /* Uninitialized COMMON variable may be unified with symbols - resolved from other modules. */ -- if (DECL_COMMON (exp) -- && !resolved_locally -- && (DECL_INITIAL (exp) == NULL -- || (!in_lto_p && DECL_INITIAL (exp) == error_mark_node))) -- return false; -- -+ else if (DECL_COMMON (exp) -+ && !resolved_locally -+ && (DECL_INITIAL (exp) == NULL -+ || (!in_lto_p && DECL_INITIAL (exp) == error_mark_node))) -+ local_p = false; - /* Otherwise we're left with initialized (or non-common) global data - which is of necessity defined locally. */ -- return true; --} -- --/* Assume ELF-ish defaults, since that's pretty much the most liberal -- wrt cross-module name binding. */ -- --bool --default_binds_local_p (const_tree exp) --{ -- return default_binds_local_p_2 (exp, flag_shlib != 0, true); --} -+ else -+ local_p = true; - --bool --default_binds_local_p_1 (const_tree exp, int shlib) --{ -- return default_binds_local_p_2 (exp, shlib != 0, false); -+ return local_p; - } - - /* Return true when references to DECL must bind to current definition in -@@ -6913,14 +6914,22 @@ decl_binds_to_current_def_p (const_tree - return false; - if (!TREE_PUBLIC (decl)) - return true; -- - /* When resolution is available, just use it. */ -- if (symtab_node *node = symtab_node::get (decl)) -+ if (TREE_CODE (decl) == VAR_DECL -+ && (TREE_STATIC (decl) || DECL_EXTERNAL (decl))) - { -- if (node->resolution != LDPR_UNKNOWN) -+ varpool_node *vnode = varpool_node::get (decl); -+ if (vnode -+ && vnode->resolution != LDPR_UNKNOWN) -+ return resolution_to_local_definition_p (vnode->resolution); -+ } -+ else if (TREE_CODE (decl) == FUNCTION_DECL) -+ { -+ struct cgraph_node *node = cgraph_node::get (decl); -+ if (node -+ && node->resolution != LDPR_UNKNOWN) - return resolution_to_local_definition_p (node->resolution); - } -- - /* Otherwise we have to assume the worst for DECL_WEAK (hidden weaks - binds locally but still can be overwritten), DECL_COMMON (can be merged - with a non-common definition somewhere in the same module) or -@@ -7440,10 +7449,9 @@ default_elf_asm_output_external (FILE *f - { - /* We output the name if and only if TREE_SYMBOL_REFERENCED is - set in order to avoid putting out names that are never really -- used. Always output visibility specified in the source. */ -+ used. */ - if (TREE_SYMBOL_REFERENCED (DECL_ASSEMBLER_NAME (decl)) -- && (DECL_VISIBILITY_SPECIFIED (decl) -- || targetm.binds_local_p (decl))) -+ && targetm.binds_local_p (decl)) - maybe_assemble_visibility (decl); - } - ---- gcc/testsuite/gcc.target/i386/pr64317.c (revision 220674) -+++ gcc/testsuite/gcc.target/i386/pr64317.c (revision 220673) -@@ -1,7 +1,7 @@ - /* { dg-do compile { target { *-*-linux* && ia32 } } } */ - /* { dg-options "-O2 -fpie" } */ - /* { dg-final { scan-assembler "addl\[ \\t\]+\[$\]_GLOBAL_OFFSET_TABLE_, %ebx" } } */ --/* { dg-final { scan-assembler "movl\[ \\t\]+c@GOTOFF\[(\]%ebx\[)\]" } } */ -+/* { dg-final { scan-assembler "movl\[ \\t\]+c@GOT\[(\]%ebx\[)\]" } } */ - /* { dg-final { scan-assembler-not "movl\[ \\t\]+\[0-9]+\[(\]%esp\[)\], %ebx" } } */ - long c; - diff --git a/gcc5-pr65074-test.patch b/gcc5-pr65074-test.patch deleted file mode 100644 index ace9779..0000000 --- a/gcc5-pr65074-test.patch +++ /dev/null @@ -1,27 +0,0 @@ -2015-02-16 Jakub Jelinek - - PR middle-end/65074 - * g++.dg/opt/pr65074.C: New test. - ---- gcc/testsuite/g++.dg/opt/pr65074.C.jj 2015-02-16 09:53:52.171683872 +0100 -+++ gcc/testsuite/g++.dg/opt/pr65074.C 2015-02-16 09:53:24.000000000 +0100 -@@ -0,0 +1,19 @@ -+// PR middle-end/65074 -+// { dg-do link { target pie } } -+// { dg-options "-pie -fpie -O2" } -+ -+#include -+ -+using namespace std; -+ -+__attribute__((noinline, noclone)) void -+foo (const char *fname) -+{ -+ ifstream f (fname); -+} -+ -+int -+main () -+{ -+ foo ("foobar"); -+} diff --git a/gcc5-pr65087.patch b/gcc5-pr65087.patch deleted file mode 100644 index 49d3ede..0000000 --- a/gcc5-pr65087.patch +++ /dev/null @@ -1,41 +0,0 @@ -2015-02-17 Jakub Jelinek - - PR ipa/65087 - * cgraphclones.c (cgraph_node::create_virtual_clone): Only copy - section if !implicit_section. - (cgraph_node::create_version_clone_with_body): Likewise. - * trans-mem.c (ipa_tm_create_version): Likewise. - ---- gcc/cgraphclones.c.jj 2015-02-16 20:16:43.000000000 +0100 -+++ gcc/cgraphclones.c 2015-02-17 09:35:19.682184215 +0100 -@@ -617,7 +617,7 @@ cgraph_node::create_virtual_clone (vecclone.tree_map = tree_map; -- if (!DECL_ONE_ONLY (old_decl)) -+ if (!implicit_section) - new_node->set_section (get_section ()); - - /* Clones of global symbols or symbols with unique names are unique. */ -@@ -1011,7 +1011,8 @@ cgraph_node::create_version_clone_with_b - new_version_node->externally_visible = 0; - new_version_node->local.local = 1; - new_version_node->lowered = true; -- new_version_node->set_section (get_section ()); -+ if (!implicit_section) -+ new_version_node->set_section (get_section ()); - /* Clones of global symbols or symbols with unique names are unique. */ - if ((TREE_PUBLIC (old_decl) - && !DECL_EXTERNAL (old_decl) ---- gcc/trans-mem.c.jj 2015-02-16 20:16:43.000000000 +0100 -+++ gcc/trans-mem.c 2015-02-17 09:35:19.682184215 +0100 -@@ -4967,7 +4967,8 @@ ipa_tm_create_version (struct cgraph_nod - new_node->externally_visible = old_node->externally_visible; - new_node->lowered = true; - new_node->tm_clone = 1; -- new_node->set_section (old_node->get_section ()); -+ if (!old_node->implicit_section) -+ new_node->set_section (old_node->get_section ()); - get_cg_data (&old_node, true)->clone = new_node; - - if (old_node->get_availability () >= AVAIL_INTERPOSABLE) diff --git a/sources b/sources index 7fe5049..0ad0247 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -a9b3b45dd68912df007f5e7fd95bb106 gcc-5.0.0-20150217.tar.bz2 +d5755adb2e9c48a868281ec654eab080 gcc-5.0.0-20150224.tar.bz2