diff --git a/.gitignore b/.gitignore index f6d84bc..6b0e3d9 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ /gcc-7.3.0.tar.xz /gcc-7.4.0.tar.xz /gcc-9.2.0.tar.xz +/gcc-10.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 8b229af..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 9.2.0 -%global gcc_short_ver 9.2 +%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 @@ -10,7 +10,7 @@ Name: %{target}-gcc-cs Epoch: 1 Version: %{gcc_ver} -Release: 8%{?dist} +Release: 1%{?dist} Summary: GNU GCC for cross-compilation for %{target} target # Most of the sources are licensed under GPLv3+ with these exceptions: @@ -32,12 +32,14 @@ Source1: README.fedora Source2: bootstrapexplain Patch0: gcc10.patch Patch1: gcc-config.patch +Patch2: gcc11.patch BuildRequires: autoconf BuildRequires: gcc-c++ BuildRequires: %{target}-binutils >= 2.21, zlib-devel gmp-devel mpfr-devel libmpc-devel flex autogen %if ! %{bootstrap} BuildRequires: %{target}-newlib +BuildRequires: make %endif Requires: %{target}-binutils >= 2.21 Provides: %{target}-gcc = %{gcc_ver} @@ -59,12 +61,15 @@ compile c++ code for the %{target} platform, instead of for the native %prep %setup -q -c -%patch0 -p1 -%patch1 -p1 -pushd gcc-9.2.0/libiberty +pushd gcc-%{gcc_ver} +#%patch0 -p2 -b .gcc10fix +%patch1 -p2 -b .gccconfig +%patch2 -p1 -b .gcc11fix +popd +pushd gcc-%{gcc_ver}/libiberty autoconf -f popd -pushd gcc-9.2.0/intl +pushd gcc-%{gcc_ver}/intl autoconf -f popd pushd gcc-%{gcc_ver} @@ -296,6 +301,21 @@ popd %endif %changelog +* 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 + +* Tue Jan 26 2021 Fedora Release Engineering - 1:10.2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Nov 04 2020 Michal Hlavinka - 1:10.2.0-2 +- regular build for 10.2.0 + +* Wed Nov 04 2020 Michal Hlavinka - 1:10.2.0-1 +- bootstrap build for gcc 10.2.0 + * Mon Aug 10 2020 Jeff Law - 1:9.2.0-8 - Disable LTO on s390x for now 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 9ccf65e..b173009 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (gcc-9.2.0.tar.xz) = a12dff52af876aee0fd89a8d09cdc455f35ec46845e154023202392adc164848faf8ee881b59b681b696e27c69fd143a214014db4214db62f9891a1c8365c040 +SHA512 (gcc-10.3.0.tar.xz) = 2b2dd7453d48a398c29eaebd1422b70341001b8c90a62aee51e83344e7fdd8a8e45f82a4a9165bd7edc76dada912c932f4b6632c5636760fec4c5d7e402b3f86