[PATCH] remove check for ELF offset in powerpc bootimage

STALE7492d

2 messages, 2 authors, 2006-01-30 · open the first message on its own page

[PATCH] remove check for ELF offset in powerpc bootimage

From: Olaf Hering <hidden>
Date: 2006-01-30 13:28:10

Is this check really needed, are there PT_LOAD sections with offset
zero (either zImage or vmlinux)? I see an offset which is always 64k.




Do not check for offset, it is always set.

Signed-off-by: Olaf Hering <redacted>

 arch/powerpc/boot/main.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Index: linux-2.6.16-rc1-olh/arch/powerpc/boot/main.c
===================================================================
--- linux-2.6.16-rc1-olh.orig/arch/powerpc/boot/main.c
+++ linux-2.6.16-rc1-olh/arch/powerpc/boot/main.c
@@ -152,7 +152,7 @@ static int is_elf64(void *hdr)
 	elf64ph = (Elf64_Phdr *)((unsigned long)elf64 +
 				 (unsigned long)elf64->e_phoff);
 	for (i = 0; i < (unsigned int)elf64->e_phnum; i++, elf64ph++)
-		if (elf64ph->p_type == PT_LOAD && elf64ph->p_offset != 0)
+		if (elf64ph->p_type == PT_LOAD)
 			break;
 	if (i >= (unsigned int)elf64->e_phnum)
 		return 0;
@@ -193,7 +193,7 @@ static int is_elf32(void *hdr)
 	elf32 = (Elf32_Ehdr *)elfheader;
 	elf32ph = (Elf32_Phdr *) ((unsigned long)elf32 + elf32->e_phoff);
 	for (i = 0; i < elf32->e_phnum; i++, elf32ph++)
-		if (elf32ph->p_type == PT_LOAD && elf32ph->p_offset != 0)
+		if (elf32ph->p_type == PT_LOAD)
 			break;
 	if (i >= elf32->e_phnum)
 		return 0;
-- 
short story of a lazy sysadmin:
 alias appserv=wotan

Re: [PATCH] remove check for ELF offset in powerpc bootimage

From: Simon Richter <hidden>
Date: 2006-01-30 14:09:28

Hi,

Olaf Hering wrote:
Is this check really needed, are there PT_LOAD sections with offset
zero (either zImage or vmlinux)? I see an offset which is always 64k.
Sure, an offset of zero is completely legal (obviously, the start 
address would then be different from the load address of that segment).

Without context, I would say this loop is used to find some loadable 
segment that does not include the ELF header. I cannot think of any 
application for that, as it is certainly acceptable to merge LOAD 
segments, and the segment it is looking for could have been merged with 
the segment that includes the header.

If the current linker scripts specify that loading the header is 
unneeded, this means that all LOAD headers will have nonzero offsets. 
But I wouldn't count on that forever.[1]

    Simon

[1] the Amiga bootloader, for example, assumes that all segments are to 
be loaded, so things broke badly on APUS when the ldscript did not 
remove the .note.gnu-stack section, which has a VMA of zero as it is 
never loaded anyway. So depending on things being a particular way is 
bad. :-)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help