mirror of
https://github.com/apache/nuttx.git
synced 2026-06-07 09:18:00 +08:00
binfmt/libelf: Implement sh_addralign handling
Basically, mirror the following two commits from modlib. It's shame we have two copies of elf loaders. ``` commit51490bad55Author: YAMAMOTO Takashi <yamamoto@midokura.com> Date: Wed Apr 14 17:07:39 2021 +0900 modlib: Implement sh_addralign handling I've seen a module with 16 bytes .rodata alignment for xmm operations. It was getting SEGV on sim/Linux because of the alignment issue. The same module binary seems working fine after applying this patch. Also, tested on sim/macOS and esp32 on qemu, using a module with an artificially large alignment. (64 bytes) ``` ``` commit418e11b8b3Author: YAMAMOTO Takashi <yamamoto@midokura.com> Date: Thu Apr 15 11:33:48 2021 +0900 modlib: Always use separate allocation for text and data Pros: * Reduce code differences * Smaller allocations for !CONFIG_ARCH_USE_MODULE_TEXT Cons: * Likely to use more memory for !CONFIG_ARCH_USE_MODULE_TEXT in total Tested with: * sim:module on macOS * esp32-devkit:nsh + CONFIG_MODULE on qemu * lm3s6965-ek:qemu-protected + CONFIG_EXAMPLES_SOTEST on qemu ```
This commit is contained in:
committed by
Xiang Xiao
parent
764fc7ef5e
commit
e596d5bd5e
@@ -95,10 +95,9 @@ struct elf_loadinfo_s
|
||||
uintptr_t textalloc; /* .text memory allocated when ELF file was loaded */
|
||||
uintptr_t dataalloc; /* .bss/.data memory allocated when ELF file was loaded */
|
||||
size_t textsize; /* Size of the ELF .text memory allocation */
|
||||
#ifdef CONFIG_ARCH_USE_TEXT_HEAP
|
||||
size_t textalign; /* Necessary alignment of .text */
|
||||
#endif
|
||||
size_t datasize; /* Size of the ELF .bss/.data memory allocation */
|
||||
size_t textalign; /* Necessary alignment of .text */
|
||||
size_t dataalign; /* Necessary alignment of .bss/.data */
|
||||
off_t filelen; /* Length of the entire ELF file */
|
||||
|
||||
Elf_Ehdr ehdr; /* Buffered ELF file header */
|
||||
|
||||
Reference in New Issue
Block a user