Toolchain: Upstreaming tracking for gcc/binutils/llvm
Author: ADKasterCreated Jun 4, 2022Updated May 22, 2026
Labelsposixtask list
In order to be a fully accepted CMake target, we should have compiler support upstreamed to at least gcc or llvm-project.
Here's the list of things that need done for that do have a chance of succeeding:
This issue is being tracked at the same time on CMake's GitLab here
In SerenityOS/serenity:
Loader/Kernel/LibELF:
- (Optional) Support tls-model other than initial-exec: Will remove a patch from each llvm and gcc
LibC:
- Make
<ctype.h>POSIX and C standard compliant. Remove hax from libc++ and libstdc++ patches pretending to be newlib. (https://github.com/SerenityOS/serenity/pull/14401) - (Optional) Unify libdl, libpthread, libc and libm into a mega-library to avoid cyclic dependencies in libstdc++ (#14453)
- scanf improperly reads some integer types on x86_64 (https://github.com/SerenityOS/serenity/pull/14189)
- Remove _aligned_alloc and _aligned_free
GNU Autotools:
- config.sub
- config.guess
- libtool.m4
Binutils:
- Possibly find a way to remove the changed default base address of non-PIE executables? Ask on binutils mailing list if the patch is reasonable (https://github.com/SerenityOS/serenity/pull/14189)
- Upstream the patch
GCC/libstdc++:
- Split patch up (https://github.com/SerenityOS/serenity/commit/d0edf2627c3d72fa1d59ba173bac1c0cc3cb27e9)
- Upstream patches
LLVM:
- Remove _aligned_alloc patches from libc++ (https://github.com/SerenityOS/serenity/pull/14401)
- Remove patches from libc++ in
<initializer_list>(https://github.com/SerenityOS/serenity/pull/14401) - Upstream patches
LLVM Lit tests:
- Posix Named Semaphores for python3 multiprocessing.Pool (https://github.com/SerenityOS/serenity/pull/14578)
Source: SerenityOS/serenity