@@ -3236,7 +3236,6 @@ void MachoView::ParseChainedFixups(MachOHeader& header, linkedit_data_command ch
3236
3236
// case DYLD_CHAINED_PTR_ARM64E_FIRMWARE: Unsupported.
3237
3237
case DYLD_CHAINED_PTR_64:
3238
3238
case DYLD_CHAINED_PTR_64_OFFSET:
3239
- case DYLD_CHAINED_PTR_64_KERNEL_CACHE:
3240
3239
strideSize = 4 ;
3241
3240
format = Generic64FixupFormat;
3242
3241
break ;
@@ -3249,9 +3248,13 @@ void MachoView::ParseChainedFixups(MachOHeader& header, linkedit_data_command ch
3249
3248
strideSize = 4 ;
3250
3249
format = Firmware32FixupFormat;
3251
3250
break ;
3251
+ case DYLD_CHAINED_PTR_64_KERNEL_CACHE:
3252
+ strideSize = 4 ;
3253
+ format = Kernel64Format;
3254
+ break ;
3252
3255
case DYLD_CHAINED_PTR_X86_64_KERNEL_CACHE:
3253
3256
strideSize = 1 ;
3254
- format = Generic64FixupFormat ;
3257
+ format = Kernel64Format ;
3255
3258
break ;
3256
3259
default :
3257
3260
{
@@ -3346,6 +3349,10 @@ void MachoView::ParseChainedFixups(MachOHeader& header, linkedit_data_command ch
3346
3349
nextEntryStrideCount = pointer.firmware32 .next ;
3347
3350
bind = false ;
3348
3351
break ;
3352
+ case Kernel64Format:
3353
+ nextEntryStrideCount = pointer.kernel64 .next ;
3354
+ bind = false ;
3355
+ break ;
3349
3356
}
3350
3357
3351
3358
m_logger->LogTrace (" Chained Fixups: @ 0x%llx ( 0x%llx ) - %d 0x%llx" , chainEntryAddress,
@@ -3376,6 +3383,8 @@ void MachoView::ParseChainedFixups(MachOHeader& header, linkedit_data_command ch
3376
3383
case DYLD_CHAINED_PTR_32:
3377
3384
ordinal = pointer.generic32 .bind .ordinal ;
3378
3385
break ;
3386
+ case DYLD_CHAINED_PTR_64_KERNEL_CACHE: // no binding
3387
+ case DYLD_CHAINED_PTR_X86_64_KERNEL_CACHE: // ''
3379
3388
default :
3380
3389
m_logger->LogWarn (" Chained Fixups: Unknown Bind Pointer Format at %llx" ,
3381
3390
GetStart () + (chainEntryAddress - m_universalImageOffset));
@@ -3606,6 +3615,9 @@ void MachoView::ParseChainedStarts(MachOHeader& header, section_64 chainedStarts
3606
3615
nextEntryStrideCount = pointer.firmware32 .next ;
3607
3616
bind = false ;
3608
3617
break ;
3618
+ case Kernel64Format:
3619
+ nextEntryStrideCount = pointer.kernel64 .next ;
3620
+ bind = false ;
3609
3621
}
3610
3622
3611
3623
m_logger->LogTrace (" Chained Starts: @ 0x%llx ( 0x%llx ) - %d 0x%llx" , chainEntryAddress,
0 commit comments