Because of the requirement for D language compiler to be available across all platforms Fedora supports, I have started to look into what's missing in the s390x support in LDC. I have a dirty/interim patchset to move forward in the build and here is the summary of the changes I made so far:
runtime/druntime/src/rt/sections_elf_shared.d
runtime/druntime/src/rt/dwarfeh.d is missing the platform's EH register numbers
runtime/druntime/src/core/thread/osthread.d
- needs an implementation of
callWithStackShell()
runtime/druntime/src/core/threadasm.S
- needs implementation of
fiber_switchContext
- can be used to carry the implementation of
__ibmz_get_tls_offset() needed by getTLSRange()
gen/target.cpp - add mapping of real / long double type to LLVM
It allows me to build the bootstrap compiler, but later fails due some missing __float128 methods/functions in libldc.a.
update 2022-09-16
runtime/druntime/src/core/thread/fiber.d - implement initStack()
Because of the requirement for D language compiler to be available across all platforms Fedora supports, I have started to look into what's missing in the s390x support in LDC. I have a dirty/interim patchset to move forward in the build and here is the summary of the changes I made so far:
runtime/druntime/src/rt/sections_elf_shared.dTLS_DTV_OFFSETdefinitiongetTLSRange()because the expected__tls_get_addr()doesn't exist, see https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libphobos/libdruntime/gcc/sections/elf.d;h=5819811f3fec8ad0e34cb4e3b76a1fcf2d3d515d;hb=HEAD#l1086runtime/druntime/src/rt/dwarfeh.dis missing the platform's EH register numbersruntime/druntime/src/core/thread/osthread.dcallWithStackShell()runtime/druntime/src/core/threadasm.Sfiber_switchContext__ibmz_get_tls_offset()needed bygetTLSRange()gen/target.cpp- add mapping of real / long double type to LLVMIt allows me to build the bootstrap compiler, but later fails due some missing
__float128methods/functions inlibldc.a.update 2022-09-16
runtime/druntime/src/core/thread/fiber.d- implementinitStack()