22 Commits
Author SHA1 Message Date
Jakub Jelinek 254a858ae7 Update copyright years. 2026-01-02 09:56:11 +01:00
Iain Buclaw 79186e392c libphobos: Add MIPS64 implementation of fiber_switchContext [PR118584]
Replaces the generic implementation.  The `core.thread.fiber' module
already defines version=AsmExternal on mips64el-linux-gnuabi64.

	PR d/118584

libphobos/ChangeLog:

	* libdruntime/config/mips/switchcontext.S: Add MIPS64 N64 ABI
	implementation of fiber_switchContext.
2025-01-21 20:02:07 +01:00
Jakub Jelinek 6441eb6dc0 Update copyright years. 2025-01-02 11:59:57 +01:00
Jakub Jelinek a945c346f5 Update copyright years. 2024-01-03 12:19:35 +01:00
Yang Yujie a281f87f0d libruntime: Add fiber context switch code for LoongArch.
libphobos/ChangeLog:

	* libdruntime/config/loongarch/switchcontext.S: New file.
2023-12-18 10:04:22 +08:00
Iain Sandoe 6757bf8614 libphobos: Handle Darwin Arm and AArch64 in fibre context asm.
This code currently fails to build because it contains ELF-
specific directives.  This patch excludes those directives when
the platform is Darwin.

We do not expect switching fibres between threads to be safe here
either owing to the possible caching of TLS pointers.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>

libphobos/ChangeLog:

	* libdruntime/config/aarch64/switchcontext.S: Exclude ELF-
	specific constructs for Darwin.
	* libdruntime/config/arm/switchcontext.S: Likewise.
	* libdruntime/core/thread/fiber.d: Disable switching fibres
	between threads.
2023-07-02 15:20:04 +01:00
Jakub Jelinek 83ffe9cde7 Update copyright years. 2023-01-16 11:52:17 +01:00
Iain Buclaw 16ced9c654 libphobos: Fix misspelling of msvcUsesUCRT (PR104659)
libphobos/ChangeLog:

	PR d/104659
	* libdruntime/config/mingw/msvc.c (init_msvc): Fix misspelling of
	msvcUsesUCRT.
2022-03-01 15:29:30 +01:00
Jakub Jelinek 7adcbafe45 Update copyright years. 2022-01-03 10:42:10 +01:00
Iain Buclaw 6eae7549b8 libphobos: Add Thread/Fiber support code for Darwin (PR98058)
libphobos/ChangeLog:

	PR d/98058
	* configure: Regenerate.
	* libdruntime/Makefile.am (DRUNTIME_DSOURCES_DARWIN): Add
	core/sys/darwin/config.d
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/config/powerpc/switchcontext.S: Implement
	fiber_switchContext for __MACH__.
	* libdruntime/config/x86/switchcontext.S: Likewise.
	* libdruntime/core/sys/darwin/config.d: New file.
	* libdruntime/core/thread/fiber.d (Fiber.getThis): Mark noinline.
	(UnsafeFiberMigration): Define for OSX/X86 and OSX/X86_64.
	* libdruntime/core/thread/osthread.d (callWithStackShell): Add inline
	assembler implementation for X86, X86_64, PPC, and PPC64.
	* libdruntime/core/thread/threadbase.d (ThreadBase.getThis): Mark
	noinline.
	* libdruntime/gcc/deh.d (FuncTable): Remove definition.
	* m4/druntime/os.m4 (DRUNTIME_OS_MINFO_BRACKETING): Check for right
	bracket symbol on darwin* targets.
	* testsuite/libphobos.thread/fiber_guard_page.d: Update test to
	support ucontext-based Fibers.
2021-04-19 19:27:27 +02:00
Iain Buclaw b66e72b43e libphobos: Add D runtime support code for MinGW (PR99794)
libphobos/ChangeLog:

	PR d/99794
	* libdruntime/Makefile.am (DRUNTIME_SOURCES_CONFIGURED): Add
	config/mingw/msvc.c on DRUNTIME_OS_MINGW.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/config/mingw/msvc.c: New file.
	* libdruntime/config/mingw/switchcontext.S (fiber_switchContext): Fix
	function definition.
	* libdruntime/gcc/deh.d (__gdc_personality_seh0): Fix call to
	_GCC_specific_handler.
	* libdruntime/gcc/gthread.d (__gthread_once_t): Fix definition.
	* libdruntime/gcc/unwind/generic.d (_GCC_specific_handler): Fix
	declaration.
	* libdruntime/rt/dmain2.d (rt_loadLibrary): Remove function.
	(rt_loadLibraryW): Remove function.
	(initLibrary): Remove function.
	(rt_unloadLibrary): Remove function.
2021-04-19 19:27:13 +02:00
Iain Buclaw d86e60855f libphobos: Add section support code for OpenBSD (PR99691)
libphobos/ChangeLog:

	PR d/99691
	* configure: Regenerate.
	* libdruntime/config/common/threadasm.S: Add __OpenBSD__.
	* libdruntime/gcc/backtrace.d: Import core.sys.openbsd.dlfcn on
	OpenBSD platforms.
	* libdruntime/gcc/sections/elf.d (SharedElf): Define on OpenBSD.
	(linkMapForHandle): Implement for OpenBSD.
	(exeLinkMap): Remove.
	(getDependencies): Adjust dlpi_addr on OpenBSD.
	(handleForName): Implement for OpenBSD.
	(IterateManually): Define on OpenBSD.
	* libdruntime/gcc/sections/package.d (SectionsElf): Define on OpenBSD.
	* m4/druntime/libraries.m4 (DRUNTIME_LIBRARIES_ATOMIC): Test for
	enable_libatomic.
	(DRUNTIME_LIBRARIES_BACKTRACE): Test for enable_libbacktrace.
2021-04-19 19:26:43 +02:00
Jakub Jelinek 99dee82307 Update copyright years. 2021-01-04 10:26:59 +01:00
Maciej W. Rozycki 6f0a4ae127 MIPS/libphobos: Fix switchcontext.S assembly for MIPS I ISA
Correct MIPS I assembly build errors in switchcontext.S:

.../libphobos/libdruntime/config/mips/switchcontext.S: Assembler messages:
.../libphobos/libdruntime/config/mips/switchcontext.S:50: Error: opcode not supported on this processor: mips1 (mips1) `sdc1 $f20,(0*8-((6*8+4+(-6*8+4&7))))($sp)'

etc., due to the use of the MIPS II LDC1 and SDC1 hardware instructions
for FP register load and store operations.  Instead use the L.D and S.D
generic assembly instructions, which are strict aliases for the LDC1 and
SDC1 instructions respectively and produce identical machine code where
the assembly for the MIPS II or a higher ISA has been requested, however
they become assembly macros and expand to compatible sequences of LWC1
and SWC1 hardware instructions where the assembly for the MIPS I ISA is
in effect.

	libphobos/
	* libdruntime/config/mips/switchcontext.S [__mips_hard_float]:
	Use L.D and S.D generic assembly instructions rather than LDC1
	and SDC1 MIPS II hardware instructions.
2020-10-12 19:09:13 +01:00
H.J. Lu c6632dc9a8 libphobos: Include <cet.h> to generate the CET marker for -fcf-protection
Include <cet.h> to generate the CET marker for -fcf-protection to avoid

/bin/ld: ../libdruntime/.libs/libgdruntime_convenience.a(libgdruntime_convenience_la-switchcontext.o): error: missing IBT and SHSTK properties

when -z cet-report=error is passed to the linker to create libgphobos.so
and libgdruntime.so.

	PR d/95680
	* libdruntime/config/x86/switchcontext.S: Include <cet.h> to
	generate the CET marker for -fcf-protection.
2020-09-09 10:37:54 -07:00
Iain Buclaw 285d81be97 libphobos: libdruntime doesn't support shadow stack (PR95680)
Rather than implementing support within D runtime itself, use libc
getcontext/swapcontext functions if CET is enabled.

Removes whatever CET support was in the switchContext routine for x86
D runtime, along with setting version AsmExternal, so that the fallback
ucontext_t implementation is used, which is capable of doing shadow
stack handling.

libphobos/ChangeLog:

	PR d/95680
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* configure.ac (DCFG_ENABLE_CET): Substitute.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/config/x86/switchcontext.S: Remove CET support code.
	* libdruntime/core/thread.d: Import gcc.config.  Don't set version
	AsmExternal when GNU_Enable_CET is true.
	* libdruntime/gcc/config.d.in (GNU_Enable_CET): Define.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
2020-09-08 12:14:56 +02:00
H.J. Lu 9e20d0f0ce switchcontext.S: Include <cet.h> and use _CET_ENDBR
When __CET__ is defined, <cet.h> should be included to add Intel CET
marker to object file and _CET_ENDBR should be placed at function entry
to indicate indirect branch target.

	* libdruntime/config/x86/switchcontext.S: Include <cet.h> if
	__CET__ is defined.
	(_CET_ENDBR): New.  Define if __CET__ is not defined.
	(fiber_switchContext): Add _CET_ENDBR after .cfi_startproc.
2020-05-08 15:13:25 -07:00
Iain Buclaw 05b6520ed2 d: Merge upstream dmd 934df6f8c, druntime 7bdd83d7
Corrects a previous change made to the SPARC stdc bindings, and
backports PPC-related fixes.  The library and language testsuite now
passes fully on powerpc64le-linux-gnu.

Fixes: PR d/90719
Fixes: PR d/94825

Reviewed-on: https://github.com/dlang/dmd/pull/11079
	     https://github.com/dlang/druntime/pull/3078
	     https://github.com/dlang/druntime/pull/3083

libphobos/ChangeLog:

	PR d/94825
	* libdruntime/Makefile.am (DRUNTIME_SOURCES_CONFIGURED): Remove
	config/powerpc/switchcontext.S
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/config/powerpc/callwithstack.S: Remove.
	* libdruntime/config/powerpc/switchcontext.S: Fix symbol name of
	fiber_switchContext.
	* libdruntime/core/thread.d: Disable fiber migration tests on PPC.
	* testsuite/libphobos.thread/fiber_guard_page.d: Set guardPageSize
	same as stackSize.
2020-04-30 12:16:11 +02:00
Iain Buclaw 8b53086ab6 libphobos: Fix multilib powerpc64 builds
Multilibs should not have been split up as two logically different CPU,
so at configure time, powerpc64 was being detected, but none of the
32-bit support files were being compiled in.

libphobos/ChangeLog:

	PR d/94825
	* configure: Regenerate.
	* libdruntime/Makefile.am (DRUNTIME_SOURCES_CONFIGURED): Add both
	switchcontext.S and callwithstack.S if DRUNTIME_CPU_POWERPC.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/config/powerpc/switchcontext.S: Add !__PPC64__ guards.
	* libdruntime/config/powerpc64/callwithstack.S: Add __PPC64__ guards.
	* m4/druntime/cpu.m4 (DRUNTIME_CPU_SOURCES): Define DRUNTIME_CPU_POWER
	for all powerpc biarchs.  Remove DRUNTIME_CPU_POWER64 conditional.
2020-04-28 21:45:00 +02:00
Robin Dapp 88e508f9f1 S/390: Fix PR91628
With this patch we get rid of the usage of the glibc-internal symbol
__tls_get_addr_internal.

If build with multilib, the file
gcc/libphobos/libdruntime/config/systemz/get_tls_offset.S is used
for both configurations: systemz and s390.
Therefore both implementations are now in the systemz file which
uses an "#ifdef __s390x__" in order to distinguish both cases.
The s390 file is just including the systemz one.

libphobos/ChangeLog:

2020-04-07  Robin Dapp  <rdapp@linux.ibm.com>
            Stefan Liebler  <stli@linux.ibm.com>

	* configure: Regenerate.
	* libdruntime/Makefile.am: Add s390x and s390.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/config/s390/get_tls_offset.S: New file.
	* libdruntime/config/systemz/get_tls_offset.S: New file.
	* libdruntime/gcc/sections/elf_shared.d: Use ibmz_get_tls_offset.
	* m4/druntime/cpu.m4: Add s390x and s390.
2020-04-07 21:08:06 +02:00
Jakub Jelinek 8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Iain Buclaw 2493e71815 libphobos: Fix linker warning and SEGV in core.thread tests.
The monolithic core/threadasm.S source has been removed, and split into
multiple parts, one for each intended target CPU/OS.

Added .type and .size directives for all asm implementations of
fiber_switchContent and callWithStackShell where they were missing.

libphobos/ChangeLog:

2019-04-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	PR d/90086
	* m4/druntime/cpu.m4 (DRUNTIME_CPU_SOURCES): New macro.
	* configure.ac: Use it.
	* configure: Regenerate.
	* libdruntime/Makefile.am: Add new config sources to
	DRUNTIME_SOURCES_CONFIGURED.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/config/aarch64/switchcontext.S: New file.
	* libdruntime/config/arm/switchcontext.S: New file.
	* libdruntime/config/common/threadasm.S: New file.
	* libdruntime/config/mingw/switchcontext.S: New file.
	* libdruntime/config/mips/switchcontext.S: New file.
	* libdruntime/config/powerpc/switchcontext.S: New file.
	* libdruntime/config/powerpc64/callwithstack.S: New file.
	* libdruntime/config/x86/switchcontext.S: New file.
	* libdruntime/core/threadasm.S: Remove.

From-SVN: r270560
2019-04-24 22:46:59 +00:00