Loading...
--- xnu/xnu-12377.121.6/libsyscall/wrappers/_libkernel_init.c
+++ xnu/xnu-8792.61.2/libsyscall/wrappers/_libkernel_init.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010-2025 Apple Inc. All rights reserved.
+ * Copyright (c) 2010 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
@@ -30,11 +30,7 @@
#include <stdbool.h>
#include <strings.h>
#include <unistd.h>
-#include <machine/cpu_capabilities.h>
#include <mach/vm_page_size.h>
-#include <spawn_filtering_private.h>
-#include "_simple_getenv.h"
-#include "_commpage_pfz.h"
#include "_libkernel_init.h"
#include "system-version-compat-support.h"
@@ -58,10 +54,6 @@
extern system_version_compat_mode_t system_version_compat_mode;
-int __sysctlbyname(const char *name, size_t namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
-#endif /* SYSTEM_VERSION_COMPAT_ENABLED */
-
-#if POSIX_SPAWN_FILTERING_ENABLED
struct _posix_spawn_args_desc;
extern bool (*posix_spawn_with_filter)(pid_t *pid, const char *fname, char * const *argp,
char * const *envp, struct _posix_spawn_args_desc *adp, int *ret);
@@ -69,7 +61,9 @@
char * const *envp, struct _posix_spawn_args_desc *adp, int *ret);
extern int (*execve_with_filter)(char *fname, char **argp, char **envp);
extern int _execve_with_filter(char *fname, char **argp, char **envp);
-#endif /* POSIX_SPAWN_FILTERING_ENABLED */
+
+int __sysctlbyname(const char *name, size_t namelen, void *oldp, size_t *oldlenp, void *newp, size_t newlen);
+#endif /* SYSTEM_VERSION_COMPAT_ENABLED */
#if TARGET_OS_OSX
__attribute__((visibility("default")))
@@ -78,61 +72,11 @@
#endif /* TARGET_OS_OSX */
/* dlsym() funcptr is for legacy support in exc_catcher */
-void* (*LIBKERNEL_FUNCTION_PTRAUTH(_dlsym))(void*, const char*) __attribute__((visibility("hidden")));
+void* (*_dlsym)(void*, const char*) __attribute__((visibility("hidden")));
__attribute__((visibility("hidden")))
_libkernel_functions_t _libkernel_functions;
-
-#if defined(__arm64__)
-__attribute__ ((visibility("hidden")))
-void *COMMPAGE_PFZ_BASE_PTR commpage_pfz_base = 0;
-
-__attribute__ ((visibility("hidden")))
-static void
-__pfz_setup(const char *apple[])
-{
- if (apple == NULL) {
- return;
- }
-
- const char *p = _simple_getenv(apple, "pfz");
-
- // Parse hex value
-
- if (p == NULL || p[0] != '0' || p[1] != 'x') {
- return;
- }
-
- uintptr_t base = 0;
- for (p += 2 /* overread "0x" */; *p != 0; p++) {
- base <<= 4;
-
- if ('0' <= *p && *p <= '9') {
- base += *p - '0';
- } else if ('a' <= *p && *p <= 'f') {
- base += *p - 'a' + 10;
- } else if ('A' <= *p && *p <= 'F') {
- base += *p - 'A' + 10;
- } else {
- // Bad.
- return;
- }
- }
-
- if (base != 0) {
- commpage_pfz_base = base;
-
- #if defined(__LP64__)
- uintptr_t pfz_ptr = (uintptr_t)commpage_pfz_base;
- pfz_ptr += _COMM_PAGE_TEXT_ATOMIC_TPIDR_EL0;
-
- extern void (*update_tpidr)(uint64_t);
- update_tpidr = SIGN_PFZ_FUNCTION_PTR((void*)pfz_ptr);
-#endif /* defined(__LP64__) */
- }
-}
-#endif /* defined(__arm64__) */
void
__libkernel_init(_libkernel_functions_t fns,
@@ -146,30 +90,25 @@
}
mach_init();
#if TARGET_OS_OSX
-
+ for (size_t i = 0; envp[i]; i++) {
#if defined(__i386__) || defined(__x86_64__)
- if (vm_kernel_page_shift != 12 &&
- _simple_getenv_check(envp, "VM_KERNEL_PAGE_SIZE_4K", "1")) {
- vm_kernel_page_shift = 12;
- vm_kernel_page_size = 1 << vm_kernel_page_shift;
- vm_kernel_page_mask = vm_kernel_page_size - 1;
+ const char *VM_KERNEL_PAGE_SHIFT_ENV = "VM_KERNEL_PAGE_SIZE_4K=1";
+ if (vm_kernel_page_shift != 12 && strcmp(VM_KERNEL_PAGE_SHIFT_ENV, envp[i]) == 0) {
+ vm_kernel_page_shift = 12;
+ vm_kernel_page_size = 1 << vm_kernel_page_shift;
+ vm_kernel_page_mask = vm_kernel_page_size - 1;
+ }
+#endif /* defined(__i386__) || defined(__x86_64__) */
}
-#endif /* defined(__i386__) || defined(__x86_64__) */
-
#endif /* TARGET_OS_OSX */
-
-#if defined(__arm64__)
- __pfz_setup(apple);
-#endif /* defined(__arm64__) */
}
void
__libkernel_init_late(_libkernel_late_init_config_t config)
{
if (config->version >= 1) {
-#if SYSTEM_VERSION_COMPAT_ENABLED
-#if SYSTEM_VERSION_COMPAT_HAS_MODE_MACOSX
+#if TARGET_OS_OSX && !defined(__i386__)
if (config->enable_system_version_compat) {
/* enable the version compatibility shim for this process (macOS only) */
@@ -179,7 +118,6 @@
system_version_compat_mode = SYSTEM_VERSION_COMPAT_MODE_MACOSX;
-#if SYSTEM_VERSION_COMPAT_NEEDS_SYSCTL
/*
* tell the kernel the shim is enabled for this process so it can shim any
* necessary sysctls
@@ -187,12 +125,7 @@
int enable = 1;
__sysctlbyname("kern.system_version_compat", strlen("kern.system_version_compat"),
NULL, NULL, &enable, sizeof(enable));
-#endif /* SYSTEM_VERSION_COMPAT_NEEDS_SYSCTL */
- }
-#endif /* SYSTEM_VERSION_COMPAT_HAS_MODE_MACOSX */
-#if SYSTEM_VERSION_COMPAT_HAS_MODE_IOS
- if (!config->enable_system_version_compat &&
- (config->version >= 2) && config->enable_ios_version_compat) {
+ } else if ((config->version >= 2) && config->enable_ios_version_compat) {
/* enable the iOS ProductVersion compatibility shim for this process */
/* first hook up the shims we reference from open{at}() */
@@ -206,15 +139,12 @@
* don't need to inform the kernel that this app has the SystemVersion shim enabled.
*/
}
-#endif /* SYSTEM_VERSION_COMPAT_HAS_MODE_IOS */
-#endif /* SYSTEM_VERSION_COMPAT_ENABLED */
-#if POSIX_SPAWN_FILTERING_ENABLED
if ((config->version >= 3) && config->enable_posix_spawn_filtering) {
posix_spawn_with_filter = _posix_spawn_with_filter;
execve_with_filter = _execve_with_filter;
}
-#endif /* POSIX_SPAWN_FILTERING_ENABLED */
+#endif /* TARGET_OS_OSX && !defined(__i386__) */
}
}
@@ -223,11 +153,11 @@
_libkernel_init_after_boot_tasks_config_t config)
{
if (config->version >= 1) {
-#if POSIX_SPAWN_FILTERING_ENABLED
+#if TARGET_OS_OSX && !defined(__i386__)
if (config->enable_posix_spawn_filtering) {
posix_spawn_with_filter = _posix_spawn_with_filter;
execve_with_filter = _execve_with_filter;
}
-#endif /* POSIX_SPAWN_FILTERING_ENABLED */
+#endif
}
}