this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add libxpc and launchd into build (doesn't work yet)

+194 -17
+60 -8
platform-include/xpc/launchd.h
··· 18 18 XPC_JETSAM_BAND_ACCESSORY, 19 19 XPC_JETSAM_BAND_CRITICAL, 20 20 XPC_JETSAM_BAND_TELEPHONY, 21 + XPC_JETSAM_BAND_LAST = XPC_JETSAM_BAND_TELEPHONY, 21 22 }; 22 23 23 24 enum { ··· 32 33 JETSAM_PRIORITY_AUDIO_AND_ACCESSORY, 33 34 JETSAM_PRIORITY_CRITICAL, 34 35 JETSAM_PRIORITY_TELEPHONY, 36 + JETSAM_PRIORITY_LAST = JETSAM_PRIORITY_TELEPHONY 35 37 }; 36 38 39 + typedef enum { 40 + XPC_EVENT_GET_NAME, 41 + XPC_EVENT_SET, 42 + XPC_EVENT_COPY, 43 + XPC_EVENT_CHECK_IN, 44 + XPC_EVENT_LOOK_UP, 45 + XPC_EVENT_PROVIDER_CHECK_IN, 46 + XPC_EVENT_PROVIDER_SET_STATE, 47 + XPC_EVENT_COPY_ENTITLEMENTS 48 + } xpc_event_t; 49 + 50 + typedef enum { 51 + XPC_PROCESS_JETSAM_SET_BAND, 52 + XPC_PROCESS_JETSAM_SET_MEMORY_LIMIT, 53 + XPC_PROCESS_SERVICE_ATTACH, 54 + XPC_PROCESS_SERVICE_DETACH, 55 + XPC_PROCESS_SERVICE_GET_PROPERTIES, 56 + XPC_PROCESS_SERVICE_KILL 57 + } xpc_jetsam_t; 58 + 59 + #define XPC_SERVICE_TYPE_BUNDLED 0xBADDCAFE 60 + #define XPC_SERVICE_TYPE_LAUNCHD 0xBABECAFE 61 + #define XPC_SERVICE_TYPE_APP 0xDEADCAFE 62 + #define XPC_SERVICE_TYPE_ENTITLEMENT_ATTACH 0x00DEAD00 63 + 64 + 37 65 #define XPC_SERVICE_ENV_ATTACHED "XPC_SERVICE_ENV_ATTACHED" 38 66 #define XPC_SERVICE_RENDEZVOUS_TOKEN "XPC_SERVICE_RENDEZVOUS_TOKEN" 39 67 40 - #define XPC_EVENT_ROUTINE_KEY_STREAM "STREAM" 41 - #define XPC_EVENT_ROUTINE_KEY_TOKEN "TOKEN" 42 - #define XPC_EVENT_ROUTINE_KEY_NAME "NAME" 43 - #define XPC_EVENT_ROUTINE_KEY_ENTITLEMENTS "ENTITLEMENTS" 44 - #define XPC_EVENT_ROUTINE_KEY_EVENT "EVENT" 45 - #define XPC_EVENT_ROUTINE_KEY_FLAGS "FLAGS" 68 + #define XPC_EVENT_ROUTINE_KEY_STREAM "XPC key stream" 69 + #define XPC_EVENT_ROUTINE_KEY_TOKEN "XPC key token" 70 + #define XPC_EVENT_ROUTINE_KEY_NAME "XPC key name" 71 + #define XPC_EVENT_ROUTINE_KEY_ENTITLEMENTS "XPC key entitlements" 72 + #define XPC_EVENT_ROUTINE_KEY_EVENT "XPC key event" 73 + #define XPC_EVENT_ROUTINE_KEY_EVENTS "XPC key events" 74 + #define XPC_EVENT_ROUTINE_KEY_FLAGS "XPC key flags" 75 + #define XPC_EVENT_ROUTINE_KEY_PORT "XPC key port" 76 + #define XPC_EVENT_ROUTINE_KEY_STATE "XPC key state" 77 + #define XPC_EVENT_ROUTINE_KEY_OP "XPC key op" 78 + #define XPC_EVENT_ROUTINE_KEY_ERROR "XPC key error" 79 + #define XPC_PROCESS_ROUTINE_KEY_LABEL "XPC process key label" 80 + #define XPC_PROCESS_ROUTINE_KEY_ERROR "XPC process key error" 81 + #define XPC_PROCESS_ROUTINE_KEY_HANDLE "XPC process key handle" 82 + #define XPC_PROCESS_ROUTINE_KEY_NAME "XPC process key name" 83 + #define XPC_PROCESS_ROUTINE_KEY_PATH "XPC process key path" 84 + #define XPC_PROCESS_ROUTINE_KEY_ARGV "XPC process key argv" 85 + #define XPC_PROCESS_ROUTINE_KEY_TYPE "XPC process key type" 86 + #define XPC_PROCESS_ROUTINE_KEY_OP "XPC process key op" 87 + #define XPC_PROCESS_ROUTINE_KEY_PID "XPC process key pid" 88 + #define XPC_PROCESS_ROUTINE_KEY_RCDATA "XPC process key rcdata" 89 + #define XPC_PROCESS_ROUTINE_KEY_SIGNAL "XPC process key signal" 90 + #define XPC_PROCESS_ROUTINE_KEY_PRIORITY_BAND "XPC process key priority band" 91 + #define XPC_PROCESS_ROUTINE_KEY_MEMORY_LIMIT "XPC process key memory limit" 92 + #define XPC_SERVICE_ENTITLEMENT_ATTACH "XPC service entitlement attach" 93 + #define XPC_SERVICE_RENDEZVOUS_TOKEN "XPC service rendezvous token" 94 + #define XPC_PROCESS_ROUTINE_KEY_NEW_INSTANCE_PORT "XPC process key new instance port" 95 + #define XPC_SERVICE_ENV_ATTACHED "XPC service env attached" 46 96 47 97 #define XPC_EVENT_FLAG_ENTITLEMENTS 1 48 98 49 - #define EXNOMEM 12 50 - #define EXINVAL 22 99 + #define EXNOMEM 1 100 + #define EXINVAL 2 101 + #define EXSRCH 3 102 + #define EXMAX EXSRCH 51 103 52 104 #endif 53 105
+2 -1
src/CMakeLists.txt
··· 100 100 add_subdirectory(sandbox) 101 101 add_subdirectory(Cocoa) 102 102 add_subdirectory(external/file/file) 103 + add_subdirectory(external/libxpc) 103 104 104 105 if (NOT DARLING_NO_EXECUTABLES) 105 106 add_subdirectory(external/shell_cmds) ··· 118 119 add_subdirectory(external/gnutar/gnutar) 119 120 add_subdirectory(external/gpatch) 120 121 add_subdirectory(external/gnudiff) 121 - #add_subdirectory(launchd/src) 122 + add_subdirectory(launchd/src) 122 123 endif (NOT DARLING_NO_EXECUTABLES) 123 124 124 125 ######################
+8 -5
src/launchd/src/CMakeLists.txt
··· 17 17 include_directories(${DARLING_TOP_DIRECTORY}/src/libinfo/lookup.subproj) 18 18 include_directories(${CMAKE_CURRENT_BINARY_DIR}) 19 19 20 - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fblocks -nostdinc -include ${DARLING_TOP_DIRECTORY}/kernel-include/sys/fileport.h -ggdb") 21 - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -nostdlib") 20 + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -fblocks -nostdinc -include ${DARLING_TOP_DIRECTORY}/kernel-include/sys/fileport.h -ggdb -O0") 21 + set(CMAKE_EXE_LINKER_FLAGS "-nodefaultlibs -nostdlib -Wl,--version-script=${DARLING_TOP_DIRECTORY}/darwin.map") 22 22 23 23 mig(job.defs) 24 24 mig(helper.defs) ··· 26 26 mig(job_forward.defs) 27 27 mig(job_reply.defs) 28 28 mig(mach_exc.defs) 29 + mig(notify.defs) 29 30 #mig(job_types.defs) 30 31 #mig(protocol_jobmgr.defs) 31 32 ··· 42 43 ${CMAKE_CURRENT_BINARY_DIR}/jobServer.c 43 44 ${CMAKE_CURRENT_BINARY_DIR}/helperUser.c 44 45 ${CMAKE_CURRENT_BINARY_DIR}/internalUser.c 46 + ${CMAKE_CURRENT_BINARY_DIR}/notifyServer.c 45 47 ${CMAKE_CURRENT_BINARY_DIR}/job_forwardUser.c 46 48 ${CMAKE_CURRENT_BINARY_DIR}/job_replyUser.c 47 49 ${CMAKE_CURRENT_BINARY_DIR}/mach_excServer.c ··· 52 54 SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) 53 55 SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) 54 56 55 - add_executable(launchd ${launchd_sources}) 56 - target_link_libraries(launchd system) 57 + include(darling_exe) 58 + add_darling_executable(launchd ${launchd_sources}) 59 + target_link_libraries(launchd xpc) 57 60 58 - install(TARGETS launchd DESTINATION bin) 61 + install(TARGETS launchd DESTINATION libexec/darling/sbin) 59 62
+1 -1
src/launchd/src/launchd.c
··· 465 465 (void)posix_assumes_zero(chdir("/")); 466 466 (void)posix_assumes_zero(setlogin("root")); 467 467 468 - #if !TARGET_OS_EMBEDDED 468 + #if !TARGET_OS_EMBEDDED && !DARLING 469 469 auditinfo_addr_t auinfo = { 470 470 .ai_termid = { 471 471 .at_type = AU_IPv4
+1
src/launchd/src/notify.defs
··· 1 + ../../kernel/mach/notify.defs
+2
src/launchd/src/runtime.c
··· 165 165 }; 166 166 167 167 union xpc_domain_max_sz { 168 + #ifndef DARLING 168 169 union __RequestUnion__xpc_domain_xpc_domain_subsystem req; 169 170 union __ReplyUnion__xpc_domain_xpc_domain_subsystem rep; 171 + #endif 170 172 }; 171 173 172 174 union mach_exc_max_sz {
+3
src/libc/os/assumes.h
··· 255 255 } \ 256 256 }) 257 257 258 + #define os_slowpath(x) (x) 259 + #define os_fastpath(x) (x) 260 + 258 261 __OSX_AVAILABLE_STARTING(__MAC_10_11, __IPHONE_9_0) 259 262 extern void 260 263 _os_crash(const char *);
+108
src/libc/os/object.h
··· 1 + /* 2 + * Copyright (c) 2011-2012 Apple Inc. All rights reserved. 3 + * 4 + * @APPLE_APACHE_LICENSE_HEADER_START@ 5 + * 6 + * Licensed under the Apache License, Version 2.0 (the "License"); 7 + * you may not use this file except in compliance with the License. 8 + * You may obtain a copy of the License at 9 + * 10 + * http://www.apache.org/licenses/LICENSE-2.0 11 + * 12 + * Unless required by applicable law or agreed to in writing, software 13 + * distributed under the License is distributed on an "AS IS" BASIS, 14 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 + * See the License for the specific language governing permissions and 16 + * limitations under the License. 17 + * 18 + * @APPLE_APACHE_LICENSE_HEADER_END@ 19 + */ 20 + 21 + #ifndef __OS_OBJECT__ 22 + #define __OS_OBJECT__ 23 + 24 + #ifdef __APPLE__ 25 + #include <Availability.h> 26 + #endif 27 + 28 + /*! 29 + * @header 30 + * 31 + * @preprocinfo 32 + * By default, libSystem objects such as GCD and XPC objects are declared as 33 + * Objective-C types when building with an Objective-C compiler. This allows 34 + * them to participate in ARC, in RR management by the Blocks runtime and in 35 + * leaks checking by the static analyzer, and enables them to be added to Cocoa 36 + * collections. 37 + * 38 + * NOTE: this requires explicit cancellation of dispatch sources and xpc 39 + * connections whose handler blocks capture the source/connection object, 40 + * resp. ensuring that such captures do not form retain cycles (e.g. by 41 + * declaring the source as __weak). 42 + * 43 + * To opt-out of this default behavior, add -DOS_OBJECT_USE_OBJC=0 to your 44 + * compiler flags. 45 + * 46 + * This mode requires a platform with the modern Objective-C runtime, the 47 + * Objective-C GC compiler option to be disabled, and at least a Mac OS X 10.8 48 + * deployment target. 49 + */ 50 + 51 + #ifndef OS_OBJECT_HAVE_OBJC_SUPPORT 52 + #if defined(__OBJC2__) && !defined(__OBJC_GC__) && ( \ 53 + __MAC_OS_X_VERSION_MIN_REQUIRED >= __MAC_10_8 || \ 54 + __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_6_0) 55 + #define OS_OBJECT_HAVE_OBJC_SUPPORT 1 56 + #else 57 + #define OS_OBJECT_HAVE_OBJC_SUPPORT 0 58 + #endif 59 + #endif 60 + 61 + #if OS_OBJECT_HAVE_OBJC_SUPPORT 62 + #ifndef OS_OBJECT_USE_OBJC 63 + #define OS_OBJECT_USE_OBJC 1 64 + #endif 65 + #elif defined(OS_OBJECT_USE_OBJC) && OS_OBJECT_USE_OBJC 66 + /* Unsupported platform for OS_OBJECT_USE_OBJC=1 */ 67 + #undef OS_OBJECT_USE_OBJC 68 + #define OS_OBJECT_USE_OBJC 0 69 + #else 70 + #define OS_OBJECT_USE_OBJC 0 71 + #endif 72 + 73 + #if OS_OBJECT_USE_OBJC 74 + #import <Foundation/NSObject.h> 75 + #define OS_OBJECT_CLASS(name) OS_##name 76 + #define OS_OBJECT_DECL(name, ...) \ 77 + @protocol OS_OBJECT_CLASS(name) __VA_ARGS__ \ 78 + @end \ 79 + typedef NSObject<OS_OBJECT_CLASS(name)> *name##_t 80 + #define OS_OBJECT_DECL_SUBCLASS(name, super) \ 81 + OS_OBJECT_DECL(name, <OS_OBJECT_CLASS(super)>) 82 + #if defined(__has_attribute) && __has_attribute(ns_returns_retained) 83 + #define OS_OBJECT_RETURNS_RETAINED __attribute__((__ns_returns_retained__)) 84 + #else 85 + #define OS_OBJECT_RETURNS_RETAINED 86 + #endif 87 + #if defined(__has_feature) && __has_feature(objc_arc) 88 + #define OS_OBJECT_BRIDGE __bridge 89 + #else 90 + #define OS_OBJECT_BRIDGE 91 + #endif 92 + #ifndef OS_OBJECT_USE_OBJC_RETAIN_RELEASE 93 + #if defined(__has_feature) && __has_feature(objc_arc) || \ 94 + defined(__clang_analyzer__) 95 + #define OS_OBJECT_USE_OBJC_RETAIN_RELEASE 1 96 + #else 97 + #define OS_OBJECT_USE_OBJC_RETAIN_RELEASE 0 98 + #endif 99 + #endif 100 + #else 101 + /*! @parseOnly */ 102 + #define OS_OBJECT_RETURNS_RETAINED 103 + /*! @parseOnly */ 104 + #define OS_OBJECT_BRIDGE 105 + #define OS_OBJECT_USE_OBJC_RETAIN_RELEASE 0 106 + #endif 107 + 108 + #endif
+9 -2
src/libsystem/init.c
··· 117 117 118 118 if (!*x_argc) 119 119 { 120 + char* excl; 121 + 120 122 // Darling libdyld is not being used 121 123 // to execute a Mach-O binary. 122 124 // Use what the ELF loader gave us. 123 - *x_argc = argc; 124 - *x_argv = argv; 125 + *x_argc = argc - 1; 126 + *x_argv = argv + 1; 125 127 *x_envp = envp; 128 + 129 + excl = strchr(argv[1], '!'); 130 + if (excl != NULL) 131 + argv[1] = excl+1; 132 + 126 133 vars.NXArgcPtr = x_argc; 127 134 vars.NXArgvPtr = x_argv; 128 135 vars.environPtr = x_envp;