mirror of
				https://git.proxmox.com/git/grub2
				synced 2025-11-04 12:55:16 +00:00 
			
		
		
		
	* grub-core/Makefile.core.def (xnu): Add file lzss.c * grub-core/loader/lzss.c: New file. * grub-core/loader/xnu.c (grub_xnu_load_driver): Close binaryfile on Mach-O open failure. * grub-core/loader/macho.c (grub_macho_close): Free uncompressedXX. Don't free cmdsXX in uncompressedXX is set. (grub_macho_file): Init new fields. New argument is_64bit. All users updated. Handle compressed. Error out if no suitable architecture is found. Don't close file. (grub_macho_open): New argument is_64bit. All users updated. * grub-core/loader/macho32.c: Add defines for new fields. * grub-core/loader/macho64.c: Likewise. * grub-core/loader/machoXX.c (grub_macho_contains_macho): Make static. (grub_macho_parse): Handle compressed. Defer actual processing if compressed. (grub_macho_cmds_iterate): Decompress if compressed. New argument "filename". All users updated. (grub_macho_size): New argument "filename". All users updated. (grub_macho_get_entry_point): Likewise. (grub_macho_load): Handle compressed. * include/grub/macho.h (grub_macho_lzss_header): New struct. (GRUB_MACHO_LZSS_OFFSET): New define. (grub_decompress_lzss): New proto. * include/grub/machoload.h (grub_macho_file): New fields to handle compressed. (grub_macho_contains_macho64): Remove proto. (grub_macho_contains_macho32): Likewise. * util/grub.d/30_os-prober.in: Use kernel cache if available.
		
			
				
	
	
		
			23 lines
		
	
	
		
			716 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			23 lines
		
	
	
		
			716 B
		
	
	
	
		
			C
		
	
	
	
	
	
#include <grub/cpu/macho.h>
 | 
						|
#include <grub/machoload.h>
 | 
						|
 | 
						|
#define SUFFIX(x) x ## 32
 | 
						|
typedef struct grub_macho_header32 grub_macho_header_t;
 | 
						|
typedef struct grub_macho_segment32 grub_macho_segment_t;
 | 
						|
typedef grub_uint32_t grub_macho_addr_t;
 | 
						|
typedef struct grub_macho_thread32 grub_macho_thread_t;
 | 
						|
#define offsetXX offset32
 | 
						|
#define ncmdsXX ncmds32
 | 
						|
#define cmdsizeXX cmdsize32
 | 
						|
#define cmdsXX cmds32
 | 
						|
#define endXX end32
 | 
						|
#define uncompressedXX uncompressed32
 | 
						|
#define compressedXX compressed32
 | 
						|
#define uncompressed_sizeXX uncompressed_size32
 | 
						|
#define compressed_sizeXX compressed_size32
 | 
						|
#define XX "32"
 | 
						|
#define GRUB_MACHO_MAGIC GRUB_MACHO_MAGIC32
 | 
						|
#define GRUB_MACHO_CMD_SEGMENT GRUB_MACHO_CMD_SEGMENT32
 | 
						|
#include "machoXX.c"
 | 
						|
 |