diff --git a/.gitignore b/.gitignore index dd1b09d..6b0e3d9 100644 --- a/.gitignore +++ b/.gitignore @@ -11,13 +11,4 @@ /gcc-7.4.0.tar.xz /gcc-9.2.0.tar.xz /gcc-10.2.0.tar.xz -/gcc-11.1.0.tar.xz -/gcc-11.3.0.tar.xz -/gcc-12.1.0.tar.xz -/gcc-12.2.0.tar.xz -/gcc-12.3.0.tar.xz -/gcc-13.1.0.tar.xz -/gcc-13.2.0.tar.xz -/gcc-14.1.0.tar.xz -/gcc-15.1.0.tar.xz -/gcc-15.2.0.tar.xz +/gcc-10.3.0.tar.xz diff --git a/arm-none-eabi-gcc-cs.spec b/arm-none-eabi-gcc-cs.spec index c4a329a..b19e202 100644 --- a/arm-none-eabi-gcc-cs.spec +++ b/arm-none-eabi-gcc-cs.spec @@ -1,7 +1,7 @@ %global processor_arch arm %global target %{processor_arch}-none-eabi -%global gcc_ver %{version} -%global gcc_short_ver 15.1 +%global gcc_ver 10.3.0 +%global gcc_short_ver 10.3 # we need newlib to compile complete gcc, but we need gcc to compile newlib, # so compile minimal gcc first @@ -9,17 +9,32 @@ Name: %{target}-gcc-cs Epoch: 1 -Version: 15.2.0 -Release: 2%{?dist} +Version: %{gcc_ver} +Release: 1%{?dist} Summary: GNU GCC for cross-compilation for %{target} target -License: GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-2.0-or-later AND MIT AND BSD-2-Clause + +# Most of the sources are licensed under GPLv3+ with these exceptions: +# LGPLv2+ libquadmath/ libjava/libltdl/ gcc/testsuite/objc.dg/gnu-encoding/generate-random +# libgcc/soft-fp/ libffi/msvcc.sh +# LGPLv3+ gcc/prefix.c +# BSD libgo/go/regexp/testdata/testregex.cz zlib/example.c libffi/ +# libjava/classpath/external/relaxngDatatype/org/relaxng/datatype/helpers/DatatypeLibraryLoader.java +# GPLv2+ libitm/testsuite/libitm.c/memset-1.c libjava/ +# Public Domain libjava/classpath/external/sax/org/xml/sax/ext/EntityResolver2.java +# libjava/classpath/external/sax/org/xml/sax/ext/DeclHandler.java +# BSL zlib/contrib/dotzlib/DotZLib/GZipStream.cs +License: GPLv2+ and GPLv3+ and LGPLv2+ and BSD URL: https://gcc.gnu.org/ -Source0: http://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-%{version}.tar.xz + +Source0: gcc-%{gcc_ver}.tar.xz Source1: README.fedora Source2: bootstrapexplain +Patch0: gcc10.patch +Patch1: gcc-config.patch +Patch2: gcc11.patch -#BuildRequires: autoconf = 2.69 +BuildRequires: autoconf BuildRequires: gcc-c++ BuildRequires: %{target}-binutils >= 2.21, zlib-devel gmp-devel mpfr-devel libmpc-devel flex autogen %if ! %{bootstrap} @@ -29,12 +44,6 @@ BuildRequires: make Requires: %{target}-binutils >= 2.21 Provides: %{target}-gcc = %{gcc_ver} -%if 0%{?fedora} > 39 -# as per https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval -# ppl-devel is no longer available for 32bit, so we have to skip it too -ExcludeArch: %{ix86} -%endif - %description This is a Cross Compiling version of GNU GCC, which can be used to compile for the %{target} platform, instead of for the @@ -52,8 +61,16 @@ compile c++ code for the %{target} platform, instead of for the native %prep %setup -q -c +pushd gcc-%{gcc_ver} +#%patch0 -p2 -b .gcc10fix +%patch1 -p2 -b .gccconfig +%patch2 -p1 -b .gcc11fix +popd pushd gcc-%{gcc_ver}/libiberty -#autoconf -f +autoconf -f +popd +pushd gcc-%{gcc_ver}/intl +autoconf -f popd pushd gcc-%{gcc_ver} @@ -93,10 +110,8 @@ mkdir -p gcc-%{target} gcc-nano-%{target} #### normal version pushd gcc-%{target} -FILTERED_RPM_OPT_FLAGS=$(echo "${RPM_OPT_FLAGS}" | sed 's/Werror=format-security/Wno-format-security/g') -export CFLAGS=$FILTERED_RPM_OPT_FLAGS -export CXXFLAGS=$FILTERED_RPM_OPT_FLAGS -CC="%{__cc} ${FILTERED_RPM_OPT_FLAGS} -fno-stack-protector" \ + +CC="%{__cc} ${RPM_OPT_FLAGS} -fno-stack-protector" \ ../gcc-%{gcc_ver}/configure --prefix=%{_prefix} --mandir=%{_mandir} \ --with-pkgversion="Fedora %{version}-%{release}" \ --with-bugurl="https://bugzilla.redhat.com/" \ @@ -243,7 +258,6 @@ rm -rf $RPM_BUILD_ROOT/%{_datadir}/gcc-%{gcc_ver} ||: %check -exit 0 # broken test, temporarily disable %if %{bootstrap} exit 0 %endif @@ -287,101 +301,8 @@ popd %endif %changelog -* Fri Jan 16 2026 Fedora Release Engineering - 1:15.2.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Thu Sep 18 2025 Michal Hlavinka - 1:15.2.0-1 -- updated to 15.2.0 - -* Wed Jul 23 2025 Fedora Release Engineering - 1:15.1.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Wed May 21 2025 Michal Hlavinka - 1:15.1.0-2 -- rebuild with refreshed newlib library - -* Mon May 19 2025 Michal Hlavinka - 1:15.1.0-1 -- updated to 15.1.0 - -* Tue Apr 15 2025 Michal Hlavinka - 1:14.1.0-4 -- rebuild for new arm-none-eabi-newlib - -* Thu Jan 16 2025 Fedora Release Engineering - 1:14.1.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Wed Jul 17 2024 Fedora Release Engineering - 1:14.1.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Wed May 22 2024 Michal Hlavinka - 1:14.1.0-1 -- full build of gcc 14.1 - -* Wed May 22 2024 Michal Hlavinka - 1:14.1.0-0 -- updated to 14.1.0, bootstrap build, do not use - -* Tue Mar 19 2024 Michal Hlavinka - 1:13.2.0-5 -- drop i686 build as not all i686 requirements are available anymore - -* Tue Mar 19 2024 Michal Hlavinka - 1:13.2.0-4 -- rebuild with updated newlib - -* Mon Jan 22 2024 Fedora Release Engineering - 1:13.2.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Fri Jan 19 2024 Fedora Release Engineering - 1:13.2.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Tue Aug 29 2023 Michal Hlavinka - 1:13.2.0-1 -- updated to 13.2.0 - -* Wed Jul 19 2023 Fedora Release Engineering - 1:13.1.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Wed Jul 12 2023 Michal Hlavinka - 1:13.1.0-1 -- updated to 13.1.0 - -* Wed May 24 2023 Michal Hlavinka - 1:12.3.0-1 -- updated to 12.3.0 - -* Wed May 10 2023 Michal Hlavinka - 1:12.2.0-5 -- update license tag format (SPDX migration) for https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_1 - -* Wed Apr 12 2023 Michal Hlavinka - 1:12.2.0-4 -- rebuild for updated newlib package - -* Thu Jan 19 2023 Florian Weimer - 1:12.2.0-3 -- Backport upstream patches for improved C99 compatibility - -* Wed Jan 18 2023 Fedora Release Engineering - 1:12.2.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - -* Tue Aug 23 2022 Michal Hlavinka - 1:12.2.0-1 -- updated to 12.2.0 - -* Tue Aug 02 2022 Michal Hlavinka - 1:12.1.0-2 -- fix FTBFS (#2113112) - -* Wed Jul 27 2022 Michal Hlavinka - 1:12.1.0-1 -- updated to 12.1.0 - -* Wed Jul 20 2022 Fedora Release Engineering - 1:11.3.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Wed Jun 01 2022 Michal Hlavinka - 1:11.3.0-1 -- updated to 11.3.0 - -* Wed Jan 19 2022 Fedora Release Engineering - 1:11.1.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Wed Jul 21 2021 Fedora Release Engineering - 1:11.1.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Tue May 04 2021 Michal Hlavinka - 1:11.1.0-1 -- regular build for 11.1.0 - -* Tue May 04 2021 Michal Hlavinka - 1:11.1.0-0 -- bootstrap build for 11.1.0 - -* Sun Apr 11 2021 Michal Hlavinka - 1:10.2.0-5 -- add explicit requirement for autoconf 2.69 +* Tue May 04 2021 Michal Hlavinka - 1:10.3.0-1 +- updated to 10.3.0 * Wed Feb 24 2021 Jeff Law - 1:10.2.0-4 - Packport fix for libbacktrace's handling of dwarf-5 diff --git a/gcc-config.patch b/gcc-config.patch new file mode 100644 index 0000000..b7ec9ed --- /dev/null +++ b/gcc-config.patch @@ -0,0 +1,44 @@ +diff -Nrup a/gcc-9.2.0/libiberty/aclocal.m4 b/libiberty/aclocal.m4 +--- a/gcc-9.2.0/libiberty/aclocal.m4 2019-01-19 09:01:34.000000000 -0700 ++++ b/gcc-9.2.0/libiberty/aclocal.m4 2020-01-09 22:00:27.183312982 -0700 +@@ -147,7 +147,7 @@ if test $ac_cv_os_cray = yes; then + 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 a/config/intdiv0.m4 b/gcc-9.2.0/config/intdiv0.m4 +index 55dddcf1..ba906efc 100644 +--- a/gcc-9.2.0/config/intdiv0.m4 ++++ b/gcc-9.2.0/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 a/gcc-9.2.0/libiberty/configure.ac b/gcc-9.2.0/libiberty/configure.ac +index f1ce7601..fc20d228 100644 +--- a/gcc-9.2.0/libiberty/configure.ac ++++ b/gcc-9.2.0/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/gcc10.patch b/gcc10.patch new file mode 100644 index 0000000..5c70f1f --- /dev/null +++ b/gcc10.patch @@ -0,0 +1,14 @@ +diff -Nrup a/gcc-9.2.0/libbacktrace/edtest.c b/gcc-9.2.0/libbacktrace/edtest.c +--- a/gcc-9.2.0/libbacktrace/edtest.c 2019-01-01 05:31:55.000000000 -0700 ++++ b/gcc-9.2.0/libbacktrace/edtest.c 2019-10-31 14:26:22.808494361 -0600 +@@ -43,8 +43,8 @@ POSSIBILITY OF SUCH DAMAGE. */ + + #include "testlib.h" + +-static int test1 (void) __attribute__ ((noinline, unused)); +-static int test1 (void) __attribute__ ((noinline, unused)); ++static int test1 (void) __attribute__ ((noinline, noclone, unused)); ++static int test1 (void) __attribute__ ((noinline, noclone, unused)); + extern int f2 (int); + extern int f3 (int, int); + diff --git a/gcc11.patch b/gcc11.patch new file mode 100644 index 0000000..aaf7f0a --- /dev/null +++ b/gcc11.patch @@ -0,0 +1,172 @@ +commit 325e70b47c6c321710c7b9c792b8fbee95cecd63 +Author: Ian Lance Taylor +Date: Mon Jan 18 14:38:10 2021 -0800 + + libbacktrace: use correct directory/filename for DWARF 5 + + PR debug/98716 + * dwarf.c (read_v2_paths): Allocate zero entry for dirs and + filenames. + (read_line_program): Remove parameter u, change caller. Don't + subtract one from dirs and filenames index. + (read_function_entry): Don't subtract one from filenames index. + +diff --git a/libbacktrace/dwarf.c b/libbacktrace/dwarf.c +index 3d0cbedf770..9097df6cc76 100644 +--- a/libbacktrace/dwarf.c ++++ b/libbacktrace/dwarf.c +@@ -2344,19 +2344,20 @@ read_v2_paths (struct backtrace_state *state, struct unit *u, + ++hdr->dirs_count; + } + +- hdr->dirs = NULL; +- if (hdr->dirs_count != 0) +- { +- hdr->dirs = ((const char **) +- backtrace_alloc (state, +- hdr->dirs_count * sizeof (const char *), +- hdr_buf->error_callback, +- hdr_buf->data)); +- if (hdr->dirs == NULL) +- return 0; +- } ++ /* The index of the first entry in the list of directories is 1. Index 0 is ++ used for the current directory of the compilation. To simplify index ++ handling, we set entry 0 to the compilation unit directory. */ ++ ++hdr->dirs_count; ++ hdr->dirs = ((const char **) ++ backtrace_alloc (state, ++ hdr->dirs_count * sizeof (const char *), ++ hdr_buf->error_callback, ++ hdr_buf->data)); ++ if (hdr->dirs == NULL) ++ return 0; + +- i = 0; ++ hdr->dirs[0] = u->comp_dir; ++ i = 1; + while (*hdr_buf->buf != '\0') + { + if (hdr_buf->reported_underflow) +@@ -2383,6 +2384,10 @@ read_v2_paths (struct backtrace_state *state, struct unit *u, + ++hdr->filenames_count; + } + ++ /* The index of the first entry in the list of file names is 1. Index 0 is ++ used for the DW_AT_name of the compilation unit. To simplify index ++ handling, we set entry 0 to the compilation unit file name. */ ++ ++hdr->filenames_count; + hdr->filenames = ((const char **) + backtrace_alloc (state, + hdr->filenames_count * sizeof (char *), +@@ -2390,7 +2395,8 @@ read_v2_paths (struct backtrace_state *state, struct unit *u, + hdr_buf->data)); + if (hdr->filenames == NULL) + return 0; +- i = 0; ++ hdr->filenames[0] = u->filename; ++ i = 1; + while (*hdr_buf->buf != '\0') + { + const char *filename; +@@ -2404,7 +2410,7 @@ read_v2_paths (struct backtrace_state *state, struct unit *u, + return 0; + dir_index = read_uleb128 (hdr_buf); + if (IS_ABSOLUTE_PATH (filename) +- || (dir_index == 0 && u->comp_dir == NULL)) ++ || (dir_index < hdr->dirs_count && hdr->dirs[dir_index] == NULL)) + hdr->filenames[i] = filename; + else + { +@@ -2413,10 +2419,8 @@ read_v2_paths (struct backtrace_state *state, struct unit *u, + size_t filename_len; + char *s; + +- if (dir_index == 0) +- dir = u->comp_dir; +- else if (dir_index - 1 < hdr->dirs_count) +- dir = hdr->dirs[dir_index - 1]; ++ if (dir_index < hdr->dirs_count) ++ dir = hdr->dirs[dir_index]; + else + { + dwarf_buf_error (hdr_buf, +@@ -2704,8 +2708,8 @@ read_line_header (struct backtrace_state *state, struct dwarf_data *ddata, + + static int + read_line_program (struct backtrace_state *state, struct dwarf_data *ddata, +- struct unit *u, const struct line_header *hdr, +- struct dwarf_buf *line_buf, struct line_vector *vec) ++ const struct line_header *hdr, struct dwarf_buf *line_buf, ++ struct line_vector *vec) + { + uint64_t address; + unsigned int op_index; +@@ -2715,8 +2719,8 @@ read_line_program (struct backtrace_state *state, struct dwarf_data *ddata, + + address = 0; + op_index = 0; +- if (hdr->filenames_count > 0) +- reset_filename = hdr->filenames[0]; ++ if (hdr->filenames_count > 1) ++ reset_filename = hdr->filenames[1]; + else + reset_filename = ""; + filename = reset_filename; +@@ -2781,10 +2785,8 @@ read_line_program (struct backtrace_state *state, struct dwarf_data *ddata, + size_t f_len; + char *p; + +- if (dir_index == 0 && hdr->version < 5) +- dir = u->comp_dir; +- else if (dir_index - 1 < hdr->dirs_count) +- dir = hdr->dirs[dir_index - 1]; ++ if (dir_index < hdr->dirs_count) ++ dir = hdr->dirs[dir_index]; + else + { + dwarf_buf_error (line_buf, +@@ -2851,14 +2853,14 @@ read_line_program (struct backtrace_state *state, struct dwarf_data *ddata, + filename = ""; + else + { +- if (fileno - 1 >= hdr->filenames_count) ++ if (fileno >= hdr->filenames_count) + { + dwarf_buf_error (line_buf, + ("invalid file number in " + "line number program")); + return 0; + } +- filename = hdr->filenames[fileno - 1]; ++ filename = hdr->filenames[fileno]; + } + } + break; +@@ -2948,7 +2950,7 @@ read_line_info (struct backtrace_state *state, struct dwarf_data *ddata, + if (!read_line_header (state, ddata, u, is_dwarf64, &line_buf, hdr)) + goto fail; + +- if (!read_line_program (state, ddata, u, hdr, &line_buf, &vec)) ++ if (!read_line_program (state, ddata, hdr, &line_buf, &vec)) + goto fail; + + if (line_buf.reported_underflow) +@@ -3289,7 +3291,7 @@ read_function_entry (struct backtrace_state *state, struct dwarf_data *ddata, + function->caller_filename = ""; + else + { +- if (val.u.uint - 1 >= lhdr->filenames_count) ++ if (val.u.uint >= lhdr->filenames_count) + { + dwarf_buf_error (unit_buf, + ("invalid file number in " +@@ -3297,7 +3299,7 @@ read_function_entry (struct backtrace_state *state, struct dwarf_data *ddata, + return 0; + } + function->caller_filename = +- lhdr->filenames[val.u.uint - 1]; ++ lhdr->filenames[val.u.uint]; + } + } + break; diff --git a/sources b/sources index d34669e..b173009 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gcc-15.2.0.tar.xz) = 89047a2e07bd9da265b507b516ed3635adb17491c7f4f67cf090f0bd5b3fc7f2ee6e4cc4008beef7ca884b6b71dffe2bb652b21f01a702e17b468cca2d10b2de +SHA512 (gcc-10.3.0.tar.xz) = 2b2dd7453d48a398c29eaebd1422b70341001b8c90a62aee51e83344e7fdd8a8e45f82a4a9165bd7edc76dada912c932f4b6632c5636760fec4c5d7e402b3f86