Martin Kinkelin
5 years ago
8 changed files with 122 additions and 261 deletions
@ -0,0 +1,70 @@ |
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|||
index a9cd81983..b7700a7d2 100644
|
|||
--- a/CMakeLists.txt
|
|||
+++ b/CMakeLists.txt
|
|||
@@ -562,6 +562,16 @@ add_custom_target(${LDMD_EXE} ALL DEPENDS ${LDMD_EXE_FULL})
|
|||
# Figure out how to link the main LDC executable, for which we need to take the |
|||
# LLVM flags into account. |
|||
set(LDC_LINKERFLAG_LIST ${SANITIZE_LDFLAGS} ${LLVM_LIBRARIES} ${LLVM_LDFLAGS}) |
|||
+if(MSVC)
|
|||
+ # Issue 1297 – set LDC's stack to 8 MiB like on Linux and Mac (default: 1 MiB).
|
|||
+ list(APPEND LDC_LINKERFLAG_LIST "/STACK:8388608")
|
|||
+ # VS 2017+: Use undocumented /NOOPTTLS MS linker switch to keep on emitting
|
|||
+ # a .tls section. Required for older host druntime versions, otherwise the
|
|||
+ # GC TLS ranges are garbage starting with VS 2017 Update 15.3.
|
|||
+ if(MSVC_VERSION GREATER 1900) # VS 2017+
|
|||
+ list(APPEND LDC_LINKERFLAG_LIST "/NOOPTTLS")
|
|||
+ endif()
|
|||
+endif()
|
|||
if(LDC_WITH_LLD) |
|||
# ELF, Mach-O, MinGW and WebAssembly formats supported since LLD 6.0.0, otherwise just Windows COFF |
|||
if(NOT (LDC_LLVM_VER LESS 600)) |
|||
@@ -615,9 +625,11 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clan
|
|||
# we manually invoke the linker instead of using the D compiler to do so. |
|||
set(LDC_LINK_MANUALLY ON) |
|||
|
|||
- include(ExtractDMDSystemLinker)
|
|||
- message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}")
|
|||
- message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}")
|
|||
+ if(NOT DEFINED D_LINKER_ARGS)
|
|||
+ include(ExtractDMDSystemLinker)
|
|||
+ message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}")
|
|||
+ message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}")
|
|||
+ endif()
|
|||
list(APPEND LDC_LINKERFLAG_LIST ${D_LINKER_ARGS}) |
|||
|
|||
if(NOT "${CMAKE_EXE_LINKER_FLAGS}" STREQUAL "") |
|||
@@ -625,23 +637,11 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES "Clan
|
|||
list(APPEND LDC_LINKERFLAG_LIST ${flags}) |
|||
endif() |
|||
else() |
|||
- # Use D compiler for linking, trying to translate a few common linker flags.
|
|||
+ # use D compiler for linking
|
|||
set(LDC_TRANSLATED_LINKER_FLAGS "") |
|||
foreach(f ${LDC_LINKERFLAG_LIST}) |
|||
- string(REPLACE "-LIBPATH:" "/LIBPATH:" f ${f})
|
|||
list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L${f}") |
|||
endforeach() |
|||
-
|
|||
- if(MSVC)
|
|||
- # Issue 1297 – set LDC's stack to 8 MiB like on Linux and Mac (default: 1 MiB).
|
|||
- list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L/STACK:8388608")
|
|||
- # VS 2017+: Use undocumented /NOOPTTLS MS linker switch to keep on emitting
|
|||
- # a .tls section. Required for older host druntime versions, otherwise the
|
|||
- # GC TLS ranges are garbage starting with VS 2017 Update 15.3.
|
|||
- if(MSVC_VERSION GREATER 1900) # VS 2017+
|
|||
- list(APPEND LDC_TRANSLATED_LINKER_FLAGS "-L/NOOPTTLS")
|
|||
- endif()
|
|||
- endif()
|
|||
endif() |
|||
|
|||
# CONFIG generator expressions need to be repeated due to https://cmake.org/Bug/view.php?id=14353 |
|||
@@ -838,7 +838,7 @@ endif()
|
|||
# |
|||
# Auxiliary build and test utils. |
|||
# |
|||
-add_subdirectory(utils)
|
|||
+#add_subdirectory(utils)
|
|||
|
|||
# |
|||
# Auxiliary tools. |
@ -0,0 +1,26 @@ |
|||
diff --git a/src/core/runtime.d b/src/core/runtime.d
|
|||
index 03103daa..fd185816 100644
|
|||
--- a/src/core/runtime.d
|
|||
+++ b/runtime/druntime/src/core/runtime.d
|
|||
@@ -799,7 +799,8 @@ unittest
|
|||
} |
|||
|
|||
/// Default implementation for POSIX systems |
|||
-version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo
|
|||
+version (CRuntime_Bionic) { /* no backtrace[_symbols] */ }
|
|||
+else version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo
|
|||
{ |
|||
// backtrace |
|||
version (CRuntime_Glibc) |
|||
@@ -825,7 +826,10 @@ version (Posix) private class DefaultTraceInfo : Throwable.TraceInfo
|
|||
{ |
|||
version (LDC) |
|||
{ |
|||
- numframes = backtrace( callstack.ptr, MAXFRAMES );
|
|||
+ static if ( __traits( compiles, backtrace ) )
|
|||
+ numframes = backtrace( callstack.ptr, MAXFRAMES );
|
|||
+ else
|
|||
+ numframes = 0;
|
|||
} |
|||
else |
|||
{ |
@ -1,30 +0,0 @@ |
|||
diff --git a/src/rt/sections_android.d b/src/rt/sections_android.d
|
|||
index 33644151..34a2ae5e 100644
|
|||
--- a/src/rt/sections_android.d
|
|||
+++ b/runtime/druntime/src/rt/sections_android.d
|
|||
@@ -76,7 +76,11 @@ void initSections() nothrow @nogc
|
|||
_sections.moduleGroup = ModuleGroup(mbeg[0 .. mend - mbeg]); |
|||
|
|||
auto pbeg = cast(void*)&_tlsend; |
|||
- auto pend = cast(void*)&__bss_end__;
|
|||
+ version(X86) auto pend = cast(void*)&_end;
|
|||
+ else version(X86_64) auto pend = cast(void*)& _end;
|
|||
+ else version(ARM) auto pend = cast(void*)& __bss_end__;
|
|||
+ else version(AArch64) auto pend = cast(void*)& __bss_end__;
|
|||
+ else static assert( false, "Android architecture not supported." );
|
|||
// _tlsend is a 32-bit int and may not be 64-bit void*-aligned, so align pbeg. |
|||
version (D_LP64) pbeg = cast(void*)(cast(size_t)(pbeg + 7) & ~cast(size_t)7); |
|||
_sections._gcRanges[0] = pbeg[0 .. pend - pbeg]; |
|||
@@ -180,7 +184,11 @@ extern(C)
|
|||
void* __stop_minfo; |
|||
} |
|||
|
|||
- size_t __bss_end__;
|
|||
+ version(X86) size_t _end;
|
|||
+ else version(X86_64) size_t _end;
|
|||
+ else version(ARM) size_t __bss_end__;
|
|||
+ else version(AArch64) size_t __bss_end__;
|
|||
+ else static assert( false, "Android architecture not supported." );
|
|||
|
|||
int _tlsstart; |
|||
int _tlsend; |
@ -1,170 +0,0 @@ |
|||
diff --git a/src/core/sys/posix/unistd.d b/src/core/sys/posix/unistd.d
|
|||
index 04de7764..418d63d4 100644
|
|||
--- a/src/core/sys/posix/unistd.d
|
|||
+++ b/runtime/druntime/src/core/sys/posix/unistd.d
|
|||
@@ -1342,9 +1342,162 @@ else version (CRuntime_Bionic)
|
|||
enum W_OK = 2; |
|||
enum X_OK = 1; |
|||
|
|||
- enum _SC_PAGESIZE = 0x0027;
|
|||
- enum _SC_NPROCESSORS_ONLN = 0x0061;
|
|||
- enum _SC_THREAD_STACK_MIN = 0x004c;
|
|||
+ enum
|
|||
+ {
|
|||
+ _SC_ARG_MAX = 0x0000,
|
|||
+ _SC_BC_BASE_MAX = 0x0001,
|
|||
+ _SC_BC_DIM_MAX = 0x0002,
|
|||
+ _SC_BC_SCALE_MAX = 0x0003,
|
|||
+ _SC_BC_STRING_MAX = 0x0004,
|
|||
+ _SC_CHILD_MAX = 0x0005,
|
|||
+ _SC_CLK_TCK = 0x0006,
|
|||
+ _SC_COLL_WEIGHTS_MAX = 0x0007,
|
|||
+ _SC_EXPR_NEST_MAX = 0x0008,
|
|||
+ _SC_LINE_MAX = 0x0009,
|
|||
+ _SC_NGROUPS_MAX = 0x000a,
|
|||
+ _SC_OPEN_MAX = 0x000b,
|
|||
+ _SC_PASS_MAX = 0x000c,
|
|||
+ _SC_2_C_BIND = 0x000d,
|
|||
+ _SC_2_C_DEV = 0x000e,
|
|||
+ _SC_2_C_VERSION = 0x000f,
|
|||
+ _SC_2_CHAR_TERM = 0x0010,
|
|||
+ _SC_2_FORT_DEV = 0x0011,
|
|||
+ _SC_2_FORT_RUN = 0x0012,
|
|||
+ _SC_2_LOCALEDEF = 0x0013,
|
|||
+ _SC_2_SW_DEV = 0x0014,
|
|||
+ _SC_2_UPE = 0x0015,
|
|||
+ _SC_2_VERSION = 0x0016,
|
|||
+ _SC_JOB_CONTROL = 0x0017,
|
|||
+ _SC_SAVED_IDS = 0x0018,
|
|||
+ _SC_VERSION = 0x0019,
|
|||
+ _SC_RE_DUP_MAX = 0x001a,
|
|||
+ _SC_STREAM_MAX = 0x001b,
|
|||
+ _SC_TZNAME_MAX = 0x001c,
|
|||
+ _SC_XOPEN_CRYPT = 0x001d,
|
|||
+ _SC_XOPEN_ENH_I18N = 0x001e,
|
|||
+ _SC_XOPEN_SHM = 0x001f,
|
|||
+ _SC_XOPEN_VERSION = 0x0020,
|
|||
+ _SC_XOPEN_XCU_VERSION = 0x0021,
|
|||
+ _SC_XOPEN_REALTIME = 0x0022,
|
|||
+ _SC_XOPEN_REALTIME_THREADS = 0x0023,
|
|||
+ _SC_XOPEN_LEGACY = 0x0024,
|
|||
+ _SC_ATEXIT_MAX = 0x0025,
|
|||
+ _SC_IOV_MAX = 0x0026,
|
|||
+ _SC_UIO_MAXIOV = _SC_IOV_MAX,
|
|||
+ _SC_PAGESIZE = 0x0027,
|
|||
+ _SC_PAGE_SIZE = 0x0028,
|
|||
+ _SC_XOPEN_UNIX = 0x0029,
|
|||
+ _SC_XBS5_ILP32_OFF32 = 0x002a,
|
|||
+ _SC_XBS5_ILP32_OFFBIG = 0x002b,
|
|||
+ _SC_XBS5_LP64_OFF64 = 0x002c,
|
|||
+ _SC_XBS5_LPBIG_OFFBIG = 0x002d,
|
|||
+ _SC_AIO_LISTIO_MAX = 0x002e,
|
|||
+ _SC_AIO_MAX = 0x002f,
|
|||
+ _SC_AIO_PRIO_DELTA_MAX = 0x0030,
|
|||
+ _SC_DELAYTIMER_MAX = 0x0031,
|
|||
+ _SC_MQ_OPEN_MAX = 0x0032,
|
|||
+ _SC_MQ_PRIO_MAX = 0x0033,
|
|||
+ _SC_RTSIG_MAX = 0x0034,
|
|||
+ _SC_SEM_NSEMS_MAX = 0x0035,
|
|||
+ _SC_SEM_VALUE_MAX = 0x0036,
|
|||
+ _SC_SIGQUEUE_MAX = 0x0037,
|
|||
+ _SC_TIMER_MAX = 0x0038,
|
|||
+ _SC_ASYNCHRONOUS_IO = 0x0039,
|
|||
+ _SC_FSYNC = 0x003a,
|
|||
+ _SC_MAPPED_FILES = 0x003b,
|
|||
+ _SC_MEMLOCK = 0x003c,
|
|||
+ _SC_MEMLOCK_RANGE = 0x003d,
|
|||
+ _SC_MEMORY_PROTECTION = 0x003e,
|
|||
+ _SC_MESSAGE_PASSING = 0x003f,
|
|||
+ _SC_PRIORITIZED_IO = 0x0040,
|
|||
+ _SC_PRIORITY_SCHEDULING = 0x0041,
|
|||
+ _SC_REALTIME_SIGNALS = 0x0042,
|
|||
+ _SC_SEMAPHORES = 0x0043,
|
|||
+ _SC_SHARED_MEMORY_OBJECTS = 0x0044,
|
|||
+ _SC_SYNCHRONIZED_IO = 0x0045,
|
|||
+ _SC_TIMERS = 0x0046,
|
|||
+ _SC_GETGR_R_SIZE_MAX = 0x0047,
|
|||
+ _SC_GETPW_R_SIZE_MAX = 0x0048,
|
|||
+ _SC_LOGIN_NAME_MAX = 0x0049,
|
|||
+ _SC_THREAD_DESTRUCTOR_ITERATIONS = 0x004a,
|
|||
+ _SC_THREAD_KEYS_MAX = 0x004b,
|
|||
+ _SC_THREAD_STACK_MIN = 0x004c,
|
|||
+ _SC_THREAD_THREADS_MAX = 0x004d,
|
|||
+ _SC_TTY_NAME_MAX = 0x004e,
|
|||
+
|
|||
+ _SC_THREADS = 0x004f,
|
|||
+ _SC_THREAD_ATTR_STACKADDR = 0x0050,
|
|||
+ _SC_THREAD_ATTR_STACKSIZE = 0x0051,
|
|||
+ _SC_THREAD_PRIORITY_SCHEDULING = 0x0052,
|
|||
+ _SC_THREAD_PRIO_INHERIT = 0x0053,
|
|||
+ _SC_THREAD_PRIO_PROTECT = 0x0054,
|
|||
+ _SC_THREAD_SAFE_FUNCTIONS = 0x0055,
|
|||
+
|
|||
+ _SC_NPROCESSORS_CONF = 0x0060,
|
|||
+ _SC_NPROCESSORS_ONLN = 0x0061,
|
|||
+ _SC_PHYS_PAGES = 0x0062,
|
|||
+ _SC_AVPHYS_PAGES = 0x0063,
|
|||
+ _SC_MONOTONIC_CLOCK = 0x0064,
|
|||
+
|
|||
+ _SC_2_PBS = 0x0065,
|
|||
+ _SC_2_PBS_ACCOUNTING = 0x0066,
|
|||
+ _SC_2_PBS_CHECKPOINT = 0x0067,
|
|||
+ _SC_2_PBS_LOCATE = 0x0068,
|
|||
+ _SC_2_PBS_MESSAGE = 0x0069,
|
|||
+ _SC_2_PBS_TRACK = 0x006a,
|
|||
+ _SC_ADVISORY_INFO = 0x006b,
|
|||
+ _SC_BARRIERS = 0x006c,
|
|||
+ _SC_CLOCK_SELECTION = 0x006d,
|
|||
+ _SC_CPUTIME = 0x006e,
|
|||
+ _SC_HOST_NAME_MAX = 0x006f,
|
|||
+ _SC_IPV6 = 0x0070,
|
|||
+ _SC_RAW_SOCKETS = 0x0071,
|
|||
+ _SC_READER_WRITER_LOCKS = 0x0072,
|
|||
+ _SC_REGEXP = 0x0073,
|
|||
+ _SC_SHELL = 0x0074,
|
|||
+ _SC_SPAWN = 0x0075,
|
|||
+ _SC_SPIN_LOCKS = 0x0076,
|
|||
+ _SC_SPORADIC_SERVER = 0x0077,
|
|||
+ _SC_SS_REPL_MAX = 0x0078,
|
|||
+ _SC_SYMLOOP_MAX = 0x0079,
|
|||
+ _SC_THREAD_CPUTIME = 0x007a,
|
|||
+ _SC_THREAD_PROCESS_SHARED = 0x007b,
|
|||
+ _SC_THREAD_ROBUST_PRIO_INHERIT = 0x007c,
|
|||
+ _SC_THREAD_ROBUST_PRIO_PROTECT = 0x007d,
|
|||
+ _SC_THREAD_SPORADIC_SERVER = 0x007e,
|
|||
+ _SC_TIMEOUTS = 0x007f,
|
|||
+ _SC_TRACE = 0x0080,
|
|||
+ _SC_TRACE_EVENT_FILTER = 0x0081,
|
|||
+ _SC_TRACE_EVENT_NAME_MAX = 0x0082,
|
|||
+ _SC_TRACE_INHERIT = 0x0083,
|
|||
+ _SC_TRACE_LOG = 0x0084,
|
|||
+ _SC_TRACE_NAME_MAX = 0x0085,
|
|||
+ _SC_TRACE_SYS_MAX = 0x0086,
|
|||
+ _SC_TRACE_USER_EVENT_MAX = 0x0087,
|
|||
+ _SC_TYPED_MEMORY_OBJECTS = 0x0088,
|
|||
+ _SC_V7_ILP32_OFF32 = 0x0089,
|
|||
+ _SC_V7_ILP32_OFFBIG = 0x008a,
|
|||
+ _SC_V7_LP64_OFF64 = 0x008b,
|
|||
+ _SC_V7_LPBIG_OFFBIG = 0x008c,
|
|||
+ _SC_XOPEN_STREAMS = 0x008d,
|
|||
+ _SC_XOPEN_UUCP = 0x008e,
|
|||
+
|
|||
+ _SC_LEVEL1_ICACHE_SIZE = 0x008f,
|
|||
+ _SC_LEVEL1_ICACHE_ASSOC = 0x0090,
|
|||
+ _SC_LEVEL1_ICACHE_LINESIZE = 0x0091,
|
|||
+ _SC_LEVEL1_DCACHE_SIZE = 0x0092,
|
|||
+ _SC_LEVEL1_DCACHE_ASSOC = 0x0093,
|
|||
+ _SC_LEVEL1_DCACHE_LINESIZE = 0x0094,
|
|||
+ _SC_LEVEL2_CACHE_SIZE = 0x0095,
|
|||
+ _SC_LEVEL2_CACHE_ASSOC = 0x0096,
|
|||
+ _SC_LEVEL2_CACHE_LINESIZE = 0x0097,
|
|||
+ _SC_LEVEL3_CACHE_SIZE = 0x0098,
|
|||
+ _SC_LEVEL3_CACHE_ASSOC = 0x0099,
|
|||
+ _SC_LEVEL3_CACHE_LINESIZE = 0x009a,
|
|||
+ _SC_LEVEL4_CACHE_SIZE = 0x009b,
|
|||
+ _SC_LEVEL4_CACHE_ASSOC = 0x009c,
|
|||
+ _SC_LEVEL4_CACHE_LINESIZE = 0x009d,
|
|||
+ }
|
|||
} |
|||
else version (Solaris) |
|||
{ |
@ -1,14 +0,0 @@ |
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|||
index 336bbdbc..4b9e8c88 100644
|
|||
--- a/CMakeLists.txt
|
|||
+++ b/CMakeLists.txt
|
|||
@@ -591,7 +591,8 @@ if(UNIX AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Cla
|
|||
message(FATAL_ERROR "GDMD currently not supported due to http://bugzilla.gdcproject.org/show_bug.cgi?id=232.") |
|||
endif() |
|||
|
|||
- include(ExtractDMDSystemLinker)
|
|||
+ #include(ExtractDMDSystemLinker)
|
|||
+ set(D_LINKER_ARGS "-fuse-ld=bfd;-Lldc-build-runtime.tmp/lib;-lphobos2-ldc;-ldruntime-ldc;-Wl,--gc-sections")
|
|||
message(STATUS "Host D compiler linker program: ${D_LINKER_COMMAND}") |
|||
message(STATUS "Host D compiler linker flags: ${D_LINKER_ARGS}") |
|||
list(APPEND LDC_LINKERFLAG_LIST ${D_LINKER_ARGS}) |
@ -1,19 +0,0 @@ |
|||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|||
index 336bbdbc..4b9e8c88 100644
|
|||
--- a/CMakeLists.txt
|
|||
+++ b/CMakeLists.txt
|
|||
@@ -736,12 +737,12 @@ endif()
|
|||
# |
|||
# Auxiliary build and test utils. |
|||
# |
|||
-add_subdirectory(utils)
|
|||
+#add_subdirectory(utils)
|
|||
|
|||
# |
|||
# Auxiliary tools. |
|||
# |
|||
-add_subdirectory(tools)
|
|||
+#add_subdirectory(tools)
|
|||
|
|||
# |
|||
# Test and runtime targets. Note that enable_testing() is order-sensitive! |
Loading…
Reference in new issue