Bump binutils 2.46.1, gcc 16.1.0, musl 1.2.6, linux 6.19.14#56
Conversation
Update all bumpable packages to their latest upstream releases and adapt the build to gcc 16's changed defaults. - binutils 2.45 -> 2.46.1 (b3sum + sha256 updated) - gcc 15.2.0 -> 16.1.0 (b3sum + sha256 updated) - musl 1.2.5 -> 1.2.6 (b3sum + sha256 updated) - linux 6.17.7 -> 6.19.14 (b3sum + sha256 updated) Drop all four musl upstream patches: they were post-1.2.5 fixes that are now included in the 1.2.6 release. Add a mandatory libatomic build+install step (Step 5.5). gcc 16 changed its default link spec to inject -latomic_asneeded into every linked program (unless -fno-link-libatomic), so without an installed libatomic even a plain C "hello world" fails to link with "cannot find -latomic_asneeded". gmp, mpc, mpfr, isl and pkgconf were already at their latest releases. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
cc @firasuke not sure if wanted or not, let me know about this, cheers! |
|
Hey there @Itxaka , I appreciate the time and effort that went behind this PR. The changes regarding the bumping part and the "now" unnecessary patches look good to me. It is the additional step that was added that is concerning. Reading gcc 16 release notes it appears that My understanding is that gcc builds and installs I also do not think it would be a wise thing to do the opposite with Did you attempt to configure Also summoning you @takusuman , if you have time of course, I am interested to hear your thoughts on this. |
If linking to Or perhaps it is being passed by default, but it is being installed selectively for certain architectures and not for others, which is why @Itxaka suggested a standalone step. If that's the case then I wouldn't mind having So rather than having a separate sub-step (5.5), it would be better to merge it into step 5, so that it becomes If (and for whatever reason) |
|
@firasuke I have no idea to be honest so no opinion to have here, musl cross building is kind of out of my element, hence my use of AI to guide me doing this. If you think this is the proper way of doing It I can do it no problem :D
|
gcc >= 16 injects -latomic_asneeded into every link by default, so libatomic must always be present in the sysroot. Rather than a separate sub-step, build and install it in the same make pass as libgcc-shared (it only needs the static libgcc.a). Step numbering is unchanged. Verified clean across x86-64, aarch64, riscv64 and armv7: libatomic.so.1 and libatomic_asneeded.* install correctly and linking succeeds on all. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
Looks good to me, merged! |
Update all bumpable packages to their latest upstream releases and adapt the build to gcc 16's changed defaults.
Drop all four musl upstream patches: they were post-1.2.5 fixes that are now included in the 1.2.6 release.
gmp, mpc, mpfr, isl and pkgconf were already at their latest releases.
New libatomic step (required by gcc 16)
gcc 16 changed its default link spec to inject
-latomic_asneededinto everylinked program unless
-fno-link-libatomicis passed (visible ingcc -dumpspecs). Without an installedlibatomic/libatomic_asneeded, alllinking fails — even a plain C
printf— with:cannot find -latomic_asneeded
This PR adds a mandatory libatomic build + install step (Step 5.5), right after
libgcc-sharedand before the optionallibstdc++-v3step.Tested and built from a clean tree and link-tested a C and a C++ program with several arches (aarch64, riscv64, armv7 and x86-64), all produced valid target ELF binaries.
A note on how this was produced
Heavy use of AI was made in this patch to investigate the possible problems
(e.g. tracking down the gcc 16
-latomic_asneededlink regression and whichmusl patches were superseded by 1.2.6). However, human intervention was done to
verify that the checksums, the produced artifacts, and the builds all execute
correctly.