Loading...
--- dyld/dyld-852/dyld3/APIs_macOS.cpp
+++ dyld/dyld-733.6/dyld3/APIs_macOS.cpp
@@ -38,10 +38,6 @@
#include <algorithm>
-#if __has_feature(ptrauth_calls)
- #include <ptrauth.h>
-#endif
-
#include "dlfcn.h"
#include "AllImages.h"
@@ -59,7 +55,7 @@
// only in macOS and deprecated
-#if TARGET_OS_OSX
+#if __MAC_OS_X_VERSION_MIN_REQUIRED
// macOS needs to support an old API that only works with fileype==MH_BUNDLE.
// In this deprecated API (unlike dlopen), loading and linking are separate steps.
@@ -74,7 +70,7 @@
// verify path exists
struct stat statbuf;
- if ( dyld3::stat(path, &statbuf) == -1 )
+ if ( ::stat(path, &statbuf) == -1 )
return NSObjectFileImageFailure;
// create ofi that just contains path. NSLinkModule does all the work
@@ -102,13 +98,13 @@
bool usable = false;
const MachOFile* mf = (MachOFile*)memImage;
if ( mf->hasMachOMagic() && mf->isMachO(diag, memImageSize) ) {
- usable = (gAllImages.archs().grade(mf->cputype, mf->cpusubtype, false) != 0);
+ usable = (gAllImages.archs().grade(mf->cputype, mf->cpusubtype) != 0);
}
else if ( const FatFile* ff = FatFile::isFatFile(memImage) ) {
uint64_t sliceOffset;
uint64_t sliceLen;
bool missingSlice;
- if ( ff->isFatFileWithSlice(diag, memImageSize, gAllImages.archs(), false, sliceOffset, sliceLen, missingSlice) ) {
+ if ( ff->isFatFileWithSlice(diag, memImageSize, gAllImages.archs(), sliceOffset, sliceLen, missingSlice) ) {
mf = (MachOFile*)((long)memImage+sliceOffset);
if ( mf->isMachO(diag, sliceLen) ) {
usable = true;
@@ -116,7 +112,7 @@
}
}
if ( usable ) {
- if ( !mf->builtForPlatform(Platform::macOS) )
+ if ( !mf->supportsPlatform(Platform::macOS) )
usable = false;
}
if ( !usable ) {
@@ -347,15 +343,10 @@
static bool flatFindSymbol(const char* symbolName, void** symbolAddress, const mach_header** foundInImageAtLoadAddress)
{
- // <rdar://problem/59265987> allow flat lookup to find "_memcpy" even though it is not implemented as that name in any dylib
- MachOLoaded::DependentToMachOLoaded finder = ^(const MachOLoaded* mh, uint32_t depIndex) {
- return gAllImages.findDependent(mh, depIndex);
- };
-
__block bool result = false;
gAllImages.forEachImage(^(const LoadedImage& loadedImage, bool& stop) {
bool resultPointsToInstructions = false;
- if ( loadedImage.loadedAddress()->hasExportedSymbol(symbolName, finder, symbolAddress, &resultPointsToInstructions) ) {
+ if ( loadedImage.loadedAddress()->hasExportedSymbol(symbolName, nullptr, symbolAddress, &resultPointsToInstructions) ) {
*foundInImageAtLoadAddress = loadedImage.loadedAddress();
stop = true;
result = true;
@@ -455,35 +446,8 @@
{
log_apis("NSAddressOfSymbol(%p)\n", symbol);
- if ( symbol == nullptr )
- return nullptr;
-
// in dyld 1.0, NSSymbol was a pointer to the nlist entry in the symbol table
- void *result = (void*)symbol;
-
-#if __has_feature(ptrauth_calls)
- __block const MachOLoaded *module = nullptr;
- gAllImages.infoForImageMappedAt(symbol, ^(const LoadedImage& foundImage, uint8_t permissions) {
- module = foundImage.loadedAddress();
- });
-
- int64_t slide = module->getSlide();
- __block bool resultPointsToInstructions = false;
- module->forEachSection(^(const MachOAnalyzer::SectionInfo& sectInfo, bool malformedSectionRange, bool& stop) {
- uint64_t sectStartAddr = sectInfo.sectAddr + slide;
- uint64_t sectEndAddr = sectStartAddr + sectInfo.sectSize;
- if ( ((uint64_t)result >= sectStartAddr) && ((uint64_t)result < sectEndAddr) ) {
- resultPointsToInstructions = (sectInfo.sectFlags & S_ATTR_PURE_INSTRUCTIONS) || (sectInfo.sectFlags & S_ATTR_SOME_INSTRUCTIONS);
- stop = true;
- }
- });
-
- if (resultPointsToInstructions) {
- result = __builtin_ptrauth_sign_unauthenticated(result, ptrauth_key_asia, 0);
- }
-#endif
-
- return result;
+ return (void*)symbol;
}
NSModule NSModuleForSymbol(NSSymbol symbol)