| // Copyright 2026 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package runtime | |
| import ( | |
| "internal/abi" | |
| "unsafe" | |
| ) | |
| // CoreFoundation linker flags for the external linker. | |
| // | |
| //go:cgo_ldflag "-framework" | |
| //go:cgo_ldflag "CoreFoundation" | |
| //go:nosplit | |
| func chdir(path *byte) int32 { | |
| ret := libcCall(unsafe.Pointer(abi.FuncPCABI0(chdir_trampoline)), unsafe.Pointer(&path)) | |
| KeepAlive(path) | |
| return ret | |
| } | |
| func chdir_trampoline() | |
| //go:nosplit | |
| func cfBundleGetMainBundle() (bundle uintptr) { | |
| libcCall(unsafe.Pointer(abi.FuncPCABI0(cfBundleGetMainBundle_trampoline)), unsafe.Pointer(&bundle)) | |
| return bundle | |
| } | |
| func cfBundleGetMainBundle_trampoline() | |
| //go:nosplit | |
| func cfBundleCopyBundleURL(bundle uintptr) uintptr { | |
| args := struct { | |
| bundle uintptr | |
| ret uintptr | |
| }{bundle: bundle} | |
| libcCall(unsafe.Pointer(abi.FuncPCABI0(cfBundleCopyBundleURL_trampoline)), unsafe.Pointer(&args)) | |
| return args.ret | |
| } | |
| func cfBundleCopyBundleURL_trampoline() | |
| //go:nosplit | |
| func cfURLGetFileSystemRepresentation(url uintptr, resolveAgainstBase bool, path *byte, pathLen uintptr) bool { | |
| args := struct { | |
| url, resolveAgainstBase uintptr | |
| path *byte | |
| pathLen uintptr | |
| ret uintptr | |
| }{ | |
| url: url, | |
| path: path, | |
| pathLen: pathLen, | |
| } | |
| if resolveAgainstBase { | |
| args.resolveAgainstBase = 1 | |
| } | |
| libcCall(unsafe.Pointer(abi.FuncPCABI0(cfURLGetFileSystemRepresentation_trampoline)), unsafe.Pointer(&args)) | |
| KeepAlive(path) | |
| return args.ret != 0 | |
| } | |
| func cfURLGetFileSystemRepresentation_trampoline() | |
| //go:nosplit | |
| func cfStringCreateWithCString(alloc uintptr, str *byte, encoding uintptr) uintptr { | |
| args := struct { | |
| alloc uintptr | |
| str *byte | |
| encoding uintptr | |
| ret uintptr | |
| }{ | |
| alloc: alloc, | |
| str: str, | |
| encoding: encoding, | |
| } | |
| libcCall(unsafe.Pointer(abi.FuncPCABI0(cfStringCreateWithCString_trampoline)), unsafe.Pointer(&args)) | |
| KeepAlive(str) | |
| return args.ret | |
| } | |
| func cfStringCreateWithCString_trampoline() | |
| //go:nosplit | |
| func cfBundleGetValueForInfoDictionaryKey(bundle, key uintptr) uintptr { | |
| args := struct { | |
| bundle uintptr | |
| key uintptr | |
| ret uintptr | |
| }{ | |
| bundle: bundle, | |
| key: key, | |
| } | |
| libcCall(unsafe.Pointer(abi.FuncPCABI0(cfBundleGetValueForInfoDictionaryKey_trampoline)), unsafe.Pointer(&args)) | |
| return args.ret | |
| } | |
| func cfBundleGetValueForInfoDictionaryKey_trampoline() | |
| //go:nosplit | |
| func cfStringGetCString(str uintptr, buf *byte, bufLen uintptr, encoding uintptr) bool { | |
| args := struct { | |
| str uintptr | |
| buf *byte | |
| bufLen uintptr | |
| encoding uintptr | |
| ret uintptr | |
| }{ | |
| str: str, | |
| buf: buf, | |
| bufLen: bufLen, | |
| encoding: encoding, | |
| } | |
| libcCall(unsafe.Pointer(abi.FuncPCABI0(cfStringGetCString_trampoline)), unsafe.Pointer(&args)) | |
| KeepAlive(buf) | |
| return args.ret != 0 | |
| } | |
| func cfStringGetCString_trampoline() | |
| //go:nosplit | |
| func cfRelease(ref uintptr) { | |
| libcCall(unsafe.Pointer(abi.FuncPCABI0(cfRelease_trampoline)), unsafe.Pointer(&ref)) | |
| } | |
| func cfRelease_trampoline() | |
| //go:cgo_import_dynamic libc_chdir chdir "/usr/lib/libSystem.B.dylib" | |
| //go:cgo_import_dynamic libc_CFBundleGetMainBundle CFBundleGetMainBundle "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation" | |
| //go:cgo_import_dynamic libc_CFBundleCopyBundleURL CFBundleCopyBundleURL "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation" | |
| //go:cgo_import_dynamic libc_CFURLGetFileSystemRepresentation CFURLGetFileSystemRepresentation "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation" | |
| //go:cgo_import_dynamic libc_CFStringCreateWithCString CFStringCreateWithCString "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation" | |
| //go:cgo_import_dynamic libc_CFBundleGetValueForInfoDictionaryKey CFBundleGetValueForInfoDictionaryKey "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation" | |
| //go:cgo_import_dynamic libc_CFStringGetCString CFStringGetCString "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation" | |
| //go:cgo_import_dynamic libc_CFRelease CFRelease "/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation" |