[U-Boot-Users] Is there a redundant check in function "load_elf_image" in common/cmd_elf.c?

Haavard Skinnemoen hskinnemoen at atmel.com
Fri Dec 7 10:10:14 CET 2007


On Thu, 6 Dec 2007 14:36:57 -0800
"Ali Rouhi" <rouhi.ali at gmail.com> wrote:

>         if (!(shdr->sh_flags & SHF_ALLOC)
>            || shdr->sh_addr == 0 || shdr->sh_size == 0) {
>             continue;
>         }

This looks bogus for several reasons. First, there's nothing wrong with
placing a loadable section at address 0. Second, why is a _loader_
looking at the section header anyway? Loaders are supposed to look at
the program header, while the section header is for linkers and
debuggers.

The latter issue isn't that serious since the section header contains
all the needed information, but an ELF file without a section header is
still a valid ELF file that the loader should know how to deal with.

> So I removed the "shdr->sh_addr == 0" check, recompiled u-boot (which
> for me is not based at 0x0!) and was able to boot my ELF.

I think that change makes sense; care to submit a patch? Although
beware that when your application is loaded at address 0, NULL pointers
can't really be used as NULL pointers anymore since they may point to
valid data.

Haavard




More information about the U-Boot mailing list