minerva / Toolchain / Patches / llvm /
@minerva minerva authored on 13 Jul
..
0001-clang-Add-support-for-Minerva.patch Initial commit 7 months ago
0002-llvm-Add-support-for-building-LLVM-on-Minerva.patch Initial commit 7 months ago
0003-tools-Support-building-shared-libLLVM-and-libClang-f.patch Initial commit 7 months ago
0004-compiler-rt-Enable-profile-instrumentation-for-Seren.patch Initial commit 7 months ago
0005-libcxx-Add-support-for-Minerva.patch Initial commit 7 months ago
0006-RISCV-Implement-__init_riscv_feature_bits-for-Sereni.patch Initial commit 7 months ago
ReadMe.md Initial commit 7 months ago
ReadMe.md

Patches for llvm on Minerva

0001-clang-Add-support-for-Minerva.patch

Add support for Minerva

Adds support for the $arch-pc-minerva target to the Clang front end. This makes the compiler look for libraries and headers in the right places, and enables some security mitigations like stack-smashing protection and position-independent code by default.

Co-authored-by: kleines Filmröllchen filmroellchen@serenityos.org Co-authored-by: Andrew Kaster akaster@serenityos.org Co-authored-by: Daniel Bertalan dani@danielbertalan.dev Co-authored-by: Dan Klishch danilklishch@gmail.com

0002-llvm-Add-support-for-building-LLVM-on-Minerva.patch

Add support for building LLVM on Minerva

Adds Minerva #ifdefs for platform-specific code.

We stub out wait4, as Minerva doesn't support querying a child process's resource usage information.

POSIX shm is not supported by Minerva yet, so disable it in Orc.

Minerva gives each thread a default of 1MiB of stack. Increase the default stack size for llvm applications when running on Minerva.

0003-tools-Support-building-shared-libLLVM-and-libClang-f.patch

Support building shared libLLVM and libClang for Minerva

This patch tells CMake that the --whole-archive linker option should be used for specifying the archives whose members will constitute these shared libraries.

Symbol versioning is disabled, as the Minerva loader doesn't support it, and the ELF sections that store version data would just waste space.

0004-compiler-rt-Enable-profile-instrumentation-for-Seren.patch

Enable profile instrumentation for Minerva

Treat Minerva the same as other *NIX platforms that behave close enough to linux to use the pre-canned InstrProfiling implementation.

0005-libcxx-Add-support-for-Minerva.patch

Add support for Minerva

This commit teaches libc++ about what features are available in our LibC, namely:

  • We do not have locale support, so no-op shims should be used in place of the C locale API.
  • The number of errno constants defined by us is given by the value of the ELAST macro.
  • Multithreading is implemented though the pthread library.
  • Use libc++'s builtin character type table instead of the one provided by LibC as there's a lot of extra porting work to convince the rest of locale.cpp to use our character type table properly.

0006-RISCV-Implement-__init_riscv_feature_bits-for-Sereni.patch

Implement __init_riscv_feature_bits for Minerva

The Minerva dynamic linker provides a magic function "get_riscv_feature_bits" that populates riscv_feature_bits and __riscv_cpu_model.