binfmt/, binfmt/libelf: binfmt/elf: Call umm_initialize as soon as possible otherwise elf_loadctors/elf_loaddtors will fail to allocate memory.
This commit is contained in:
parent
0edcd6b85e
commit
b7f958a02e
|
@ -164,11 +164,6 @@ int exec_module(FAR const struct binary_s *binp)
|
|||
berr("ERROR: up_addrenv_select() failed: %d\n", ret);
|
||||
goto errout_with_tcb;
|
||||
}
|
||||
|
||||
/* Initialize the user heap */
|
||||
|
||||
umm_initialize((FAR void *)CONFIG_ARCH_HEAP_VBASE,
|
||||
up_addrenv_heapsize(&binp->addrenv));
|
||||
#endif
|
||||
|
||||
/* Allocate the stack for the new task.
|
||||
|
|
|
@ -277,7 +277,7 @@ int elf_load(FAR struct elf_loadinfo_s *loadinfo)
|
|||
#elif defined(CONFIG_ARCH_STACK_DYNAMIC)
|
||||
heapsize = ARCH_HEAP_SIZE;
|
||||
#else
|
||||
heapsize = MIN(ARCH_HEAP_SIZE, CONFIG_ELF_STACKSIZE);
|
||||
heapsize = MAX(ARCH_HEAP_SIZE, CONFIG_ELF_STACKSIZE);
|
||||
#endif
|
||||
|
||||
/* Allocate (and zero) memory for the ELF file. */
|
||||
|
@ -301,6 +301,11 @@ int elf_load(FAR struct elf_loadinfo_s *loadinfo)
|
|||
berr("ERROR: elf_addrenv_select() failed: %d\n", ret);
|
||||
goto errout_with_buffers;
|
||||
}
|
||||
|
||||
/* Initialize the user heap */
|
||||
|
||||
umm_initialize((FAR void *)CONFIG_ARCH_HEAP_VBASE,
|
||||
up_addrenv_heapsize(&loadinfo->addrenv));
|
||||
#endif
|
||||
|
||||
/* Load ELF section data into memory */
|
||||
|
|
Loading…
Reference in New Issue