mirror of
				https://github.com/xcat2/xNBA.git
				synced 2025-11-04 05:12:33 +00:00 
			
		
		
		
	[multiboot] Allow for unspecified {load,bss}_end_addr for raw images
The multiboot specification states that, for raw images, if load_end_addr is zero then it should be interpreted as meaning "use the entire file", and if bss_end_addr is zero it should be interpreted as meaning "no bss".
This commit is contained in:
		@@ -360,8 +360,11 @@ static int multiboot_load_raw ( struct image *image,
 | 
			
		||||
 | 
			
		||||
	/* Verify and prepare segment */
 | 
			
		||||
	offset = ( hdr->offset - hdr->mb.header_addr + hdr->mb.load_addr );
 | 
			
		||||
	filesz = ( hdr->mb.load_end_addr - hdr->mb.load_addr );
 | 
			
		||||
	memsz = ( hdr->mb.bss_end_addr - hdr->mb.load_addr );
 | 
			
		||||
	filesz = ( hdr->mb.load_end_addr ?
 | 
			
		||||
		   ( hdr->mb.load_end_addr - hdr->mb.load_addr ) :
 | 
			
		||||
		   ( image->len - offset ) );
 | 
			
		||||
	memsz = ( hdr->mb.bss_end_addr ?
 | 
			
		||||
		  ( hdr->mb.bss_end_addr - hdr->mb.load_addr ) : filesz );
 | 
			
		||||
	buffer = phys_to_user ( hdr->mb.load_addr );
 | 
			
		||||
	if ( ( rc = prep_segment ( buffer, filesz, memsz ) ) != 0 ) {
 | 
			
		||||
		DBGC ( image, "MULTIBOOT %p could not prepare segment: %s\n",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user