[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