diff --git a/.gitignore b/.gitignore index a1ab839..1442363 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /gcc-10.1.1-20200507.tar.xz /gcc-10.1.1-20200618.tar.xz /gcc-10.2.1-20200723.tar.xz +/gcc-10.2.1-20200804.tar.xz diff --git a/gcc.spec b/gcc.spec index 9085b66..363ba81 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20200723 -%global gitrev 3fc88aa16f1bf661db4518d6d62869f081981981 +%global DATE 20200803 +%global gitrev 08d83635c2ab388f6139db6965e600b296ad85e6 %global gcc_version 10.2.1 %global gcc_major 10 # 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 1 +%global gcc_release 2 %global nvptx_tools_gitrev 5f6f343a302d620b0868edab376c00b15741e39e %global newlib_cygwin_gitrev 50e2a63b04bdd018484605fbb954fd1bd5147fa0 %global _unpackaged_files_terminate_build 0 @@ -115,7 +115,7 @@ Summary: Various compilers (C, C++, Objective-C, ...) Name: gcc Version: %{gcc_version} -Release: %{gcc_release}%{?dist}.2 +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 @@ -264,6 +264,8 @@ Patch8: gcc10-foffload-default.patch Patch9: gcc10-Wno-format-security.patch Patch10: gcc10-rh1574936.patch Patch11: gcc10-d-shared-libphobos.patch +Patch12: gcc10-pr96383.patch +Patch13: gcc10-pr96385.patch # On ARM EABI systems, we do want -gnueabi to be part of the # target triple. @@ -775,6 +777,8 @@ to NVidia PTX capable devices if available. %patch10 -p0 -b .rh1574936~ %endif %patch11 -p0 -b .d-shared-libphobos~ +%patch12 -p0 -b .pr96383~ +%patch13 -p0 -b .pr96385~ echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE @@ -814,7 +818,7 @@ export CONFIG_SITE=NONE CC=gcc CXX=g++ OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'` -OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-flto//g;s/-ffat-lto-objects//g'` +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-flto=auto//g;s/-flto//g;s/-ffat-lto-objects//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'` OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'` @@ -3010,12 +3014,18 @@ end %endif %changelog -* Sat Aug 01 2020 Fedora Release Engineering - 10.2.1-1.2 -- Second attempt - Rebuilt for - https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Mon Jul 27 2020 Fedora Release Engineering - 10.2.1-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild +* Tue Aug 3 2020 Jakub Jelinek 10.2.1-2 +- update from releases/gcc-10 branch + - PRs c++/95591, c++/95599, c++/95823, c++/95824, c++/95895, c/96377, + d/96140, fortran/89574, fortran/93567, fortran/93592, fortran/95585, + fortran/95612, fortran/95980, fortran/96018, fortran/96086, + fortran/96220, fortran/96319, lto/45375, middle-end/96335, + target/95435, target/96190, target/96236, target/96260, target/96402, + tree-optimization/96058 +- emit debug info for C/C++ external function declarations used in the TU + (PR debug/96383) +- discard SHN_UNDEF global symbols from LTO debuginfo (PR lto/96385) +- strip also -flto=auto from optflags * Thu Jul 23 2020 Jakub Jelinek 10.2.1-1 - update from releases/gcc-10 branch diff --git a/gcc10-pr96383.patch b/gcc10-pr96383.patch new file mode 100644 index 0000000..950a2f4 --- /dev/null +++ b/gcc10-pr96383.patch @@ -0,0 +1,236 @@ +2020-07-30 Richard Biener + + PR debug/96383 + * langhooks-def.h (lhd_finalize_early_debug): Declare. + (LANG_HOOKS_FINALIZE_EARLY_DEBUG): Define. + (LANG_HOOKS_INITIALIZER): Amend. + * langhooks.c: Include cgraph.h and debug.h. + (lhd_finalize_early_debug): Default implementation from + former code in finalize_compilation_unit. + * langhooks.h (lang_hooks::finalize_early_debug): Add. + * cgraphunit.c (symbol_table::finalize_compilation_unit): + Call the finalize_early_debug langhook. + +gcc/c-family/ + * c-common.h (c_common_finalize_early_debug): Declare. + * c-common.c: Include debug.h. + (c_common_finalize_early_debug): finalize_early_debug langhook + implementation generating debug for extern declarations. + +gcc/c/ + * c-objc-common.h (LANG_HOOKS_FINALIZE_EARLY_DEBUG): + Define to c_common_finalize_early_debug. + +gcc/cp/ + * cp-objcp-common.h (LANG_HOOKS_FINALIZE_EARLY_DEBUG): + Define to c_common_finalize_early_debug. + +gcc/testsuite/ + * gcc.dg/debug/dwarf2/pr96383-1.c: New testcase. + * gcc.dg/debug/dwarf2/pr96383-2.c: Likewise. + +libstdc++-v3/ + * testsuite/20_util/assume_aligned/3.cc: Use -g0. + +--- gcc/c-family/c-common.c ++++ gcc/c-family/c-common.c +@@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not see + #include "spellcheck.h" + #include "c-spellcheck.h" + #include "selftest.h" ++#include "debug.h" + + cpp_reader *parse_in; /* Declared in c-pragma.h. */ + +@@ -9086,4 +9087,20 @@ braced_lists_to_strings (tree type, tree ctor) + return braced_lists_to_strings (type, ctor, false); + } + ++ ++/* Emit debug for functions before finalizing early debug. */ ++ ++void ++c_common_finalize_early_debug (void) ++{ ++ /* Emit early debug for reachable functions, and by consequence, ++ locally scoped symbols. Also emit debug for extern declared ++ functions that are still reachable at this point. */ ++ struct cgraph_node *cnode; ++ FOR_EACH_FUNCTION (cnode) ++ if (!cnode->alias && !cnode->thunk.thunk_p ++ && (cnode->has_gimple_body_p () || !DECL_IS_BUILTIN (cnode->decl))) ++ (*debug_hooks->early_global_decl) (cnode->decl); ++} ++ + #include "gt-c-family-c-common.h" +--- gcc/c-family/c-common.h ++++ gcc/c-family/c-common.h +@@ -885,6 +885,8 @@ extern bool bool_promoted_to_int_p (tree); + extern tree fold_for_warn (tree); + extern tree c_common_get_narrower (tree, int *); + extern bool get_attribute_operand (tree, unsigned HOST_WIDE_INT *); ++extern void c_common_finalize_early_debug (void); ++ + + #define c_sizeof(LOC, T) c_sizeof_or_alignof_type (LOC, T, true, false, 1) + #define c_alignof(LOC, T) c_sizeof_or_alignof_type (LOC, T, false, false, 1) +--- gcc/c/c-objc-common.h ++++ gcc/c/c-objc-common.h +@@ -65,6 +65,8 @@ along with GCC; see the file COPYING3. If not see + c_simulate_builtin_function_decl + #undef LANG_HOOKS_EMITS_BEGIN_STMT + #define LANG_HOOKS_EMITS_BEGIN_STMT true ++#undef LANG_HOOKS_FINALIZE_EARLY_DEBUG ++#define LANG_HOOKS_FINALIZE_EARLY_DEBUG c_common_finalize_early_debug + + /* Attribute hooks. */ + #undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE +--- gcc/cgraphunit.c ++++ gcc/cgraphunit.c +@@ -2998,11 +2998,9 @@ symbol_table::finalize_compilation_unit (void) + + if (!seen_error ()) + { +- /* Emit early debug for reachable functions, and by consequence, +- locally scoped symbols. */ +- struct cgraph_node *cnode; +- FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (cnode) +- (*debug_hooks->early_global_decl) (cnode->decl); ++ /* Give the frontends the chance to emit early debug based on ++ what is still reachable in the TU. */ ++ (*lang_hooks.finalize_early_debug) (); + + /* Clean up anything that needs cleaning up after initial debug + generation. */ +--- gcc/cp/cp-objcp-common.h ++++ gcc/cp/cp-objcp-common.h +@@ -115,6 +115,8 @@ extern tree cxx_simulate_enum_decl (location_t, const char *, + #define LANG_HOOKS_BLOCK_MAY_FALLTHRU cxx_block_may_fallthru + #undef LANG_HOOKS_EMITS_BEGIN_STMT + #define LANG_HOOKS_EMITS_BEGIN_STMT true ++#undef LANG_HOOKS_FINALIZE_EARLY_DEBUG ++#define LANG_HOOKS_FINALIZE_EARLY_DEBUG c_common_finalize_early_debug + + /* Attribute hooks. */ + #undef LANG_HOOKS_COMMON_ATTRIBUTE_TABLE +--- gcc/langhooks-def.h ++++ gcc/langhooks-def.h +@@ -92,6 +92,7 @@ extern const char *lhd_get_substring_location (const substring_loc &, + location_t *out_loc); + extern int lhd_decl_dwarf_attribute (const_tree, int); + extern int lhd_type_dwarf_attribute (const_tree, int); ++extern void lhd_finalize_early_debug (void); + + #define LANG_HOOKS_NAME "GNU unknown" + #define LANG_HOOKS_IDENTIFIER_SIZE sizeof (struct lang_identifier) +@@ -139,6 +140,7 @@ extern int lhd_type_dwarf_attribute (const_tree, int); + #define LANG_HOOKS_EMITS_BEGIN_STMT false + #define LANG_HOOKS_RUN_LANG_SELFTESTS lhd_do_nothing + #define LANG_HOOKS_GET_SUBSTRING_LOCATION lhd_get_substring_location ++#define LANG_HOOKS_FINALIZE_EARLY_DEBUG lhd_finalize_early_debug + + /* Attribute hooks. */ + #define LANG_HOOKS_ATTRIBUTE_TABLE NULL +@@ -364,7 +366,8 @@ extern void lhd_end_section (void); + LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS, \ + LANG_HOOKS_EMITS_BEGIN_STMT, \ + LANG_HOOKS_RUN_LANG_SELFTESTS, \ +- LANG_HOOKS_GET_SUBSTRING_LOCATION \ ++ LANG_HOOKS_GET_SUBSTRING_LOCATION, \ ++ LANG_HOOKS_FINALIZE_EARLY_DEBUG \ + } + + #endif /* GCC_LANG_HOOKS_DEF_H */ +--- gcc/langhooks.c ++++ gcc/langhooks.c +@@ -36,6 +36,8 @@ along with GCC; see the file COPYING3. If not see + #include "output.h" + #include "timevar.h" + #include "stor-layout.h" ++#include "cgraph.h" ++#include "debug.h" + + /* Do nothing; in many cases the default hook. */ + +@@ -866,6 +868,18 @@ lhd_unit_size_without_reusable_padding (tree t) + return TYPE_SIZE_UNIT (t); + } + ++/* Default implementation for the finalize_early_debug hook. */ ++ ++void ++lhd_finalize_early_debug (void) ++{ ++ /* Emit early debug for reachable functions, and by consequence, ++ locally scoped symbols. */ ++ struct cgraph_node *cnode; ++ FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (cnode) ++ (*debug_hooks->early_global_decl) (cnode->decl); ++} ++ + /* Returns true if the current lang_hooks represents the GNU C frontend. */ + + bool +--- gcc/langhooks.h ++++ gcc/langhooks.h +@@ -580,6 +580,9 @@ struct lang_hooks + const char *(*get_substring_location) (const substring_loc &, + location_t *out_loc); + ++ /* Invoked before the early_finish debug hook is invoked. */ ++ void (*finalize_early_debug) (void); ++ + /* Whenever you add entries here, make sure you adjust langhooks-def.h + and langhooks.c accordingly. */ + }; +--- gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-1.c ++++ gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-1.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-g -gdwarf -dA" } */ ++ ++extern void foo (int); ++extern void unusedbar (int); ++ ++int main() ++{ ++ foo (1); ++} ++ ++/* We want subprogram DIEs for both foo and main and a DIE for ++ the formal parameter of foo. We do not want a DIE for ++ unusedbar. */ ++/* { dg-final { scan-assembler-times "DW_TAG_subprogram" 4 } } */ ++/* { dg-final { scan-assembler-times "DW_TAG_formal_parameter" 2 } } */ ++/* { dg-final { scan-assembler-not "unusedbar" } } */ +--- gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-2.c ++++ gcc/testsuite/gcc.dg/debug/dwarf2/pr96383-2.c +@@ -0,0 +1,17 @@ ++/* { dg-do compile } */ ++/* { dg-options "-g -O2 -gdwarf -dA" } */ ++ ++extern void foo (int); ++extern void unusedbar (int); ++ ++int main() ++{ ++ foo (1); ++} ++ ++/* We want subprogram DIEs for both foo and main and a DIE for ++ the formal parameter of foo. We do not want a DIE for ++ unusedbar. */ ++/* { dg-final { scan-assembler-times "DW_TAG_subprogram" 4 } } */ ++/* { dg-final { scan-assembler-times "DW_TAG_formal_parameter" 2 } } */ ++/* { dg-final { scan-assembler-not "unusedbar" } } */ +--- libstdc++-v3/testsuite/20_util/assume_aligned/3.cc ++++ libstdc++-v3/testsuite/20_util/assume_aligned/3.cc +@@ -15,7 +15,7 @@ + // with this library; see the file COPYING3. If not see + // . + +-// { dg-options "-std=gnu++2a -O2" } ++// { dg-options "-std=gnu++2a -O2 -g0" } + // { dg-do compile { target c++2a } } + // { dg-final { scan-assembler-not "undefined" } } + diff --git a/gcc10-pr96385.patch b/gcc10-pr96385.patch new file mode 100644 index 0000000..22fe68e --- /dev/null +++ b/gcc10-pr96385.patch @@ -0,0 +1,22 @@ +2020-08-03 Richard Biener + + PR lto/96385 +libiberty/ + * simple-object-elf.c + (simple_object_elf_copy_lto_debug_sections): Localize global + UNDEFs and reuse the prevailing name. + +--- libiberty/simple-object-elf.c ++++ libiberty/simple-object-elf.c +@@ -1467,6 +1467,11 @@ simple_object_elf_copy_lto_debug_sections (simple_object_read *sobj, + && st_shndx < shnum + && pfnret[st_shndx - 1] == -1) + discard = 1; ++ /* We also need to remove global UNDEFs which can ++ cause link fails later. */ ++ else if (st_shndx == SHN_UNDEF ++ && ELF_ST_BIND (*st_info) == STB_GLOBAL) ++ discard = 1; + + if (discard) + { diff --git a/sources b/sources index 0e888d0..44ce687 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-10.2.1-20200723.tar.xz) = e1719e4a18f43bb76acb91c0d768711e78d7e8c478b72e691911094e233570597997ed108ba7ed4fb136542993af935ea38ec462a1972689c9220d4cc0e2933f +SHA512 (gcc-10.2.1-20200804.tar.xz) = be849af9a5a8924c0ad957805a80859243f08d908f652b1290080ac6fd474d874be9745ecd209c9a069a65c44a3923841bec84f348f7352999cb3eac95b1c1cc SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7