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>
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>
/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>
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>
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>
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>
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>
The PKG_CPE_ID links to NIST CPE version 2.2.
Assign PKG_CPE_ID to all remaining package which have a CPE ID.
Not every package has a CPE id.
Related: https://github.com/openwrt/packages/issues/8534
Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
Remove debugging `env` dump left over as build environments might
contain some sensitive information, which then might leak into the build
logs.
Fixes: 2105acbe28 ("kernel-headers: fix compile error caused by wrong host include path when the toolchain is already built")
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Executing following command currently fails:
$ make toolchain/kernel-headers/{download,check} V=sc FIXUP=1
...
include/kernel-version.mk:11: *** Missing kernel version/hash file for . Please create include/kernel-. Stop.
So lets fix it by adding the necessary missing KERNEL_PATCHVER variable.
That additional kernel-build.mk include is needed to add another set of
missing variables:
$ make toolchain/kernel-headers/{download,check} V=sc FIXUP=1
...
Makefile:115: *** ERROR: Unknown pack format for file tmp/dl/. Stop.
Fixes: 0765466a42 ("kernel: split kernel version to dedicated files")
Signed-off-by: Petr Štetiar <ynezz@true.cz>
Add the __extension__ mark before #include_next in strings.h
to avoid a compiler error when -pedantic is enabled.
This has been done for all other headers in the past.
Signed-off-by: Matthias Van Parys <matthias.vanparys@softathome.com>
Since kernel 5.17+ the mips asm.h includes isa-rev.h, which itself was
added 4.17. Without it, lzma-loader will fail to build:
make[3] -C target/linux compile
make[5]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.
In file included from head.S:22:
.../staging_dir/toolchain-mips_mips32_gcc-12.3.0_musl/include/asm/asm.h:22:10: fatal error: asm/isa-rev.h: No such file or directory
22 | #include <asm/isa-rev.h>
| ^~~~~~~~~~~~~~~
compilation terminated.
make[6]: *** [Makefile:64: head.o] Error 1
make[5]: *** [Makefile:345: compile] Error 2
make[4]: *** [Makefile:24: compile] Error 2
make[3]: *** [Makefile:11: compile] Error 2
ERROR: target/linux failed to build.
So add the file to the files to install. We can do that unconditionally,
since the oldest supported kernel 5.15 already includes it, even it if
does not need it.
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
RISC-V has no support for subword atomic operations; code currently
generates libatomic library calls.
This patch changes the default behavior to fast inline subword atomic
calls that do not require libatomic.
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
The glibc build was failing with this error message:
aclocal.m4:6: error: Exactly version 2.69 of Autoconf is required but you have 2.71
aclocal.m4:6: the top level
The autoconf run on glibc is not needed, just remove it.
Fixes: #12631
Fixes: 030447b8f4 ("tools/autoconf: bump to 2.71")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Release notes:
new features:
- large dns record lookups via tcp fallback
- new getaddrinfo EAI_NODATA result to distinguish NODATA/NxDomain
- support for new RELR compressed format for relative relocations
- sysconf keys for querying signal stack size requirements
- real vfork on riscv64
performance:
- mallocng no longer uses MADV_FREE (high performance cost, little gain)
- vdso clock_gettime is supported once again on 32-bit arm
compatibility:
- gethostbyname family now distinguishes NO_DATA from HOST_NOT_FOUND
- res_send now works with caller-provided edns0 queries
- arpa/nameser.h RR types list is now up-to-date
- previously-missing POSIX confstr keys have been added
- mntent interfaces now accept missing fields
- alt signal stack, if any, is now used for internal signals
- the LFS64 macros are no longer exposed without _LARGEFILE64_SOURCE
- memmem (POSIX-future) is now exposed in default feature profile
- pthread_atfork now admits calls from an application-provided malloc
- debugger tracking of shared libraries now works on MIPS PIE binaries
- sendmsg now supports up to SCM_MAX_FD fds in SCM_RIGHTS messages
bugs fixed:
- gethostbyname[2]_r wrongly returned nonzero (error) on negative result
- parallel v4/v6 address queries could fail on query id collisions
- spurious getaddrinfo/AI_ADDRCONFIG failures due to errno clobbering
- dns search domains ending in dot (including lone dot) broke lookups
- ipv6 servers in resolv.conf broke lookups on systems with v6 disabled
- systems with bindv6only failed to query both v4 and v6 nameservers
- res_mkquery mishandled consecutive final dots in name
- res_send could malfunction for very small answer buffer sizes
- resolver dns backend accepted answers with wrong (A vs AAAA) RR type
- getservbyport_r returned junk or ENOENT (vs ERANGE) on buffer size errors
- dns result parsing of malformed responses could process uninitialized data
- freopen didn't reset stream orientation (byte/wide) & encoding rule
- fwprintf didn't print most fields on open_wmemstream FILEs
- wide printf %lc ignored field width
- wide printf erroneously processed %n after encoding errors
- use of wide printf %9$ argument slot overflowed undersized buffer
- swprintf malfunctioned on nul character in output
- strverscmp ordered digit sequences vs nondigits incorrectly
- timer_create/SIGEV_THREAD failure leaked the thread
- semaphores were subject to missed-wake under certain usage patterns
- several possible rare deadlocks with lock handling at thread exit
- several possible rare deadlocks with aio and multithreaded fork
- dynamic linker relro processing was broken on archs w/variable pagesize
- async cancellation could run cancellation handlers in invalid context
- pthread_detach was wrongly a cancellation point in rare race code path
- use-after-close/double-close errors in mq_notify error paths
- mq_notify event thread wrongly ran with signals unmasked
- wcs{,n}cmp, wmemcmp returned wrong results when difference overflowed
- accept4, pipe2, and dup3 handled unknown flags wrong in fallback cases
- CPU_SETSIZE macro had wrong unit
- select fallback for pre-time64 kernels truncated timeout (vs clamping)
arch-specific bugs fixed:
- x32 new socketcalls took fallback path due to pointer sign extension
- x32 wait4 didn't fill rusage structure (time64 regression)
- x32 semtimedop mismatched timespec ABI with kernel (time64 regression)
- sigaction signal mask was bogus on or1k, microblaze, mips, and riscv
- powerpc-sf longjmp asm clobbered value argument
- or1k poll function passed timeout to syscall in wrong form
Removed upstreamed:
- 800-mips_pie_debug.patch
Manually rebased:
- 600-nftw-support-common-gnu-extension.patch
Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
some targets do not define the _REDIR_TIME64 macro resulting in a
build error regression since ddfe5678a4
fix by checking if the macro is defined
[1] https://github.com/openwrt/openwrt/issues/12587Fixes: #12587
Fixes: ddfe5678a4 ("fortify-headers: fix inconsistent time_t version of ppoll")
Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
The purpose of this is to remove all of the compatibility code that is
normally compiled into glibc for kernels < 5.15 from our build. Only
Linux kernels >= 5.15 will be supported.
Signed-off-by: Nick Hainke <vincent@systemli.org>
While improving access path analysis a typo happened. Now it can happen
that gcc misscompiles. The patch is fixing the issue. However, also
other gcc versions 10.2+ are affected. They also should be bumped or the
fix should be backported.
For more bug information have a look at:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109585
Signed-off-by: Nick Hainke <vincent@systemli.org>
LTO object files will now be compressed using zstd.
Compressing debug sections with zstd will have to wait for GCC 13,
which adds support for -gz=zstd.
NOTE: wiping the ccache is strongly recommended, not doing so might
yield build error later on:
"lto1: internal compiler error: original not compressed with zstd"
Signed-off-by: Andre Heider <a.heider@gmail.com>
This was build tested with all core packages on all targets
successfully.
This was run tested on the following systems:
* lantiq/xrx200 musl
* x86/64 musl
* x86/64 glibc
* malta/be
The size of some of the initramfs images from lantiq/xrx increased by
240 bytes.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Add the patches with real changes from the binutils 2.40 stable branch.
I am not aware that we ran into any of these problems, but I think it is
better to take the existing stable patches.
They were exported like this:
git format-patch binutils-2_40...origin/binutils-2_40-branch
I removed the patches changing the version numbers and updating the
translations only.
I removed the following patches:
*Automatic-date-updat*
001-Re-enable-development.-Update-version-to-2.40.0.patch
004-Updated-translations-for-the-gas-and-binutils-sub-di.patch
015-Updated-Swedish-translation-for-the-binutils-sub-dir.patch
027-Updated-Swedish-translation-for-the-binutils-sub-dir.patch
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
The utils subtarget was used for uClibc and eglibc
which are both obsolete and replaced in Openwrt by mainline
musl and glibc, which do not have a utils Makefile target.
Ref: 5d19a38d8 ("toolchain: sync eglibc headers/build split with uclibc changes")
Fixes: 63fb17520 ("toolchain: remove uClibc-ng")
Suggested-by: Andre Heider <a.heider@gmail.com>
Signed-off-by: Michael Pratt <mcpratt@pm.me>
Reorganize dependencies between toolchain targets to save a line.
This also puts them in a linear order which is easier to read.
Signed-off-by: Michael Pratt <mcpratt@pm.me>
Use the gcc/final/install target stampfile as the prerequisite
for the toolchain/compile target stampfile.
The previous filename was also incorrect,
the stampfile name format was changed (see reference)
but was never updated here.
The issue was never noticed
because the usage of timestamp.pl was broken
(fixed in previous commit)
causing the extra prereq files passed to 'call stampfile'
to never get checked at all.
Fixes: 5149ed151 ("gcc: split up the build process into three distinct stages")
Signed-off-by: Michael Pratt <mcpratt@pm.me>
This was apparently introduced to recreate the toolchain (wipe
staging_dir/toolchain*, but keep build_dir/toolchain*, followed by a
`make toolchain/compile`).
But it leaves leftovers and causes re-links to happen at src_install phase,
because of the changed paths, possibly adding yet another source of issues.
With the prior commits removing various hacks related to the "initial"
folder we can remove installing it twice altogether.
The recreated toolchain is exactly the same as before.
Signed-off-by: Andre Heider <a.heider@gmail.com>
Add it to the existing list to fix it up.
Found by mold:
toolchain-x86_64_gcc-12.2.0_glibc/lib/libm.so:4: GROUP ( /lib/libm.so.6 AS_NEEDED ( /lib/libmvec.so.1 ) )
^ library not found: /lib/libm.so.6
Signed-off-by: Andre Heider <a.heider@gmail.com>
A modern glibc only links against libgcc_eh for its tests or when building it
static, which doesn't happen here.
Reverts a hunk of: a3edea1b "add support for alternative C libraries..."
Signed-off-by: Andre Heider <a.heider@gmail.com>
This reverts commit 9d1b619cb1.
No Linaro binutils are supported anymore, the leftover removal commit
missed one line.
Fixes: b648e1c0 "binutils: remove 2.25.1 support and leftovers of older versions"
Signed-off-by: Andre Heider <a.heider@gmail.com>
In [0] support for ARC specific binutils were added, which was later removed
again [Fixes:].
Upstream binutils never had an extlib.
[0] 8b5d644b "toolchain: add support of ARC architecture"
Fixes: 8568dcd9 "toolchain: Remove binutils 2.29 for ARC targets"
Signed-off-by: Andre Heider <a.heider@gmail.com>
This updates to glibc to version 2.37.
Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
[Update to current git commit]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Instead of having two different ways to pass flags to the gcc build
process, add them as configure args, which is a reliable way to let
gcc pass them around to its various pieces.
Also add CXXFLAGS, since gcc started to use c++ for itself recently
(~10 years ago now).
Signed-off-by: Andre Heider <a.heider@gmail.com>