diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 97e79ef6a..54890659f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,6 +17,8 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}") add_subdirectory(bootstrap_cmds) add_subdirectory(external/cctools-port/cctools/ld64/src) +add_subdirectory(external/cctools-port/cctools/ar) +add_subdirectory(external/cctools-port/cctools/misc) add_subdirectory(util) #add_subdirectory(libmach-o) #add_subdirectory(libdyld) diff --git a/src/duct/include/CrashReporterClient.h b/src/duct/include/CrashReporterClient.h index 37254f8af..21ce08d40 100644 --- a/src/duct/include/CrashReporterClient.h +++ b/src/duct/include/CrashReporterClient.h @@ -5,8 +5,9 @@ extern "C" { #endif -void CRSetCrashLogMessage(const char* text); -void CRSetCrashLogMessage2(const char* path); +inline void CRSetCrashLogMessage(const char* text) {} +inline void CRSetCrashLogMessage2(const char* path) {} +inline const char* CRGetCrashLogMessage(void) { return 0; } #ifdef __cplusplus } diff --git a/src/duct/src/CRGetCrashLogMessage.c b/src/duct/src/CRGetCrashLogMessage.c index e457e44a1..9aca661f0 100644 --- a/src/duct/src/CRGetCrashLogMessage.c +++ b/src/duct/src/CRGetCrashLogMessage.c @@ -1,6 +1,6 @@ -int CRGetCrashLogMessage() +const char* CRGetCrashLogMessage(void) { - return 1; + return 0; } void CRSetCrashLogMessage(const char* msg) diff --git a/src/dyld-apple/CMakeLists.txt b/src/dyld-apple/CMakeLists.txt index 39663e4d9..d03b2f4e2 100644 --- a/src/dyld-apple/CMakeLists.txt +++ b/src/dyld-apple/CMakeLists.txt @@ -9,7 +9,7 @@ endif(COMMAND cmake_policy) include (darling_exe) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -nostdinc") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdinc -std=c++11") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -nostdinc -std=c++11 -include ${CMAKE_SOURCE_DIR}/src/duct/include/CrashReporterClient.h") set(CMAKE_SHARED_LINKER_FLAGS_SAVED "${CMAKE_SHARED_LINKER_FLAGS}") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -nostdlib -Wl,-flat_namespace -Wl,-undefined,suppress") @@ -65,6 +65,6 @@ add_darling_executable(system_loader #use_ld64(system_loader) set_target_properties(system_loader PROPERTIES OUTPUT_NAME "dyld") set_property(TARGET system_loader APPEND_STRING PROPERTY LINK_FLAGS " -dylinker") -target_link_libraries(system_loader crt1.10.6.o) +target_link_libraries(system_loader crt1.10.6.o libc_static) install(TARGETS system_dyld DESTINATION ${CMAKE_INSTALL_LIBDIR}/darling) diff --git a/src/dyld-apple/src/dyld.cpp b/src/dyld-apple/src/dyld.cpp index ba7c7cc8e..21bb23161 100644 --- a/src/dyld-apple/src/dyld.cpp +++ b/src/dyld-apple/src/dyld.cpp @@ -1209,7 +1209,7 @@ static void setRunInitialzersOldWay() static bool sandboxBlocked(const char* path, const char* kind) { -#if TARGET_IPHONE_SIMULATOR +#if TARGET_IPHONE_SIMULATOR || DARLING // sandbox calls not yet supported in simulator runtime return false; #else diff --git a/src/external/cctools-port b/src/external/cctools-port index 5897f4a2c..fdd1105e3 160000 --- a/src/external/cctools-port +++ b/src/external/cctools-port @@ -1 +1 @@ -Subproject commit 5897f4a2c7585a520eb5ab77635bf169201a14c3 +Subproject commit fdd1105e39b1de24f20d8de649c1cf5862091204 diff --git a/src/libc/CMakeLists.txt b/src/libc/CMakeLists.txt index bc7bae04d..0856483a7 100644 --- a/src/libc/CMakeLists.txt +++ b/src/libc/CMakeLists.txt @@ -20,7 +20,7 @@ add_definitions(-D__LIBC__ -D__DARWIN_UNIX03=1 -D__DARWIN_64_BIT_INO_T=1 -D__DAR #add_definitions("'-D__weak_reference(sym,alias)='") add_definitions("'-D__warn_references(name,warning)='") #add_definitions(-Ddladdr=__darwin_dladdr) -add_definitions(-DBUILDING_LIBC) +add_definitions(-DBUILDING_LIBC -DPRIVATE) # Hide warnings that get spammed add_definitions( @@ -144,6 +144,17 @@ target_link_libraries(system_c system_kernel system_m) install(TARGETS system_c DESTINATION ${CMAKE_INSTALL_LIBDIR}/darling) +set(CMAKE_AR "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/ar/x86_64-apple-darwin11-ar") +set(CMAKE_RANLIB "${CMAKE_BINARY_DIR}/src/external/cctools-port/cctools/misc/ranlib") +add_library(libc_static STATIC + $ + $ + $ + $ + $ + $ + $) + # TODO: see ./xcodescripts/variants.xcconfig #SET_TARGET_PROPERTIES(system_c PROPERTIES LINKER_LANGUAGE C) diff --git a/src/libc/gen/CMakeLists.txt b/src/libc/gen/CMakeLists.txt index 02fbb9a3d..5d98a89c3 100644 --- a/src/libc/gen/CMakeLists.txt +++ b/src/libc/gen/CMakeLists.txt @@ -59,7 +59,7 @@ set(gen_sources #asl.c set(gen_sources ${gen_sources} FreeBSD/alarm.c FreeBSD/arc4random.c - FreeBSD/assert.c + FreeBSD/assert.c FreeBSD/basename.c FreeBSD/clock.c FreeBSD/closedir.c @@ -233,3 +233,11 @@ endif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x86_64") add_library(libc-gen_pre1050 OBJECT ${gen-pre1050_sources}) SET_TARGET_PROPERTIES(libc-gen_pre1050 PROPERTIES COMPILE_FLAGS "-DBUILDING_VARIANT -DVARIANT_PRE1050 -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0") +# *** +# DYLD variants +# *** + +add_library(libc-gen_dyld OBJECT _simple.c FreeBSD/arc4random.c FreeBSD/closedir.c dirfd.c FreeBSD/getcwd.c FreeBSD/getpagesize.c nanosleep.c FreeBSD/opendir.c FreeBSD/readdir.c FreeBSD/scandir.c FreeBSD/sysctl.c FreeBSD/sysctlbyname.c FreeBSD/telldir.c FreeBSD/usleep.c) + +SET_TARGET_PROPERTIES(libc-gen_dyld PROPERTIES COMPILE_FLAGS "-UBUILDING_VARIANT -DVARIANT_DYLD -DVARIANT_CANCELABLE -DVARIANT_DARWINEXTSN") + diff --git a/src/libc/pthreads/CMakeLists.txt b/src/libc/pthreads/CMakeLists.txt index 4cf514b44..bca8bc4a7 100644 --- a/src/libc/pthreads/CMakeLists.txt +++ b/src/libc/pthreads/CMakeLists.txt @@ -41,3 +41,7 @@ set(pthreads-legacy_sources add_library(libc-pthreads_legacy OBJECT ${pthreads-legacy_sources}) SET_TARGET_PROPERTIES(libc-pthreads_legacy PROPERTIES COMPILE_FLAGS "-DBUILDING_VARIANT -DVARIANT_LEGACY -U_DARWIN_C_SOURCE -U_POSIX_C_SOURCE -U__DARWIN_UNIX03 -D__DARWIN_UNIX03=0") +# DYLD variant + +add_library(libc-pthreads_dyld OBJECT pthread.c pthread_mutex.c pthread_tsd.c) +SET_TARGET_PROPERTIES(libc-pthreads_dyld PROPERTIES COMPILE_FLAGS "-UBUILDING_VARIANT -DVARIANT_DYLD -DVARIANT_CANCELABLE -DVARIANT_DARWINEXTSN") diff --git a/src/libc/stdlib/CMakeLists.txt b/src/libc/stdlib/CMakeLists.txt index 40d7edd68..45a22c0a3 100644 --- a/src/libc/stdlib/CMakeLists.txt +++ b/src/libc/stdlib/CMakeLists.txt @@ -99,3 +99,8 @@ SET_TARGET_PROPERTIES(libc-stdlib_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDIN set(stdlib-extsn_sources FreeBSD/realpath.c) add_library(libc-stdlib_extsn OBJECT ${stdlib-extsn_sources}) SET_TARGET_PROPERTIES(libc-stdlib_extsn PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_DARWINEXTSN") + +# DYLD variant +add_library(libc-stdlib_dyld OBJECT FreeBSD/atexit.c FreeBSD/exit.c FreeBSD/heapsort.c FreeBSD/merge.c FreeBSD/qsort.c FreeBSD/reallocf.c FreeBSD/realpath.c) +SET_TARGET_PROPERTIES(libc-stdlib_dyld PROPERTIES COMPILE_FLAGS "-UBUILDING_VARIANT -DVARIANT_DYLD -DVARIANT_CANCELABLE -DVARIANT_DARWINEXTSN") + diff --git a/src/libc/string/CMakeLists.txt b/src/libc/string/CMakeLists.txt index 35ab7cbf4..9ea25cee5 100644 --- a/src/libc/string/CMakeLists.txt +++ b/src/libc/string/CMakeLists.txt @@ -95,3 +95,7 @@ set(string-legacy_sources add_library(libc-string_legacy OBJECT ${string-legacy_sources}) SET_TARGET_PROPERTIES(libc-string_legacy PROPERTIES COMPILE_DEFINITIONS "BUILDING_VARIANT;VARIANT_LEGACY") +# DYLD variant +add_library(libc-string_dyld OBJECT strcat.c FreeBSD/strchr.c strcpy.c FreeBSD/strdup.c strlcat.c strlcpy.c FreeBSD/strncmp.c FreeBSD/strnlen.c FreeBSD/strrchr.c FreeBSD/strstr.c) +SET_TARGET_PROPERTIES(libc-string_dyld PROPERTIES COMPILE_FLAGS "-UBUILDING_VARIANT -DVARIANT_DYLD -DVARIANT_CANCELABLE -DVARIANT_DARWINEXTSN") + diff --git a/src/libc/sys/CMakeLists.txt b/src/libc/sys/CMakeLists.txt index e3552cc7b..ca1ff8c47 100644 --- a/src/libc/sys/CMakeLists.txt +++ b/src/libc/sys/CMakeLists.txt @@ -48,3 +48,6 @@ set(sys-noinode64_sources statx_np.c) add_library(libc-sys_noinode64 OBJECT ${sys-noinode64_sources}) SET_TARGET_PROPERTIES(libc-sys_noinode64 PROPERTIES COMPILE_FLAGS "-U__DARWIN_UNIX03 -U__DARWIN_64_BIT_INO_T -DVARIANT_INODE32 -DBUILDING_VARIANT -D_DARWIN_NO_64_BIT_INODE") +add_library(libc-sys_dyld OBJECT gettimeofday.c) +SET_TARGET_PROPERTIES(libc-sys_dyld PROPERTIES COMPILE_FLAGS "-UBUILDING_VARIANT -DVARIANT_DYLD -DVARIANT_CANCELABLE -DVARIANT_DARWINEXTSN") + diff --git a/src/libc/threads/CMakeLists.txt b/src/libc/threads/CMakeLists.txt index db4ee3c49..cea697077 100644 --- a/src/libc/threads/CMakeLists.txt +++ b/src/libc/threads/CMakeLists.txt @@ -11,3 +11,7 @@ set(threads_sources ) add_library(libc-threads OBJECT ${threads_sources}) + +add_library(libc-threads_dyld OBJECT mig_support.c) +SET_TARGET_PROPERTIES(libc-threads_dyld PROPERTIES COMPILE_FLAGS "-UBUILDING_VARIANT -DVARIANT_DYLD -DVARIANT_CANCELABLE -DVARIANT_DARWINEXTSN") + diff --git a/src/libc/x86_64/CMakeLists.txt b/src/libc/x86_64/CMakeLists.txt index 5a341bb69..55c6c75e9 100644 --- a/src/libc/x86_64/CMakeLists.txt +++ b/src/libc/x86_64/CMakeLists.txt @@ -91,4 +91,5 @@ set(x86_64_sources ${x86_64_sources} add_library(libc-hwplat OBJECT ${x86_64_sources}) +add_library(libc-hwplat_dyld OBJECT pthreads/pthread_set_self.S pthreads/pthread_self.S pthreads/pthread_getspecific.S pthreads/preempt.S string/__bzero.S string/bcopy_sse3x.S string/bzero_sse2.S string/ffs.S string/longcopy_sse3x.S string/strcmp.S string/strlen.S string/strncpy.S sys/OSAtomic.S sys/i386_gettimeofday_asm.S sys/spinlocks_asm.S)