Commit Graph

5 Commits

Author SHA1 Message Date
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
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