|  | @@ -44,16 +44,16 @@ optional_header:
 | 
	
		
			
				|  |  |  	.short	0x20b				// PE32+ format
 | 
	
		
			
				|  |  |  	.byte	0x02				// MajorLinkerVersion
 | 
	
		
			
				|  |  |  	.byte	0x14				// MinorLinkerVersion
 | 
	
		
			
				|  |  | -	.long	_edata - _start			// SizeOfCode
 | 
	
		
			
				|  |  | -	.long	0				// SizeOfInitializedData
 | 
	
		
			
				|  |  | +	.long	_data - _start			// SizeOfCode
 | 
	
		
			
				|  |  | +	.long	_data_size			// SizeOfInitializedData
 | 
	
		
			
				|  |  |  	.long	0				// SizeOfUninitializedData
 | 
	
		
			
				|  |  |  	.long	_start - ImageBase		// AddressOfEntryPoint
 | 
	
		
			
				|  |  |  	.long	_start - ImageBase		// BaseOfCode
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  extra_header_fields:
 | 
	
		
			
				|  |  |  	.quad	0				// ImageBase
 | 
	
		
			
				|  |  | -	.long	0x20				// SectionAlignment
 | 
	
		
			
				|  |  | -	.long	0x8				// FileAlignment
 | 
	
		
			
				|  |  | +	.long	0x1000				// SectionAlignment
 | 
	
		
			
				|  |  | +	.long	0x200				// FileAlignment
 | 
	
		
			
				|  |  |  	.short	0				// MajorOperatingSystemVersion
 | 
	
		
			
				|  |  |  	.short	0				// MinorOperatingSystemVersion
 | 
	
		
			
				|  |  |  	.short	0				// MajorImageVersion
 | 
	
	
		
			
				|  | @@ -85,41 +85,31 @@ extra_header_fields:
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	// Section table
 | 
	
		
			
				|  |  |  section_table:
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	/*
 | 
	
		
			
				|  |  | -	 * The EFI application loader requires a relocation section
 | 
	
		
			
				|  |  | -	 * because EFI applications must be relocatable.  This is a
 | 
	
		
			
				|  |  | -	 * dummy section as far as we are concerned.
 | 
	
		
			
				|  |  | -	 */
 | 
	
		
			
				|  |  | -	.ascii	".reloc"
 | 
	
		
			
				|  |  | -	.byte	0
 | 
	
		
			
				|  |  | -	.byte	0			// end of 0 padding of section name
 | 
	
		
			
				|  |  | -	.long	0
 | 
	
		
			
				|  |  | -	.long	0
 | 
	
		
			
				|  |  | -	.long	0			// SizeOfRawData
 | 
	
		
			
				|  |  | -	.long	0			// PointerToRawData
 | 
	
		
			
				|  |  | -	.long	0			// PointerToRelocations
 | 
	
		
			
				|  |  | -	.long	0			// PointerToLineNumbers
 | 
	
		
			
				|  |  | -	.short	0			// NumberOfRelocations
 | 
	
		
			
				|  |  | -	.short	0			// NumberOfLineNumbers
 | 
	
		
			
				|  |  | -	.long	0x42100040		// Characteristics (section flags)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	.ascii	".text"
 | 
	
		
			
				|  |  | -	.byte	0
 | 
	
		
			
				|  |  | -	.byte	0
 | 
	
		
			
				|  |  | -	.byte	0        		// end of 0 padding of section name
 | 
	
		
			
				|  |  | -	.long	_edata - _start		// VirtualSize
 | 
	
		
			
				|  |  | +	.ascii	".text\0\0\0"
 | 
	
		
			
				|  |  | +	.long	_data - _start		// VirtualSize
 | 
	
		
			
				|  |  |  	.long	_start - ImageBase	// VirtualAddress
 | 
	
		
			
				|  |  | -	.long	_edata - _start		// SizeOfRawData
 | 
	
		
			
				|  |  | +	.long	_data - _start		// SizeOfRawData
 | 
	
		
			
				|  |  |  	.long	_start - ImageBase	// PointerToRawData
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	.long	0		// PointerToRelocations (0 for executables)
 | 
	
		
			
				|  |  |  	.long	0		// PointerToLineNumbers (0 for executables)
 | 
	
		
			
				|  |  |  	.short	0		// NumberOfRelocations  (0 for executables)
 | 
	
		
			
				|  |  |  	.short	0		// NumberOfLineNumbers  (0 for executables)
 | 
	
		
			
				|  |  | -	.long	0xe0500020	// Characteristics (section flags)
 | 
	
		
			
				|  |  | +	.long	0x60000020	// Characteristics (section flags)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	.ascii	".data\0\0\0"
 | 
	
		
			
				|  |  | +	.long	_data_size		// VirtualSize
 | 
	
		
			
				|  |  | +	.long	_data - ImageBase	// VirtualAddress
 | 
	
		
			
				|  |  | +	.long	_data_size		// SizeOfRawData
 | 
	
		
			
				|  |  | +	.long	_data - ImageBase	// PointerToRawData
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	.long	0		// PointerToRelocations (0 for executables)
 | 
	
		
			
				|  |  | +	.long	0		// PointerToLineNumbers (0 for executables)
 | 
	
		
			
				|  |  | +	.short	0		// NumberOfRelocations  (0 for executables)
 | 
	
		
			
				|  |  | +	.short	0		// NumberOfLineNumbers  (0 for executables)
 | 
	
		
			
				|  |  | +	.long	0xc0000040	// Characteristics (section flags)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	.align		12
 | 
	
		
			
				|  |  |  _start:
 | 
	
		
			
				|  |  |  	stp		x29, x30, [sp, #-32]!
 | 
	
		
			
				|  |  |  	mov		x29, sp
 |