Commit Graph

1517 Commits

Author SHA1 Message Date
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
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
Felix Fietkau
0b1e1943d5 toolchain/musl: fix build regression on x86_64
Fix whitespace mangling which broke matching opcodes in the CFI patch

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-05-06 14:29:09 +02:00
Felix Fietkau
edd997a9ee musl: add pending patch to fix CFI annotations
Fixes debugging at least on aarch64, possibly others.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-05-05 13:57:08 +02: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
Robert Marko
d3216173ab toolchain: binutils: fix compilation with GCC15
GCC15 has switched the C language default from GNU17 to GNU23[1] and this
causes builds to fail with:
In file included from mips-opc.c:29:
mips-opc.c: In function 'decode_mips_operand':
mips-formats.h:86:7: error: expected identifier or '(' before 'static_assert'
   86 |       static_assert[(1 << (SIZE)) == ARRAY_SIZE (MAP)]; \
      |       ^~~~~~~~~~~~~
mips-opc.c:214:15: note: in expansion of macro 'MAPPED_REG'
  214 |     case 'z': MAPPED_REG (0, 0, GP, reg_0_map);
      |               ^~~~~~~~~~

So, backport upstream fix for this[2] to fix compilation with GCC15.
Patch for 2.40 was manually refreshed as part of the S390 code does not
exist in 2.40 as it was added after it.

[1] https://gcc.gnu.org/gcc-15/porting_to.html#c23
[2] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=8ebe62f3f0d27806b1bf69f301f5e188b4acd2b4

Fixes: #18678
Link: https://github.com/openwrt/openwrt/pull/18681
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-05-02 18:01:34 +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
Konstantin Demin
c1cbcd35e7
toolchain: glibc: Update glibc 2.38 to recent HEAD
f510d75f nscd: Use time_t for return type of addgetnetgrentX
5aa4bb67 resolv: Fix some unaligned accesses in resolver [BZ #30750]
249646f1 Force DT_RPATH for --enable-hardcoded-path-in-tests
697ab62d i386: Disable Intel Xeon Phi tests for GCC 15 and above (BZ 31782)
c8cb4d2b misc: Add support for Linux uio.h RWF_NOAPPEND flag
71245363 s390x: Fix segfault in wcsncmp [BZ #31934]
7bfc3595 nptl: fix potential merge of __rseq_* relro symbols
d9d019d6 elf: Make dl-rseq-symbols Linux only
bb30bd21 Linux: Make __rseq_size useful for feature detection (bug 31965)
dc512364 resolv: Allow short error responses to match any query (bug 31890)
6cad0f54 resolv: Do not wait for non-existing second DNS response after error (bug 30081)
1bed6acf resolv: Track single-request fallback via _res._flags (bug 31476)
0301637b linux: Update the mremap C implementation [BZ #31968]
f0e21145 mremap: Update manual entry
6bb75212 Add mremap tests
3ac7ba61 Update syscall lists for Linux 6.5
9184c136 resolv: Fix tst-resolv-short-response for older GCC (bug 32042)
059f82c3 Fix name space violation in fortify wrappers (bug 32052)
c005d1bd x86: Fix bug in strchrnul-evex512 [BZ #32078]
28f358bc support: Add FAIL test failure helper
99ffa84b stdio-common: Add test for vfscanf with matches longer than INT_MAX [BZ #27650]
87a1968a Make tst-ungetc use libsupport
804d3c8d ungetc: Fix uninitialized read when putting into unused streams [BZ #27821]
b9f72bd5 ungetc: Fix backup buffer leak on program exit [BZ #27821]
15ca6630 posix: Use <support/check.h> facilities in tst-truncate and tst-truncate64
f30501ca nptl: Use <support/check.h> facilities in tst-setuid3
370be858 libio: Attempt wide backup free only for non-legacy code
4dd86414 Add crt1-2.0.o for glibc 2.0 compatibility tests
fa4ad104 elf: Change ldconfig auxcache magic number (bug 32231)
9423cc53 nptl: initialize rseq area prior to registration
37ded328 nptl: initialize cpu_id_start prior to rseq registration
cf067723 x86: Avoid integer truncation with large cache sizes (bug 32470)
5c9be512 x86_64: Sort fpu/multiarch/Makefile
49016f21 x86_64: Add log2 with FMA
b2a45f1e x86_64: Add expm1 with FMA
c92946d9 x86_64: Add log1p with FMA
58822f95 x86: Check the lower byte of EAX of CPUID leaf 2 [BZ #30643]
7772f935 elf: Fix slow tls access after dlopen [BZ #19924]
5a64f933 x86: Only align destination to 1x VEC_SIZE in memset 4x loop
0d14bf07 sysdeps/x86/Makefile: Split and sort tests
dc176211 x86_64: Fix missing wcsncat function definition without multiarch (x86-64-v4)
04b8d484 x86: Improve large memset perf with non-temporal stores [RHEL-29312]
12fec8aa x86/string: Fixup alignment of main loop in str{n}cmp-evex [BZ #32212]
48642ef1 elf: Avoid some free (NULL) calls in _dl_update_slotinfo
549e7f7c elf: Support recursive use of dynamic TLS in interposed malloc
c32fd593 Fix underallocation of abort_msg_s struct (CVE-2025-0395)
650a0aaa stdlib: Test using setenv with updated environ [BZ #32588]
f984e2d7 assert: Add test for CVE-2025-0395
9ca74b8a AArch64: Improve generic strlen
95aa2143 AArch64: Optimize memset
5fe151d8 AArch64: Remove zva_128 from memset
3de51123 math: Improve layout of expf data
52c2b155 AArch64: Add SVE memset
097299ff AArch64: Use prefer_sve_ifuncs for SVE memset
5a08d049 math: Improve layout of exp/exp10 data

Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18648
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2025-05-01 19:26:53 +02: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
Weijie Gao
b9cb07eced toolchain: mold: add PKG_NAME to Makefile
In include/host-build.mk, HOST_BUILD_DIR is set by default value:
HOST_BUILD_DIR ?= $(BUILD_DIR_HOST)/$(PKG_NAME)

However the mold package has no PKG_NAME set at all. This means the
HOST_BUILD_DIR is identical to $(BUILD_DIR_HOST).

In the Host/Prepare stage, by default, the $(HOST_BUILD_DIR) will be
deleted at first unconditionally. Since HOST_BUILD_DIR is identical
to $(BUILD_DIR_HOST), the entire build_dir/toolchain-* directory will
be removed and this will cause build failure.

Adding PKG_NAME:=ld.mold can solve this issue.

Signed-off-by: Weijie Gao <hackpascal@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/18567
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-23 12:19:26 +02:00
Robert Marko
a06ed856bb gdb: update to 16.2
See news file for changes:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=gdb/NEWS;hb=gdb-16.2-release

It fixes compilation with GCC15.

Link: https://github.com/openwrt/openwrt/pull/18519
Signed-off-by: Robert Marko <robimarko@gmail.com>
2025-04-18 02:10:48 +02: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
Georgi Valkov
dfb8115d0c toolchain: gdb: 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: error: expected identifier or '('
  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
Felix Fietkau
6605e45676 build: conditionally build llvm bpf toolchain by default
Unless another toolchain is present (or selected), build the bpf toolchain
whenever a package is selected that needs it.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2025-02-07 11:16:08 +01:00
Yanase Yuki
72731b445e toolchain/binutils: remove old versions
Reduce supported versions to 3.
Since 2.40 is supported by previous release, this commit
keeps it.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/16597
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-10-12 22:12:39 +02:00
Hauke Mehrtens
1cd7708eb3 toolchain: gdb: Update to version 15.2
See news file for changes:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=gdb/NEWS;hb=gdb-15.1-release

This requires a C++17 compiler compatible compiler.

Link: https://github.com/openwrt/openwrt/pull/16665
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-10-12 21:51:01 +02:00
Yanase Yuki
4a5da15b3d toolchain/nasm: update to 2.16.03
Use gzip archive to avoid xz usage.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/16373
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-09-22 19:06:22 +02: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
Olcay Korkmaz
802be2457f toolchain: binutils: add support for 2.43.1
Release notes:
https://lists.gnu.org/archive/html/info-gnu/2024-08/msg00003.html

No need to refresh patches
Test device: Xiaomi ax3600

Signed-off-by: Olcay Korkmaz <nuke_mania@hotmail.com>
Link: https://github.com/openwrt/openwrt/pull/16405
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-09-17 11:30:26 +02:00
Yanase Yuki
ee64e7f202 toolchain/fortify-headers: update download url
Development of fortify-headers has been moved to GitHub.
Gentoo [1] and Alpine Linux [2] already uses it.

Since updating fortify-headers to new version causes a lot of
compile errors, this commit does not bump version.

This commit also refresh patch.

[1]: https://packages.gentoo.org/packages/sys-libs/fortify-headers
[2]: https://git.alpinelinux.org/aports/log/main/fortify-headers

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/16374
Signed-off-by: Robert Marko <robimarko@gmail.com>
2024-09-14 13:55:15 +02:00
Chuanhong Guo
9cf6ce5179 toolchain: binutils: add support for 2.43
Drop two backported patches, and autorefresh the rest.

Release notes:
https://lists.gnu.org/archive/html/info-gnu/2024-08/msg00001.html

Link: https://github.com/openwrt/openwrt/pull/16175
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
2024-08-16 20:10:38 +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
Tony Ambardar
cc6a1e2abc
toolchain/musl: add support for renameat2()
Backport an upstream patch to support the renameat2 syscall, added in Linux
3.15 and supported by glibc since 2.28. It is commonly used in filesystem
or security contexts, and needed building upstream kernel bpf selftests.

Link:
https://inbox.vuxu.org/musl/20240421153640.379015-1-Tony.Ambardar@gmail.com/

Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/15697
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-06-13 14:16:32 +02: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
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
Hauke Mehrtens
6b3195ae62 toolchain: glibc: Update glibc 2.38 to recent HEAD
23514c72b7 syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6246)
d0338312aa syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6779)
d37c2b20a4 syslog: Fix integer overflow in __vsyslog_internal (CVE-2023-6780)
30e546d76e x86_64: Optimize ffsll function code size.
18876c9ff5 S390: Fix building with --disable-mutli-arch [BZ #31196]
6f68075869 sparc: Fix broken memset for sparc32 [BZ #31068]
0e383d2d4e sparc64: Remove unwind information from signal return stubs [BZ#31244]
aac57faf54 sparc: Fix sparc64 memmove length comparison (BZ 31266)
0c5e5bace5 sparc: Remove unwind information from signal return stubs [BZ #31244]
b09073e631 arm: Remove wrong ldr from _dl_start_user (BZ 31339)
506e47da1d malloc: Use __get_nprocs on arena_get2 (BZ 30945)
ee4806e978 S390: Do not clobber r7 in clone [BZ #31402]
5753cda1ca linux: Use rseq area unconditionally in sched_getcpu (bug 31479)
0518bb0c16 LoongArch: Correct {__ieee754, _}_scalb -> {__ieee754, _}_scalbf
5456ff5d80 Add HWCAP2_MOPS from Linux 6.5 to AArch64 bits/hwcap.h
d8a2b56b4f AArch64: Add support for MOPS memcpy/memmove/memset
25b66e8c4a AArch64: Cleanup ifuncs
1521237c32 AArch64: Cleanup emag memset
156e44845f AArch64: Add memset_zva64
a08ff92294 AArch64: Remove Falkor memcpy
168ae58e6e aarch64: correct CFI in rawmemchr (bug 31113)
1bf17ce978 aarch64: fix check for SVE support in assembler
92da7c2cfe AArch64: Check kernel version for SVE ifuncs
20534f8176 powerpc: Fix ld.so address determination for PCREL mode (bug 31640)
e1135387de iconv: ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence (CVE-2024-2961)
61484011e7 sparc: Remove 64 bit check on sparc32 wordsize (BZ 27574)
78d9f91da6 login: Check default sizes of structs utmp, utmpx, lastlog
68bff88592 login: structs utmp, utmpx, lastlog _TIME_BITS independence (bug 30701)
decc9f504a nptl: Fix tst-cancel30 on kernels without ppoll_time64 support
29e20bd122 i386: ulp update for SSE2 --disable-multi-arch configurations
5968aebb86 CVE-2024-33599: nscd: Stack-based buffer overflow in netgroup cache (bug 31677)
541ea5172a CVE-2024-33600: nscd: Do not send missing not-found response in addgetnetgrentX (bug 31678)
2ae9446c1b CVE-2024-33600: nscd: Avoid null pointer crashes after notfound response (bug 31678)
71af8ca864 CVE-2024-33601, CVE-2024-33602: nscd: netgroup: Use two buffers in addgetnetgrentX (bug 31680)
e9f05fa1c6 elf: Also compile dl-misc.os with $(rtld-early-cflags)

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-05-04 20:03:47 +02:00
Weijie Gao
7fcb82665e loongarch64: new target
Add target for Loongson LoongArch64-based boards.

LoongArch is a new RISC ISA developed by Loongson. It's a bit like
MIPS or RISC-V. LoongArch includes both 32-bit and 64-bit versions
(LoongArch32/LoongArch64).

Loongson 3A5000 and 3A6000 are the two existing CPUs of LoongArch64
and is used for PC products. It's BIOS supports ACPI and UEFI-only
boot. These CPUs supports SMP and SMT.

At present only LoongArch64 is supported by linux kernel.

Toolchain requirement:
binutils >= 2.40
gcc >= 13.1

For details, please check the following links:
https://lwn.net/Articles/861951/
https://loongson.github.io/LoongArch-Documentation/README-EN.html

Signed-off-by: Weijie Gao <hackpascal@gmail.com>
2024-05-04 14:14:16 +08:00
Weijie Gao
197d90dc31 toolchain/musl: 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].

This means there are two dynamic linker names will be used across different
ersions of GCC. But musl 1.2.5 only supports the new name while the GCC
we're currently using uses the old name.

To maintain compatibility with all versions of GCC, the musl is then patched
to generate two symbolic links to libc.so with both old and new names.

[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
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
Kazuki H
5ee2b6fe57
toolchain: glibc: update to glibc 2.38
This updates glibc to version 2.38.

Add --enable-crypt since the crypt function got disabled in 2.38, but we
still need it.
Also add the newly introduced --enable-fortify-source flag and hook it up
to the build system.

Switch to .zst archive while at it.

Signed-off-by: Kazuki H <kazukih0205@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/14259
[ switch to .zst and fix mirror HASH ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-04-29 22:55:02 +02:00
Nick Hainke
c390c6c709 toolchain: binutils: switch to version 2.42 by default
Change the default binutils version to 2.42.

Tested-by: Jonathan Lancett <j.lancett@ntlworld.com>
Tested-by: Andre Heider <a.heider@gmail.com>
Signed-off-by: Nick Hainke <vincent@systemli.org>
2024-04-29 00:41:47 +02:00
Fabrice Fontaine
e1ca08518e toolchain/nasm: fix PKG_CPE_ID
cpe:/a:nasm:netwide_assembler is the correct CPE ID for nasm:
https://nvd.nist.gov/products/cpe/search/results?keyword=cpe:2.3🅰️nasm:netwide_assembler

Fixes: bcf02c5d31 (toolchain: assign PKG_CPE_ID)

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2024-04-27 12:08:41 +02:00
Christian Marangi
0e161968a7
toolchain/wrapper: fill and reference info.mk in staging_dir ext toolchain
Currently when external toolchain is used, a info.mk is created (with
to-be-filled values) but is never actually filled with real values and
is never actually used in rules.mk.

This info.mk is used down the code with special packages like libgcc to
reference info like gcc version and package special library.

To mimic what is done with internal toolchain, add the include in
rules.mk for info.mk also for external library and in fix
toolchain/wrapper to fill the staging_dir info.mk.

The logic is to check if the external toolchain provide an info.mk and
if it doesn't we at least fill the GCC_VERSION with the value set in the
.config file.

With this special library like libgcc correctly reference and have set the
GCC_VERSION variable.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-04-21 17:59:17 +02:00
Hannu Nyman
87d7fa8885 toolchain/musl: Update to 1.2.5
Update musl C library to 1.2.5

This release adds extension functions statx and preadv2/pwritev2,
with fallback implementations for older kernels, and adds two new
ports: loongarch64 and riscv32. Minor changes to the printf family
of functions have been made for conformance to new standards
interpretations/requirements. TLSDESC support for riscv64 has also
been added.

Bugs fixed include some DNS issues related to new TCP fallback
functionality, several rare race conditions, potentially incorrect
return value when glob aborts, and several signifiant arch-specific
bugs affecting TLSDESC on arm, riscv64 icache flushing, and
sh sigsetjmp and dlsym RTLD_NEXT.

1.2.5 release notes:

new features:
- statx function (linux extension; via syscall and fallback using fstatat)
- clone function is now usable and gives _Fork-like consistency in child
- statvfs now provides f_type result
- preadv2 and pwritev2 (linux extension) syscall wrappers
- riscv64 TLSDESC support

new ports:
- loongarch64
- riscv32

compatibility:
- DNS resolver can now handle answers with long CNAME chains
- string.h no longer provides (C23-incompat) non-prototype decl of basename
- fstatat statx backend now matches stat syscall non-automounting behavior
- mntent interfaces now handle escaped whitespace in paths/options

standards updates:
- printf %lc of nul wchar now produces output
- snprintf and swprintf no longer fail on n > INT_MAX
- ppoll is now exposed in default feature profile

bugs fixed:
- some long DNS answers were wrongly rejected despite new TCP support
- glob could wrongly return GLOB_NOMATCH if aborted before any matches
- multithreaded set*id could malfunction from thread sequencing logic bug
- certain use of threads after fork could deadlock thread-list lock
- posix_spawn child could deadlock in race with async parent death
- mbrtowc return value was wrong if argument n exceeded UINT_MAX
- 80-bit extended acoshl and powl got some corner cases wrong
- syslog incorrectly generated localized timestamps

arch-specific bugs fixed:
- arm (32-bit) TLSDESC malfunctioned due to addends being processed wrong
- riscv64 icache flush operation was non-functional
- sh sigsetjmp failed to properly restore call-saved register r8 on return
- sh dlsym RTLD_NEXT did not identify calling module correctly

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
[Removed patch adding basename hack again]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-04-14 17:38:09 +02: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
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
Christian Marangi
108374a656
toolchain: binutils: backport patch to fix mipsel_24kc_24kf
Backport patch to fix mipsel_24kc_24kf. Patch has been merged in
binutils master and these are straight backports with minor rework.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2024-04-02 21:42:23 +02: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
Hauke Mehrtens
2ef5714277 toolchain: glibc: Update glibc 2.37 to recent HEAD
512e30fd56 Revert "elf: Remove unused l_text_end field from struct link_map"
55d3dfadf8 Revert "elf: Always call destructors in reverse constructor order (bug 30785)"
8e20aedfd7 Revert "elf: Move l_init_called_next to old place of l_text_end in link map"
5014fb12f4 elf: Fix wrong break removal from 8ee878592c
874d418697 elf: Fix TLS modid reuse generation assignment (BZ 29039)
8bd00f5b6d x86-64: Fix the dtv field load for x32 [BZ #31184]
d052665f35 x86-64: Fix the tcb field load for x32 [BZ #31185]
0ca9ba3a9e NEWS: Mention bug fixes for 29039/30745/30843
9b90e763db getaddrinfo: translate ENOMEM to EAI_MEMORY (bug 31163)
bd9f194c34 libio: Check remaining buffer size in _IO_wdo_write (bug 31183)
8b8a3f0aaf sunrpc: Fix netname build with older gcc
97a4292aa4 syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6246)
67062eccd9 syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6779)
2b58cba076 syslog: Fix integer overflow in __vsyslog_internal (CVE-2023-6780)
1d8bb622df i386: Use pthread_barrier for synchronization on tst-bz21269
32450f6e8d sysdeps: tst-bz21269: fix test parameter
f7e97cea20 sysdeps: tst-bz21269: handle ENOSYS & skip appropriately
d97929eadc sysdeps: tst-bz21269: fix -Wreturn-type
5bbe7e0da5 x86_64: Optimize ffsll function code size.
98ec3e004e sparc: Fix broken memset for sparc32 [BZ #31068]
2ce7abef67 sparc64: Remove unwind information from signal return stubs [BZ#31244]
18da90677c sparc: Fix sparc64 memmove length comparison (BZ 31266)
8b849f70b3 sparc: Remove unwind information from signal return stubs [BZ #31244]
eee7525d35 arm: Remove wrong ldr from _dl_start_user (BZ 31339)

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2024-02-10 12:52:09 +01:00
Nick Hainke
07ea729761 toolchain: binutils: add support for version 2.42
Release Notes:
https://lists.gnu.org/archive/html/info-gnu/2024-01/msg00016.html

Signed-off-by: Nick Hainke <vincent@systemli.org>
2024-02-06 19:20:49 +01:00
Cedric DOURLENT
34fd41a997 toolchain: glibc: add --enable-stack-protector=all option for glibc
Add missing configurition for glibc based on CONFIG_PKG_CC_STACKPROTECTOR_ALL

Signed-off-by: Cedric DOURLENT <cedric.dourlent@softathome.com>
2024-01-19 21:28:53 +01:00
Felix Fietkau
2872ff7be1 toolchain/gdb: add pthread to CFLAGS/LDFLAGS for zstd
Works around a build issue when building on a host with an older glibc,
where it would fail to detect ELF support in libbfd

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-12-19 10:54:19 +01:00
Felix Fietkau
66dfbca262 toolchain/gdb: export ZSTD_CFLAGS/LIBS to fix build on non-linux systems
Avoids picking up libs and header files from musl

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2023-12-18 11:42:08 +01:00
Nick Hainke
f329eb8e7a toolchain/gdb: update to 14.1
Release Notes:
https://lists.gnu.org/archive/html/info-gnu/2023-12/msg00001.html

Refresh patch:
- 120-fix-compile-flag-mismatch.patch

Signed-off-by: Nick Hainke <vincent@systemli.org>
2023-12-08 16:26:30 +01:00
Hannu Nyman
a7a94bc4f0 toolchain/gdb: update to 13.2
Update the toolchain gdb to version 13.2.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
2023-11-10 08:39:38 +01:00
Christian Marangi
28420cd67b
scripts/ext-toolchain: implement external GCC version detection
Some package may needs to enable compatibility option based on the GCC
version.

Currently the GCC version is set based on the default value and doesn't
actually reflect the real value provided by the external toolchain if
used.

Fix this by correctly detecting the GCC version in the external
toolchain and set the correct value in CONFIG_GCC_VERSION.

A new option is added in menuconfig to manually set the GCC version if
needed.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
2023-10-20 16:13:31 +02:00
Hauke Mehrtens
e66eed033f toolchain: glibc: Update glibc 2.37 to recent HEAD
This adds the following changes:
b4f76ecc9e Ignore MAP_VARIABLE in tst-mman-consts.py
f5d377c896 __check_pf: Add a cancellation cleanup handler [BZ #20975]
0e3e9dbb0e Document BZ #20975 fix
e2974d26ce io: Fix record locking contants on 32 bit arch with 64 bit default time_t (BZ#30477)
3593050c27 io: Fix F_GETLK, F_SETLK, and F_SETLKW for powerpc64
8dcb1a5181 hppa: xfail debug/tst-ssp-1 when have-ssp is yes (gcc-12 and later)
0930ff8eb3 realloc: Limit chunk reuse to only growing requests [BZ #30579]
3f4b4e2cdd elf: _dl_find_object may return 1 during early startup (bug 30515)
260d4b742b nptl: Fix tst-cancel30 on sparc64
58f7431fd7 sparc: Fix la_symbind for bind-now (BZ 23734)
1caf955269 x86: Increase `non_temporal_threshold` to roughly `sizeof_L3 / 4`
80a8c858a5 x86: Fix slight bug in `shared_per_thread` cache size calculation.
cc8243fb0b x86: Use `3/4*sizeof(per-thread-L3)` as low bound for NT threshold.
f94ff95e93 x86: Fix incorrect scope of setting `shared_per_thread` [BZ# 30745]
0d500bfdc0 hurd: Make exception subcode a long
be26b29262 io: Fix record locking contants for powerpc64 with __USE_FILE_OFFSET64
3d24d1903d elf: Do not run constructors for proxy objects
a7e34a6675 elf: Always call destructors in reverse constructor order (bug 30785)
bdb594afa5 elf: Remove unused l_text_end field from struct link_map
1a7cbe52c8 elf: Move l_init_called_next to old place of l_text_end in link map
b752934602 CVE-2023-4527: Stack read overflow with large TCP responses in no-aaaa mode
6529a7466c (HEAD) getaddrinfo: Fix use after free in getcanonname (CVE-2023-4806)
79310b45af x86/dl-cacheinfo: remove unsused parameter from handle_amd
9d5c6e27ed x86: Fix for cache computation on AMD legacy cpus.
4473d1b87d Fix leak in getaddrinfo introduced by the fix for CVE-2023-4806 [BZ #30843]
94ef701365 Document CVE-2023-4806 and CVE-2023-5156 in NEWS
2dfd8c77b5 i686: Regenerate ulps
b4e23c75ae tunables: Terminate if end of input is reached (CVE-2023-4911)

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2023-10-08 14:05:12 +02:00