Skip to content

Commit

Permalink
Initial GCC 14.1.0 support
Browse files Browse the repository at this point in the history
+ gcc 14 package version
+ tar.gz and tar.xz checksums
+ patches from gcc13 that can still be applied to gcc14

Signed-off-by: Nik Konyuchenko <spaun2002mobile@gmail.com>
  • Loading branch information
nikkon-dev committed May 9, 2024
1 parent 810021d commit 58792a3
Show file tree
Hide file tree
Showing 17 changed files with 874 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-toolchains.yml
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ jobs:
if: ${{ runner.os == 'macOS' }}
run: |
brew install autoconf automake bash binutils gawk gnu-sed \
gnu-tar help2man make ncurses pkg-config
gnu-tar help2man make ncurses pkg-config texinfo libtool
echo "${{ github.workspace }}/.local/bin" >> "$GITHUB_PATH"
- name: download x86_64-w64-mingw32.${{ matrix.host }} tarball
if: ${{ inputs.canadian-cross }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/continuous-integration-workflow.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
if: ${{ runner.os == 'macOS' }}
run: |
brew install autoconf automake bash binutils gawk gnu-sed \
gnu-tar help2man make ncurses
gnu-tar help2man make ncurses texinfo libtool
- name: "build ct-ng"
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
Expand Down
18 changes: 18 additions & 0 deletions packages/gcc/14.1.0/0000-libtool-leave-framework-alone.patch
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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 changes: 31 additions & 0 deletions packages/gcc/14.1.0/0002-arm-softfloat-libgcc.patch
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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>

Loading

0 comments on commit 58792a3

Please sign in to comment.