commit 8cbf89f009cd16086656c916afd0d633260b31e9 Author: Toshaan Bharvani Date: Fri Jun 3 09:42:56 2022 +0200 initial package creation Signed-off-by: Toshaan Bharvani diff --git a/SOURCES/cross-gcc-config.patch b/SOURCES/cross-gcc-config.patch new file mode 100644 index 0000000..99859b7 --- /dev/null +++ b/SOURCES/cross-gcc-config.patch @@ -0,0 +1,44 @@ +diff -Nrup libiberty/acinclude.m4 libiberty/aclocal.m4 +--- libiberty/acinclude.m4.orig 2021-07-24 20:41:34.037240447 +0100 ++++ libiberty/acinclude.m4 2021-07-24 20:42:08.993997401 +0100 +@@ -157,7 +157,7 @@ + fi + + AC_CACHE_CHECK(stack direction for C alloca, ac_cv_c_stack_direction, +-[AC_TRY_RUN([find_stack_direction () ++[AC_TRY_RUN([__attribute__ ((noclone,noinline)) find_stack_direction () + { + static char *addr = 0; + auto char dummy; +diff --git config/intdiv0.m4 b//config/intdiv0.m4 +index 55dddcf1..ba906efc 100644 +--- config/intdiv0.m4 ++++ config/intdiv0.m4 +@@ -31,10 +31,10 @@ sigfpe_handler (sig) int sig; + exit (sig != SIGFPE); + } + +-int x = 1; +-int y = 0; +-int z; +-int nan; ++volatile int x = 1; ++volatile int y = 0; ++volatile int z; ++volatile int nan; + + int main () + { +diff --git libiberty/configure.ac libiberty/configure.ac +index f1ce7601..fc20d228 100644 +--- libiberty/configure.ac ++++ libiberty/configure.ac +@@ -661,7 +661,7 @@ if test -z "${setobjs}"; then + for v in $vars; do + AC_MSG_CHECKING([for $v]) + AC_CACHE_VAL(libiberty_cv_var_$v, +- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[int *p;]],[[extern int $v []; p = $v;]])], ++ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[__attribute__ ((used)) int *p;]],[[extern int $v []; p = $v;]])], + [eval "libiberty_cv_var_$v=yes"], + [eval "libiberty_cv_var_$v=no"])]) + if eval "test \"`echo '$libiberty_cv_var_'$v`\" = yes"; then diff --git a/SOURCES/cross-gcc-format-config.patch b/SOURCES/cross-gcc-format-config.patch new file mode 100644 index 0000000..609d4dd --- /dev/null +++ b/SOURCES/cross-gcc-format-config.patch @@ -0,0 +1,38 @@ +--- gcc/config/m68k/m68k.c.orig 2020-08-26 10:08:06.000000000 +0100 ++++ gcc/config/m68k/m68k.c 2020-09-03 11:17:54.722580771 +0100 +@@ -4979,7 +4979,7 @@ + else if (letter == '/') + asm_fprintf (file, "%R"); + else if (letter == '?') +- asm_fprintf (file, m68k_library_id_string); ++ asm_fprintf (file, "%s", m68k_library_id_string); + else if (letter == 'p') + { + output_addr_const (file, op); +--- gcc/config/s390/s390.c.orig 2020-08-26 10:08:06.000000000 +0100 ++++ gcc/config/s390/s390.c 2020-09-03 11:17:54.731580857 +0100 +@@ -7862,11 +7862,11 @@ + } + return; + case 'C': +- fprintf (file, s390_branch_condition_mnemonic (x, FALSE)); ++ fprintf (file, "%s", s390_branch_condition_mnemonic (x, FALSE)); + return; + + case 'D': +- fprintf (file, s390_branch_condition_mnemonic (x, TRUE)); ++ fprintf (file, "%s", s390_branch_condition_mnemonic (x, TRUE)); + return; + + case 'E': +--- gcc/config/tilegx/tilegx.c.orig 2020-08-26 10:08:06.000000000 +0100 ++++ gcc/config/tilegx/tilegx.c 2020-09-03 11:17:54.735580895 +0100 +@@ -5349,7 +5349,7 @@ + gcc_unreachable (); + } + +- fprintf (file, reg); ++ fprintf (file, "%s", reg); + return; + } + diff --git a/SOURCES/cross-intl-filename.patch b/SOURCES/cross-intl-filename.patch new file mode 100644 index 0000000..3543d1e --- /dev/null +++ b/SOURCES/cross-intl-filename.patch @@ -0,0 +1,14 @@ +diff -uNr --exclude '*~' gcc-4.7.0-RC-20120302/gcc/intl.c gcc-4.7.0-RC-20120302-old/gcc/intl.c +--- gcc/intl.c 2010-12-01 17:29:12.000000000 +0000 ++++ gcc/intl.c 2012-03-15 14:49:19.709968148 +0000 +@@ -55,8 +55,8 @@ + setlocale (LC_ALL, ""); + #endif + +- (void) bindtextdomain ("gcc", LOCALEDIR); +- (void) textdomain ("gcc"); ++ (void) bindtextdomain ("cross-gcc", LOCALEDIR); ++ (void) textdomain ("cross-gcc"); + + /* Opening quotation mark. */ + open_quote = _("`"); diff --git a/SOURCES/gcc11-Wno-format-security.patch b/SOURCES/gcc11-Wno-format-security.patch new file mode 100644 index 0000000..974ea44 --- /dev/null +++ b/SOURCES/gcc11-Wno-format-security.patch @@ -0,0 +1,27 @@ +2017-02-25 Jakub Jelinek + + * configure.ac: When adding -Wno-format, also add -Wno-format-security. + * configure: Regenerated. + +--- gcc/configure.ac.jj 2017-02-13 12:20:53.000000000 +0100 ++++ gcc/configure.ac 2017-02-25 12:42:32.859175403 +0100 +@@ -480,7 +480,7 @@ AC_ARG_ENABLE(build-format-warnings, + AS_HELP_STRING([--disable-build-format-warnings],[don't use -Wformat while building GCC]), + [],[enable_build_format_warnings=yes]) + AS_IF([test $enable_build_format_warnings = no], +- [wf_opt=-Wno-format],[wf_opt=]) ++ [wf_opt="-Wno-format -Wno-format-security"],[wf_opt=]) + ACX_PROG_CXX_WARNING_OPTS( + m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ], + [-Wcast-qual -Wno-error=format-diag $wf_opt])), +--- gcc/configure.jj 2017-02-13 12:20:52.000000000 +0100 ++++ gcc/configure 2017-02-25 12:42:50.041946391 +0100 +@@ -6647,7 +6647,7 @@ else + fi + + if test $enable_build_format_warnings = no; then : +- wf_opt=-Wno-format ++ wf_opt="-Wno-format -Wno-format-security" + else + wf_opt= + fi diff --git a/SOURCES/gcc11-d-shared-libphobos.patch b/SOURCES/gcc11-d-shared-libphobos.patch new file mode 100644 index 0000000..6384bbb --- /dev/null +++ b/SOURCES/gcc11-d-shared-libphobos.patch @@ -0,0 +1,20 @@ +2019-01-17 Jakub Jelinek + + * d-spec.cc (lang_specific_driver): Make -shared-libphobos + the default rather than -static-libphobos. + +--- gcc/d/d-spec.cc.jj 2019-01-01 12:37:49.502444257 +0100 ++++ gcc/d/d-spec.cc 2019-01-17 17:09:45.364949246 +0100 +@@ -408,9 +408,9 @@ lang_specific_driver (cl_decoded_option + /* Add `-lgphobos' if we haven't already done so. */ + if (phobos_library != PHOBOS_NOLINK) + { +- /* Default to static linking. */ +- if (phobos_library != PHOBOS_DYNAMIC) +- phobos_library = PHOBOS_STATIC; ++ /* Default to shared linking. */ ++ if (phobos_library != PHOBOS_STATIC) ++ phobos_library = PHOBOS_DYNAMIC; + + #ifdef HAVE_LD_STATIC_DYNAMIC + if (phobos_library == PHOBOS_STATIC && !static_link) diff --git a/SOURCES/gcc11-foffload-default.patch b/SOURCES/gcc11-foffload-default.patch new file mode 100644 index 0000000..d1aae64 --- /dev/null +++ b/SOURCES/gcc11-foffload-default.patch @@ -0,0 +1,116 @@ +2019-01-17 Jakub Jelinek + + * gcc.c (offload_targets_default): New variable. + (process_command): Set it if -foffload is defaulted. + (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1 + into environment if -foffload has been defaulted. + * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define. + (compile_offload_image): If OFFLOAD_TARGET_DEFAULT + is in the environment, don't fail if corresponding mkoffload + can't be found. + (compile_images_for_offload_targets): Likewise. Free and clear + offload_names if no valid offload is found. +libgomp/ + * target.c (gomp_load_plugin_for_device): If a plugin can't be + dlopened, assume it has no devices silently. + +--- gcc/gcc.c.jj 2017-01-17 10:28:40.000000000 +0100 ++++ gcc/gcc.c 2017-01-20 16:26:29.649962902 +0100 +@@ -319,6 +319,10 @@ static const char *spec_host_machine = D + + static char *offload_targets = NULL; + ++/* Set to true if -foffload has not been used and offload_targets ++ is set to the configured in default. */ ++static bool offload_targets_default; ++ + /* Nonzero if cross-compiling. + When -b is used, the value comes from the `specs' file. */ + +@@ -4828,7 +4832,10 @@ process_command (unsigned int decoded_op + /* If the user didn't specify any, default to all configured offload + targets. */ + if (ENABLE_OFFLOADING && offload_targets == NULL) +- handle_foffload_option (OFFLOAD_TARGETS); ++ { ++ handle_foffload_option (OFFLOAD_TARGETS); ++ offload_targets_default = true; ++ } + + /* Handle -gtoggle as it would later in toplev.c:process_options to + make the debug-level-gt spec function work as expected. */ +@@ -8494,6 +8501,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS () + obstack_grow (&collect_obstack, offload_targets, + strlen (offload_targets) + 1); + xputenv (XOBFINISH (&collect_obstack, char *)); ++ if (offload_targets_default) ++ xputenv ("OFFLOAD_TARGET_DEFAULT=1"); + } + + free (offload_targets); +--- gcc/lto-wrapper.c.jj 2017-01-01 12:45:34.000000000 +0100 ++++ gcc/lto-wrapper.c 2017-01-20 16:34:18.294016997 +0100 +@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. + /* Environment variable, used for passing the names of offload targets from GCC + driver to lto-wrapper. */ + #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES" ++#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT" + + /* By default there is no special suffix for target executables. */ + #ifdef TARGET_EXECUTABLE_SUFFIX +@@ -906,6 +907,12 @@ compile_offload_image (const char *targe + break; + } + ++ if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV)) ++ { ++ free_array_of_ptrs ((void **) paths, n_paths); ++ return NULL; ++ } ++ + if (!compiler) + fatal_error (input_location, + "could not find %s in %s (consider using %<-B%>)", +@@ -975,6 +982,7 @@ compile_images_for_offload_targets (unsi + if (!target_names) + return; + unsigned num_targets = parse_env_var (target_names, &names, NULL); ++ int next_name_entry = 0; + + const char *compiler_path = getenv ("COMPILER_PATH"); + if (!compiler_path) +@@ -985,13 +993,19 @@ compile_images_for_offload_targets (unsi + offload_names = XCNEWVEC (char *, num_targets + 1); + for (unsigned i = 0; i < num_targets; i++) + { +- offload_names[i] ++ offload_names[next_name_entry] + = compile_offload_image (names[i], compiler_path, in_argc, in_argv, + compiler_opts, compiler_opt_count, + linker_opts, linker_opt_count); +- if (!offload_names[i]) +- fatal_error (input_location, +- "problem with building target image for %s", names[i]); ++ if (!offload_names[next_name_entry]) ++ continue; ++ next_name_entry++; ++ } ++ ++ if (next_name_entry == 0) ++ { ++ free (offload_names); ++ offload_names = NULL; + } + + out: +--- libgomp/target.c.jj 2017-01-01 12:45:52.000000000 +0100 ++++ libgomp/target.c 2017-01-20 20:12:13.756710875 +0100 +@@ -2356,7 +2356,7 @@ gomp_load_plugin_for_device (struct gomp + + void *plugin_handle = dlopen (plugin_name, RTLD_LAZY); + if (!plugin_handle) +- goto dl_fail; ++ return 0; + + /* Check if all required functions are available in the plugin and store + their handlers. None of the symbols can legitimately be NULL, diff --git a/SOURCES/gcc11-hack.patch b/SOURCES/gcc11-hack.patch new file mode 100644 index 0000000..3a5f3f3 --- /dev/null +++ b/SOURCES/gcc11-hack.patch @@ -0,0 +1,126 @@ +--- libada/Makefile.in.jj 2019-01-09 13:01:18.015608205 +0100 ++++ libada/Makefile.in 2019-01-11 18:16:23.441726931 +0100 +@@ -71,18 +71,40 @@ version := $(shell @get_gcc_base_ver@ $( + libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) + ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) + ++DEFAULTMULTIFLAGS := ++ifeq ($(MULTISUBDIR),) ++targ:=$(subst -, ,$(target)) ++arch:=$(word 1,$(targ)) ++ifeq ($(words $(targ)),2) ++osys:=$(word 2,$(targ)) ++else ++osys:=$(word 3,$(targ)) ++endif ++ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),) ++ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64) ++DEFAULTMULTIFLAGS := -m64 ++else ++ifeq ($(strip $(filter-out s390%, $(arch))),) ++DEFAULTMULTIFLAGS := -m31 ++else ++DEFAULTMULTIFLAGS := -m32 ++endif ++endif ++endif ++endif ++ + # exeext should not be used because it's the *host* exeext. We're building + # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus + # definitions just in case something slips through the safety net provided + # by recursive make invocations in gcc/ada/Makefile.in + LIBADA_FLAGS_TO_PASS = \ + "MAKEOVERRIDES=" \ +- "LDFLAGS=$(LDFLAGS)" \ ++ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \ + "LN_S=$(LN_S)" \ + "SHELL=$(SHELL)" \ +- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ +- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ +- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ ++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \ ++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \ ++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \ + "PICFLAG_FOR_TARGET=$(PICFLAG)" \ + "THREAD_KIND=$(THREAD_KIND)" \ + "TRACE=$(TRACE)" \ +@@ -93,7 +115,7 @@ LIBADA_FLAGS_TO_PASS = \ + "exeext=.exeext.should.not.be.used " \ + 'CC=the.host.compiler.should.not.be.needed' \ + "GCC_FOR_TARGET=$(CC)" \ +- "CFLAGS=$(CFLAGS)" ++ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)" + + .PHONY: libada gnatlib gnatlib-shared gnatlib-sjlj gnatlib-zcx osconstool + +--- config-ml.in.jj 2019-01-09 12:50:16.646501448 +0100 ++++ config-ml.in 2019-01-11 18:16:23.442726914 +0100 +@@ -511,6 +511,8 @@ multi-do: + ADAFLAGS="$(ADAFLAGS) $${flags}" \ + prefix="$(prefix)" \ + exec_prefix="$(exec_prefix)" \ ++ mandir="$(mandir)" \ ++ infodir="$(infodir)" \ + GOCFLAGS="$(GOCFLAGS) $${flags}" \ + GDCFLAGS="$(GDCFLAGS) $${flags}" \ + CXXFLAGS="$(CXXFLAGS) $${flags}" \ +--- libcpp/macro.c.jj 2019-01-09 13:01:21.420552123 +0100 ++++ libcpp/macro.c 2019-01-11 18:18:17.736876285 +0100 +@@ -3256,8 +3256,6 @@ static cpp_macro * + create_iso_definition (cpp_reader *pfile) + { + bool following_paste_op = false; +- const char *paste_op_error_msg = +- N_("'##' cannot appear at either end of a macro expansion"); + unsigned int num_extra_tokens = 0; + unsigned nparms = 0; + cpp_hashnode **params = NULL; +@@ -3382,7 +3380,9 @@ create_iso_definition (cpp_reader *pfile + function-like macros, but not at the end. */ + if (following_paste_op) + { +- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); ++ cpp_error (pfile, CPP_DL_ERROR, ++ "'##' cannot appear at either end of a macro " ++ "expansion"); + goto out; + } + if (!vaopt_tracker.completed ()) +@@ -3397,7 +3397,9 @@ create_iso_definition (cpp_reader *pfile + function-like macros, but not at the beginning. */ + if (macro->count == 1) + { +- cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg); ++ cpp_error (pfile, CPP_DL_ERROR, ++ "'##' cannot appear at either end of a macro " ++ "expansion"); + goto out; + } + +--- libcpp/expr.c.jj 2019-01-09 13:01:22.415535734 +0100 ++++ libcpp/expr.c 2019-01-11 18:16:23.444726882 +0100 +@@ -803,16 +803,17 @@ cpp_classify_number (cpp_reader *pfile, + if ((result & CPP_N_WIDTH) == CPP_N_LARGE + && CPP_OPTION (pfile, cpp_warn_long_long)) + { +- const char *message = CPP_OPTION (pfile, cplusplus) +- ? N_("use of C++11 long long integer constant") +- : N_("use of C99 long long integer constant"); +- + if (CPP_OPTION (pfile, c99)) + cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location, +- 0, message); ++ 0, CPP_OPTION (pfile, cplusplus) ++ ? N_("use of C++11 long long integer constant") ++ : N_("use of C99 long long integer constant")); + else + cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG, +- virtual_location, 0, message); ++ virtual_location, 0, ++ CPP_OPTION (pfile, cplusplus) ++ ? N_("use of C++11 long long integer constant") ++ : N_("use of C99 long long integer constant")); + } + + if ((result & CPP_N_SIZE_T) == CPP_N_SIZE_T diff --git a/SOURCES/gcc11-libgomp-omp_h-multilib.patch b/SOURCES/gcc11-libgomp-omp_h-multilib.patch new file mode 100644 index 0000000..d0e98d1 --- /dev/null +++ b/SOURCES/gcc11-libgomp-omp_h-multilib.patch @@ -0,0 +1,17 @@ +2008-06-09 Jakub Jelinek + + * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs. + +--- libgomp/omp.h.in.jj 2008-06-09 13:34:05.000000000 +0200 ++++ libgomp/omp.h.in 2008-06-09 13:34:48.000000000 +0200 +@@ -42,8 +42,8 @@ typedef struct + + typedef struct + { +- unsigned char _x[@OMP_NEST_LOCK_SIZE@] +- __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); ++ unsigned char _x[8 + sizeof (void *)] ++ __attribute__((__aligned__(sizeof (void *)))); + } omp_nest_lock_t; + #endif + diff --git a/SOURCES/gcc11-libtool-no-rpath.patch b/SOURCES/gcc11-libtool-no-rpath.patch new file mode 100644 index 0000000..466c661 --- /dev/null +++ b/SOURCES/gcc11-libtool-no-rpath.patch @@ -0,0 +1,27 @@ +libtool sucks. +--- ltmain.sh.jj 2007-12-07 14:53:21.000000000 +0100 ++++ ltmain.sh 2008-09-05 21:51:48.000000000 +0200 +@@ -5394,6 +5394,7 @@ EOF + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then +@@ -6071,6 +6072,7 @@ EOF + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then +@@ -6120,6 +6122,7 @@ EOF + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do ++ case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then diff --git a/SOURCES/gcc11-no-add-needed.patch b/SOURCES/gcc11-no-add-needed.patch new file mode 100644 index 0000000..5817299 --- /dev/null +++ b/SOURCES/gcc11-no-add-needed.patch @@ -0,0 +1,37 @@ +2010-02-08 Roland McGrath + + * config/gnu-user.h (LINK_EH_SPEC): Pass --no-add-needed to the linker. + * config/alpha/elf.h (LINK_EH_SPEC): Likewise. + * config/ia64/linux.h (LINK_EH_SPEC): Likewise. + +--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100 ++++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100 +@@ -168,5 +168,5 @@ extern int alpha_this_gpdisp_sequence_nu + I imagine that other systems will catch up. In the meantime, it + doesn't harm to make sure that the data exists to be used later. */ + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} " ++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} " + #endif +--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100 ++++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100 +@@ -76,7 +76,7 @@ do { \ + Signalize that because we have fde-glibc, we don't need all C shared libs + linked against -lgcc_s. */ + #undef LINK_EH_SPEC +-#define LINK_EH_SPEC "" ++#define LINK_EH_SPEC "--no-add-needed " + + #undef TARGET_INIT_LIBFUNCS + #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs +--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100 ++++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100 +@@ -106,7 +106,7 @@ see the files COPYING3 and COPYING.RUNTI + #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC + + #if defined(HAVE_LD_EH_FRAME_HDR) +-#define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} " ++#define LINK_EH_SPEC "--no-add-needed %{!static|static-pie:--eh-frame-hdr} " + #endif + + #define GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC \ diff --git a/SOURCES/gcc11-pr99341-revert.patch b/SOURCES/gcc11-pr99341-revert.patch new file mode 100644 index 0000000..c7419cb --- /dev/null +++ b/SOURCES/gcc11-pr99341-revert.patch @@ -0,0 +1,176 @@ +libstdc++: Remove symbols for new std::call_once implementation [PR 99341] + +This removes the new symbols added for the new futex-based +std::call_once implementation. These symbols were new on trunk, so not +in any released version. However, they are already present in some +beta distro releases (Fedora Linux 34) and in Fedora Linux rawhide. This +change can be locally reverted by distros that need to keep the symbols +present until affected packages have been rebuilt. + +Revert: +2021-03-12 Jonathan Wakely + + PR libstdc++/99341 + * config/abi/post/aarch64-linux-gnu/baseline_symbols.txt: Remove + std::once_flag symbols. + * config/abi/post/ia64-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/m68k-linux-gnu/baseline_symbols.txt: Likewise. + * config/abi/post/riscv64-linux-gnu/baseline_symbols.txt: + Likewise. + * config/abi/pre/gnu.ver: Likewise. + * src/c++11/mutex.cc [_GLIBCXX_HAVE_LINUX_FUTEX] + (struct __once_flag_compat): Remove. + (_ZNSt9once_flag11_M_activateEv): Remove. + (_ZNSt9once_flag9_M_finishEb): Remove. + +--- libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt ++++ libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt +@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 ++FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 + FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 + FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 +--- libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt ++++ libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt +@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 ++FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 + FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 + FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 +--- libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt ++++ libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt +@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Ej@@GLIBCXX + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 ++FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 + FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 + FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 +--- libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt ++++ libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt +@@ -4086,6 +4086,8 @@ FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEEC2Em@@GLIBCXX + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED0Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED1Ev@@GLIBCXX_3.4 + FUNC:_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEED2Ev@@GLIBCXX_3.4 ++FUNC:_ZNSt9once_flag11_M_activateEv@@GLIBCXX_3.4.29 ++FUNC:_ZNSt9once_flag9_M_finishEb@@GLIBCXX_3.4.29 + FUNC:_ZNSt9strstream3strEv@@GLIBCXX_3.4 + FUNC:_ZNSt9strstream6freezeEb@@GLIBCXX_3.4 + FUNC:_ZNSt9strstreamC1EPciSt13_Ios_Openmode@@GLIBCXX_3.4 +--- libstdc++-v3/config/abi/pre/gnu.ver ++++ libstdc++-v3/config/abi/pre/gnu.ver +@@ -2388,6 +2388,11 @@ GLIBCXX_3.4.29 { + _ZNKRSt7__cxx1118basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE3strEv; + _ZNSt7__cxx1118basic_stringstreamI[cw]St11char_traitsI[cw]ESaI[cw]EE3strEONS_12basic_stringI[cw]S2_S3_EE; + ++ # std::once_flag::_M_activate() ++ _ZNSt9once_flag11_M_activateEv; ++ # std::once_flag::_M_finish(bool) ++ _ZNSt9once_flag9_M_finishEb; ++ + # std::to_chars(char*, char*, [float|double|long double]) + _ZSt8to_charsPcS_[def]; + # std::to_chars(char*, char*, [float|double|long double], chars_format) +--- libstdc++-v3/src/c++11/mutex.cc ++++ libstdc++-v3/src/c++11/mutex.cc +@@ -26,6 +26,90 @@ + + #ifdef _GLIBCXX_HAS_GTHREADS + ++#if defined _GLIBCXX_SHARED && ! _GLIBCXX_INLINE_VERSION ++ ++#ifdef _GLIBCXX_HAVE_LINUX_FUTEX ++# include ++# include ++# include ++ ++namespace std _GLIBCXX_VISIBILITY(default) ++{ ++_GLIBCXX_BEGIN_NAMESPACE_VERSION ++ ++struct __once_flag_compat ++{ ++ enum _Bits : int { _Init = 0, _Active = 1, _Done = 2 }; ++ int _M_once = 0; ++ bool _M_activate(); ++ void _M_finish(bool returning) noexcept; ++}; ++ ++bool ++__once_flag_compat::_M_activate() ++{ ++ if (__gnu_cxx::__is_single_threaded()) ++ { ++ if (_M_once == _Bits::_Done) ++ return false; ++ _M_once = _Bits::_Active; ++ return true; ++ } ++ ++ while (true) ++ { ++ int expected = _Bits::_Init; ++ constexpr int active = _Bits::_Active; ++ if (__atomic_compare_exchange_n(&_M_once, &expected, active, false, ++ __ATOMIC_ACQ_REL, ++ __ATOMIC_ACQUIRE)) ++ { ++ // This thread is now doing an active execution. ++ return true; ++ } ++ ++ if (expected == _Bits::_Done) ++ return false; // A returning execution happened, this is passive. ++ ++ // Otherwise, an active execution is happening. Wait for it to finish. ++ constexpr int futex_wait = 128; // FUTEX_WAIT_PRIVATE ++ syscall (SYS_futex, &_M_once, futex_wait, expected, 0); ++ } ++} ++ ++void ++std::__once_flag_compat::_M_finish(bool returning) noexcept ++{ ++ const int newval = returning ? _Bits::_Done : _Bits::_Init; ++ if (__gnu_cxx::__is_single_threaded()) ++ { ++ __glibcxx_assert(_M_once == _Bits::_Active); ++ _M_once = newval; ++ } ++ else ++ { ++ int prev [[maybe_unused]] ++ = __atomic_exchange_n(&_M_once, newval, __ATOMIC_RELEASE); ++ __glibcxx_assert(prev & _Bits::_Active); ++ // Wake any other threads waiting for this execution to finish. ++ constexpr int futex_wake = 129; // FUTEX_WAKE_PRIVATE ++ syscall (SYS_futex, &_M_once, futex_wake, INT_MAX); ++ } ++} ++ ++#pragma GCC diagnostic push ++#pragma GCC diagnostic ignored "-Wattribute-alias" ++extern "C" bool _ZNSt9once_flag11_M_activateEv() ++ __attribute__((alias ("_ZNSt18__once_flag_compat11_M_activateEv"))); ++extern "C" void _ZNSt9once_flag9_M_finishEb() noexcept ++ __attribute__((alias ("_ZNSt18__once_flag_compat9_M_finishEb"))); ++#pragma GCC diagnostic pop ++ ++_GLIBCXX_END_NAMESPACE_VERSION ++} // namespace std ++#endif // FUTEX ++#endif // ONCE_FLAG_COMPAT && SHARED && ! INLINE_VERSION ++ + namespace std _GLIBCXX_VISIBILITY(default) + { + _GLIBCXX_BEGIN_NAMESPACE_VERSION diff --git a/SOURCES/gcc11-rh1574936.patch b/SOURCES/gcc11-rh1574936.patch new file mode 100644 index 0000000..6b4be0c --- /dev/null +++ b/SOURCES/gcc11-rh1574936.patch @@ -0,0 +1,30 @@ +crt files and statically linked libgcc objects cause false positives +in annobin coverage, so we add the assembler flag to generate notes +for them. + +The patch also adds notes to libgcc_s.so, but this is harmless because +these notes only confer that there is no other annobin markup. + +2018-07-25 Florian Weimer + + * Makefile.in (LIBGCC2_CFLAGS, CRTSTUFF_CFLAGS): Add + -Wa,--generate-missing-build-notes=yes. + +--- libgcc/Makefile.in 2018-01-13 13:05:41.000000000 +0100 ++++ libgcc/Makefile.in 2018-07-25 13:15:02.036226940 +0200 +@@ -246,6 +246,7 @@ LIBGCC2_DEBUG_CFLAGS = -g + LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ + $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \ + -fbuilding-libgcc -fno-stack-protector \ ++ -Wa,--generate-missing-build-notes=yes \ + $(INHIBIT_LIBC_CFLAGS) + + # Additional options to use when compiling libgcc2.a. +@@ -301,6 +302,7 @@ CRTSTUFF_CFLAGS = -O2 $(GCC_CFLAGS) $(IN + $(NO_PIE_CFLAGS) -finhibit-size-directive -fno-inline -fno-exceptions \ + -fno-zero-initialized-in-bss -fno-toplevel-reorder -fno-tree-vectorize \ + -fbuilding-libgcc -fno-stack-protector $(FORCE_EXPLICIT_EH_REGISTRY) \ ++ -Wa,--generate-missing-build-notes=yes \ + $(INHIBIT_LIBC_CFLAGS) $(USE_TM_CLONE_REGISTRY) + + # Extra flags to use when compiling crt{begin,end}.o. diff --git a/SOURCES/gcc11-sparc-config-detection.patch b/SOURCES/gcc11-sparc-config-detection.patch new file mode 100644 index 0000000..bb06b35 --- /dev/null +++ b/SOURCES/gcc11-sparc-config-detection.patch @@ -0,0 +1,40 @@ +--- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500 ++++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500 +@@ -2790,7 +2790,7 @@ sparc-*-rtems*) + tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h" + tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems" + ;; +-sparc-*-linux*) ++sparc-*-linux* | sparcv9-*-linux*) + tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h" + extra_options="${extra_options} sparc/long-double-switch.opt" + case ${target} in +@@ -2844,7 +2844,7 @@ sparc64-*-rtems*) + extra_options="${extra_options}" + tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64" + ;; +-sparc64-*-linux*) ++sparc64*-*-linux*) + tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default64.h sparc/linux64.h sparc/tso.h" + extra_options="${extra_options} sparc/long-double-switch.opt" + tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64" +--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500 ++++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500 +@@ -1002,7 +1002,7 @@ sparc-*-elf*) + tmake_file="${tmake_file} t-fdpbit t-crtfm" + extra_parts="$extra_parts crti.o crtn.o crtfastmath.o" + ;; +-sparc-*-linux*) # SPARC's running GNU/Linux, libc6 ++sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6 + tmake_file="${tmake_file} t-crtfm" + if test "${host_address}" = 64; then + tmake_file="$tmake_file sparc/t-linux64" +@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd* + tmake_file="$tmake_file t-crtfm" + extra_parts="$extra_parts crtfastmath.o" + ;; +-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux ++sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux + extra_parts="$extra_parts crtfastmath.o" + tmake_file="${tmake_file} t-crtfm sparc/t-linux" + if test "${host_address}" = 64; then diff --git a/SPECS/cross-gcc.spec b/SPECS/cross-gcc.spec new file mode 100644 index 0000000..421ff95 --- /dev/null +++ b/SPECS/cross-gcc.spec @@ -0,0 +1,954 @@ +# workaround LTO related issue when stripping the target files (#1863378) +%global __brp_strip_lto %{nil} + +%global cross cross +%global rpmprefix %{nil} + +%global build_all 1 +%global build_aarch64 %{build_all} +%global build_alpha %{build_all} +%global build_arm %{build_all} +%global build_arc %{build_all} +%global build_avr32 %{build_all} +%global build_blackfin %{build_all} +%global build_c6x %{build_all} +%global build_cris %{build_all} +%global build_frv %{build_all} +%global build_h8300 %{build_all} +%global build_hppa %{build_all} +%global build_hppa64 %{build_all} +%global build_ia64 %{build_all} +%global build_m32r %{build_all} +%global build_m68k %{build_all} +%global build_microblaze %{build_all} +%global build_mips64 %{build_all} +%global build_mn10300 %{build_all} +%global build_nios2 %{build_all} +%global build_openrisc %{build_all} +%global build_powerpc64 %{build_all} +%global build_powerpc64le %{build_all} +%global build_riscv64 %{build_all} +%global build_s390x %{build_all} +%global build_sh %{build_all} +%global build_sparc64 %{build_all} +%global build_tile %{build_all} +%global build_x86_64 %{build_all} +%global build_xtensa %{build_all} + +# built compiler generates lots of ICEs +# - none at this time + +# gcc considers obsolete +%global build_score 0 +%global build_sh64 0 +%global build_sh 0 +%global build_cris 0 + +# gcc doesn't build +# - none at this time + +# 32-bit packages we don't build as we can use the 64-bit package instead +%global build_i386 0 +%global build_mips 0 +%global build_powerpc 0 +%global build_s390 0 +%global build_sh4 0 +%global build_sparc 0 + +# gcc doesn't support +%global build_metag 0 + +# not available in binutils-2.22 +%global build_unicore32 0 + +%global multilib_64_archs sparc64 ppc64 s390x x86_64 + +# we won't build libgcc for these as it depends on C library or kernel headers +# % global no_libgcc_targets nios2*|tile-* +%global no_libgcc_targets none + +############################################################################### +# +# The gcc versioning information. In a sed command below, the specfile winds +# pre-release version numbers in BASE-VER back to the last actually-released +# number. +%global DATE 20210728 +%global gitrev 134ab8155c937122663513b76afa8e64ad61fe99 +%global gcc_version 11.2.1 +%global gcc_major 11 + +# Note, cross_gcc_release must be integer, if you want to add suffixes +# to %%{release}, append them after %%{cross_gcc_release} on Release: +# line. gcc_release is the Fedora gcc release that the patches were +# taken from. +%global gcc_release 1 +%global cross_gcc_release 1 +%global cross_binutils_version 2.35.1 +%global isl_version 0.16.1 +%global isl_libmajor 15 + +%global _performance_build 1 +# Hardening slows the compiler way too much. +%undefine _hardened_build + +Summary: Cross C compiler +Name: %{cross}-gcc +Version: %{gcc_version} +Release: %{cross_gcc_release}%{?dist} +# libgcc, libgfortran, libmudflap, libgomp, libstdc++ and crtstuff have +# GCC Runtime Exception. +License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD +URL: http://gcc.gnu.org +BuildRequires: gcc-c++ autoconf +BuildRequires: isl-devel >= %{isl_version} + +# The source for this package was pulled from upstream's vcs. Use the +# following commands to generate the tarball: +# git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp +# git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin %%{gitrev} +# git --git-dir=gcc-dir.tmp/.git archive --prefix=%%{name}-%%{version}-%%{DATE}/ %%{gitrev} | xz -9e > %%{name}-%%{version}-%%{DATE}.tar.xz +# rm -rf gcc-dir.tmp +%global srcdir gcc-%{version}-%{DATE} +Source0: %{srcdir}.tar.xz + +Patch0: gcc11-hack.patch +Patch2: gcc11-sparc-config-detection.patch +Patch3: gcc11-libgomp-omp_h-multilib.patch +Patch4: gcc11-libtool-no-rpath.patch +Patch8: gcc11-no-add-needed.patch +Patch9: gcc11-foffload-default.patch +Patch10: gcc11-Wno-format-security.patch +Patch11: gcc11-rh1574936.patch +Patch12: gcc11-d-shared-libphobos.patch +Patch13: gcc11-pr99341-revert.patch + +Patch900: cross-intl-filename.patch +Patch901: cross-gcc-format-config.patch +Patch902: cross-gcc-config.patch + +%if 0%{?fedora} >= 29 || 0%{?rhel} > 7 +BuildRequires: binutils >= 2.31 +%else +BuildRequires: binutils >= 2.24 +%endif +BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils +BuildRequires: %{cross}-binutils-common >= %{cross_binutils_version} + +# Make sure pthread.h doesn't contain __thread tokens +# Make sure glibc supports stack protector +# Make sure glibc supports DT_GNU_HASH +BuildRequires: glibc-devel >= 2.4.90-13 +BuildRequires: elfutils-devel >= 0.147 +BuildRequires: elfutils-libelf-devel >= 0.147 +BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1 +Provides: bundled(libiberty) + +%description +Cross-build GNU C compiler collection. + +%package -n %{cross}-gcc-common +Summary: Cross-build GNU C compiler documentation and translation files +BuildArch: noarch + +%description -n %{cross}-gcc-common +Documentation, manual pages and translation files for cross-build GNU C +compiler. + +This is the common part of a set of cross-build GNU C compiler packages for +building kernels for other architectures. No support for cross-building +user space programs is currently supplied as that would massively multiply the +number of packages. + +############################################################################### +# +# Conditional arch package definition +# +############################################################################### +%global do_package() \ +%if %2 \ +%package -n %{rpmprefix}gcc-%1 \ +Summary: Cross-build binary utilities for %1 \ +Requires: %{cross}-gcc-common == %{version}-%{release} \ +BuildRequires: %{rpmprefix}binutils-%1 >= %{cross_binutils_version} \ +Requires: %{rpmprefix}binutils-%1 >= %{cross_binutils_version} \ +%if 0%{?__isa_bits} == 64 \ +Requires: libisl.so.%{isl_libmajor}()(64bit) \ +%else \ +Requires: libisl.so.%{isl_libmajor} \ +%endif \ +%description -n %{rpmprefix}gcc-%1 \ +Cross-build GNU C compiler. \ +\ +Only building kernels is currently supported. Support for cross-building \ +user space programs is not currently provided as that would massively multiply \ +the number of packages. \ +\ +%package -n %{rpmprefix}gcc-c++-%1 \ +Summary: Cross-build binary utilities for %1 \ +Requires: %{rpmprefix}gcc-%1 == %{version}-%{release} \ +%description -n %{rpmprefix}gcc-c++-%1 \ +Cross-build GNU C++ compiler. \ +\ +Only the compiler is provided; not libstdc++. Support for cross-building \ +user space programs is not currently provided as that would massively multiply \ +the number of packages. \ +%endif + +%global do_symlink() \ +%if %2 \ +%package -n gcc-%1 \ +Summary: Cross-build binary utilities for %1 \ +Requires: gcc-%3 == %{version}-%{release} \ +%description -n gcc-%1 \ +Cross-build GNU C++ compiler. \ +\ +Only building kernels is currently supported. Support for cross-building \ +user space programs is not currently provided as that would massively multiply \ +the number of packages. \ +\ +%package -n gcc-c++-%1 \ +Summary: Cross-build binary utilities for %1 \ +Requires: gcc-%1 == %{version}-%{release} \ +Requires: gcc-c++-%3 == %{version}-%{release} \ +%description -n gcc-c++-%1 \ +Cross-build GNU C++ compiler. \ +\ +Only the compiler is provided; not libstdc++. Support for cross-building \ +user space programs is not currently provided as that would massively multiply \ +the number of packages. \ +%endif + +%do_package aarch64-linux-gnu %{build_aarch64} +%do_package alpha-linux-gnu %{build_alpha} +%do_package arc-linux-gnu %{build_arc} +%do_package arm-linux-gnu %{build_arm} +%do_package avr32-linux-gnu %{build_avr32} +%do_package bfin-linux-gnu %{build_blackfin} +%do_package c6x-linux-gnu %{build_c6x} +%do_package cris-linux-gnu %{build_cris} +%do_package frv-linux-gnu %{build_frv} +%do_package h8300-linux-gnu %{build_h8300} +%do_package hppa-linux-gnu %{build_hppa} +%do_package hppa64-linux-gnu %{build_hppa64} +%do_package i386-linux-gnu %{build_i386} +%do_package ia64-linux-gnu %{build_ia64} +%do_package m32r-linux-gnu %{build_m32r} +%do_package m68k-linux-gnu %{build_m68k} +%do_package metag-linux-gnu %{build_metag} +%do_package microblaze-linux-gnu %{build_microblaze} +%do_package mips-linux-gnu %{build_mips} +%do_package mips64-linux-gnu %{build_mips64} +%do_package mn10300-linux-gnu %{build_mn10300} +%do_package nios2-linux-gnu %{build_nios2} +%do_package openrisc-linux-gnu %{build_openrisc} +%do_package powerpc-linux-gnu %{build_powerpc} +%do_package powerpc64-linux-gnu %{build_powerpc64} +%do_package powerpc64le-linux-gnu %{build_powerpc64le} +%do_symlink ppc-linux-gnu %{build_powerpc} powerpc-linux-gnu +%do_symlink ppc64-linux-gnu %{build_powerpc64} powerpc64-linux-gnu +%do_symlink ppc64le-linux-gnu %{build_powerpc64le} powerpc64le-linux-gnu +%do_package riscv64-linux-gnu %{build_riscv64} +%do_package s390-linux-gnu %{build_s390} +%do_package s390x-linux-gnu %{build_s390x} +%do_package score-linux-gnu %{build_score} +%do_package sh-linux-gnu %{build_sh} +%do_package sh4-linux-gnu %{build_sh4} +%do_package sh64-linux-gnu %{build_sh64} +%do_package sparc-linux-gnu %{build_sparc} +%do_package sparc64-linux-gnu %{build_sparc64} +%do_package tile-linux-gnu %{build_tile} +%do_package unicore32-linux-gnu %{build_unicore32} +%do_package x86_64-linux-gnu %{build_x86_64} +%do_package xtensa-linux-gnu %{build_xtensa} + +############################################################################### +# +# Preparation +# +############################################################################### +%prep + +%setup -q -n %{srcdir} -c +cd %{srcdir} +%patch0 -p0 -b .hack~ +%patch2 -p0 -b .sparc-config-detection~ +%patch3 -p0 -b .libgomp-omp_h-multilib~ +%patch4 -p0 -b .libtool-no-rpath~ +%patch8 -p0 -b .no-add-needed~ +%patch9 -p0 -b .foffload-default~ +%patch10 -p0 -b .Wno-format-security~ +%if 0%{?fedora} >= 29 || 0%{?rhel} > 7 +%patch11 -p0 -b .rh1574936~ +%endif +%patch12 -p0 -b .d-shared-libphobos~ +%patch13 -p0 -b .pr99341-revert~ + +%patch900 -p0 -b .cross-intl~ +%patch901 -p0 -b .format-config~ +%patch902 -p0 -b .config + +echo 'Red Hat Cross %{version}-%{cross_gcc_release}' > gcc/DEV-PHASE + +echo 'TM_H += $(srcdir)/config/rs6000/rs6000-modes.h' >> gcc/config/rs6000/t-rs6000 + +pushd libiberty +autoconf -f +popd +pushd intl +autoconf -f +popd + +./contrib/gcc_update --touch + +LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi + +sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt + +# This test causes fork failures, because it spawns way too many threads +rm -f gcc/testsuite/go.test/test/chan/goroutines.go + +function prep_target () { + target=$1 + cond=$2 + + if [ $cond != 0 ] + then + echo $1 >&5 + fi +} + +cd .. + +( + prep_target aarch64-linux-gnu %{build_aarch64} + prep_target alpha-linux-gnu %{build_alpha} + prep_target arc-linux-gnu %{build_arc} + prep_target arm-linux-gnu %{build_arm} + prep_target avr32-linux-gnu %{build_avr32} + prep_target bfin-linux-gnu %{build_blackfin} + prep_target c6x-linux-gnu %{build_c6x} + prep_target cris-linux-gnu %{build_cris} + prep_target frv-linux-gnu %{build_frv} + prep_target h8300-linux-gnu %{build_h8300} + prep_target hppa-linux-gnu %{build_hppa} + prep_target hppa64-linux-gnu %{build_hppa64} + prep_target i386-linux-gnu %{build_i386} + prep_target ia64-linux-gnu %{build_ia64} + prep_target m32r-linux-gnu %{build_m32r} + prep_target m68k-linux-gnu %{build_m68k} + prep_target metag-linux-gnu %{build_metag} + prep_target microblaze-linux-gnu %{build_microblaze} + prep_target mips-linux-gnu %{build_mips} + prep_target mips64-linux-gnu %{build_mips64} + prep_target mn10300-linux-gnu %{build_mn10300} + prep_target nios2-linux-gnu %{build_nios2} + prep_target openrisc-linux-gnu %{build_openrisc} + prep_target powerpc-linux-gnu %{build_powerpc} + prep_target powerpc64-linux-gnu %{build_powerpc64} + prep_target powerpc64le-linux-gnu %{build_powerpc64le} + prep_target riscv64-linux-gnu %{build_riscv64} + prep_target s390-linux-gnu %{build_s390} + prep_target s390x-linux-gnu %{build_s390x} + prep_target score-linux-gnu %{build_score} + prep_target sh-linux-gnu %{build_sh} + prep_target sh4-linux-gnu %{build_sh4} + prep_target sh64-linux-gnu %{build_sh64} + prep_target sparc-linux-gnu %{build_sparc} + prep_target sparc64-linux-gnu %{build_sparc64} + prep_target tile-linux-gnu %{build_tile} + prep_target unicore32-linux-gnu %{build_unicore32} + prep_target x86_64-linux-gnu %{build_x86_64} + prep_target xtensa-linux-gnu %{build_xtensa} +) 5>target.list + +n=0 +for target in `cat target.list` +do + n=1 + break +done +if [ $n = 0 ] +then + echo "No targets selected" >&2 + exit 8 +fi + +############################################################################### +# +# Build +# +############################################################################### +%build + +%global builddir %{_builddir}/%{srcdir} + +# Undo the broken autoconf change in recent Fedora versions +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=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'` +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -g / -g1 /g'` +%ifarch sparc +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'` +%endif +%ifarch %{ix86} +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-march=i.86//g'` +%endif +OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Werror=format-security/-Wformat-security/g'` +OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'` +case "$OPT_FLAGS" in + *-fasynchronous-unwind-tables*) + sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables /' \ + %{srcdir}/libgcc/Makefile.in + ;; +esac + +# +# Configure the compiler +# +cd %{builddir} +function config_target () { + echo "=== CONFIGURING $1" + + arch=$1 + prefix=$arch- + build_dir=$1 + + case $arch in + aarch64-*) target=aarch64-linux-gnu;; + arc-*) target=arc-linux-gnu;; + arm-*) target=arm-linux-gnueabi;; + avr32-*) target=avr-linux;; + bfin-*) target=bfin-uclinux;; + c6x-*) target=c6x-uclinux;; + h8300-*) target=h8300-elf;; + mn10300-*) target=am33_2.0-linux;; + m68knommu-*) target=m68k-linux;; + openrisc-*) target=or1k-linux;; + parisc-*) target=hppa-linux;; + score-*) target=score-elf;; + sh64-*) target=sh64-linux-elf;; + tile-*) target=tilegx-linux;; + v850-*) target=v850e-linux;; + x86-*) target=x86_64-linux;; + *) target=$arch;; + esac + + echo $arch: target is $target + #export CFLAGS="$RPM_OPT_FLAGS" + + CONFIG_FLAGS= + case $arch in + arc-*) + CONFIG_FLAGS="--with-cpu=hs38" + ;; + + arm-*) + CONFIG_FLAGS="--with-tune=generic-armv7-a --with-arch=armv7-a \ + --with-float=hard --with-fpu=vfpv3-d16 --with-abi=aapcs-linux" + ;; + mips64-*) + CONFIG_FLAGS="--with-arch=mips64r2 --with-abi=64 --with-arch_32=mips32r2 --with-fp-32=xx" + ;; + powerpc-*|powerpc64-*|ppc-*|ppc64-*) + CONFIG_FLAGS="--with-cpu-32=power7 --with-tune-32=power8 --with-cpu-64=power7 --with-tune-64=power8 --enable-secureplt" + ;; + powerpc64le-*|ppc64le-*) + CONFIG_FLAGS="--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 --enable-secureplt" + ;; + s390*-*) +%if 0%{?fedora} >= 26 || 0%{?rhel} > 7 + CONFIG_FLAGS="--with-arch=zEC12 --with-tune=z13 --enable-decimal-float" +%else + CONFIG_FLAGS="--with-arch=z9-109 --with-tune=z10 --enable-decimal-float" +%endif + ;; + sh-*) + CONFIG_FLAGS=--with-multilib-list=m1,m2,m2e,m2a,m2a-single,m4,m4-single,m4-single-only,m4-nofpu + ;; + sh4-*) + CONFIG_FLAGS=--with-multilib-list=m4,m4-single,m4-single-only,m4-nofpu + ;; + sh64-*) + CONFIG_FLAGS=--with-multilib-list=m5-32media,m5-32media-nofpu,m5-compact,m5-compact-nofpu,m5-64media,m5-64media-nofpu + ;; + sparc-*) + CONFIG_FLAGS="--disable-linux-futex --with-cpu=v7" + ;; + sparc64-*) + CONFIG_FLAGS="--disable-linux-futex --with-cpu=ultrasparc" + ;; + tile-*) + #CONFIG_FLAGS="--with-arch_32=tilepro" + ;; + x86_64-*) + CONFIG_FLAGS="--with-arch_32=i686 --with-tune=generic --enable-cet" + ;; + esac + + case $arch in + alpha*|powerpc*|ppc*|s390*|sparc*) + CONFIG_FLAGS="$CONFIG_FLAGS --with-long-double-128" ;; + esac + + case $arch in + i[3456]86*|x86_64*|ppc*|ppc64*|s390*|arm*|aarch64*|mips*) + CONFIG_FLAGS="$CONFIG_FLAGS --enable-gnu-indirect-function" ;; + esac + +%ifnarch %{mips} + case $arch in + mips*) ;; + *) CONFIG_FLAGS="$CONFIG_FLAGS --with-linker-hash-style=gnu" ;; + esac +%endif + + mkdir $build_dir + cd $build_dir + + # We could optimize the cross builds size by --enable-shared but the produced + # binaries may be less convenient in the embedded environment. + CC="$CC" \ + CXX="$CXX" \ + CFLAGS="$OPT_FLAGS" \ + CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \ + | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \ + CFLAGS_FOR_TARGET="-g -O2 -Wall -fexceptions" \ + AR_FOR_TARGET=%{_bindir}/$arch-ar \ + AS_FOR_TARGET=%{_bindir}/$arch-as \ + DLLTOOL_FOR_TARGET=%{_bindir}/$arch-dlltool \ + LD_FOR_TARGET=%{_bindir}/$arch-ld \ + NM_FOR_TARGET=%{_bindir}/$arch-nm \ + OBJDUMP_FOR_TARGET=%{_bindir}/$arch-objdump \ + RANLIB_FOR_TARGET=%{_bindir}/$arch-ranlib \ + READELF_FOR_TARGET=%{_bindir}/$arch-readelf \ + STRIP_FOR_TARGET=%{_bindir}/$arch-strip \ + WINDRES_FOR_TARGET=%{_bindir}/$arch-windres \ + WINDMC_FOR_TARGET=%{_bindir}/$arch-windmc \ + LDFLAGS='-Wl,-z,relro ' \ + ../%{srcdir}/configure \ + --bindir=%{_bindir} \ + --build=%{_target_platform} \ + --datadir=%{_datadir} \ + --disable-decimal-float \ + --disable-dependency-tracking \ + --disable-gold \ + --disable-libgcj \ + --disable-libgomp \ + --disable-libmpx \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libunwind-exceptions \ + --disable-shared \ + --disable-silent-rules \ + --disable-sjlj-exceptions \ + --disable-threads \ + --with-ld=/usr/bin/$arch-ld \ + --enable-__cxa_atexit \ + --enable-checking=release \ + --enable-gnu-unique-object \ + --enable-initfini-array \ + --enable-languages=c,c++ \ + --enable-linker-build-id \ + --enable-lto \ + --enable-nls \ + --enable-obsolete \ + --enable-plugin \ +%ifarch ppc ppc64 ppc64le ppc64p7 + --enable-secureplt \ +%endif + --enable-targets=all \ + --exec-prefix=%{_exec_prefix} \ + --host=%{_target_platform} \ + --includedir=%{_includedir} \ + --infodir=%{_infodir} \ + --libexecdir=%{_libexecdir} \ + --localstatedir=%{_localstatedir} \ + --mandir=%{_mandir} \ + --prefix=%{_prefix} \ + --program-prefix=$prefix \ + --sbindir=%{_sbindir} \ + --sharedstatedir=%{_sharedstatedir} \ + --sysconfdir=%{_sysconfdir} \ + --target=$target \ + --with-bugurl=http://bugzilla.redhat.com/bugzilla/ \ + --with-gcc-major-version-only \ + --with-isl \ + --with-newlib \ + --with-plugin-ld=%{_bindir}/$arch-ld \ + --with-sysroot=%{_prefix}/$arch/sys-root \ + --with-system-libunwind \ + --with-system-zlib \ + --without-headers \ + $CONFIG_FLAGS +%if 0 + --libdir=%{_libdir} # we want stuff in /usr/lib/gcc/ not /usr/lib64/gcc +%endif + + cd .. +} + +for target in `cat target.list` +do + config_target $target +done + +function build_target () { + echo "=== BUILDING $1" + + arch=$1 + build_dir=$1 + + BUILD_FLAGS= + case $arch in + x86_64-*) + BUILD_FLAGS="gcc_cv_libc_provides_ssp=yes gcc_cv_as_ix86_tlsldm=yes" + ;; + esac + + AR_FOR_TARGET=%{_bindir}/$arch-ar \ + AS_FOR_TARGET=%{_bindir}/$arch-as \ + DLLTOOL_FOR_TARGET=%{_bindir}/$arch-dlltool \ + LD_FOR_TARGET=%{_bindir}/$arch-ld \ + NM_FOR_TARGET=%{_bindir}/$arch-nm \ + OBJDUMP_FOR_TARGET=%{_bindir}/$arch-objdump \ + RANLIB_FOR_TARGET=%{_bindir}/$arch-ranlib \ + READELF_FOR_TARGET=%{_bindir}/$arch-readelf \ + STRIP_FOR_TARGET=%{_bindir}/$arch-strip \ + WINDRES_FOR_TARGET=%{_bindir}/$arch-windres \ + WINDMC_FOR_TARGET=%{_bindir}/$arch-windmc \ + make -C $build_dir %{_smp_mflags} tooldir=%{_prefix} $BUILD_FLAGS all-gcc + + echo "=== BUILDING LIBGCC $1" + case $arch in + %{no_libgcc_targets}) + ;; + *) + make -C $build_dir tooldir=%{_prefix} all-target-libgcc + ;; + esac + +} + +for target in `cat target.list` +do + build_target $target +done + +############################################################################### +# +# Installation +# +############################################################################### +%install +rm -rf %{buildroot} + +function install_bin () { + echo "=== INSTALLING $1" + + arch=$1 + cpu=${1%%%%-*} + + case $arch in + %{no_libgcc_targets}) with_libgcc="";; + *) with_libgcc="install-target-libgcc";; + esac + + make -C $arch DESTDIR=%{buildroot} install-gcc ${with_libgcc} + + # We want links for ppc and ppc64 also if we make powerpc, powerpc64 or powerpc64le + case $cpu in + powerpc*) + cd %{buildroot}/usr/bin + for i in $cpu-* + do + ln -s $i ppc${i#powerpc} + done + cd - + ;; + esac +} + +for target in `cat target.list` +do + mkdir -p %{buildroot}%{_prefix}/$target/sys-root + install_bin $target +done + +grep ^powerpc target.list | sed -e s/powerpc/ppc/ >symlink-target.list + +# For cross-gcc we drop the documentation. +rm -rf %{buildroot}%{_infodir} + +# Remove binaries we will not be including, so that they don't end up in +# gcc-debuginfo +rm -f %{buildroot}%{_libdir}/{libffi*,libiberty.a} +rm -f %{buildroot}%{_libexecdir}/gcc/*/%{gcc_major}/install-tools/{mkheaders,fixincl} +rm -f %{buildroot}%{_prefix}/bin/*-gcc-%{gcc_major} || : +rmdir %{buildroot}%{_includedir} + +find %{buildroot}%{_datadir} -name gcc.mo | +while read x +do + y=`dirname $x` + mv $x $y/%{cross}-gcc.mo +done + +%find_lang %{cross}-gcc + +gzip %{buildroot}%{_mandir}/man1/*.1 +rm %{buildroot}%{_mandir}/man7/*.7 +rmdir %{buildroot}%{_mandir}/man7 + +# All the installed manual pages and translation files for each program are the +# same, so symlink them to the common package +cd %{buildroot}%{_mandir}/man1 +for i in %{cross}-cpp.1.gz %{cross}-gcc.1.gz %{cross}-g++.1.gz %{cross}-gcov.1.gz +do + j=${i#%{cross}-} + + for k in *-$j + do + if [ $k != $i -a ! -L $k ] + then + mv $k $i + ln -s $i $k + fi + done +done + +# Add manpages the additional symlink-only targets +%if %{build_powerpc}%{build_powerpc64}%{build_powerpc64le} +for i in powerpc* +do + ln -s $i ppc${i#powerpc} +done +%endif + +cd - + +function install_lang () { + arch=$1 + cpu=${arch%%%%-*} + + case $cpu in + avr32) target_cpu=avr;; + bfin) target_cpu=bfin;; + h8300) target_cpu=h8300;; + mn10300) target_cpu=am33_2.0;; + openrisc) target_cpu=or1k;; + parisc) target_cpu=hppa;; + score) target_cpu=score;; + tile) target_cpu=tilegx;; + v850) target_cpu=v850e;; + x86) target_cpu=x86_64;; + *) target_cpu=$cpu;; + esac + + ( + echo '%{_bindir}/'$arch'*-cpp' + echo '%{_bindir}/'$arch'*-gcc' + echo '%{_bindir}/'$arch'*-gcc-ar' + echo '%{_bindir}/'$arch'*-gcc-nm' + echo '%{_bindir}/'$arch'*-gcc-ranlib' + echo '%{_bindir}/'$arch'*-gcov*' + echo '%{_bindir}/'$arch'*-lto-dump' + echo '%{_mandir}/man1/'$arch'*-cpp*' + echo '%{_mandir}/man1/'$arch'*-gcc*' + echo '%{_mandir}/man1/'$arch'*-gcov*' + echo '%{_mandir}/man1/'$arch'*-lto-dump*' + case $cpu in + ppc*|ppc64*) + ;; + *) + echo '/usr/lib/gcc/'$target_cpu'-*/' + echo '%{_libexecdir}/gcc/'$target_cpu'*/*/cc1' + echo '%{_libexecdir}/gcc/'$target_cpu'*/*/collect2' + echo '%{_libexecdir}/gcc/'$target_cpu'*/*/[abd-z]*' + echo %{_prefix}/$arch/sys-root + ;; + esac + + ) >files.$arch + + ( + echo '%{_bindir}/'$arch'*-c++' + echo '%{_bindir}/'$arch'*-g++' + echo '%{_mandir}/man1/'$arch'*-g++*' + case $cpu in + ppc*|ppc64*) + ;; + *) + echo '%{_libexecdir}/gcc/'$target_cpu'*/*/cc1plus' + esac + ) >files-c++.$arch +} + +for target in `cat target.list symlink-target.list` +do + install_lang $target +done + +%global __ar_no_strip $RPM_BUILD_DIR/%{srcdir}/ar-no-strip +cat >%{__ar_no_strip} < - 11.2.1-1 +- Update to gcc 11.2.1 + +* Sat Jul 24 2021 Peter Robinson - 11.1.1-1 +- Update to gcc 11.1.1 +- Enable OpenRISC (or1k) support +- Disable sh/crui support + +* Wed Jul 21 2021 Fedora Release Engineering - 10.2.1-3.3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Mar 11 2021 Dan HorĂ¡k - 10.2.1-3.2 +- reduce debuginfo verbosity + +* Tue Jan 26 2021 Fedora Release Engineering - 10.2.1-3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Sep 04 2020 Peter Robinson - 10.2.1-3 +- GCC 10.2.0 release + +* Sat Aug 01 2020 Fedora Release Engineering - 10.1.1-2.2 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 10.1.1-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 20 2020 Jeff Law - 10.1.1-2 +- Fix broken configure files compromised by LTO +- Add autoconf to BuildRequires + +* Fri May 08 2020 Peter Robinson - 10.1.1-1 +- GCC 10.1.0 release + +* Thu Apr 30 2020 Peter Robinson - 10.0.1-0.13 +- Update to gcc 10 snapshot 0.13 + +* Tue Jan 28 2020 Fedora Release Engineering - 9.2.1-3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Sat Dec 14 2019 Jeff Law - 9.2.1-3 +- Fix unprintable control character in PA backend caught by gcc-10 + +* Wed Oct 9 2019 Jerry James - 9.2.1-2 +- Rebuild for mpfr 4 + +* Tue Aug 27 2019 Peter Robinson 9.2.1-1 +- Sync with gcc-9.2.1-1 + +* Wed Jul 24 2019 Fedora Release Engineering - 9.1.1-2.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Mon Jun 10 2019 Tom Callaway - 9.1.1-2 +- remove shared support from arm (glibc-arm-linux-gnu is dead) + +* Sun May 26 2019 Peter Robinson 9.1.1-1 +- Sync with gcc-9.1.1-1 + +* Thu Jan 31 2019 Fedora Release Engineering - 8.2.1-1.2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Nov 7 2018 Tom Callaway - 8.2.1-1 +- update to 8.2.1 + +* Thu Jul 12 2018 Fedora Release Engineering - 8.1.1-3.1 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Jul 12 2018 David Howells - 8.1.1-3 +- Change ARC to multilib (#1600183). +- Fix arc700 cpu type (#1600183). + +* Wed Jul 11 2018 David Howells - 8.1.1-3 +- Switch ARC to arc-linux-gnu and use hs38 not arc700 (#1600183). + +* Tue Jul 10 2018 David Howells - 8.1.1-2 +- Sync with gcc-8.1.1-4. +- Add support for the ARC arch (#1599744). + +* Tue May 29 2018 David Howells - 8.1.1-1 +- Sync with gcc-8.1.1-1. + +* Fri Mar 30 2018 David Howells - 8.0.1-0.1 +- Move to gcc-8 (#1580076).