Commit Graph

87 Commits

Author SHA1 Message Date
Iain Buclaw
92dd3e71f9 libphobos: Synchronize libdruntime bindings with upstream druntime
Reviewed-on: https://github.com/dlang/druntime/pull/3348

gcc/d/ChangeLog:

	* typeinfo.cc (TypeInfoVisitor::visit (TypeInfoDeclaration *)): Don't
	layout m_arg1 and m_arg2 fields.

libphobos/ChangeLog:

	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* libdruntime/MERGE: Merge upstream druntime e4aae28e.
	* libdruntime/Makefile.am (DRUNTIME_DSOURCES): Refresh module list.
	(DRUNTIME_DSOURCES_BIONIC): Add core/sys/bionic/err.d.
	(DRUNTIME_DSOURCES_DARWIN): Add core/sys/darwin/err.d,
	core/sys/darwin/ifaddrs.d, core/sys/darwin/mach/nlist.d,
	core/sys/darwin/mach/stab.d, and core/sys/darwin/sys/attr.d.
	(DRUNTIME_DSOURCES_DRAGONFLYBSD): Add core/sys/dragonflybsd/err.d.
	(DRUNTIME_DSOURCES_FREEBSD): Add core/sys/freebsd/err.d.
	(DRUNTIME_DSOURCES_LINUX): Add core/sys/linux/err.d.
	(DRUNTIME_DSOURCES_NETBSD): Add core/sys/netbsd/err.d.
	(DRUNTIME_DSOURCES_OPENBSD): Add core/sys/openbsd/err.d.
	(DRUNTIME_DSOURCES_POSIX): Add core/sys/posix/locale.d,
	core/sys/posix/stdc/time.d, core/sys/posix/string.d, and
	core/sys/posix/strings.d.
	(DRUNTIME_DSOURCES_SOLARIS): Add core/sys/solaris/err.d.
	(DRUNTIME_DSOURCES_WINDOWS): Add core/sys/windows/sdkddkver.d,
	and core/sys/windows/stdc/time.d
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/gcc/sections/elf_shared.d (sizeofTLS): New function.
	* testsuite/libphobos.thread/fiber_guard_page.d: Use
	__traits(getMember) to get internal fields.
2021-01-30 16:50:57 +01:00
Iain Buclaw
81f928ec8e libphobos: Fix executables segfault on mipsel architecture
The dynamic section on MIPS is read-only, but this was not properly
handled in the runtime library.  The segfault only occurred for programs
that linked to the shared libphobos library.

libphobos/ChangeLog:

	PR d/98806
	* libdruntime/gcc/sections/elf_shared.d (MIPS_Any): Declare version
	for MIPS32 and MIPS64.
	(getDependencies): Adjust dlpi_addr on MIPS_Any.
2021-01-24 00:20:25 +01:00
Jakub Jelinek
99dee82307 Update copyright years. 2021-01-04 10:26:59 +01:00
Iain Buclaw
5dbab7b3f4 libphobos: Fix segfault at run-time when using custom Fibers (PR 98025)
When libphobos is configured with --enable-cet, this adds extra fields
to the Fiber class to support the ucontext_t fallback implementation.
These fields get omitted when compiling user code unless they also used
`-fversion=CET' to build their project, which resulted in data being
overwritten from within swapcontext().

On reviewing the ucontext_t definitions, it was found that the shadow
stack fields were missing, and the struct size didn't match up on X32.
This has been fixed in upstream druntime and merged down here.

Reviewed-on: https://github.com/dlang/druntime/pull/3293

libphobos/ChangeLog:

	PR d/98025
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* configure.ac (DCFG_ENABLE_CET): Substitute.
	* libdruntime/MERGE: Merge upstream druntime 0fe7974c.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/core/thread.d: Import gcc.config.
	(class Fiber): Add ucontext_t fields when GNU_Enable_CET is true.
	* libdruntime/gcc/config.d.in (GNU_Enable_CET): Define.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
2020-11-27 21:27:14 +01:00
Iain Buclaw
f886c4a795 libphobos: Merge upstream druntime d37ef985.
Adds support for FreeBSD/x86 53-bit precision reals, updates bindings
for FreeBSD 12.x, and removes all support code and tests for the
extern(Pascal) calling convention.

Reviewed-on: https://github.com/dlang/druntime/pull/3286
	     https://github.com/dlang/druntime/pull/3287

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime d37ef985.
	* libdruntime/Makefile.am (DRUNTIME_DSOURCES_FREEBSD): Add
	core/sys/freebsd/config.d
	* libdruntime/Makefile.in: Regenerate.
2020-11-27 21:27:13 +01:00
Iain Buclaw
9285e0f694 d: Add float and double overloads for all core.math intrinsics
For the math intrinsics: cos, fabs, ldexp, rint, rndtol, and sin, new
overloads have been added to the core.math module for matching float and
double types.  These have been implemented in the compiler.

A recent change to dump_function_to_file started triggering some
scan-tree-dump tests to FAIL, these have been adjusted as well when
updating the test.

gcc/d/ChangeLog:

	* intrinsics.cc (maybe_expand_intrinsic): Handle new intrinsics.
	* intrinsics.def (INTRINSIC_COS): Add float and double overloads.
	(INTRINSIC_FABS): Likewise.
	(INTRINSIC_LDEXP): Likewise.
	(INTRINSIC_RINT): Likewise.
	(INTRINSIC_RNDTOL): Likewise.
	(INTRINSIC_SIN): Likewise.
	(INTRINSIC_TOPREC): Adjust signature.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime 5e4492c4.

gcc/testsuite/ChangeLog:

	* gdc.dg/intrinsics.d: Adjust patterns in scan-tree-dump.
2020-11-27 21:27:13 +01:00
Iain Buclaw
d249ba878c d: Remove the d_critsec_size target hook.
The allocation of mutex objects for synchronized statements has been
moved to the library as of merging druntime 58560d51.  All support code
in the compiler for getting the OS critical section size has been
removed along with it.

Reviewed-on: https://github.com/dlang/dmd/pull/11902
	     https://github.com/dlang/druntime/pull/3248

gcc/ChangeLog:

	* config/aarch64/aarch64-linux.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
	Remove.
	* config/glibc-d.c (glibc_d_critsec_size): Likewise.
	(TARGET_D_CRITSEC_SIZE): Likewise.
	* config/i386/linux-common.h (GNU_USER_TARGET_D_CRITSEC_SIZE):
	Likewise.
	* config/sol2-d.c (solaris_d_critsec_size): Likewise.
	(TARGET_D_CRITSEC_SIZE):  Likewise.
	* doc/tm.texi.in (TARGET_D_CRITSEC_SIZE): Likewise.
	* doc/tm.texi: Regenerate.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd bec5973b0.
	* d-target.cc (Target::critsecsize): Remove.
	* d-target.def: Remove d_critsec_size.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime 58560d51.
2020-10-27 11:50:35 +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
Iain Buclaw
0ed757604f libphobos: libdruntime doesn't support shadow stack (PR95680)
The first implementation hit a front-end implementation bug where
version conditions are resolved ahead of static if confitions.

The logic for whether to use asm implemented fiber_switchContext or
libc's swapcontext has been moved from GNU_Enable_CET to version CET.

libphobos/ChangeLog:

	PR d/95680
	PR d/97007
	* Makefile.am (AM_MAKEFLAGS): Remove $(CET_FLAGS).
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* configure.ac (DCFG_ENABLE_CET): Remove substitution.
	(CET_DFLAGS): Substitute.
	* libdruntime/Makefile.am (AM_DFLAGS): Add $(CET_DFLAGS).
	(AM_CFLAGS): Add $(CET_FLAGS).
	(AM_CCASFLAGS): Likewise.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/core/thread.d: Replace static if GNU_Enable_CET
	condition with `version (CET)'.
	* libdruntime/gcc/config.d.in (GNU_Enable_CET): Remove.
	* src/Makefile.am (AM_DFLAGS): Add $(CET_DFLAGS).
	(AM_CFLAGS): Add $(CET_FLAGS).
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/testsuite_flags.in: Add $(CET_DFLAGS) to --gdcflags.
2020-09-10 18:04:12 +02: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
Iain Buclaw
6948c7c3d2 d: Turn on deprecation warnings by default.
This is the default in the upstream reference compiler, and can reduce
some confusion when comparing warning/error messages of gdc and dmd side
by side.

Merges libphobos with upstream druntime d05ebaad and phobos 021ae0df7.

Reviewed-on: https://github.com/dlang/druntime/pull/3127
	     https://github.com/dlang/phobos/pull/7521

gcc/d/ChangeLog:

	* d-lang.cc (d_init_options): Turn on deprecation warnings by default.

libphobos/ChangeLog:

	* libdruntime/MERGE: Merge upstream druntime d05ebaad.
	* src/MERGE: Merge upstream phobos 021ae0df7.
	* testsuite/libphobos.typeinfo/struct-align.d: Remove empty statement.

gcc/testsuite/ChangeLog:

	* gdc.dg/asm1.d: Don't use deprecated asm syntax.
	* gdc.dg/compilable.d: Add public to selective import.
	* gdc.dg/lto/ltotests_0.d: Explicitly catch Throwable.
	* gdc.dg/runnable.d: Remove empty statement.
2020-06-25 17:02:45 +02:00
Iain Buclaw
e977a5df5b libphobos: Merge upstream druntime 5cc061a8, phobos 64ed4684f
- core.cpuid has been fixed to not use i7 detection on AMD processors.
- std.net.curl has been fixed to correctly handle HTTP/2 status lines.
- std.zip has had a test fixed to not rely on unzip being installed.

Fixes: PR d/95166
       PR d/95167
       PR d/95168

Reviewed-on: https://github.com/dlang/druntime/pull/3107
	     https://github.com/dlang/phobos/pull/7486
2020-05-17 18:49:19 +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
Iain Buclaw
6dffa67b46 libphobos: Backport extern(C) bindings from druntime 2.091
Merge upstream druntime 47688279.

Reviewed-on: https://github.com/dlang/druntime/pull/3073

Fixes: PR d/90718
Fixes: PR d/90719

libphobos/ChangeLog:

	* libdruntime/Makefile.am (DRUNTIME_DSOURCES_LINUX): Remove
	core/sys/linux/sys/netinet/tcp.d.
	* libdruntime/Makefile.in: Regenerate.
2020-04-27 23:33:18 +02:00
Iain Buclaw
873b5de87c d: Merge upstream dmd f8a1a5153, druntime 2b5c0b27
Adds a new test directive COMPILABLE_MATH_TEST, and support has been
added for it in gdc-convert-test so that they are skipped if phobos is
not present on the target.

Only change in D runtime is a small documentation fix.

Reviewed-on: https://github.com/dlang/druntime/pull/3067
	     https://github.com/dlang/dmd/pull/11060

gcc/testsuite/ChangeLog:

	PR d/89418
	* lib/gdc-utils.exp (gdc-convert-test): Add dg-skip-if for compilable
	tests that depend on the phobos standard library.
2020-04-27 02:47:27 +02:00
Iain Buclaw
018730326d d: Merge upstream dmd 09db0c41e, druntime e68a5ae3.
* New core.math.toPrec templates have been added as an intrinsic.

  Some floating point algorithms, such as Kahan-Babuska-Neumaier
  Summation, require rounding to specific precisions. Rounding to
  precision after every operation, however, loses overall precision in
  the general case and is a runtime performance problem.

  Adding these functions guarantee the rounding at required points in
  the code, and document where in the algorithm the requirement exists.

* Support IBM long double types in core.internal.convert.

* Add missing aliases for 64-bit vectors in core.simd.

* RUNNABLE_PHOBOS_TEST directive has been properly integrated into the
  D2 language testsuite.

Reviewed-on: https://github.com/dlang/druntime/pull/3063
	     https://github.com/dlang/dmd/pull/11054

gcc/d/ChangeLog:

	* intrinsics.cc (expand_intrinsic_toprec): New function.
	(maybe_expand_intrinsic): Handle toPrec intrinsics.
	* intrinsics.def (TOPRECF, TOPREC, TOPRECL): Add toPrec intrinsics.
2020-04-25 02:19:04 +02:00
Iain Buclaw
81e07d422c libphobos: Remove GDCFLAGSX variable from configure scripts.
Always run testsuite with same GDCFLAGS as used in build.

libphobos/ChangeLog:

	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Remove GDCFLAGSX.
	* libdruntime/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/testsuite_flags.in: Use GDCFLAGS in --gdcflags.
	* testsuite/libphobos.thread/fiber_guard_page.d: Test using -O0.
2020-04-21 23:03:23 +02:00
Iain Buclaw
ac1a0a388c libphobos: Fix compilation dependencies on s390x-linux-musl
libphobos/ChangeLog:

	* configure: Regenerate.
	* configure.ac: Call DRUNTIME_LIBRARIES_UCONTEXT.
	* m4/druntime/libraries.m4 (DRUNTIME_LIBRARIES_UCONTEXT): Define to
	search libraries for swapcontext.
	* libdruntime/gcc/sections/elf_shared.d (getTLSRange): Always use
	__tls_get_addr on Musl.

Co-Authored-By: Mathias Lang <pro.mathias.lang@gmail.com>
2020-04-21 14:19:13 +02:00
Iain Buclaw
a1ccbae63c d: Merge update dmd 799066f49
Removes the implementation of __traits(argTypes), which only supported
x86_64 targets.  The only use of this trait is an unused va_arg()
function, this has been removed as well.

Reviewed-on: https://github.com/dlang/dmd/pull/11022

gcc/d/ChangeLog:

2020-04-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Remove d/argtypes.o.
	* d-target.cc (Target::toArgTypes): New function.

libphobos/ChangeLog:

2020-04-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* libdruntime/core/stdc/stdarg.d: Remove run-time va_list template.
2020-04-13 11:35:28 +02:00
Iain Buclaw
7478addd84 libphobos: Use libdruntime as a convenience library for libphobos.
As a prerequesite for PR94304, it becomes easier to manage selectively
compiling sublibraries when there's only one library to link to.

So a druntime convenience library is built to be part of phobos, however
separate druntime library is still built and installed, to allow linking
only to the core runtime explicitly, rather than pulling in the entire
standard library with it.

The gdc driver no longer generates an '-lgdruntime' option, and the
inclusion of the libdruntime library path has been removed from the
testsuite.

gcc/d/ChangeLog:

	* d-spec.cc (LIBDRUNTIME): Remove.
	(LIBDRUNTIME_PROFILE): Remove.
	(lang_specific_driver): Don't link in libgdruntime.

gcc/testsuite/ChangeLog:

	* lib/gdc.exp (gdc_link_flags): Remove libdruntime library path.

libphobos/ChangeLog:

	* d_rules.am (libdgruntime_la_LINK): Move to libdruntime/Makefile.am.
	(libgphobos_la_LINK): Move to src/Makefile.am
	* libdruntime/Makefile.am: Add libgdruntime_convenience library.
	* libdruntime/Makefile.in: Regenerate.
	* src/Makefile.am (libgphobos_la_LIBADD): Add libgdruntime_convenience
	library.
	(libgphobos_la_DEPENDENCIES): Likewise.
	* src/Makefile.in: Regenerate.
	* testsuite/lib/libphobos.exp: Remove libdruntime library paths.
	* testsuite/testsuite_flags.in: Likewise.
2020-04-10 12:46:12 +02:00
Iain Buclaw
bbb0de4a4a libphobos: Remove --enable-druntime-gc configure option.
This is yet another old option that would have been somewhat useful back
before the D front-end implementation was able to support compiling
without the Druntime library.

Now however, -fno-druntime makes the gcstub package redundant, so the
option has been removed, along with the package itself.

libphobos/ChangeLog:

	* configure: Regenerate.
	* libdruntime/Makefile.am (ALL_DRUNTIME_INSTALL_DSOURCES): Remove
	DRUNTIME_DSOURCES_GC and DRUNTIME_DSOURCES_GCSTUB.
	(DRUNTIME_DSOURCES): Add gc/*.d sources.
	(DRUNTIME_DSOURCES_GC): Remove.
	(DRUNTIME_DSOURCES_GCSTUB): Remove.
	* libdruntime/Makefile.in: Regenerate.
	* libdruntime/gcstub/gc.d: Remove.
	* m4/druntime.m4 (DRUNTIME_GC): Remove.
2020-04-09 17:07:43 +02:00
Iain Buclaw
c0dbfbd763 libphobos: Add --enable-libphobos-checking configure option
As GDCFLAGS is overriden by the top-level make file with '-O2 -g',
libphobos ends up always being built with all contracts, invariants, and
asserts compiled in.  This adds a new configurable that defaults to omit
compiling any run-time checks into the library using '-frelease'.

Other choices either set the flags '-fno-release', enabling all run-time
checks, or '-fassert', which only compiles in asserts.

The omission of compiling in contracts results in a smaller library
size, with faster build times.

libphobos/ChangeLog:

	PR d/94305
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Add --enable-libphobos-checking and substitute
	CHECKING_DFLAGS.  Remove -frelease from GDCFLAGS.
	* libdruntime/Makefile.am: Add CHECKING_DFLAGS to AM_DFLAGS.
	* libdruntime/Makefile.in: Regenerate.
	* src/Makefile.am: Add CHECKING_DFLAGS to AM_DFLAGS.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/testsuite_flags.in: Add -fno-release -funittest to
	--gdcflags.
2020-04-09 00:46:39 +02:00
Iain Buclaw
72c136c900 libphobos: Remove --enable-unix configure option.
This option is not useful on its own as all posix modules require the
compiler to predefine version(Posix) anyway.  So the option has been
removed, and logic moved into DRUNTIME_OS_SOURCES, where the conditional
DRUNTIME_OS_POSIX is set instead.

libphobos/ChangeLog:

	* configure: Regenerate.
	* configure.ac: Remove DRUNTIME_OS_UNIX.
	* libdruntime/Makefile.am: Add DRUNTIME_DSOURCES_POSIX if
	DRUNTIME_OS_POSIX is true.
	* libdruntime/Makefile.in: Regenerate.
	* m4/druntime/os.m4 (DRUNTIME_OS_UNIX): Remove, move AM_CONDITIONAL
	logic to...
	(DRUNTIME_OS_SOURCES): ...here.  Rename conditional to
	DRUNTIME_OS_POSIX.
2020-04-08 22:52:05 +02:00
Iain Buclaw
38c3017f25 libphobos: Always build with warning flags enabled
This moves WARN_DFLAGS from GDCFLAGS to AM_DFLAGS so it is always
included in the build and testsuite of libphobos.  Currently, this
doesn't happen as GDCFLAGS is overriden by it being set at the
top-level.

libphobos/ChangeLog:

	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Substite WARN_DFLAGS independently of GDCFLAGS.
	* libdruntime/Makefile.am: Add WARN_DFLAGS to AM_DFLAGS.
	* libdruntime/Makefile.in: Regenerate.
	* src/Makefile.am: Add WARN_DFLAGS to AM_DFLAGS.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/testsuite_flags.in: Add WARN_DFLAGS to --gdcflags.
2020-04-08 09:08:16 +02:00
Iain Buclaw
f1a6150ecb libphobos: Merge upstream phobos fb4f6a713
Improves the versioning of IeeeFlags and FloatingPointControl code and
unit-tests, making it clearer which targets can and cannot support it.

Reviewed-on: https://github.com/dlang/phobos/pull/7435
2020-04-08 06:28:51 +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
Stefan Liebler
434fe1a409 S/390: Fix layout of struct sigaction_t
The ordering of some fields in  struct sigaction on s390x (64bit)
differs compared to s390 and other architectures.
This patch adjusts this order according to the definition of
<glibc-src>/sysdeps/unix/sysv/linux/s390/bits/sigaction.h

Without this fix e.g. the call
sigaction( suspendSignalNumber, &sigusr1, null ) in thread.d
leads to setting the sa_restorer field to 0xffffffffffffffff.
In case a signal, the signal handler returns to this address
and the process stops with a SIGILL.

This was observable in several execution testcases on s390x:
libphobos.druntime/core/thread.d
libphobos.druntime_shared/core/thread.d
libphobos.thread/tlsgc_sections.d
libphobos.allocations/tls_gc_integration.d
libphobos.phobos/std/parallelism.d
libphobos.phobos_shared/std/parallelism.d
libphobos.shared/host.c
libphobos.shared/linkD.c
libphobos.shared/linkDR.c
libphobos.shared/link_linkdep.d
libphobos.shared/load.d
libphobos.shared/loadDR.c
libphobos.shared/load_linkdep.d
libphobos.shared/load_loaddep.d

libphobos/ChangeLog:

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

	* libdruntime/core/sys/posix/signal.d:
	Add struct sigaction_t for SystemZ.
2020-04-07 16:15:28 +02:00
Iain Buclaw
bc093503d7 libphobos: Reset libtool_VERSION to 1:0:0
libphobos/ChangeLog:

2020-03-16  Iain Buclaw  <ibuclaw@gdcproject.org>

	PR d/92792
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* configure.ac (libtool_VERSION): Reset to 1:0:0.
	* libdruntime/Makefile.in: Regenerate.
2020-03-16 17:04:18 +01:00
Iain Buclaw
f2d3807f58 libphobos: Merge upstream druntime 6c45dd3a, phobos 68cc18adb.
Surrounds the gcc-style asm operands with parentheses, as the old style
is now deprecated.

Reviewed-on: https://github.com/dlang/druntime/pull/2986
2020-03-16 10:38:31 +01:00
Iain Buclaw
6e5084b440 libphobos: Merge upstream druntime 7915b6a3
Includes port fixes for Musl on ARM, AArch64, and SystemZ targets.

Reviewed-on: https://github.com/dlang/druntime/pull/2751
             https://github.com/dlang/druntime/pull/2843
             https://github.com/dlang/druntime/pull/2844
             https://github.com/dlang/druntime/pull/2898
2020-03-14 19:30:54 +01:00
Maciej W. Rozycki
e8e66971cd Add `--with-toolexeclibdir=' configuration option
Provide means, in the form of a `--with-toolexeclibdir=' configuration
option, to override the default installation directory for target
libraries, otherwise known as $toolexeclibdir.  This is so that it is
possible to get newly-built libraries, particularly the shared ones,
installed in a common place, so that they can be readily used by the
target system as their host libraries, possibly over NFS, without a need
to manually copy them over from the currently hardcoded location they
would otherwise be installed in.

In the presence of the `--enable-version-specific-runtime-libs' option
and for configurations building native GCC the option is ignored.

	config/
	* toolexeclibdir.m4: New file.

	gcc/
	* doc/install.texi (Cross-Compiler-Specific Options): Document
	`--with-toolexeclibdir' option.

	libada/
	* Makefile.in (configure_deps): Add `toolexeclibdir.m4'.
	* configure.ac: Handle `--with-toolexeclibdir='.
	* configure: Regenerate.

	libatomic/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

	libffi/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* include/Makefile.in: Regenerate.
	* man/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

	libgcc/
	* Makefile.in (configure_deps): Add `toolexeclibdir.m4'.
	* configure.ac: Handle `--with-toolexeclibdir='.
	* configure: Regenerate.

	libgfortran/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

	libgomp/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

	libhsail-rt/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

	libitm/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

	libobjc/
	* Makefile.in (aclocal_deps): Add `toolexeclibdir.m4'.
	* aclocal.m4: Include `toolexeclibdir.m4'.
	* configure.ac: Handle `--with-toolexeclibdir='.
	* configure: Regenerate.

	liboffloadmic/
	* plugin/configure.ac: Handle `--with-toolexeclibdir='.
	* plugin/Makefile.in: Regenerate.
	* plugin/aclocal.m4: Regenerate.
	* plugin/configure: Regenerate.
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

	libphobos/
	* m4/druntime.m4: Handle `--with-toolexeclibdir='.
	* m4/Makefile.in: Regenerate.
	* libdruntime/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

	libquadmath/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

	libsanitizer/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* asan/Makefile.in: Regenerate.
	* interception/Makefile.in: Regenerate.
	* libbacktrace/Makefile.in: Regenerate.
	* lsan/Makefile.in: Regenerate.
	* sanitizer_common/Makefile.in: Regenerate.
	* tsan/Makefile.in: Regenerate.
	* ubsan/Makefile.in: Regenerate.

	libssp/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

	libstdc++-v3/
	* acinclude.m4: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* doc/Makefile.in: Regenerate.
	* include/Makefile.in: Regenerate.
	* libsupc++/Makefile.in: Regenerate.
	* po/Makefile.in: Regenerate.
	* python/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++17/Makefile.in: Regenerate.
	* src/c++98/Makefile.in: Regenerate.
	* src/filesystem/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

	libvtv/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

	zlib/
	* configure.ac: Handle `--with-toolexeclibdir='.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
2020-01-24 11:24:25 +00:00
Jakub Jelinek
8d9254fc8a Update copyright years.
From-SVN: r279813
2020-01-01 12:51:42 +01:00
Iain Buclaw
1e78c638a7 libphobos: Merge upstream druntime 5bb8ce19
Synchronizes extern(C) bindings with latest release.

Reviewed-on: https://github.com/dlang/druntime/pull/2741

libphobos/ChangeLog:

	* libdruntime/Makefile.am (DRUNTIME_DSOURCES_BIONIC): Add
	core/sys/bionic/string.d.
	(DRUNTIME_DSOURCES_DARWIN): Add core/sys/darwin/string.d.
	(DRUNTIME_DSOURCES_DRAGONFLYBSD): Add core/sys/dragonflybsd/string.d,
	core/sys/dragonflybsd/sys/socket.d.
	(DRUNTIME_DSOURCES_FREEBSD): Add core/sys/freebsd/string.d.
	(DRUNTIME_DSOURCES_LINUX): Add core/sys/linux/string.d.
	(DRUNTIME_DSOURCES_NETBSD): Add core/sys/netbsd/string.d,
	core/sys/netbsd/sys/featuretest.d.
	* libdruntime/Makefile.in: Regenerate.

From-SVN: r274773
2019-08-21 07:54:34 +00:00
Iain Buclaw
0234a9176c libphobos: Merge upstream druntime 94686651
Adds extern(C) bindings for version OpenBSD.

Reviewed-on: https://github.com/dlang/druntime/pull/2748

libphobos/ChangeLog:

	* libdruntime/Makefile.am (DRUNTIME_DSOURCES_OPENBSD): Add
	core/sys/openbsd/sys/cdefs.d, core/sys/openbsd/sys/elf.d,
	core/sys/openbsd/sys/elf32.d, core/sys/openbsd/sys/elf64.d,
	core/sys/openbsd/sys/elf_common.d, core/sys/openbsd/sys/link_elf.d,
	core/sys/openbsd/sys/mman.d, core/sys/openbsd/time.d.
	* libdruntime/Makefile.in: Regenerate.

From-SVN: r274772
2019-08-21 07:54:19 +00:00
Iain Buclaw
e5d0ba591e d/dmd: Merge upstream dmd f8e38c001
Fixes bug where foreach(int) doesn't work on BigEndian targets by
deprecating the use of index types smaller than a size_t/ptrdiff_t.

Reviewed-on: https://github.com/dlang/dmd/pull/10009

From-SVN: r272350
2019-06-16 07:50:07 +00:00
Iain Buclaw
ca0ddb398f libphobos: Fix multilib builds for s390x-linux-gnu
Merges upstream druntime aab44549, phobos 3dc363783.

Reviewed-on: https://github.com/dlang/druntime/pull/2590
	     https://github.com/dlang/phobos/pull/6983

libphobos/ChangeLog:

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

	* libdruntime/gcc/sections/elf_shared.d (IBMZ_Any): Define when
	version S390 or SystemZ.  Use condition instead of SystemZ.
	(getTLSRange): Return null on GNU_EMUTLS targets.

From-SVN: r270639
2019-04-29 05:42:48 +00:00
Iain Buclaw
be79ec008e libphobos: Backport minimal MinGW support patches.
Merges upstream druntime 1ca80e4e, phobos b5e9661a0.

Reviewed-on: https://github.com/dlang/druntime/pull/2587
	     https://github.com/dlang/phobos/pull/6981

From-SVN: r270638
2019-04-29 05:42:36 +00:00
Iain Buclaw
9125dc3292 libphobos: Fix segfault in runtime caused by unexpected GC of TLS data.
libphobos/ChangeLog:

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

	PR d/90250
	* libdruntime/gcc/sections/elf_shared.d (initTLSRanges): Populate
	_tlsRanges in every startup thread.
	* testsuite/libphobos.thread/thread.exp: Load libphobos-dg.exp.
	* testsuite/libphobos.thread/tlsgc_sections.d: New test.

From-SVN: r270576
2019-04-25 15:31:35 +00:00
Johannes Pfau
9168f22057 D: Implement GCC emutls in druntime
* libdruntime/Makefile.am: Add emutls and gthread files.
* libdruntime/Makefile.in: Regenerate.
* libdruntime/gcc/emutls.d: New file. Implement GC-compatible emutls.
* libdruntime/gcc/gthread.d: New file.
* libdruntime/gcc/sections/elf_shared.d: Integrate emutls support.
* testsuite/libphobos.allocations/tls_gc_integration.d: New test for
TLS.

From-SVN: r270568
2019-04-25 11:11:39 +00: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
Iain Buclaw
58990c4d3a libphobos: Fix FAIL phobos.exp/core.time on CentOS 5.11, Linux 2.6.18
Merges upstream druntime e03164b5.

Reviewed-on: https://github.com/dlang/druntime/pull/2581

libphobos/ChangeLog:

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

	PR d/89432
	* testsuite/lib/libphobos.exp (check_effective_target_linux_pre_2639):
	New proc.
	* testsuite/libphobos.druntime/druntime.exp: Add compiler flag
	-fversion=Linux_Pre_2639 if target is linux_pre_2639.
	* testsuite/libphobos.druntime_shared/druntime_shared.exp: Likewise.

From-SVN: r270554
2019-04-24 18:57:36 +00:00
Iain Buclaw
9e1558d322 libphobos: Fix assert in core.sys.posix.sys.stat for aarch64/ilp32.
Merges upstream druntime 51365217.

Reviewed-on: https://github.com/dlang/druntime/pull/2579

From-SVN: r270541
2019-04-24 11:04:22 +00:00
Iain Buclaw
130cc10e21 libphobos: Add D support for S/390 Linux
gcc/d/ChangeLog:

2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
	    Robin Dapp  <rdapp@linux.ibm.com>

	* typeinfo.cc (create_typeinfo): Write typeinfo flags as uint.

gcc/testsuite/ChangeLog:

2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
	    Robin Dapp  <rdapp@linux.ibm.com>

	* gdc.dg/link.d: Test if target d_runtime.
	* gdc.dg/runnable.d: Fix tests to work on BigEndian.
	* gdc.dg/simd.d: Likewise.

libphobos/ChangeLog:

2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>
	    Robin Dapp  <rdapp@linux.ibm.com>

	* configure.tgt: Add s390*-linux* as a supported target.
	* libdruntime/gcc/sections/elf_shared.d: import gcc.builtins.
	(__tls_get_addr_internal): Declare.
	(TLS_DTV_OFFSET): Define as zero on SystemZ.
	(getTLSRange): Support getting TLS on SystemZ.
	* testsuite/libphobos.typeinfo/struct-align.d: New test.

Co-Authored-By: Robin Dapp <rdapp@linux.ibm.com>

From-SVN: r270523
2019-04-23 22:53:25 +00:00
Iain Buclaw
d9392bfa03 libphobos: Add D support for RISC-V Linux
2019-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* configure.tgt: Add riscv*-*-linux* as supported target.
	* libdruntime/gcc/sections/elf_shared.d (getDependencies): Adjust
	dlpi_addr on RISCV32 and RISCV64.
	* src/std/math.d: Add IEEE FPU control support for RISCV.

From-SVN: r270522
2019-04-23 22:53:12 +00:00
Iain Buclaw
c7bfed18df re PR d/90079 (SEGV in _aaKeys, _aaValues on 32-bit SPARC)
PR d/90079
libphobos: Fix SEGV in _aaKeys, _aaValues on 32-bit SPARC

Merges upstream druntime b43203a1

Reviewed-on: https://github.com/dlang/druntime/pull/2572

From-SVN: r270514
2019-04-23 15:19:55 +00:00
Ramana Radhakrishnan
48528842bd re PR target/89093 (C++ exception handling clobbers d8 VFP register)
PR target/89093
	* config/arm/arm.c (aapcs_vfp_is_call_or_return_candidate): Diagnose
	if used with general-regs-only.
	(arm_conditional_register_usage): Don't add non-general regs if
	general-regs-only.
	(arm_valid_target_attribute_rec): Handle general-regs-only.
	* config/arm/arm.h (TARGET_HARD_FLOAT): Return false if
	general-regs-only.
	(TARGET_HARD_FLOAT_SUB): Define.
	(TARGET_SOFT_FLOAT): Define as negation of TARGET_HARD_FLOAT_SUB.
	(TARGET_REALLY_IWMMXT): Add && !TARGET_GENERAL_REGS_ONLY.
	(TARGET_REALLY_IWMMXT2): Likewise.
	* config/arm/arm.opt: Add -mgeneral-regs-only.
	* doc/extend.texi: Document ARM general-regs-only target.
	* doc/invoke.texi: Document ARM -mgeneral-regs-only.
libgcc/
	* config/arm/pr-support.c: Add #pragma GCC target("general-regs-only").
	* config/arm/unwind-arm.c: Likewise.
	* unwind-c.c (PERSONALITY_FUNCTION): Add general-regs-only target
	attribute for ARM.
libobjc/
	* exception.c (PERSONALITY_FUNCTION): Add general-regs-only target
	attribute for ARM.
libphobos/
	* libdruntime/gcc/deh.d: Import gcc.attribute.
	(personality_fn_attributes): New enum.
	(scanLSDA, CONTINUE_UNWINDING, gdc_personality, __gdc_personality):
	Add @personality_fn_attributes.
libstdc++-v3/
	* libsupc++/eh_personality.cc (PERSONALITY_FUNCTION): Add
	general-regs-only target attribute for ARM.

Co-Authored-By: Bernd Edlinger <bernd.edlinger@hotmail.de>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r270504
2019-04-23 12:03:41 +02:00
Iain Buclaw
eb5f748a81 libphobos: Merge upstream druntime 109f0f2e
Backports more extern(C) bindings and platform ports.

Reviewed-on: https://github.com/dlang/druntime/pull/2569

From-SVN: r270490
2019-04-22 13:46:13 +00:00