Jump to content

[Apple EFI] FAT Binaries re-introduced at some point.


mhaeuser
 Share

5 posts in this topic

Recommended Posts

Yo,

 

Going through the Apple EFI firmware file of a relatively recent update to the iMac 17,1, I just noticed that support for handling FAT Binaries has returned at some point. I do not know when it was re-added and to which models, though check out the following pics:

 

old iMac 15,1 firmware

post-895511-0-70031500-1468695299_thumb.png

 

recent iMac 17,1 firmware

post-895511-0-13700300-1468695306_thumb.png

 

iMac 17,1 DxeCore's FAT Binary handling code snippet

post-895511-0-75077800-1468695391_thumb.png

 

The first pic shows an older iMac 15,1 firmware - searching for the FAT Binary signature, only a very few are found. These are in TE images, which are executed as part of PEI, so likely not related to FAT Binaries and not applicable to boot.efi anyway.

The second shows a rather recent iMac17,1 firmware with quite a few more results, including in DxeCore, which is the module that exposes the LoadImage() function which also loads boot.efi.

Finally, DxeCore loaded in IDA Pro reveals that it is indeed FAT Binary code (1000007h is the CPU Type for X86-64, by the way).

 

Why did they add it? I don't know. One of the rather popular rumors is that Apple may introduce ARM Mac models, and this could be just another hint to it.

On the other side, I hoped that with the new Apple Filesystem, they finally ditched bless and used the UEFI-way of booting, though this would not require FAT Binaries. Seems like it is not happening... or it is for the current HFS+ support.

 

PS: Andrew Fish is quite active in edk2-devel lately. Seems like Apple still pays devs for EFI development, even though the Mac gets less attention. And I guess they aren't paid for chilling, so something must be going on, I guess?

 

Regards.

  • Like 6
Link to comment
Share on other sites

iMac16,1/16,2 only has the FAT bin sig in a TE image (just like iMac15,1 - GUID 4D37DA42-3A0C-4EDA-B9EB-BC0E1DB4713B), even though it was released at the same time as iMac17,1. MacBook9,1 (the only other Skylake Mac) has the FAT bin sig in various PE images (including DxeCore), just like iMac17,1, so it seems to be only Skylake Macs that have FAT binary support. Nice find BTW.

  • Like 2
Link to comment
Share on other sites

iMac16,1/16,2 only has the FAT bin sig in a TE image (just like iMac15,1 - GUID 4D37DA42-3A0C-4EDA-B9EB-BC0E1DB4713B), even though it was released at the same time as iMac17,1. MacBook9,1 (the only other Skylake Mac) has the FAT bin sig in various PE images (including DxeCore), just like iMac17,1, so it seems to be only Skylake Macs that have FAT binary support. Nice find BTW.

 

Yeah, I guess Apple has separate code basis for different platforms.

 

Well, Andy hinted that he's been working with Mac OS on ARM some time ago, so these ARM rumours may have at least some basis.

 

Source? And which Andy? AnV?

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...