tools/dwarves: add host package dwarves is a set of tools that use the debugging information inserted in ELF binaries by compilers such as GCC. Utilities in the dwarves suite include pahole, which can be used to find alignment holes in structs and classes, and also extracts other information such as CPU cacheline alignment, helping pack those structures to achieve more cache hits. These tools are also used to encode and read the BTF type information format used with the bpf syscall, making this a Linux build dependency when using kernel BTF information. Signed-off-by: Tony Ambardar <itugrok@yahoo.com> Signed-off-by: Felix Fietkau <nbd@nbd.name> [bump to 1.23, add elfutils dep, drop host lib usage, drop cmake release target, use RM macro] Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
toolchain: Update glibc 2.34 to recent HEAD This adds the following changes: 31186e2cb7 elf: Sort tests and modules-names 511b244cc5 elf: Add a comment after trailing backslashes de6cdd6875 elf/Makefile: Reflow and sort most variable assignments 948ebc098e Fix glibc 2.34 ABI omission (missing GLIBC_2.34 in dynamic loader) b952c25dc7 x86: Black list more Intel CPUs for TSX [BZ #27398] aa601d0244 x86: Use CHECK_FEATURE_PRESENT to check HLE [BZ #27398] e09e7b1492 support: Add support_socket_so_timestamp_time64 e098446037 linux: Fix ancillary 64-bit time timestamp conversion (BZ #28349, BZ#28350) 489d0b8b32 Linux: Only generate 64 bit timestamps for 64 bit time_t recvmsg/recvmmsg 008003dc6e tst-socket-timestamp-compat.c: Check __TIMESIZE [BZ #28837] 05c83ccaf5 linux: __get_nprocs_sched: do not feed CPU_COUNT_S with garbage [BZ #28850] ad615b59c7 Linux: Simplify __opensock and fix race condition [BZ #28353] d8302ba2da hurd if_index: Explicitly use AF_INET for if index discovery 6eaf10cbb7 socket: Do not use AF_NETLINK in __opensock 0351c75c5f linux: Fix missing __convert_scm_timestamps (BZ #28860) d64b08d5ba Add reference to BZ#28860 on NEWS 007e054d78 linux: fix accuracy of get_nprocs and get_nprocs_conf [BZ #28865] 04d60ce0f2 string: Add a testcase for wcsncmp with SIZE_MAX [BZ #28755] 38e0d24794 x86: Fallback {str|wcs}cmp RTM in the ncmp overflow case [BZ #28896] d093b677c3 x86: Test wcscmp RTM in the wcsncmp overflow case [BZ #28896] 15b00d2af0 x86: Fix TEST_NAME to make it a string in tst-strncmp-rtm.c d5d1c95aaf NEWS: Add a bug fix entry for BZ #28896 852361b5a3 localedef: Handle symbolic links when generating locale-archive 3be79b72d5 Fix elf/tst-audit2 on hppa c6f9085ee4 hppa: Fix swapcontext f610d2935f hppa: Revise gettext trampoline design 40fc6a74ee nptl: Fix cleanups for stack grows up [BZ# 28899] 6c9c230765 hppa: Fix warnings from _dl_lookup_address b5032c3d37 io: Add fsync call in tst-stat b53f0c11de nss: Do not mention NSS test modules in <gnu/lib-names.h> 54b1273395 nss: Protect against errno changes in function lookup (bug 28953) c82bdf033f Don't add access size hints to fortifiable functions 0e6ebf06e4 Make sure that the fortified function conditionals are constant 536910724d debug: Add tests for _FORTIFY_SOURCE=3 98ea9372cc __glibc_unsafe_len: Fix comment 10f7bdebe5 fortify: Fix spurious warning with realpath d6a58bd81d Enable _FORTIFY_SOURCE=3 for gcc 12 and above f8c2f620f1 debug: Autogenerate _FORTIFY_SOURCE tests 224d8c1890 debug: Synchronize feature guards in fortified functions [BZ #28746] 738ee53f0c hppa: Implement swapcontext in assembler (bug 28960) d53b9cc391 hppa: Use END instead of PSEUDO_END in swapcontext.S 4b5b8a1cdf powerpc: Delete unneeded ELF_MACHINE_BEFORE_RTLD_RELOC b19de59d62 elf: Avoid nested functions in the loader [BZ #27220] c6df39a0bd elf: Fix elf_get_dynamic_info definition b868b45f67 elf: Fix dynamic-link.h usage on rtld.c f6a54a3042 elf: Fix elf_get_dynamic_info() for bootstrap a31bbe3242 elf: Move LAV_CURRENT to link_lavcurrent.h e25fe99213 elf: Move la_activity (LA_ACT_ADD) after _dl_add_to_namespace_list() (BZ #28062) ce0cb6d1d2 elf: Add _dl_audit_objopen 66e9d27a09 elf: Add _dl_audit_activity_map and _dl_audit_activity_nsid ec0fc2a153 elf: Add _dl_audit_objsearch 198660741b elf: Add _dl_audit_objclose b2d99731b6 elf: Add _dl_audit_symbind_alt and _dl_audit_symbind 31473c273b elf: Add _dl_audit_preinit fd9c4e8a1b elf: Add _dl_audit_pltenter a8e211daea elf: Add _dl_audit_pltexit 29496b3103 elf: Avoid unnecessary slowdown from profiling with audit (BZ#15533) 02c6a3d353 elf: Add audit tests for modules with TLSDESC d1b9bee29a elf: Issue audit la_objopen for vDSO 2255621f0e elf: Do not fail for failed dlmopen on audit modules (BZ #28061) 98047ba95c elf: Add la_activity during application exit efb21b5fb2 elf: Fix initial-exec TLS access on audit modules (BZ #28096) 056fc1c0e3 elf: Issue la_symbind for bind-now (BZ #23734) b118bce87a elf: Fix runtime linker auditing on aarch64 (BZ #26643) 165e7ad459 Fix elf/tst-audit25a with default bind now toolchains aabdad371f elf: Replace tst-audit24bmod2.so with tst-audit24bmod2 4dca2d3a7b hppa: Fix bind-now audit (BZ #28857) ceed89d089 NEWS: Update fixed bug list for LD_AUDIT backports. 0c03cb54c8 S390: Add new s390 platform z16. 290db09546 nptl: Handle spurious EINTR when thread cancellation is disabled (BZ#29029) 5d8c777634 hurd: Fix arbitrary error code b87b697f15 mips: Fix mips64n32 64 bit time_t stat support (BZ#29069) Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
toolchain: musl: Update to version 1.2.3 Changes: new features: - qsort_r function (POSIX-future) - pthread_getname_np extension function - hard float on SPE FPU for powerpc-sf - SEEK_DATA and SEEK_HOLE exposed in unistd.h (Linux extensions) compatibility: - free now preserves errno (POSIX-future requirement) - setjmp is declared explicitly with returns_twice for non-GCC compilers - macro version of isascii is no longer defined for C++ - dynamic linker now tolerates zero-length LOAD segments - epoll_[p]wait is now a cancellation point - pwd/grp functions no longer fail on systems without AF_UNIX support - POSIX TZ parsing is stricter to allow more names to fallback to files - NULL is now defined as nullptr when used in C++11 or later - gettext now accepts null pointer as argument bugs fixed: - old regression in wcwidth of Hangul combining (vowel/final) letters - duplocale used wrong malloc when malloc was replaced (1.2.2 regression) - fmaf rounded wrong on archs without FE_TOWARDZERO (all softfloat archs) - popen didn't honor requirement not to leak other popen pipe fds to child - aligned_alloc and variants crashed on allocation failure - dl_iterate_phdr reported incorrect module TLS pointers - mishandling of some inputs in acoshf and expm1f and functions using them - potentially wrong-sign zero in cproj functions at infinity - multiple bugs in legacy function cuserid - minor posix_spawn file actions API conformance issues - pthread_setname_np fd leak - out-of-bound read in zoneinfo handling with distant-past times - out-of-tree builds lacked generated debug cfi for x86 asm arch-specific bugs fixed: - powerpc (32-bit) struct shmid_ds layout was wrong for some fields - time64 struct layout was wrong in sound ioctl fallback (32-bit archs) In addition it contains the following improvements: * protect stack canary from leak via read-as-string by zeroing second byte * fix excessively slow TLS performance on some mips models Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Acked-by: Rui Salvaterra <rsalvaterra@gmail.com> Tested-by: Rui Salvaterra <rsalvaterra@gmail.com> Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
toolchain: binutils: add support for version 2.38 While at it, also fix the download.xs4all.nl and add ftp.gnu.org to the GNU mirrors, as it seems to be updated faster. Deleted (upstreamed): 600-Close_the_file_descriptor.patch [1] [1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=5a98fb7513b559e20dfebdbaa2a471afda3b4742 Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
toolchain/binutils: remove old versions Signed-off-by: Felix Fietkau <nbd@nbd.name>
toolchain: gdb: Update to version 11.2 This is a minor corrective release over GDB 11.1, fixing the following issues: * PR sim/28302 (gdb fails to build with glibc 2.34) * PR build/28318 (std::thread support configure check does not use CXX_DIALECT) * PR gdb/28405 (arm-none-eabi: internal-error: ptid_t remote_target::select_thread_for_ambiguous_stop_reply(const target_waitstatus*): Assertion `first_resumed_thread != nullptr' failed) * PR tui/28483 ([gdb/tui] breakpoint creation not displayed) * PR build/28555 (uclibc compile failure since commit 4655f8509fd44e6efabefa373650d9982ff37fd6) * PR rust/28637 (Rust characters will be encoded using DW_ATE_UTF) * PR gdb/28758 (GDB 11 doesn't work correctly on binaries with a SHT_RELR (.relr.dyn) section) * PR gdb/28785 (Support SHT_RELR (.relr.dyn) section) Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
glibc: update to 2.34 HEAD 72123e1b56 NEWS: Add a bug entry for BZ #28755 08beb3a3f4 x86: Fix __wcsncmp_evex in strcmp-evex.S [BZ# 28755] b50d5b746c x86: Fix __wcsncmp_avx2 in strcmp-avx2.S [BZ# 28755] 1b9cd6a721 NEWS: add bug entry for BZ #28769 and BZ #28770 3438bbca90 Linux: Detect user namespace support in io/tst-getcwd-smallbuff d084965adc realpath: Avoid overwriting preexisting error (CVE-2021-3998) 472e799a5f getcwd: Set errno to ERANGE for size == 1 (CVE-2021-3999) 8c8a71c85f tst-realpath-toolong: Fix hurd build f7a79879c0 realpath: Set errno to ENAMETOOLONG for result larger than PATH_MAX [BZ #28770] 73c362840c stdlib: Fix formatting of tests list in Makefile 269eb9d930 stdlib: Sort tests in Makefile 062ff490c1 support: Add helpers to create paths longer than PATH_MAX 82b1acd9de powerpc: Fix unrecognized instruction errors with recent binutils 1d401d1fcc x86: use default cache size if it cannot be determined [BZ #28784] 6890b8a3ae CVE-2022-23218: Buffer overflow in sunrpc svcunix_create (bug 28768) 1081f1d3dd sunrpc: Test case for clnt_create "unix" buffer overflow (bug 22542) 7b5d433fd0 CVE-2022-23219: Buffer overflow in sunrpc clnt_create for "unix" (bug 22542) 5575daae50 socket: Add the __sockaddr_un_set function 03e6e02e6a Disable debuginfod in printer tests [BZ #28757] 705f1e4606 Update syscall lists for Linux 5.16 2fe2af88ab i386: Remove broken CAN_USE_REGISTER_ASM_EBP (bug 28771) 73558ffe84 Update syscall lists for Linux 5.15 e64235ff42 powerpc: Fix unrecognized instruction errors with recent GCC Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
toolchain/binutils: v2.37 Close the file descriptor if there is no archive fd This fixes the following build error: /home/build/openwrt/staging_dir/toolchain-aarch64_cortex-a53_gcc-11.2.0_musl/lib/gcc/aarch64-openwrt-linux-musl/11.2.0/../../../../aarch64-openwrt-linux-musl/bin/ld: /home/sergey/openwrt2/build_dir/target-aarch64_cortex-a53_musl/node-v14.18.2/out/Release/obj.target/tools/v8_gypfiles/libv8_base_without_compiler.a: error adding symbols: malformed archive collect2: error: ld returned 1 exit status It's a bad error handling related to -EMFILE (too many open files). nodejs is probably just very close to open file limit. https://sourceware.org/bugzilla/show_bug.cgi?id=28138 https://github.com/nodejs/node/issues/39452 https://github.com/openwrt/packages/issues/17496 https://github.com/openwrt/packages/issues/16729 https://github.com/openwrt/packages/issues/17164 Signed-off-by: Hirokazu MORIKAWA <morikw2@gmail.com> [Take full patch from 2.37 branch and refresh] Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
toolchain: glibc: Increase minimum kernel version to 5.4 Increase the minimum kernel version needed by the glibc compiled for OpenWrt to version 5.4. With this setting the glibc build will remove all code needed to support older kernel versions. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
toolchain: glibc: Update to version 2.34 glibc version 2.34 does not provide versioned shared libraries any more, it only provides shared libraries using the ABI version. Do not try to copy them any more. The functions from libpthread and librt were integrated into the main binary, the libpthread.so and librt.so are only used for backwards compatibility any more. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
toolchain: musl: disable crypt size hack by default Enable this option and thus re-include crypt() support for the SHA256, SHA512 and Blowfish ciphers on all devices. According to commit 9365745f8e7b ("musl: add a hack to remove unused crypt() algorithms, saves ~14k after lzma") it should add about ~14k to the resulting image, which seems to be a reasonable size increase for consistent crypt() support. Decided to not remove this hack completely as it might be still useful for people trying to fit custom images onto smaller devices and the patch is rather simple so we can afford to keep it for now. References: https://github.com/openwrt/openwrt/pull/1331 Signed-off-by: Petr Štetiar <ynezz@true.cz>
toolchain/gcc: use ELFv2 ABI on ppc64 with musl At configuration time, gcc assumes that ppc64be targets use the ELFv1 ABI, and ppc64le targets use the ELFv2 ABI. However, musl libc does not support the ELFv1 ABI on ppc64 at all, regardless of the endianness. Therefore, when building for a ppc64 arch and with musl libc, instruct gcc to use the ELFv2 ABI. See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93157 for more info. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be> Reviewed-by: Rui Salvaterra <rsalvaterra@gmail.com>
toolchain/gcc: refresh gcc-11.2.0 patch Run make toolchain/gcc/minimal/refresh (with glibc, with musl toolchain/gcc/{initial,final}/refresh don't work) Fixes: ab241e0937c9 ("toolchain/gcc: fix build on MacOS arm64") Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
toolchain/gcc: replace revert with upstream fix This will make upgrade to v11.3.0 easier and follows upstream more closely. Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
toolchain/gcc: remove upstreamed patch, add backport This patch has been upstream since GCC 10. Dragan Mladjenovic (2): Emit .note.GNU-stack for soft-float linux targets. Emit .note.GNU-stack for hard-float linux targets. Link: https://gcc.gnu.org/g:a3c1e1f2ff88 Link: https://gcc.gnu.org/g:54b3d52c3cca Add backport patch to define TARGET_LIBC_GNUSTACK on musl to add .note.GNU-stack on hard-float MIPS targets. Link: https://gcc.gnu.org/g:25abbb924968 The net effect should be the exact same functionality while following upstream code instead of a custom outdated patch. Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
toolchain/gcc: fix build on MacOS arm64 Added patch for GCC to fix compilation issues on MacOS arm64 The original commit message from Przemysław Buczkowski: GCC: Patch for Apple Silicon compatibility This patch fixes a linker error occuring when compiling the cross-compiler on macOS and ARM64 architecture. Adapted from: https://github.com/richfelker/musl-cross-make/issues/116#issuecomment-823612404 Signed-off-by: Sergey V. Lobanov <sergey@lobanov.in>
toolchain: add a version that can be bumped to force toolchain/target rebuild This can be used to ensure that the compiled code is up to date, when something important changes in the toolchain. A recent example of this is the gcc 11 fix for a code miscompilation issue Signed-off-by: Felix Fietkau <nbd@nbd.name>