Loading...
--- dyld/dyld-239.4/src/dyldInitialization.cpp
+++ dyld/dyld-433.5/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 ( strcmp(segCmd->segname, "__TEXT") == 0 ) {
+ if ( (segCmd->fileoff == 0) && (segCmd->filesize != 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 = sect->size / sizeof(uintptr_t);
+ const uint32_t pointerCount = (uint32_t)(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;