Commit Graph

569 Commits

Author SHA1 Message Date
VIKING
272406de8f Merge branch 'master' 2025-08-22 18:43:06 +08:00
Tianling Shen
e2b45797a2
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-08-22 17:37:35 +08:00
Shiji Yang
44a5d1c448 toolchain: gcc: update GCC13 to 13.4
Release Notes:
  https://gcc.gnu.org/gcc-13/changes.html

All patches are automatically refreshed.

Build-tested on:
  ath79/generic(MIPS)
  ipq40xx/generic(ARMv7)
  mediatek/filogic(ARMv8)

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/19089
Signed-off-by: Nick Hainke <vincent@systemli.org>
2025-08-20 23:42:15 +02:00
VIKING
1fc763e683 Merge branch 'master' 2025-08-10 20:02:19 +08:00
Tianling Shen
bc9e90acc7
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-08-10 19:27:00 +08:00
Robert Marko
7bc227b82d gcc: 15.x: update to 15.2
Update GCC15 to 15.2 to include upstream bugfixes.

Link: https://github.com/openwrt/openwrt/pull/19713
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-08-10 11:43:07 +02:00
VIKING
f4e068fd3e Merge branch 'master' 2025-07-23 00:52:17 +08:00
Tianling Shen
978f853779
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-07-22 21:39:13 +08:00
Felix Fietkau
c1c1112006 toolchain/gcc: prevent the use of LDRD/STRD on ARMv5TE
These instructions are for 64-bit load/store. On ARMv5TE, the CPU
requires addresses to be aligned to 64-bit. When misaligned, behavior is
undefined (effectively either loads the same word twice on LDRD, or
corrupts surrounding memory on STRD).

On ARMv6 and newer, unaligned access is safe.

Removing these instructions for ARMv5TE is necessary, because GCC
ignores alignment information in pointers and does unsafe optimizations
that have shown up as bugs in various places.

This patch was originally added more than 11 years ago in commit b050f87d13,
but got lost 6 years ago, when gcc 9.1 was added in 88c07c6552.

This primarily affects the kirkwood and ixp4xx targets

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-07-22 12:03:05 +02:00
VIKING
9816d1baa5 Merge branch 'master' 2025-07-10 00:25:11 +08:00
Tianling Shen
0c9e21c7fe
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-07-09 20:59:45 +08:00
Robert Marko
1f8391346e toolchain: gcc: 15: fix build error with glibc for aarch64 targets
GCC 14+ fails to build due to libatomic specific -march handling.
This build error triggers only with glibc and not with musl libc
which is default.

It seems that this patch from GCC14 was forgotten when GCC15 support was
being added [1].

[1] 44ef343500

Fixes: 68cb84183e ("toolchain: add support for GCC 15.1")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-07-08 14:19:18 +02:00
VIKING
38e4300b7b Merge branch 'master' 2025-06-13 00:34:40 +08:00
Tianling Shen
36ca25ce6c
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-06-12 18:55:16 +08:00
Rui Salvaterra
68cb84183e toolchain: add support for GCC 15.1
All patches automatically refreshed.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18600
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-06-08 12:20:15 +02:00
VIKING
7abb1b433d Merge branch 'master' 2025-05-27 21:34:19 +08:00
Tianling Shen
653d294e8b
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-05-27 19:57:42 +08:00
Robert Marko
fb2c59b942 toolchain: gcc: drop GCC11
There is no practical value in keeping GCC11 around, as even OpenWrt 23.05
uses GCC12 as the default one, so drop it.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-26 19:20:56 +02:00
Tianling Shen
de8a8d375a
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-05-25 16:53:53 +08:00
VIKINGYFY
95d83649a9 Update QCA 6.12 2025-05-25 14:54:42 +08:00
Shiji Yang
ec4afc4c1b toolchain: gcc: update GCC14 to 14.3
Remove upstreamed patches:
- 020-MIPS-Include-missing-mips16.S-in-libgcc-lib1funcs.S.patch
- 021-Reuse-scratch-registers-generated-by-LRA.patch

All other patches are automatically refreshed.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18891
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-24 21:04:07 +02:00
Tianling Shen
fb9e5f78b5
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-05-18 15:56:06 +08:00
Matthias Schiffer
18de64d87b toolchain: gcc: backport patch to fix ICE with PowerPC targets
During the build of perl, the following ICE was reported in
https://github.com/openwrt/packages/issues/24565 when targeting PowerPC:

    during RTL pass: reload
    blocksort.c: In function 'mainSort.isra':
    blocksort.c:1011:1: internal compiler error: in patch_jump_insn, at cfgrtl.cc:1303
     1011 | }
          | ^
    0x7d49cee29d8f __libc_start_call_main
            ../sysdeps/nptl/libc_start_call_main.h:58
    0x7d49cee29e3f __libc_start_main_impl
            ../csu/libc-start.c:392
    Please submit a full bug report, with preprocessed source (by using -freport-bug).
    Please include the complete backtrace with any bug report.
    See <http://bugs.openwrt.org/> for instructions.

The same issue also caused the CI failures in
https://github.com/openwrt/packages/pull/26501.

The issue only occurs with GCC 14.2.0, but not with the head of the
releases/gcc-14 maintenance branch; a bisect found that this patch fixes
it.

Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Link: https://github.com/openwrt/openwrt/pull/18797
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-14 11:23:34 +02:00
Tianling Shen
c2b634f5e9
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-05-12 19:54:59 +08:00
Konstantin Demin
44ef343500 toolchain: gcc: fix build error with glibc for aarch64 targets
GCC 14+ fails to build due to libatomic specific -march handling.
This build error triggers only with glibc and not with musl libc
which is default.

Related: https://github.com/openwrt/openwrt/issues/16073

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18647
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-12 11:13:20 +02:00
Tianling Shen
5bcbaee6e1
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-05-04 13:09:32 +08:00
Hauke Mehrtens
0744d77779 toolchain: gcc: Backport patch to fix mips16 linking
Backport patch from upstream GCC 14 branch which fixes linking with
MIPS16 on the pistachio target.

This fixes the following link problem:
```
/builder/shared-workdir/build/staging_dir/toolchain-mipsel_24kc+24kf_gcc-14.2.0_musl/lib/gcc/mipsel-openwrt-linux-musl/14.2.0/../../../../mipsel-openwrt-linux-musl/bin/ld.bfd: ./liblua.so: undefined reference to `__mips16_ledf2'
/builder/shared-workdir/build/staging_dir/toolchain-mipsel_24kc+24kf_gcc-14.2.0_musl/lib/gcc/mipsel-openwrt-linux-musl/14.2.0/../../../../mipsel-openwrt-linux-musl/bin/ld.bfd: ./liblua.so: undefined reference to `__mips16_call_stub_df_2'
/builder/shared-workdir/build/staging_dir/toolchain-mipsel_24kc+24kf_gcc-14.2.0_musl/lib/gcc/mipsel-openwrt-linux-musl/14.2.0/../../../../mipsel-openwrt-linux-musl/bin/ld.bfd: ./liblua.so: undefined reference to `__mips16_muldf3'
```

Link: https://github.com/openwrt/openwrt/pull/18688
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-03 22:04:13 +02:00
Hauke Mehrtens
e184be34ab toolchain: gcc: Refresh patches
Refresh all GCC patches.

Link: https://github.com/openwrt/openwrt/pull/18688
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-05-03 22:04:13 +02:00
Robert Marko
bf91381451 Revert "toolchain: gcc: make config consistent with glibc/musl"
This reverts commit 57841c83d9.

This is completely breaking the inital GCC configuration and most likely
was not even compile tested, so revert until fixed.

Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-02 19:30:47 +02:00
Konstantin Demin
57841c83d9
toolchain: gcc: make config consistent with glibc/musl
I've observed configuration drift for GCC between musl and glibc
(especially it's final stage):

  # musl
  lt_cv_prog_compiler_static_works=yes
  lt_cv_prog_compiler_static_works_CXX=yes
  lt_cv_sys_max_cmd_len=1572864

  # glibc
  lt_cv_prog_compiler_static_works=no
  lt_cv_prog_compiler_static_works_CXX=no
  lt_cv_sys_max_cmd_len=512

These changes should prevent this issue in future:

  export lt_cv_prog_compiler_static_works=yes
  export lt_cv_prog_compiler_static_works_CXX=yes
  export lt_cv_sys_max_cmd_len=1572864

Also:

- provide custom autotools/libtool variables via properly named
  variable ("GCC_CONFIGURE_VARS"),
- move variables from "GCC_MAKE" to "GCC_CONFIGURE_VARS"
  (at this moment only "gcc_cv_libc_provides_ssp=yes" for musl),
- propagate it's usage for both "./configure" and "make".

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18646
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-05-02 17:27:33 +02:00
Tianling Shen
6e86d98e36
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-04-30 18:36:51 +08:00
Robert Marko
5c8301e800 toolchain: gcc: switch default to 14
Its time to use GCC14 as the default compiler instead of GCC13.

Link: https://github.com/openwrt/openwrt/pull/18597
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-29 12:27:32 +02:00
Tianling Shen
7315bd265f
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2025-04-18 22:06:54 +08:00
Georgi Valkov
d3bb23946e toolchain: gcc: fix build error with Xcode 16.3
Xcode 16.3 defines TARGET_OS_MAC, it was not defined in prior versions.
zutil.h conditionally defines fdopen as NULL when this macro is defined,
resulting in the following build error:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/_stdio.h:318:7: e>
  318 | FILE    *fdopen(int, const char *) __DARWIN_ALIAS_STARTING(__MAC_10_6, __IPHONE_2_0, __DARWIN_ALIAS(fdopen));
      |          ^
./zutil.h:147:33: note: expanded from macro 'fdopen'
  147 | #        define fdopen(fd,mode) NULL /* No fdopen() */

In Xcode 16.2 and earlier, TARGET_OS_MAC was not defined so this entire
block was ignored, gcc and gdb used to compile and work fine.

This may have been used for compatibility with older versions of macOS,
but is no longer needed. By pure luck, the build worked fine for a long
time, because it did not properly detect macOS.
Fixed by removing the check for TARGET_OS_MAC.

Note that since Xcode 16.3, an entire set of TARGET_OS macros
are now defined, most of which are set to 0:
TARGET_OS_LINUX 0
TARGET_OS_MAC 1
TARGET_OS_OSX 1

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18467
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-16 14:38:34 +02:00
Tianling Shen
4fb4c70851
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-09-19 14:08:10 +08:00
Chuanhong Guo
a1b9c28edd toolchain: gcc: drop 110-Fix-MIPS-PR-84790.patch
According to the bugzilla link, this is fixed in gcc 14.2.

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
2024-09-17 21:43:32 +08:00
Tianling Shen
a3b7cd0483
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-08-13 15:44:14 +08:00
Thomas Weißschuh
30092019fe toolchain: gcc: update GCC 14 to 14.2.0
All patches automatically rebased.

Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
Link: https://github.com/openwrt/openwrt/pull/16047
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-08-13 00:30:29 +02:00
Tianling Shen
9968354df0
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-05-30 14:41:34 +08:00
Olcay Korkmaz
3b63abfbfc toolchain: gcc: update to 13.3
Release Notes:
https://gcc.gnu.org/pipermail/gcc/2024-May/243980.html

Remove upstreamed patches:
- patches-13.x/020-Include-safe-ctype.h-after-C-standard-headers-to-avo.patch
- patches-13.x/021-libcc1-fix-vector-include.patch
- patches-13.x/400-LoongArch-Fix-MUSL_DYNAMIC_LINKER.patch
- patches-13.x/401-LoongArch-Modify-MUSL_DYNAMIC_LINKER.patch

Refresh patches:
- patches-13.x/300-mips_Os_cpu_rtx_cost_model.patch
- patches-13.x/970-macos_arm64-building-fix.patch

Signed-off-by: Olcay Korkmaz <nuke_mania@hotmail.com>
2024-05-28 23:55:27 +02:00
Tianling Shen
42b663f584
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-05-17 17:49:25 +08:00
Rui Salvaterra
c758d6427c toolchain: gcc: add support for GCC 14
Deleted (upstreamed):
- 020-Include-safe-ctype.h-after-C-standard-headers-to-avo.patch [1]
- 021-libcc1-fix-vector-include.patch [2]

All other patches automatically rebased.

Note that selecting GCC 14, as of now, *will* result in build failures. The
packages that fail to build will be fixed as they're found. Thus, GCC 13.x is
the default, for the time being.

[1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=9970b576b7e4ae337af1268395ff221348c4b34a
[2] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5213047b1d50af63dfabb5e5649821a6cb157e33

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
2024-05-12 12:47:12 +01:00
Tianling Shen
09c658642e
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-05-04 15:57:59 +08:00
Weijie Gao
c5946c0724 toolchain/gcc: fix loongarch64 ldso file name
GCC has changed musl dynamic linker name from
ld-musl-loongarch-lp64d.so.1 to ld-musl-loongarch64.so.1 recently [1].

Meanwhile musl 1.2.5 only supports the new name. So it's better to follow
the new name.

[1] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=8bccee51f0deac64b79cd9ad75df599422f4c8ff

Signed-off-by: Weijie Gao <hackpascal@gmail.com>
2024-05-04 14:12:56 +08:00
Tianling Shen
a0227dddf3
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-04-10 17:14:10 +08:00
Robert Marko
12b2cb2ec3 config: fix CONFIG_GDB appearing in main menuconfig menu
I noticed that CONFIG_GDB was suddenly appearing in the main menuconfig
menu despite the fact that it should be visible only when TOOLCHAINOPTS
is selected and under a dedicated menu.

After some trial and error, it seems that this was caused by the recent
addition of GCC_USE_DEFAULT_VERSION, and after even more trial and error
it gets fixed as soon GCC_USE_DEFAULT_VERSION is placed after GCC_VERSION.

So, lets simply put GCC_USE_DEFAULT_VERSION after GCC_VERSION.

Fixes: 501ef81040 ("config: select KERNEL_WERROR if building with default GCC version")
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-04-09 19:30:41 +02:00
Tianling Shen
a2ce935808
kernel: disable Werror by default
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
2024-04-08 13:00:05 +08:00
Daniel Golle
501ef81040 config: select KERNEL_WERROR if building with default GCC version
At the moment we have to manually follow the default GCC version
also in config/Config-kernel.in. This tends to be forgotten at GCC
version bumps (just happened when switching from version 12 to 13).
Instead, introduce a hidden Kconfig symbol which implies KERNEL_WERROR
in toolchain/gcc/Config.in where it is visible for developers changing
the default version.

Also remove the explicit default on BUILDBOT to avoid a circular
dependency and also because buildbots anyway implicitly always select
the default GCC version.

Reference: https://github.com/openwrt/openwrt/pull/15064
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2024-04-08 01:40:15 +01:00
Georgi Valkov
631014d9b0 toolchain/gcc: fix build errors on macOS with Xcode 15.3
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__locale:550:5: error: '__abi_tag__' attribute only applies to structs, variables, functions, and namespaces
    _LIBCPP_INLINE_VISIBILITY
    ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__config:891:37: note: expanded from macro '_LIBCPP_INLINE_VISIBILITY'
 #  define _LIBCPP_INLINE_VISIBILITY _LIBCPP_HIDE_FROM_ABI
                                    ^
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/__config:870:26: note: expanded from macro '_LIBCPP_HIDE_FROM_ABI'
          __attribute__((__abi_tag__(_LIBCPP_TOSTRING(_LIBCPP_ODR_SIGNATURE))))

Fixed using backport of upstream commits [1-2] as discussed here
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111632#c21

[1] Include safe-ctype.h after C++ standard headers, to avoid over-poisoning
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=9970b576b7e4ae337af1268395ff221348c4b34a

[2] libcc1: fix <vector> include
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=5213047b1d50af63dfabb5e5649821a6cb157e33

Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
2024-04-02 11:10:32 +02:00
Nick Hainke
8753022aea toolchain: gcc: switch default to 13
Use GCC 13 instead of GCC 12 by default.

All target kernels are building with GCC 13.
Most packages from the feed are building fine.

The root file systems is getting a little bit smaller for MIPS 32 BE
and aarch64.

With GCC 12 I got these sizes for lantiq/xrx200:
7,005,867 openwrt-lantiq-xrx200-tplink_tdw8970-initramfs-kernel.bin

With GCC 13 I got these sizes for lantiq/xrx200:
6,989,754 openwrt-lantiq-xrx200-tplink_tdw8970-initramfs-kernel.bin

With GCC 12 I got these sizes for armsr/armv8:
13,083,836 openwrt-armsr-armv8-generic-ext4-combined.img.gz
 4,900,240 openwrt-armsr-armv8-generic-ext4-rootfs.img.gz
20,142,592 openwrt-armsr-armv8-generic-kernel.bin

With GCC 13 I got these sizes for armsr/armv8:
13,068,966 openwrt-armsr-armv8-generic-ext4-combined.img.gz
 4,893,078 openwrt-armsr-armv8-generic-ext4-rootfs.img.gz
20,142,592 openwrt-armsr-armv8-generic-kernel.bin

Signed-off-by: Nick Hainke <vincent@systemli.org>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-03-23 23:47:29 +01:00