Loading...
src/dyldInitialization.cpp dyld-421.1 dyld-239.3
--- dyld/dyld-421.1/src/dyldInitialization.cpp
+++ dyld/dyld-239.3/src/dyldInitialization.cpp
@@ -115,7 +115,7 @@
 	for (uint32_t i = 0; i < cmd_count; ++i) {
 		if ( cmd->cmd == LC_SEGMENT_COMMAND ) {
 			const struct macho_segment_command* segCmd = (struct macho_segment_command*)cmd;
-			if ( (segCmd->fileoff == 0) && (segCmd->filesize != 0)) {
+			if ( strcmp(segCmd->segname, "__TEXT") == 0 ) {
 				return (uintptr_t)mh - segCmd->vmaddr;
 			}
 		}
@@ -154,7 +154,7 @@
 						const uint8_t type = sect->flags & SECTION_TYPE;
 						if ( type == S_NON_LAZY_SYMBOL_POINTERS ) {
 							// rebase non-lazy pointers (which all point internal to dyld, since dyld uses no shared libraries)
-							const uint32_t pointerCount = (uint32_t)(sect->size / sizeof(uintptr_t));
+							const uint32_t pointerCount = sect->size / sizeof(uintptr_t);
 							uintptr_t* const symbolPointers = (uintptr_t*)(sect->addr + slide);
 							for (uint32_t j=0; j < pointerCount; ++j) {
 								symbolPointers[j] += slide;