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.
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.
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.
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
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.
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.
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
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
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
Adds version (BacktraceExternal) for using libexecinfo instead of
internal implementation on FreeBSD, NetBSD, and DragonFly.
Reviewed-on: https://github.com/dlang/druntime/pull/2560
From-SVN: r270482
These modules depend on a mixture between how the compiler emits
run-time module information, and what functions are exposed by the
platform to inquire about loaded global and thread-local data sections.
As the upstream implementation is written to work only with how the
reference D compiler writes out data, much of what is present does not
apply to the GCC D front-end. So it has been moved to a non-upstream
location in the source tree, where most of it will be rewritten once
each port has been completed.
The only tested module sections/elf_shared.d has been cleaned up so that
all deprecated declarations have been removed, as well as the brittle
module collision checking, which required bss_sections.c. All other
ports have been left unchanged apart from a commonizing of attributes.
libphobos/ChangeLog:
2019-04-13 Iain Buclaw <ibuclaw@gdcproject.org>
* libdruntime/Makefile.am (DRUNTIME_CSOURCES): Remove bss_sections.c.
(DRUNTIME_DSOURCES): Rename rt/sections_* modules to gcc/sections/*.
* libdruntime/Makefile.in: Regenerate.
* libdruntime/gcc/sections/android.d: New file.
* libdruntime/gcc/sections/elf_shared.d: New file.
* libdruntime/gcc/sections/osx.d: New file.
* libdruntime/gcc/sections/package.d: New file.
* libdruntime/gcc/sections/solaris.d: New file.
* libdruntime/gcc/sections/win32.d: New file.
* libdruntime/gcc/sections/win64.d: New file.
* libdruntime/rt/bss_section.c: Remove.
* libdruntime/rt/sections.d: Publicly import gcc.sections.
* libdruntime/rt/sections_android.d: Remove.
* libdruntime/rt/sections_elf_shared.d: Remove.
* libdruntime/rt/sections_osx.d: Remove.
* libdruntime/rt/sections_solaris.d: Remove.
* libdruntime/rt/sections_win32.d: Remove.
* libdruntime/rt/sections_win64.d: Remove.
From-SVN: r270341
2019-02-19 Bernd Edlinger <bernd.edlinger@hotmail.de>
* src/Makefile.am: Avoid the -D option which is not available
with the install-sh fallback. Use $(MKDIR_P) instead.
* libdruntime/Makefile.am: Likewise.
* src/Makefile.in: Regenerated.
* libdruntime/Makefile.in: Regenerated.
From-SVN: r269025
In the gcc.backtrace module, either one of LibBacktrace or
UnwindBacktrace will always be defined. Giving UnwindBacktrace a higher
precedence over the libc backtrace as the default handler because the
latter depends on a rt.backtrace module that is not compiled in.
libphobos/ChangeLog:
* libdruntime/core/runtime.d (defaultTraceHandler): Give
UnwindBacktrace handler precedence over backtrace.
From-SVN: r268836
The StackGrowsDown version being turned off for hppa targets.
After other fixes in the compiler, this allows core.thread unittests to
all pass, as well as the garbage collector to work correctly.
Backported from upstream druntime 2.084.
Reviewed-on: https://github.com/dlang/druntime/pull/2410
From-SVN: r268056