Compare commits

...
Sign in to create a new pull request.

4 commits

Author SHA1 Message Date
Michal Hlavinka
cecf6ea815 updated to 10.3.0 2021-05-05 12:30:42 +02:00
Michal Hlavinka
03e5fe110a regular build for 10.2.0 2020-11-05 21:43:52 +01:00
Michal Hlavinka
150e542f13 bootstrap build first 2020-11-05 17:42:08 +01:00
Michal Hlavinka
b687c169f8 regular build for 10.2.0 2020-11-05 17:32:31 +01:00
4 changed files with 202 additions and 8 deletions

2
.gitignore vendored
View file

@ -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

View file

@ -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 <mhlavink@redhat.com> - 1:10.3.0-1
- updated to 10.3.0
* Wed Feb 24 2021 Jeff Law <law@redhat.com> - 1:10.2.0-4
- Packport fix for libbacktrace's handling of dwarf-5
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1:10.2.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Nov 04 2020 Michal Hlavinka <mhlavink@redhat.com> - 1:10.2.0-2
- regular build for 10.2.0
* Wed Nov 04 2020 Michal Hlavinka <mhlavink@redhat.com> - 1:10.2.0-1
- bootstrap build for gcc 10.2.0
* Mon Aug 10 2020 Jeff Law <law@redhat.com> - 1:9.2.0-8
- Disable LTO on s390x for now

172
gcc11.patch Normal file
View file

@ -0,0 +1,172 @@
commit 325e70b47c6c321710c7b9c792b8fbee95cecd63
Author: Ian Lance Taylor <iant@golang.org>
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;

View file

@ -1 +1 @@
SHA512 (gcc-9.2.0.tar.xz) = a12dff52af876aee0fd89a8d09cdc455f35ec46845e154023202392adc164848faf8ee881b59b681b696e27c69fd143a214014db4214db62f9891a1c8365c040
SHA512 (gcc-10.3.0.tar.xz) = 2b2dd7453d48a398c29eaebd1422b70341001b8c90a62aee51e83344e7fdd8a8e45f82a4a9165bd7edc76dada912c932f4b6632c5636760fec4c5d7e402b3f86