aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain
Commit message (Collapse)AuthorAgeFilesLines
* toolchain: gcc: backport inline subword atomic support for riscvTianling Shen2023-06-169-3/+6174
| | | | | | | | | | | 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> (cherry picked from commit 7b4a966de88aa0e1f9b7faa62a4d6cb7b01e9f8f)
* toolchain: glibc: Fix build with autoconf 2.71Hauke Mehrtens2023-05-181-5/+0
| | | | | | | | | | | | 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: 030447b8f4c7 ("tools/autoconf: bump to 2.71") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain: glibc: Update glibc 2.37 to recent HEADHauke Mehrtens2023-05-181-2/+2
| | | | | | | | | | | | | | | | | This adds the following changes: 790e504a17 stdlib: Undo post review change to 16adc58e73f3 [BZ #27749] 590d0e089b elf: Restore ldconfig libc6 implicit soname logic [BZ #30125] 1d63573f81 stdio-common: tests: don't double-define _FORTIFY_SOURCE 97ad4c64b9 gshadow: Matching sgetsgent, sgetsgent_r ERANGE handling (bug 30151) 9cc2f41e52 x86_64: Fix asm constraints in feraiseexcept (bug 30305) 78ab913eab posix: Fix system blocks SIGCHLD erroneously [BZ #30163] 5d750495db gmon: Fix allocated buffer overflow (bug 29444) d230623264 gmon: improve mcount overflow handling [BZ# 27576] ff3a71ec1f gmon: fix memory corruption issues [BZ# 30101] a908c18d47 gmon: Revert addition of tunables to preserve GLIBC_PRIVATE ABI 7c32cb7dd8 gmon: Revert addition of tunables to the manual Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain/musl: update to 1.2.4Linhui Liu2023-05-153-69/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* fortify-headers: fix build error when _REDIR_TIME64 is not definedGeorgi Valkov2023-05-132-2/+2
| | | | | | | | | | | | some targets do not define the _REDIR_TIME64 macro resulting in a build error regression since ddfe5678a448ac8875e94f2fb4ddca67416fa14a fix by checking if the macro is defined [1] https://github.com/openwrt/openwrt/issues/12587 Fixes: #12587 Fixes: ddfe5678a448 ("fortify-headers: fix inconsistent time_t version of ppoll") Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
* toolchain: glibc: increase min kernel version to 5.15Nick Hainke2023-05-121-1/+1
| | | | | | | | 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>
* fortify-headers: fix inconsistent time_t version of ppollGeorgi Valkov2023-05-122-1/+12
| | | | | | | | | | | | | | Bug: fortify/poll.h includes poll.h, which redirects ppoll to __ppoll_time64 if the _REDIR_TIME64 macro is 1. Then fortify/poll.h will #undef ppoll and use the 32 bit version. Fix: we should not do this when _REDIR_TIME64 is 1. [1] https://forum.openwrt.org/t/idle-cpu-usage-of-usbmuxd/140331/15 [2] https://github.com/openwrt/openwrt/issues/12574 Signed-off-by: Georgi Valkov <gvalkov@gmail.com>
* toolchain: gcc: update to 12.3.0Nick Hainke2023-05-126-7/+7
| | | | | | | | | | | | | Release notes: https://gcc.gnu.org/gcc-12/changes.html Refresh patches: - 230-musl_libssp.patch - 910-mbsd_multi.patch - 920-specs_nonfatal_getenv.patch - 970-macos_arm64-building-fix.patch Signed-off-by: Nick Hainke <vincent@systemli.org>
* toolchain: gcc: backport patch for gcc 13 fixing access path analysisNick Hainke2023-05-051-0/+69
| | | | | | | | | | | | 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>
* toolchain: gcc: add support for GCC 13Nick Hainke2023-05-0513-28/+40
| | | | | | | | | | | | | | | | | | | | | Release Notes: https://gcc.gnu.org/pipermail/gcc-announce/2023/000175.html Manually Refreshed: - 910-mbsd_multi.patch - 970-macos_arm64-building-fix.patch Automatically Refreshed: - 010-documentation.patch - 230-musl_libssp.patch - 300-mips_Os_cpu_rtx_cost_model.patch - 820-libgcc_pic.patch - 840-armv4_pass_fix-v4bx_to_ld.patch - 850-use_shared_libgcc.patch - 870-ppc_no_crtsavres.patch - 920-specs_nonfatal_getenv.patch Signed-off-by: Nick Hainke <vincent@systemli.org>
* toolchain: gcc: copy patches from 12.x to 13.xNick Hainke2023-05-0517-0/+605
| | | | | | This simplifies the gcc bump patch review. Signed-off-by: Nick Hainke <vincent@systemli.org>
* toolchain/gcc: enable zstd supportAndre Heider2023-03-171-1/+4
| | | | | | | | | | | | | 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>
* toolchain/binutils: enable zstd supportAndre Heider2023-03-171-1/+1
| | | | | | Debug sections can now be compressed using zstd. Signed-off-by: Andre Heider <a.heider@gmail.com>
* toolchain/binutils: switch to version 2.40 by defaultHauke Mehrtens2023-03-012-2/+2
| | | | | | | | | | | | | | | | 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>
* toolchain/binutils: backport stable patchesHauke Mehrtens2023-03-0111-0/+2674
| | | | | | | | | | | | | | | | | | | | 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>
* toolchain: remove references to $(LIBC)/utils subtargetMichael Pratt2023-02-251-3/+0
| | | | | | | | | | | 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>
* toolchain: cleanup dependenciesMichael Pratt2023-02-251-4/+3
| | | | | | | 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>
* toolchain: fix stampfile dependencyMichael Pratt2023-02-251-2/+2
| | | | | | | | | | | | | | | | | | 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>
* toolchain: remove installing twice in the "initial" subdirAndre Heider2023-02-192-9/+2
| | | | | | | | | | | | | | | | 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>
* toolchain/musl: remove libgcc_initial hackAndre Heider2023-02-192-5/+1
| | | | | | | | | | | | This reverts r15599 [0]. This was added to fix an uclibc rebuild issue, but since uclibc isn't supported anymore [Fixes:] this can be removed. [0] https://git.openwrt.org/?p=openwrt/svn-archive/archive.git;a=commitdiff;h=016a052efeee6bc2da3f501a8c66b5aea20350b4 Fixes: 63fb1752 "toolchain: remove uClibc-ng" Signed-off-by: Andre Heider <a.heider@gmail.com>
* toolchain/glibc: fixup the libm.so linker script tooAndre Heider2023-02-191-1/+1
| | | | | | | | | | 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>
* toolchain/gcc: remove glibc libgcc_eh hackAndre Heider2023-02-191-2/+0
| | | | | | | | | 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>
* toolchain/binutils: get rid of outdated linaro version string hackAndre Heider2023-02-191-1/+0
| | | | | | | | | | This reverts commit 9d1b619cb1a7dd18cd12cab0d9f93452b10e2e11. 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>
* toolchain/binutils: get rid of outdated libiberty hackAndre Heider2023-02-191-1/+0
| | | | | | | | | | | | | | | This reverts commit 68fcb15f90edd92ef36990c5696b9e79df07a6ec. binutils syncs libiberty from gcc, which defaults to not installing itself since [0], see also [1]. That change is apparently part of binutils 2.24, and the oldest supported version here is 2.37, hence we can remove this hack. [0] https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=48d7db63ff581b026e057badf39f1f23fdf47928 [1] https://gcc.gnu.org/onlinedocs/libiberty/Using.html Signed-off-by: Andre Heider <a.heider@gmail.com>
* toolchain/binutils: get rid of ARC leftoversAndre Heider2023-02-191-6/+0
| | | | | | | | | | | | 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>
* toolchain/binutils: fill in missing GRAPHITE_CONFIGUREAndre Heider2023-02-191-0/+6
| | | | | | | This var is used further down, but it's empty. Fix that with the very same values gcc uses. Signed-off-by: Andre Heider <a.heider@gmail.com>
* toolchain: glibc: Update to glibc 2.37Linhui Liu2023-02-131-3/+3
| | | | | | | | 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>
* toolchain/gcc: clean up CFLAGSAndre Heider2023-02-091-9/+13
| | | | | | | | | | | 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>
* toolchain/gcc: use explicit configure argsAndre Heider2023-02-092-0/+3
| | | | | | | Spell out what we want to enable or disable. This prevents host libs to leak in, so everyone get the same feature set. Signed-off-by: Andre Heider <a.heider@gmail.com>
* toolchain/binutils: use explicit configure argsAndre Heider2023-02-091-0/+4
| | | | | | | Spell out what we want to enable or disable. This prevents host libs to leak in, so everyone get the same feature set. Signed-off-by: Andre Heider <a.heider@gmail.com>
* treewide: strip useless `default n` Kconfig linesTony Butler2023-02-032-7/+0
| | | | | | | | | | Kconfig docs say: > The default value deliberately defaults to 'n' in order to avoid > bloating the build. Apply this rule everywhere, to avoid more cloning of bad examples Signed-off-by: Tony Butler <spudz76@gmail.com>
* toolchain: musl: Fix symbol loading in gdbHauke Mehrtens2023-01-221-0/+61
| | | | | | | | | Fix DT_DEBUG handling on MIPS in musl libc. With this change gdb will load the symbol files for shared libraries on MIPS too. This patch was taken from this thread: https://www.openwall.com/lists/musl/2022/01/09/4 Signed-off-by: Hauke Mehrtens <hmehrtens@maxlinear.com>
* toolchain/binutils: add support for version 2.40Linhui Liu2023-01-216-0/+90
| | | | | | | Release notes: https://sourceware.org/pipermail/binutils/2023-January/125671.html Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
* toolchain/binutils: remove old sha256sumLinhui Liu2023-01-211-16/+0
| | | | | | Fixes: b3b0a25ee8cf5f508f06822d53af0b60e3116d8a Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
* toolchain/gdb: use STAGING_DIR_HOST instead of hardcoding defaultChristian Marangi2023-01-091-4/+4
| | | | | | | Use STAGING_DIR_HOST to reference staging host directory instead of hardcoding it to default path. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* toolchain/gcc: use STAGING_DIR_HOST instead of hardcoding defaultChristian Marangi2023-01-092-5/+5
| | | | | | | Use STAGING_DIR_HOST to reference staging host directory instead of hardcoding it to default path. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* toolchain/gcc: fix broken gcc version selectionChristian Marangi2023-01-091-1/+1
| | | | | | | | | | | | | | | Config evaluation require default with if to be put before the generic default config with no condition. Putting the default config before any conditional default results in always selecting the non conditional one. This results in the version be hardcoded to gcc 12 even if gcc 11 is selected in the Advanced build options. Fix this by putting the gcc 12 default option as last after ANY conditional default config. Fixes: d9de5252a44e ("toolchain/gcc: switch to version 12 by default") Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* toolchain/gcc: switch to version 12 by defaultHauke Mehrtens2023-01-092-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was build tested with all core packages on all targets successfully. Most packages from the feed are also building fine. This was run tested on the following systems: * lantiq/xrx200 musl * pistachio/generic musl * sunxi/cortexa53 musl * x86/64 musl * x86/64 glibc * armvirt/64 musl The size of the images stays more or less the same for MIPS BE and aarch64. I haven't tested other architectures. With GCC 11 I got these sizes for lantiq/xrx200: 7,219,848 openwrt-lantiq-xrx200-tplink_tdw8970-initramfs-kernel.bin 7,472,208 openwrt-lantiq-xrx200-tplink_tdw8970-squashfs-sysupgrade.bin With GCC 12 I got these sizes for lantiq/xrx200: 7,217,355 openwrt-lantiq-xrx200-tplink_tdw8970-initramfs-kernel.bin 7,406,674 openwrt-lantiq-xrx200-tplink_tdw8970-squashfs-sysupgrade.bin The sysupgrade image is probably padded. The initramfs image is 0.03% smaller. With GCC 11 I got these sizes for armvirt/64: 4,143,943 openwrt-armvirt-64-default-rootfs.tar.gz 10,887,176 openwrt-armvirt-64-Image 24,911,880 openwrt-armvirt-64-Image-initramfs 4,141,572 openwrt-armvirt-64-rootfs.cpio.gz 4,255,854 openwrt-armvirt-64-rootfs-ext4.img.gz 3,391,178 openwrt-armvirt-64-rootfs-squashfs.img.gz With GCC 12 I got these sizes for armvirt/64: 4,142,778 openwrt-armvirt-64-default-rootfs.tar.gz 10,887,176 openwrt-armvirt-64-Image 24,911,880 openwrt-armvirt-64-Image-initramfs 4,138,105 openwrt-armvirt-64-rootfs.cpio.gz 4,255,463 openwrt-armvirt-64-rootfs-ext4.img.gz 3,390,390 openwrt-armvirt-64-rootfs-squashfs.img.gz Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain/gcc: Fix GCC version checkHauke Mehrtens2023-01-091-1/+1
| | | | | | | | | | The version check which sets GCC_VERSION_FILE to the correct value only worked when the advanced options menu was active and not when it was not active. Thank you Tony Butler for the fix. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain/nasm: update to 2.16.01Linhui Liu2023-01-041-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ChangeLog: Version 2.16.01 _This is a documentation update release only._ (*) Fix the creation of the table of contents in the HTML version of the documentation. Version 2.16 (*) Support for the `rdf' format has been discontinued and all the RDOFF utilities has been removed. (*) The `--reproducible' option now leaves the filename field in the COFF object format blank. This was always rather useless since it is only 18 characters long; as such debug formats have to carry their own filename information anyway. (*) Fix handling of MASM-syntax reserved memory (e.g. `dw ?') when used in structure definitions. (*) The preprocessor now supports functions, which can be less verbose and more convenient than the equivalent code implemented using directives. See section 4.4. (*) Fix the handling of `%00' in the preprocessor. (*) Fix incorrect handling of path names affecting error messages, dependency generation, and debug format output. (*) Support for the RDOFF output format and the RDOFF tools have been removed. The RDOFF tools had already been broken since at least NASM 2.14. For flat code the ELF output format recommended; for segmented code the `obj' (OMF) output format. (*) New facility: preprocessor functions. Preprocessor functions, which are expanded similarly to single-line macros, can greatly simplify code that in the past would have required a lengthy list of directives and intermediate macros. See section 4.4. (*) Single-line macros can now declare parameters (using a `&&' prefix) that creates a quoted string, but does _not_ requote an already quoted string. See section 4.2.1. (*) Instruction table updated per public information available as of November 2022. (*) All warnings in the preprocessor have now been assigned warning classes. See appendix A. (*) Fix the invalid use of `RELA'-type relocations instead of `REL'- type relocations when generating DWARF debug information for the `elf32' output format. (*) Fix the handling `at' in `istruc' when the structure contains local labels. See section 5.9.2. (*) When assembling with `--reproducible', don't encode the filename in the COFF header for the `coff', `win32' or `win64' output formats. The COFF header only has space for an 18-character filename, which makes this field rather useless in the first place. Debug output data, if enabled, is not affected. (*) Fix incorrect size calculation when using MASM syntax for non- byte reservations (e.g. `dw ?'.) (*) Allow forcing an instruction in 64-bit mode to have a (possibly redundant) REX prefix, using the syntax `{rex}' as a prefix. (*) Add a `{vex}' prefix to enforce VEX (AVX) encoding of an instruction, either using the 2- or 3-byte VEX prefixes. (*) The `CPU' directive has been augmented to allow control of generation of VEX (AVX) versus EVEX (AVX-512) instruction formats, see section 7.11. (*) Some recent instructions that previously have been only available using EVEX encodings are now also encodable using VEX (AVX) encodings. For backwards compatibility these encodings are not enabled by default, but can be generated either via an explicit `{vex}' prefix or by specifying either `CPU LATEVEX' or `CPU NOEVEX'; see section 7.11. (*) Document the already existing `%unimacro' directive. See section 4.5.12. (*) Fix a code range generation bug in the DWARF debug format (incorrect information in the `DW_AT_high_pc' field) for the ELF output formats. This bug happened to cancel out with a bug in older versions of the GNU binutils linker, but breaks with other linkers and updated or other linkers that expect the spec to be followed. (*) Fix segment symbols with addends, e.g. `jmp _TEXT+10h:0' in output formats that support segment relocations, e.g. the `obj' format. (*) Fix various crashes and hangs on invalid input. Signed-off-by: Linhui Liu <liulinhui36@gmail.com>
* toolchain/binutils: switch to version 2.39 by defaultHauke Mehrtens2023-01-012-2/+2
| | | | | | | | | | | | | | | | This was build tested with all core packages on all targets successfully. This was run tested on the following systems: * lantiq/xrx200 musl * sunxi/cortex53 musl * x86/64 musl * x86/64 glibc Some trusted firmware arm builds needed some fixes to build with binutils 2.39, this was merged before. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain/binutils: backport stable patchesHauke Mehrtens2022-12-3111-0/+1260
| | | | | | | | | | | | Add the patches with real changes from the binutils 2.39 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_39...origin/binutils-2_39-branch I removed the patches changing the version numbers only. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain: glibc: Update to glibc 2.36Hauke Mehrtens2022-12-213-6/+6
| | | | | | This updates to glibc to version 2.36. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain: gcc: backport patches to fix build with glibc 2.36Hauke Mehrtens2022-12-211-0/+39
| | | | | | | | | | | glibc 2.36 changed the definition of enum fsconfig_command, it now collides with the same definition from sys/mount.h. Remove the include of linux/fs.h This still compiled with musl too. This backports a patch which is already in the stable branch of GCC 11 and GCC 12. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain: gcc: Remove gcc 10.x supportHauke Mehrtens2022-10-2321-851/+0
| | | | | | This compiler is old and was never used by default in OpenWrt. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* toolchain: gcc: Remove gcc 8.x supportHauke Mehrtens2022-10-2322-862/+0
| | | | | | This compiler is old and not used by OpenWrt for some time now. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* build: prefer HTTPS if available (for packages)Daniel Cousens2022-10-051-1/+1
| | | | | | | | Changes PKG_SOURCE_URL's for arptables, bsdiff, dnsmasq, fortify-headers, ipset, ipset-dns, libaudit, libpcap, libressl, lua, lua5.3, tcpdump and valgrind, to HTTPS Signed-off-by: Daniel Cousens <github@dcousens.com>
* Revert "toolchain/gcc: use zstd from tools"Christian Marangi2022-09-271-1/+0
| | | | | | | This reverts commit e6cc3ded0709aa6c7a190c31575bb5c19e204cd2. Require more testing as it does cause compilation error. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
* toolchain/gdb: fix expat locationRosen Penev2022-09-271-1/+1
| | | | | | | GDB is not finding tools/expat. This fixes it. Move it up with the other tools. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* toolchain/gcc: use zstd from toolsRosen Penev2022-09-271-0/+1
| | | | | | pkgconfig is not used for some reason. Match other used tools. Signed-off-by: Rosen Penev <rosenp@gmail.com>