Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4183dfd499 | ||
|
|
41d964c325 | ||
|
|
e4a8d55cc9 | ||
|
|
47360a941f |
5 changed files with 271 additions and 5 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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: 4%{?dist}
|
||||
Release: 1%{?dist}
|
||||
Summary: GNU GCC for cross-compilation for %{target} target
|
||||
|
||||
# Most of the sources are licensed under GPLv3+ with these exceptions:
|
||||
|
|
@ -31,11 +31,15 @@ Source0: gcc-%{gcc_ver}.tar.xz
|
|||
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}
|
||||
|
|
@ -57,7 +61,17 @@ compile c++ code for the %{target} platform, instead of for the native
|
|||
|
||||
%prep
|
||||
%setup -q -c
|
||||
%patch0 -p1
|
||||
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-%{gcc_ver}/intl
|
||||
autoconf -f
|
||||
popd
|
||||
pushd gcc-%{gcc_ver}
|
||||
|
||||
contrib/gcc_update --touch
|
||||
|
|
@ -86,6 +100,11 @@ sed -e 's,^[ ]*/usr/lib/rpm.*/brp-strip,./brp-strip,' \
|
|||
|
||||
|
||||
%build
|
||||
# This package's testsuite fails on s390 when LTO is enabled. Disable
|
||||
# LTO for now on s390x until the root cause is identified
|
||||
%ifarch s390x
|
||||
%define _lto_cflags %{nil}
|
||||
%endif
|
||||
mkdir -p gcc-%{target} gcc-nano-%{target}
|
||||
|
||||
#### normal version
|
||||
|
|
@ -282,6 +301,35 @@ 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
|
||||
|
||||
* Sat Aug 01 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:9.2.0-7
|
||||
- Second attempt - Rebuilt for
|
||||
https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:9.2.0-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jul 20 2020 Jeff Law <law@redhat.com> - 1:9.2.0-5
|
||||
- Fix broken configured tests compromised by LTO
|
||||
- Add autoconf to BuildRequires
|
||||
|
||||
* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:9.2.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
|
|
|
|||
44
gcc-config.patch
Normal file
44
gcc-config.patch
Normal file
|
|
@ -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
|
||||
172
gcc11.patch
Normal file
172
gcc11.patch
Normal 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;
|
||||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (gcc-9.2.0.tar.xz) = a12dff52af876aee0fd89a8d09cdc455f35ec46845e154023202392adc164848faf8ee881b59b681b696e27c69fd143a214014db4214db62f9891a1c8365c040
|
||||
SHA512 (gcc-10.3.0.tar.xz) = 2b2dd7453d48a398c29eaebd1422b70341001b8c90a62aee51e83344e7fdd8a8e45f82a4a9165bd7edc76dada912c932f4b6632c5636760fec4c5d7e402b3f86
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue