YAMAMOTO Takashi
e596d5bd5e
binfmt/libelf: Implement sh_addralign handling
...
Basically, mirror the following two commits from modlib.
It's shame we have two copies of elf loaders.
```
commit 51490bad55
Author: 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)
```
```
commit 418e11b8b3
Author: 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
```
2022-01-28 16:23:23 +08:00
YAMAMOTO Takashi
fd58398918
binfmt/elf.c: Fix syslog formats for ELF64
...
Loosely followed the copy in mod_insmod.c.
2022-01-27 10:57:48 +08:00
chao.an
7cbb8da692
binfmt/elf: add bare metal coredump support
...
Signed-off-by: chao.an <anchao@xiaomi.com>
2021-11-23 20:48:00 -06:00
Xiang Xiao
841a4922aa
binfmt: Replace all nx_ API with file_ API
...
since binfmt is a kernel component
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2021-07-06 11:18:13 +09:00
Xiang Xiao
bebdbc5c87
binfmt: Remove filename/exports/nexports from binary_s
...
to simplify the life cycle management
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2021-06-02 15:20:38 +09:00
Liio Chen
468e08c1b4
binnfmt:Fix return before close ELF fd
...
elf_init open a elf file , if both enabled
CONFIG_NSH_BUIlTAPPS and CONFIG_NSH_FILE_APPS ,
elf_init will read elf file in /bin directory, but
that length is zero , elf_read failed return and NOT
close elf fd, so this line MUST be return to errout_with_init
2021-05-07 06:42:15 -07:00
Alin Jerpelea
f9fb182809
Author: Gregory Nutt: update licenses to Apache
...
Update files from Gregory Nutt to Apache 2.0 license.
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2021-02-05 12:15:56 -03:00
Alin Jerpelea
7ddf7c6c25
binfmt: nxstyle fixes
...
small nxstyle fixes for binfmt to avoid CI warnings
Signed-off-by: Alin Jerpelea <alin.jerpelea@sony.com>
2020-04-22 14:07:04 -06:00
Masayuki Ishikawa
81f1133174
ELF64 support ( #220 )
...
* include: Introduce elf64.h and elf.h
Added elf64.h for 64bit ELF support and moved common definitions
from elf32.h to elf.h. Also introduced Elf_xxx to be used in
common libraries such as binfmt.
* binfmt, include, modlib, module: Add support for ELF64
Elf_xxx must be used instead of Elf32_xxx to support ELF64.
To use ELF64, CONFIG_ELF_64BIT must be enabled.
* binfmt, modlib: Add support for relocate address
* arch: risc-v: Add include/elf.h
* libs: machine: Add risc-v related files.
NOTE: Currently only supports ELF64
* boards: maix-bit: Add elf and posix_spawn configurations
* boards: maix-bit: Add support for module configuration
2020-02-07 17:10:23 -06:00
Xiang Xiao
68951e8d72
Remove exra whitespace from files ( #189 )
...
* Remove multiple newlines at the end of files
* Remove the whitespace from the end of lines
2020-01-31 09:24:49 -06:00
Xiang Xiao
6a3c2aded6
Fix wait loop and void cast ( #24 )
...
* Simplify EINTR/ECANCEL error handling
1. Add semaphore uninterruptible wait function
2 .Replace semaphore wait loop with a single uninterruptible wait
3. Replace all sem_xxx to nxsem_xxx
* Unify the void cast usage
1. Remove void cast for function because many place ignore the returned value witout cast
2. Replace void cast for variable with UNUSED macro
2020-01-02 10:54:43 -06:00
Pavel Pisa
04f0ee5198
binfmt/: Change debug macro from berr() to binfo() when dumping module data. The report of problems is important during development but when it enables complete informative output about load binaries then the important information can be easily overlooked. The huge output sent to serial terminal slows loading significantly as well.
2019-08-15 14:41:42 -06:00
Xiang Xiao
264a7164bc
binfmt/: If there is an address environment (CONFIG_ARCH_ADDRENV), binfmt/elf doesn't need to free ctor/dtor alloc since freeing the address environment releases the heap automatically.
2019-01-26 11:29:08 -06:00
Xiang Xiao
095e28d45e
binfmt/, binfmt/libelf/, include/nuttx, libs/libc/machine, libs/libc/modlib, and others: Move elf related arch function to include/nuttx/elf.h because the implementation is located in libs/libc/machine and in order to avoid the conflict with the 3rd party libraries and clean up the file inclusion: (1) Remove redundant elf32.h, (2) Remove nuttx/binfmt/elf.h in libs/libc/machine, (2) Remove nuttx/binfmt/elf.h in modlib, and (4) Rmove nuttx/module.h in modlib.
2019-01-26 11:18:45 -06:00
Gregory Nutt
e90f0403a6
binfmt/: Mostly cosmetic changes from review of a previous commit.
2018-08-24 06:10:50 -06:00
Gregory Nutt
2edfe7ed42
Revert "binfmt/elf: Set elf tcb priority level to default"
...
This reverts commit 1137927bd7
.
Superceded by commit f1b5a80ae9
2018-08-22 08:35:52 -06:00
anchao
1137927bd7
binfmt/elf: Set elf tcb priority level to default
2018-08-22 07:16:52 -06:00
Gregory Nutt
a096bc1266
binfmt/: Fix one more inappropriate access to the errno variable.
2018-02-01 08:33:04 -06:00
Gregory Nutt
a1469a3e95
Add CONFIG_DEBUG_ERROR. Change names of *dbg() * *err()
2016-06-11 15:50:49 -06:00
Gregory Nutt
1cdc746726
Rename CONFIG_DEBUG to CONFIG_DEBUG_FEATURES
2016-06-11 14:14:08 -06:00
Gregory Nutt
fc3540cffe
Replace all occurrences of vdbg with vinfo
2016-06-11 11:59:51 -06:00
Gregory Nutt
3a74a438d9
Rename CONFIG_DEBUG_VERBOSE to CONFIG_DEBUG_INFO
2016-06-11 11:50:18 -06:00
Gregory Nutt
45eebacbb4
binfmt/: More spacing/alignment fixes
2015-10-08 19:20:17 -06:00
Gregory Nutt
b13d9b4161
Rename up_addrenv_assign() to up_addrenv_clone() and generalize its arguments so that can be used for other purposes
2014-08-26 12:16:05 -06:00
Gregory Nutt
7e0ce83e47
Can't dump loaded code unless we first establish the mappings
2014-08-26 10:42:42 -06:00
Gregory Nutt
7aea220ebf
After cached related fix, the ELF example is now functional
2014-08-24 14:12:45 -06:00
Gregory Nutt
1708a133f5
Fix some compilation errors in ELF logic that were introduced in a recent commit
2014-08-24 12:57:02 -06:00
Gregory Nutt
1624e2fbcf
Change CONFIG_ADDRENV to CONFIG_ARCH_ADDRENV; change how it is selected -- the architecure must first declare support
2014-08-24 06:42:11 -06:00
Gregory Nutt
d864c38e31
ELF: Fix compilation error when CONFIG_ELF_DUMPBUFFER is defined. From Pelle Windestam
2014-06-12 07:53:31 -06:00
Gregory Nutt
e18844de32
P-code BINFMT: Add logic to pass information from the binfmt logic to the P-code interpreter. This includes some extension to the binfmt interfaces.
2014-05-08 16:58:10 -06:00
Gregory Nutt
b6f264488a
BINFMT: A framework to support a P-code binary format (a work in progress)
2014-05-07 13:47:52 -06:00
patacongo
86e99bb6cf
Add a binary 'loader' so that builtin applications can be executed from the BINFS file system
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5525 42af7a65-404d-4744-a932-0658087f49c3
2013-01-16 19:08:23 +00:00
patacongo
a160442b78
Incorporate address environment interfaces in binfmt/ logic
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5443 42af7a65-404d-4744-a932-0658087f49c3
2012-12-19 17:54:26 +00:00
patacongo
948b57f2af
C++ static destructors work with ELF load too now
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5274 42af7a65-404d-4744-a932-0658087f49c3
2012-10-29 20:43:35 +00:00
patacongo
ef6dcd6f90
C++ constructors work with ELF load now
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5273 42af7a65-404d-4744-a932-0658087f49c3
2012-10-29 19:32:05 +00:00
patacongo
0f70f8c9e1
Finish implemention of ELF loader static constructor support. Still some issues.
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5272 42af7a65-404d-4744-a932-0658087f49c3
2012-10-29 00:52:23 +00:00
patacongo
14dae62821
Rename elf.h to elf32.h; Additional ELF loader changes
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5263 42af7a65-404d-4744-a932-0658087f49c3
2012-10-26 02:42:39 +00:00
patacongo
abf9559979
More ELF loader changes
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5261 42af7a65-404d-4744-a932-0658087f49c3
2012-10-25 22:10:56 +00:00
patacongo
8b6ea4c174
A little more ELF loader logic
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5257 42af7a65-404d-4744-a932-0658087f49c3
2012-10-25 16:18:20 +00:00
patacongo
b8f437ef4b
Move binfmt.h, nxflat.h, elf.h, and symtab.h to include/nuttx/binfmt/
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5252 42af7a65-404d-4744-a932-0658087f49c3
2012-10-24 20:19:44 +00:00
patacongo
b49a2605d0
Add framework to support loadable ELF modules (not much logic in place yet)
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5250 42af7a65-404d-4744-a932-0658087f49c3
2012-10-24 16:46:12 +00:00