elf: take phdr offset into account when calculating the program load address
The first program header does not necessarily start at offset 0. This change corresponds to what the Linux kernel does in load_elf_binary(). Signed-off-by: Jonas Maebe <jonas.maebe@elis.ugent.be> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
		
							parent
							
								
									686581adcf
								
							
						
					
					
						commit
						a93934fecd
					
				| 
						 | 
				
			
			@ -1820,7 +1820,7 @@ static void load_elf_image(const char *image_name, int image_fd,
 | 
			
		|||
    loaddr = -1, hiaddr = 0;
 | 
			
		||||
    for (i = 0; i < ehdr->e_phnum; ++i) {
 | 
			
		||||
        if (phdr[i].p_type == PT_LOAD) {
 | 
			
		||||
            abi_ulong a = phdr[i].p_vaddr;
 | 
			
		||||
            abi_ulong a = phdr[i].p_vaddr - phdr[i].p_offset;
 | 
			
		||||
            if (a < loaddr) {
 | 
			
		||||
                loaddr = a;
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue