mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-24 06:56:40 +00:00
gcc: Add 13.1.0
Add gcc 13.1.0 with rebased patches against the new version. https://gcc.gnu.org/pipermail/gcc-announce/2023/000175.html https://gcc.gnu.org/gcc-13/changes.html https://gcc.gnu.org/gcc-13/porting_to.html Signed-off-by: Chris Packham <judge.packham@gmail.com>
This commit is contained in:
parent
8e55ab0607
commit
f00a45eba6
18
packages/gcc/13.1.0/0000-libtool-leave-framework-alone.patch
vendored
Normal file
18
packages/gcc/13.1.0/0000-libtool-leave-framework-alone.patch
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
libtool-ldflags | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/libtool-ldflags
|
||||
+++ b/libtool-ldflags
|
||||
@@ -36,6 +36,11 @@
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
+ -framework)
|
||||
+ # libtool handles this option. It should not be prefixed with
|
||||
+ # -Xcompiler, as that would split it from the argument that
|
||||
+ # follows.
|
||||
+ ;;
|
||||
-f*|--*|-static-lib*|-shared-lib*|-B*)
|
||||
# Libtool does not ascribe any special meaning options
|
||||
# that begin with -f or with a double-dash. So, it will
|
14
packages/gcc/13.1.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch
vendored
Normal file
14
packages/gcc/13.1.0/0001-gcc-plugin-POSIX-include-sys-select-h.patch
vendored
Normal file
@ -0,0 +1,14 @@
|
||||
---
|
||||
libcc1/connection.cc | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/libcc1/connection.cc
|
||||
+++ b/libcc1/connection.cc
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <string>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
+#include <sys/select.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include "marshall.hh"
|
31
packages/gcc/13.1.0/0002-arm-softfloat-libgcc.patch
vendored
Normal file
31
packages/gcc/13.1.0/0002-arm-softfloat-libgcc.patch
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
---
|
||||
gcc/config/arm/linux-elf.h | 2 +-
|
||||
libgcc/config/arm/t-linux | 7 ++++++-
|
||||
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/gcc/config/arm/linux-elf.h
|
||||
+++ b/gcc/config/arm/linux-elf.h
|
||||
@@ -58,7 +58,7 @@
|
||||
%{shared:-lc} \
|
||||
%{!shared:%{profile:-lc_p}%{!profile:-lc}}"
|
||||
|
||||
-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
|
||||
+#define LIBGCC_SPEC "-lgcc"
|
||||
|
||||
#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
|
||||
|
||||
--- a/libgcc/config/arm/t-linux
|
||||
+++ b/libgcc/config/arm/t-linux
|
||||
@@ -1,6 +1,11 @@
|
||||
LIB1ASMSRC = arm/lib1funcs.S
|
||||
LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
|
||||
- _ctzsi2 _arm_addsubdf3 _arm_addsubsf3
|
||||
+ _ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
|
||||
+ _arm_addsubdf3 _arm_addsubsf3 \
|
||||
+ _arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
|
||||
+ _arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
|
||||
+ _arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
|
||||
+ _arm_fixsfsi _arm_fixunssfsi
|
||||
|
||||
# Just for these, we omit the frame pointer since it makes such a big
|
||||
# difference.
|
17
packages/gcc/13.1.0/0003-libgcc-disable-split-stack-nothreads.patch
vendored
Normal file
17
packages/gcc/13.1.0/0003-libgcc-disable-split-stack-nothreads.patch
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
disable split-stack for non-thread builds
|
||||
|
||||
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
|
||||
|
||||
---
|
||||
libgcc/config/t-stack | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/libgcc/config/t-stack
|
||||
+++ b/libgcc/config/t-stack
|
||||
@@ -1,4 +1,6 @@
|
||||
# Makefile fragment to provide generic support for -fsplit-stack.
|
||||
# This should be used in config.host for any host which supports
|
||||
# -fsplit-stack.
|
||||
+ifeq ($(enable_threads),yes)
|
||||
LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c
|
||||
+endif
|
262
packages/gcc/13.1.0/0004-Remove-use-of-include_next-from-c-headers.patch
vendored
Normal file
262
packages/gcc/13.1.0/0004-Remove-use-of-include_next-from-c-headers.patch
vendored
Normal file
@ -0,0 +1,262 @@
|
||||
From fc4aaba8a3b8fe7815e103cc20f2a36d5de7e8ab Mon Sep 17 00:00:00 2001
|
||||
From: Keith Packard <keithp@keithp.com>
|
||||
Date: Sun, 24 Jan 2021 14:20:33 -0800
|
||||
Subject: [PATCH] Remove use of include_next from c++ headers
|
||||
|
||||
Using include_next bypasses the default header search path and lets
|
||||
files later in the include path take priority over earlier files.
|
||||
|
||||
This makes replacing libc impossible as the default libc headers will
|
||||
occur after the libstdc++ headers, and so be picked up in place of
|
||||
headers inserted at the begining of the search path or appended to the
|
||||
end of the search path.
|
||||
|
||||
Using include_next is a hack to work-around broken combinations of
|
||||
libraries, and is not necessary in a well constructed toolchain.
|
||||
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
libstdc++-v3/include/bits/std_abs.h | 4 ++--
|
||||
libstdc++-v3/include/c/cassert | 2 +-
|
||||
libstdc++-v3/include/c/cctype | 2 +-
|
||||
libstdc++-v3/include/c/cerrno | 2 +-
|
||||
libstdc++-v3/include/c/cfloat | 2 +-
|
||||
libstdc++-v3/include/c/climits | 2 +-
|
||||
libstdc++-v3/include/c/clocale | 2 +-
|
||||
libstdc++-v3/include/c/cmath | 2 +-
|
||||
libstdc++-v3/include/c/csetjmp | 2 +-
|
||||
libstdc++-v3/include/c/csignal | 2 +-
|
||||
libstdc++-v3/include/c/cstdarg | 2 +-
|
||||
libstdc++-v3/include/c/cstddef | 2 +-
|
||||
libstdc++-v3/include/c/cstdio | 2 +-
|
||||
libstdc++-v3/include/c/cstdlib | 2 +-
|
||||
libstdc++-v3/include/c/cstring | 2 +-
|
||||
libstdc++-v3/include/c/ctime | 2 +-
|
||||
libstdc++-v3/include/c/cuchar | 2 +-
|
||||
libstdc++-v3/include/c/cwchar | 2 +-
|
||||
libstdc++-v3/include/c/cwctype | 2 +-
|
||||
libstdc++-v3/include/c_global/cmath | 2 +-
|
||||
libstdc++-v3/include/c_global/cstdlib | 2 +-
|
||||
21 files changed, 22 insertions(+), 22 deletions(-)
|
||||
|
||||
--- a/libstdc++-v3/include/bits/std_abs.h
|
||||
+++ b/libstdc++-v3/include/bits/std_abs.h
|
||||
@@ -35,9 +35,9 @@
|
||||
#include <bits/c++config.h>
|
||||
|
||||
#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
|
||||
-#include_next <stdlib.h>
|
||||
+#include <stdlib.h>
|
||||
#ifdef __CORRECT_ISO_CPP_MATH_H_PROTO
|
||||
-# include_next <math.h>
|
||||
+# include <math.h>
|
||||
#endif
|
||||
#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
|
||||
|
||||
--- a/libstdc++-v3/include/c/cassert
|
||||
+++ b/libstdc++-v3/include/c/cassert
|
||||
@@ -31,4 +31,4 @@
|
||||
#pragma GCC system_header
|
||||
|
||||
#include <bits/c++config.h>
|
||||
-#include_next <assert.h>
|
||||
+#include <assert.h>
|
||||
--- a/libstdc++-v3/include/c/cctype
|
||||
+++ b/libstdc++-v3/include/c/cctype
|
||||
@@ -31,6 +31,6 @@
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
-#include_next <ctype.h>
|
||||
+#include <ctype.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/cerrno
|
||||
+++ b/libstdc++-v3/include/c/cerrno
|
||||
@@ -41,7 +41,7 @@
|
||||
#pragma GCC system_header
|
||||
|
||||
#include <bits/c++config.h>
|
||||
-#include_next <errno.h>
|
||||
+#include <errno.h>
|
||||
|
||||
// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
|
||||
#ifndef errno
|
||||
--- a/libstdc++-v3/include/c/cfloat
|
||||
+++ b/libstdc++-v3/include/c/cfloat
|
||||
@@ -32,6 +32,6 @@
|
||||
#pragma GCC system_header
|
||||
|
||||
#include <bits/c++config.h>
|
||||
-#include_next <float.h>
|
||||
+#include <float.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/climits
|
||||
+++ b/libstdc++-v3/include/c/climits
|
||||
@@ -32,6 +32,6 @@
|
||||
#pragma GCC system_header
|
||||
|
||||
#include <bits/c++config.h>
|
||||
-#include_next <limits.h>
|
||||
+#include <limits.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/clocale
|
||||
+++ b/libstdc++-v3/include/c/clocale
|
||||
@@ -31,6 +31,6 @@
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
-#include_next <locale.h>
|
||||
+#include <locale.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/cmath
|
||||
+++ b/libstdc++-v3/include/c/cmath
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
#include <bits/c++config.h>
|
||||
|
||||
-#include_next <math.h>
|
||||
+#include <math.h>
|
||||
|
||||
// Get rid of those macros defined in <math.h> in lieu of real functions.
|
||||
#undef abs
|
||||
--- a/libstdc++-v3/include/c/csetjmp
|
||||
+++ b/libstdc++-v3/include/c/csetjmp
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
-#include_next <setjmp.h>
|
||||
+#include <setjmp.h>
|
||||
|
||||
// Get rid of those macros defined in <setjmp.h> in lieu of real functions.
|
||||
#undef longjmp
|
||||
--- a/libstdc++-v3/include/c/csignal
|
||||
+++ b/libstdc++-v3/include/c/csignal
|
||||
@@ -31,6 +31,6 @@
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
-#include_next <signal.h>
|
||||
+#include <signal.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/cstdarg
|
||||
+++ b/libstdc++-v3/include/c/cstdarg
|
||||
@@ -32,6 +32,6 @@
|
||||
#pragma GCC system_header
|
||||
|
||||
#undef __need___va_list
|
||||
-#include_next <stdarg.h>
|
||||
+#include <stdarg.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/cstddef
|
||||
+++ b/libstdc++-v3/include/c/cstddef
|
||||
@@ -35,6 +35,6 @@
|
||||
#define __need_ptrdiff_t
|
||||
#define __need_NULL
|
||||
#define __need_offsetof
|
||||
-#include_next <stddef.h>
|
||||
+#include <stddef.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/cstdio
|
||||
+++ b/libstdc++-v3/include/c/cstdio
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
-#include_next <stdio.h>
|
||||
+#include <stdio.h>
|
||||
|
||||
// Get rid of those macros defined in <stdio.h> in lieu of real functions.
|
||||
#undef clearerr
|
||||
--- a/libstdc++-v3/include/c/cstdlib
|
||||
+++ b/libstdc++-v3/include/c/cstdlib
|
||||
@@ -31,6 +31,6 @@
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
-#include_next <stdlib.h>
|
||||
+#include <stdlib.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/cstring
|
||||
+++ b/libstdc++-v3/include/c/cstring
|
||||
@@ -31,6 +31,6 @@
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
-#include_next <string.h>
|
||||
+#include <string.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/ctime
|
||||
+++ b/libstdc++-v3/include/c/ctime
|
||||
@@ -31,6 +31,6 @@
|
||||
|
||||
#pragma GCC system_header
|
||||
|
||||
-#include_next <time.h>
|
||||
+#include <time.h>
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c/cuchar
|
||||
+++ b/libstdc++-v3/include/c/cuchar
|
||||
@@ -39,7 +39,7 @@
|
||||
#include <cwchar>
|
||||
|
||||
#if _GLIBCXX_USE_C11_UCHAR_CXX11
|
||||
-# include_next <uchar.h>
|
||||
+# include <uchar.h>
|
||||
#endif
|
||||
|
||||
#endif // C++11
|
||||
--- a/libstdc++-v3/include/c/cwchar
|
||||
+++ b/libstdc++-v3/include/c/cwchar
|
||||
@@ -36,7 +36,7 @@
|
||||
#include <ctime>
|
||||
|
||||
#if _GLIBCXX_HAVE_WCHAR_H
|
||||
-#include_next <wchar.h>
|
||||
+#include <wchar.h>
|
||||
#endif
|
||||
|
||||
// Need to do a bit of trickery here with mbstate_t as char_traits
|
||||
--- a/libstdc++-v3/include/c/cwctype
|
||||
+++ b/libstdc++-v3/include/c/cwctype
|
||||
@@ -34,7 +34,7 @@
|
||||
#include <bits/c++config.h>
|
||||
|
||||
#if _GLIBCXX_HAVE_WCTYPE_H
|
||||
-#include_next <wctype.h>
|
||||
+#include <wctype.h>
|
||||
#endif
|
||||
|
||||
#endif
|
||||
--- a/libstdc++-v3/include/c_global/cmath
|
||||
+++ b/libstdc++-v3/include/c_global/cmath
|
||||
@@ -44,7 +44,7 @@
|
||||
#include <bits/cpp_type_traits.h>
|
||||
#include <ext/type_traits.h>
|
||||
#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
|
||||
-#include_next <math.h>
|
||||
+#include <math.h>
|
||||
#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
|
||||
#include <bits/std_abs.h>
|
||||
|
||||
--- a/libstdc++-v3/include/c_global/cstdlib
|
||||
+++ b/libstdc++-v3/include/c_global/cstdlib
|
||||
@@ -76,7 +76,7 @@
|
||||
// Need to ensure this finds the C library's <stdlib.h> not a libstdc++
|
||||
// wrapper that might already be installed later in the include search path.
|
||||
#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
|
||||
-#include_next <stdlib.h>
|
||||
+#include <stdlib.h>
|
||||
#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
|
||||
#include <bits/std_abs.h>
|
||||
|
134
packages/gcc/13.1.0/0005-Allow-default-libc-to-be-specified-to-configure.patch
vendored
Normal file
134
packages/gcc/13.1.0/0005-Allow-default-libc-to-be-specified-to-configure.patch
vendored
Normal file
@ -0,0 +1,134 @@
|
||||
From ffb10db6fa080e4c225e16928aec052d4c0baa95 Mon Sep 17 00:00:00 2001
|
||||
From: Keith Packard <keithp@keithp.com>
|
||||
Date: Fri, 2 Sep 2022 23:07:05 -0700
|
||||
Subject: [PATCH] Allow default libc to be specified to configure
|
||||
|
||||
The default C library is normally computed based on the target
|
||||
triplet. However, for embedded systems, it can be useful to leave the
|
||||
triplet alone while changing which C library is used by default. Other
|
||||
C libraries may still be available on the system so the compiler and
|
||||
can be used by specifying suitable include and library paths at build
|
||||
time.
|
||||
|
||||
If an unknown --with-default-libc= value is provided, emit an error
|
||||
and stop.
|
||||
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
gcc/config.gcc | 48 ++++++++++++++++++++++++++++++++++++++++--------
|
||||
gcc/configure.ac | 4 ++++
|
||||
2 files changed, 44 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -664,6 +664,8 @@
|
||||
# Common C libraries.
|
||||
tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
|
||||
|
||||
+default_libc=""
|
||||
+
|
||||
# 32-bit x86 processors supported by --with-arch=. Each processor
|
||||
# MUST be separated by exactly one space.
|
||||
x86_archs="athlon athlon-4 athlon-fx athlon-mp athlon-tbird \
|
||||
@@ -870,16 +872,16 @@
|
||||
esac
|
||||
case $target in
|
||||
*-*-*android*)
|
||||
- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
|
||||
+ default_libc=LIBC_BIONIC
|
||||
;;
|
||||
*-*-*uclibc* | *-*-uclinuxfdpiceabi)
|
||||
- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
|
||||
+ default_libc=LIBC_UCLIBC
|
||||
;;
|
||||
*-*-*musl*)
|
||||
- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
|
||||
+ default_libc=LIBC_MUSL
|
||||
;;
|
||||
*)
|
||||
- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
|
||||
+ default_libc=LIBC_GLIBC
|
||||
;;
|
||||
esac
|
||||
# Assume that glibc or uClibc or Bionic are being used and so __cxa_atexit
|
||||
@@ -988,7 +990,8 @@
|
||||
case ${enable_threads} in
|
||||
"" | yes | posix) thread_file='posix' ;;
|
||||
esac
|
||||
- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC SINGLE_LIBC"
|
||||
+ tm_defines="$tm_defines SINGLE_LIBC"
|
||||
+ default_libc=LIBC_UCLIBC
|
||||
;;
|
||||
*-*-rdos*)
|
||||
use_gcc_stdint=wrap
|
||||
@@ -1652,13 +1655,13 @@
|
||||
|
||||
case ${target} in
|
||||
csky-*-linux-gnu*)
|
||||
- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
|
||||
+ default_libc=LIBC_GLIBC
|
||||
# Force .init_array support. The configure script cannot always
|
||||
# automatically detect that GAS supports it, yet we require it.
|
||||
gcc_cv_initfini_array=yes
|
||||
;;
|
||||
csky-*-linux-uclibc*)
|
||||
- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
|
||||
+ default_libc=LIBC_UCLIBC
|
||||
default_use_cxa_atexit=no
|
||||
;;
|
||||
*)
|
||||
@@ -3038,7 +3041,7 @@
|
||||
tmake_file="${tmake_file} t-linux rs6000/t-linux64 rs6000/t-fprules rs6000/t-ppccomm"
|
||||
tmake_file="${tmake_file} rs6000/t-vxworks"
|
||||
|
||||
- tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
|
||||
+ default_libc=LIBC_GLIBC
|
||||
extra_objs="$extra_objs linux.o rs6000-linux.o"
|
||||
;;
|
||||
powerpc-wrs-vxworks*)
|
||||
@@ -5879,3 +5882,32 @@
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
+
|
||||
+case "${with_default_libc}" in
|
||||
+glibc)
|
||||
+ default_libc=LIBC_GLIBC
|
||||
+ ;;
|
||||
+uclibc)
|
||||
+ default_libc=LIBC_UCLIBC
|
||||
+ ;;
|
||||
+bionic)
|
||||
+ default_libc=LIBC_BIONIC
|
||||
+ ;;
|
||||
+musl)
|
||||
+ default_libc=LIBC_MUSL
|
||||
+ ;;
|
||||
+"")
|
||||
+ ;;
|
||||
+*)
|
||||
+ echo "Unknown libc in --with-default-libc=$with_default_libc" 1>&2
|
||||
+ exit 1
|
||||
+ ;;
|
||||
+esac
|
||||
+
|
||||
+case "$default_libc" in
|
||||
+"")
|
||||
+ ;;
|
||||
+*)
|
||||
+ tm_defines="$tm_defines DEFAULT_LIBC=$default_libc"
|
||||
+ ;;
|
||||
+esac
|
||||
--- a/gcc/configure.ac
|
||||
+++ b/gcc/configure.ac
|
||||
@@ -2502,6 +2502,10 @@
|
||||
fi
|
||||
AC_SUBST(inhibit_libc)
|
||||
|
||||
+AC_ARG_WITH(default-libc,
|
||||
+ [AS_HELP_STRING([--with-default-libc],
|
||||
+ [Use specified default C library])])
|
||||
+
|
||||
# When building gcc with a cross-compiler, we need to adjust things so
|
||||
# that the generator programs are still built with the native compiler.
|
||||
# Also, we cannot run fixincludes.
|
95
packages/gcc/13.1.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch
vendored
Normal file
95
packages/gcc/13.1.0/0006-driver-Extend-getenv-function-to-allow-default-value.patch
vendored
Normal file
@ -0,0 +1,95 @@
|
||||
From fd6aa8e67aec185b0d84ba9551fd38c90c9d6d8a Mon Sep 17 00:00:00 2001
|
||||
From: Keith Packard <keithp@keithp.com>
|
||||
Date: Fri, 26 Aug 2022 14:30:03 -0700
|
||||
Subject: [PATCH] driver: Extend 'getenv' function to allow default value
|
||||
|
||||
Right now, a missing environment variable provided to the 'getenv'
|
||||
function in a .specs file causes a fatal error. That makes writing a
|
||||
spec file that uses the GCC_EXEC_PREFIX value difficult as that
|
||||
variable is only set when the driver has been relocated, but not when
|
||||
run from the defined location. This makes building a relocatable
|
||||
toolchain difficult to extend to other ancilary pieces which use specs
|
||||
files to locate header and library files adjacent to the toolchain.
|
||||
|
||||
This patch adds an optional third argument to the getenv function that
|
||||
can be used to fall back to the standard installation path when the
|
||||
driver hasn't set GCC_EXEC_PREFIX in the environment.
|
||||
|
||||
For example, if an alternate C library is installed in
|
||||
${prefix}/extra, then this change allows the specs file to locate that
|
||||
relative to the gcc directory, if gcc is located in the original
|
||||
installation directory (which would leave GCC_EXEC_PREFIX unset), or
|
||||
if the gcc tree has been moved to a different location (where gcc
|
||||
would set GCC_EXEC_PREFIX itself):
|
||||
|
||||
*cpp:
|
||||
-isystem %:getenv(GCC_EXEC_PREFIX ../../extra/include ${prefix}/extra/include)
|
||||
|
||||
I considered changing the behavior of either the %R sequence so that
|
||||
it had a defined behavior when there was no sysroot defined, or making
|
||||
the driver always set the GCC_EXEC_PREFIX environment variable and
|
||||
decided that the approach of adding functionality to getenv where it
|
||||
was previously invalid would cause the least potential for affecting
|
||||
existing usage.
|
||||
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
gcc/doc/invoke.texi | 18 +++++++++++-------
|
||||
gcc/gcc.cc | 10 +++++++++-
|
||||
2 files changed, 20 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/gcc/doc/invoke.texi
|
||||
+++ b/gcc/doc/invoke.texi
|
||||
@@ -34780,17 +34780,21 @@
|
||||
|
||||
@table @code
|
||||
@item @code{getenv}
|
||||
-The @code{getenv} spec function takes two arguments: an environment
|
||||
-variable name and a string. If the environment variable is not
|
||||
-defined, a fatal error is issued. Otherwise, the return value is the
|
||||
-value of the environment variable concatenated with the string. For
|
||||
-example, if @env{TOPDIR} is defined as @file{/path/to/top}, then:
|
||||
+
|
||||
+The @code{getenv} spec function takes two or three arguments: an
|
||||
+environment variable name, a string and an optional default value. If
|
||||
+the environment variable is not defined and a default value is
|
||||
+provided, that is used as the return value; otherwise a fatal error is
|
||||
+issued. Otherwise, the return value is the value of the environment
|
||||
+variable concatenated with the string. For example, if @env{TOPDIR}
|
||||
+is defined as @file{/path/to/top}, then:
|
||||
|
||||
@smallexample
|
||||
-%:getenv(TOPDIR /include)
|
||||
+%:getenv(TOPDIR /include /path/to/default/include)
|
||||
@end smallexample
|
||||
|
||||
-expands to @file{/path/to/top/include}.
|
||||
+expands to @file{/path/to/top/include}. If @env{TOPDIR} is not
|
||||
+defined, then this expands to @file{/path/to/default/include}.
|
||||
|
||||
@item @code{if-exists}
|
||||
The @code{if-exists} spec function takes one argument, an absolute
|
||||
--- a/gcc/gcc.cc
|
||||
+++ b/gcc/gcc.cc
|
||||
@@ -10155,12 +10155,20 @@
|
||||
char *ptr;
|
||||
size_t len;
|
||||
|
||||
- if (argc != 2)
|
||||
+ if (argc != 2 && argc != 3)
|
||||
return NULL;
|
||||
|
||||
varname = argv[0];
|
||||
value = env.get (varname);
|
||||
|
||||
+ if (!value && argc == 3)
|
||||
+ {
|
||||
+ value = argv[2];
|
||||
+ result = XNEWVAR(char, strlen(value) + 1);
|
||||
+ strcpy(result, value);
|
||||
+ return result;
|
||||
+ }
|
||||
+
|
||||
/* If the variable isn't defined and this is allowed, craft our expected
|
||||
return value. Assume variable names used in specs strings don't contain
|
||||
any active spec character so don't need escaping. */
|
37
packages/gcc/13.1.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch
vendored
Normal file
37
packages/gcc/13.1.0/0007-Add-newlib-and-picolibc-as-default-C-library-choices.patch
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
From be5d482de0099012288e617af0583772fac21714 Mon Sep 17 00:00:00 2001
|
||||
From: Keith Packard <keithp@keithp.com>
|
||||
Date: Tue, 23 Aug 2022 22:12:06 -0700
|
||||
Subject: [PATCH] Add newlib and picolibc as default C library choices
|
||||
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
gcc/config.gcc | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -662,7 +662,7 @@
|
||||
esac
|
||||
|
||||
# Common C libraries.
|
||||
-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
|
||||
+tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4 LIBC_NEWLIB=5 LIBC_PICOLIBC=6"
|
||||
|
||||
default_libc=""
|
||||
|
||||
@@ -5896,6 +5896,15 @@
|
||||
musl)
|
||||
default_libc=LIBC_MUSL
|
||||
;;
|
||||
+newlib)
|
||||
+ # Newlib configurations don't set the DEFAULT_LIBC variable, so
|
||||
+ # avoid changing those by allowing --with-default-libc=newlib but
|
||||
+ # not actually setting the DEFAULT_LIBC variable.
|
||||
+ default_libc=
|
||||
+ ;;
|
||||
+picolibc)
|
||||
+ default_libc=LIBC_PICOLIBC
|
||||
+ ;;
|
||||
"")
|
||||
;;
|
||||
*)
|
33
packages/gcc/13.1.0/0008-Support-picolibc-targets.patch
vendored
Normal file
33
packages/gcc/13.1.0/0008-Support-picolibc-targets.patch
vendored
Normal file
@ -0,0 +1,33 @@
|
||||
From c9c22fe9ce182e48282e2bf0a8830381d3c55dd4 Mon Sep 17 00:00:00 2001
|
||||
From: Keith Packard <keithp@keithp.com>
|
||||
Date: Sun, 12 Feb 2023 14:23:32 -0800
|
||||
Subject: [PATCH] Support picolibc targets
|
||||
|
||||
Match *-picolibc-* and select picolibc as the default C library, plus continuing to use
|
||||
the newlib-based logic for other configuration items.
|
||||
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
gcc/config.gcc | 11 +++++++++++
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -1116,6 +1116,17 @@
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
+*-picolibc-*)
|
||||
+ # __cxa_atexit is provided.
|
||||
+ default_use_cxa_atexit=yes
|
||||
+ use_gcc_stdint=wrap
|
||||
+ default_libc=LIBC_PICOLIBC
|
||||
+ case "${with_newlib}-${with_headers}" in
|
||||
+ no-no) use_gcc_stdint=provide ;;
|
||||
+ *) ;;
|
||||
+ esac
|
||||
+ ;;
|
||||
+
|
||||
*-*-elf|arc*-*-elf*)
|
||||
# Assume that newlib is being used and so __cxa_atexit is provided.
|
||||
default_use_cxa_atexit=yes
|
60
packages/gcc/13.1.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch
vendored
Normal file
60
packages/gcc/13.1.0/0009-gcc-Allow-g-to-work-differently-from-gcc.patch
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
From ef327a7c2a36b63e8a372bef88e3700460b51c34 Mon Sep 17 00:00:00 2001
|
||||
From: Keith Packard <keithp@keithp.com>
|
||||
Date: Sat, 11 Feb 2023 23:07:08 -0800
|
||||
Subject: [PATCH] gcc: Allow g++ to work differently from gcc
|
||||
|
||||
Compile gcc.cc with -DIN_GPP defined when building g++ so that the
|
||||
code can respond appropriately for the default target language. This
|
||||
allows the driver to customize the specs used, selecting different
|
||||
linker scripts, adjusting the use of crtbegin.o/crtend.o etc.
|
||||
|
||||
By default, this change has no effect; targets need to explicitly
|
||||
check for IN_GPP to have alternate behavior.
|
||||
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
gcc/cp/Make-lang.in | 7 ++++++-
|
||||
gcc/gpp.cc | 21 +++++++++++++++++++++
|
||||
2 files changed, 27 insertions(+), 1 deletion(-)
|
||||
create mode 100644 gcc/gpp.cc
|
||||
|
||||
--- a/gcc/cp/Make-lang.in
|
||||
+++ b/gcc/cp/Make-lang.in
|
||||
@@ -77,7 +77,12 @@
|
||||
endif
|
||||
|
||||
# Create the compiler driver for g++.
|
||||
-GXX_OBJS = $(GCC_OBJS) cp/g++spec.o
|
||||
+GXX_OBJS = $(GCC_OBJS:gcc.o=gpp.o) cp/g++spec.o
|
||||
+
|
||||
+CFLAGS-gpp.o = $(CFLAGS-gcc.o)
|
||||
+gpp.o: $(BASEVER)
|
||||
+gpp.o: gcc.o
|
||||
+
|
||||
xg++$(exeext): $(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS)
|
||||
+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
|
||||
$(GXX_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \
|
||||
--- /dev/null
|
||||
+++ b/gcc/gpp.cc
|
||||
@@ -0,0 +1,21 @@
|
||||
+/* Compiler driver program that can handle many languages.
|
||||
+ Copyright (C) 1987-2022 Free Software Foundation, Inc.
|
||||
+
|
||||
+This file is part of GCC.
|
||||
+
|
||||
+GCC is free software; you can redistribute it and/or modify it under
|
||||
+the terms of the GNU General Public License as published by the Free
|
||||
+Software Foundation; either version 3, or (at your option) any later
|
||||
+version.
|
||||
+
|
||||
+GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
+for more details.
|
||||
+
|
||||
+You should have received a copy of the GNU General Public License
|
||||
+along with GCC; see the file COPYING3. If not see
|
||||
+<http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#define IN_GPP
|
||||
+#include "gcc.cc"
|
8
packages/gcc/13.1.0/chksum
vendored
Normal file
8
packages/gcc/13.1.0/chksum
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
md5 gcc-13.1.0.tar.xz 43e4de77f2218c83ca675257ea1af9ef
|
||||
sha1 gcc-13.1.0.tar.xz 13366f554858f548282b5701a0add1d19d1325ee
|
||||
sha256 gcc-13.1.0.tar.xz 61d684f0aa5e76ac6585ad8898a2427aade8979ed5e7f85492286c4dfc13ee86
|
||||
sha512 gcc-13.1.0.tar.xz 6cf06dfc48f57f5e67f7efe3248019329a14d690c728d9f2f7ef5fa0d58f1816f309586ba7ea2eac20d0b60a2d1b701f68392e9067dd46f827ba0efd7192db33
|
||||
md5 gcc-13.1.0.tar.gz acbd81e95b3d9f11ea0b3462d88107b1
|
||||
sha1 gcc-13.1.0.tar.gz 10ff6f714012562294da5819c023a8ffe9de8786
|
||||
sha256 gcc-13.1.0.tar.gz bacd4c614d8bd5983404585e53478d467a254249e0f1bb747c8bc6d787bd4fa2
|
||||
sha512 gcc-13.1.0.tar.gz 73244f830b748d5fe2645a21c9c01bcffa5b34c73a9244a22dfb39fc3abd5bc61ab851bf2ca65999ce642fe60a5de2aadb07c02f40210c555003b5e16f1f7fa3
|
127
packages/gcc/13.1.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch
vendored
Normal file
127
packages/gcc/13.1.0/experimental/0001-picolibc-Add-custom-spec-file-fragments-for-using-pi.patch
vendored
Normal file
@ -0,0 +1,127 @@
|
||||
From b0f9ac365f91952f6f920c8e6aa4ddb819f47cc8 Mon Sep 17 00:00:00 2001
|
||||
From: Keith Packard <keithp@keithp.com>
|
||||
Date: Tue, 23 Aug 2022 22:13:08 -0700
|
||||
Subject: [PATCH] picolibc: Add custom spec file fragments for using
|
||||
picolibc
|
||||
|
||||
The '--oslib=' option allows targets to insert an OS library after the
|
||||
C library in the LIB_PATH spec file fragment. This library maps a few
|
||||
POSIX APIs used by picolibc to underlying system capabilities.
|
||||
|
||||
The '--crt0=' option allows targets to use an alternate crt0 in place
|
||||
of the usual one as provided by Picolibc.
|
||||
|
||||
For example, picolibc provides 'libsemihost' and 'crt0-semihost.o' on
|
||||
various targets which maps some POSIX APIs to semihosting capabilities
|
||||
and signals the semihosting environment when 'main' returns. These
|
||||
would be used by specifying --oslib=semihost --crt0=semihost.
|
||||
|
||||
This patch also takes advantage of the IN_GPP conditional when
|
||||
building g++ to elide exception handling contents from the executable
|
||||
when not linking with the g++ driver.
|
||||
|
||||
Signed-off-by: Keith Packard <keithp@keithp.com>
|
||||
---
|
||||
gcc/config.gcc | 7 +++++++
|
||||
gcc/config/picolibc.h | 44 ++++++++++++++++++++++++++++++++++++++++++++
|
||||
gcc/config/picolibc.opt | 33 +++++++++++++++++++++++++++++++++
|
||||
3 files changed, 84 insertions(+)
|
||||
create mode 100644 gcc/config/picolibc.h
|
||||
create mode 100644 gcc/config/picolibc.opt
|
||||
|
||||
--- a/gcc/config.gcc
|
||||
+++ b/gcc/config.gcc
|
||||
@@ -5931,3 +5931,10 @@
|
||||
tm_defines="$tm_defines DEFAULT_LIBC=$default_libc"
|
||||
;;
|
||||
esac
|
||||
+
|
||||
+case "$default_libc" in
|
||||
+ LIBC_PICOLIBC)
|
||||
+ extra_options="${extra_options} picolibc.opt"
|
||||
+ tm_file="${tm_file} picolibc.h"
|
||||
+ ;;
|
||||
+esac
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/picolibc.h
|
||||
@@ -0,0 +1,44 @@
|
||||
+/* Configuration common to all targets running Picolibc.
|
||||
+ Copyright (C) 2023 Free Software Foundation, Inc.
|
||||
+
|
||||
+ This file is part of GCC.
|
||||
+
|
||||
+ GCC is free software; you can redistribute it and/or modify it
|
||||
+ under the terms of the GNU General Public License as published
|
||||
+ by the Free Software Foundation; either version 3, or (at your
|
||||
+ option) any later version.
|
||||
+
|
||||
+ GCC is distributed in the hope that it will be useful, but WITHOUT
|
||||
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
||||
+ License for more details.
|
||||
+
|
||||
+ Under Section 7 of GPL version 3, you are granted additional
|
||||
+ permissions described in the GCC Runtime Library Exception, version
|
||||
+ 3.1, as published by the Free Software Foundation.
|
||||
+
|
||||
+ You should have received a copy of the GNU General Public License and
|
||||
+ a copy of the GCC Runtime Library Exception along with this program;
|
||||
+ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||
+ <http://www.gnu.org/licenses/>. */
|
||||
+
|
||||
+#ifdef IN_GPP
|
||||
+#define PICOLIBC_LD "picolibcpp.ld"
|
||||
+#define PICOLIBC_BEGIN " crtbegin%O%s"
|
||||
+#define PICOLIBC_END "crtend%O%s"
|
||||
+#else
|
||||
+#define PICOLIBC_LD "picolibc.ld"
|
||||
+#define PICOLIBC_BEGIN ""
|
||||
+#define PICOLIBC_END ""
|
||||
+#endif
|
||||
+
|
||||
+#undef LIB_SPEC
|
||||
+#define LIB_SPEC "%{!T:-T" PICOLIBC_LD "} --start-group -lc %{-oslib=*:-l%*} %(libgcc) --end-group"
|
||||
+
|
||||
+#undef STARTFILE_SPEC
|
||||
+#define STARTFILE_SPEC "%{-crt0=*:crt0-%*%O%s; :crt0%O%s}" PICOLIBC_BEGIN
|
||||
+
|
||||
+#undef ENDFILE_SPEC
|
||||
+#define ENDFILE_SPEC PICOLIBC_END
|
||||
+
|
||||
+#define EH_TABLES_CAN_BE_READ_ONLY 1
|
||||
--- /dev/null
|
||||
+++ b/gcc/config/picolibc.opt
|
||||
@@ -0,0 +1,33 @@
|
||||
+; Processor-independent options for picolibc.
|
||||
+;
|
||||
+; Copyright (C) 2022 Free Software Foundation, Inc.
|
||||
+;
|
||||
+; This file is part of GCC.
|
||||
+;
|
||||
+; GCC is free software; you can redistribute it and/or modify it under
|
||||
+; the terms of the GNU General Public License as published by the Free
|
||||
+; Software Foundation; either version 3, or (at your option) any later
|
||||
+; version.
|
||||
+;
|
||||
+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
+; WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
+; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
+; for more details.
|
||||
+;
|
||||
+; You should have received a copy of the GNU General Public License
|
||||
+; along with GCC; see the file COPYING3. If not see
|
||||
+; <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+-oslib
|
||||
+Driver Separate Alias(-oslib=)
|
||||
+
|
||||
+-oslib=
|
||||
+Driver Joined
|
||||
+Specify an OS support library to load after libc.
|
||||
+
|
||||
+-crt0
|
||||
+Driver Separate Alias(-crt0=)
|
||||
+
|
||||
+-crt0=
|
||||
+Driver Joined
|
||||
+Specify an alternate startup file.
|
0
packages/gcc/13.1.0/version.desc
vendored
Normal file
0
packages/gcc/13.1.0/version.desc
vendored
Normal file
@ -2,5 +2,5 @@ repository='git git://gcc.gnu.org/git/gcc.git'
|
||||
mirrors='$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})'
|
||||
relevantpattern='4.*|. *|.'
|
||||
origin='GNU'
|
||||
milestones='4.9 5 6 7 8 9 10 11 12'
|
||||
milestones='4.9 5 6 7 8 9 10 11 12 13'
|
||||
archive_formats='.tar.xz .tar.gz'
|
||||
|
Loading…
Reference in New Issue
Block a user