diff --git a/binfmt/elf.c b/binfmt/elf.c index 04e1826039..eb0adc7020 100644 --- a/binfmt/elf.c +++ b/binfmt/elf.c @@ -112,8 +112,10 @@ static void elf_dumploadinfo(FAR struct elf_loadinfo_s *loadinfo) int i; bdbg("LOAD_INFO:\n"); - bdbg(" elfalloc: %08lx\n", (long)loadinfo->elfalloc); - bdbg(" elfsize: %ld\n", (long)loadinfo->elfsize); + bdbg(" textalloc: %08lx\n", (long)loadinfo->textalloc); + bdbg(" dataalloc: %08lx\n", (long)loadinfo->dataalloc); + bdbg(" textsize: %ld\n", (long)loadinfo->textsize); + bdbg(" datasize: %ld\n", (long)loadinfo->datasize); bdbg(" filelen: %ld\n", (long)loadinfo->filelen); #ifdef CONFIG_BINFMT_CONSTRUCTORS bdbg(" ctoralloc: %08lx\n", (long)loadinfo->ctoralloc); @@ -215,7 +217,7 @@ static int elf_loadbinary(struct binary_s *binp) /* Return the load information */ - binp->entrypt = (main_t)(loadinfo.elfalloc + loadinfo.ehdr.e_entry); + binp->entrypt = (main_t)(loadinfo.textalloc + loadinfo.ehdr.e_entry); binp->stacksize = CONFIG_ELF_STACKSIZE; /* Add the ELF allocation to the alloc[] only if there is no address @@ -229,11 +231,11 @@ static int elf_loadbinary(struct binary_s *binp) #ifdef CONFIG_ARCH_ADDRENV # warning "REVISIT" #else - binp->alloc[0] = (FAR void *)loadinfo.elfalloc; + binp->alloc[0] = (FAR void *)loadinfo.textalloc; #endif #ifdef CONFIG_BINFMT_CONSTRUCTORS - /* Save information about constructors. NOTE: desctructors are not + /* Save information about constructors. NOTE: destructors are not * yet supported. */ diff --git a/binfmt/libelf/libelf_load.c b/binfmt/libelf/libelf_load.c index 9f33abb402..81016a9085 100644 --- a/binfmt/libelf/libelf_load.c +++ b/binfmt/libelf/libelf_load.c @@ -177,25 +177,25 @@ static inline int elf_loadfile(FAR struct elf_loadinfo_s *loadinfo) continue; } + /* SHF_WRITE indicates that the section address space is write- + * able + */ + + if ((shdr->sh_flags & SHF_WRITE) != 0) + { + pptr = &data; + } + else + { + pptr = &text; + } + /* SHT_NOBITS indicates that there is no data in the file for the * section. */ if (shdr->sh_type != SHT_NOBITS) { - /* SHF_WRITE indicates that the section address space is write- - * able - */ - - if ((shdr->sh_flags & SHF_WRITE) != 0) - { - pptr = &data; - } - else - { - pptr = &text; - } - /* If CONFIG_ARCH_ADDRENV=y, then 'text' lies in a virtual address * space that may not be in place now. elf_addrenv_select() will * temporarily instantiate that address space.