Ville Juven
9af8b740e6
Elf loader: give temporary write access to user .text memory
...
When the .elf file is loaded from disk, the kernel must be given write
access to the allocated .text section in the task's address environment.
The access is removed after the elf is loaded and relocations are done.
NOTE:
The reason this works for the ARM implementation, is that the ARM MMU
can be configured to give write access for the privileged mode, but
revoke write access for the user mode.
Regardless, it would be smart to revoke write access even for the
kernel, when the kernel does not need it. This framework allows doing
that, if someone wishes to take up the task.
2022-05-03 21:25:25 +09: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
Xiang Xiao
cde88cabcc
Run codespell -w with the latest dictonary again
...
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2020-02-23 22:27:46 +01:00
Xiang Xiao
bd4e8e19d3
Run codespell -w against all files
...
and fix the wrong correction
2020-02-22 14:45:07 -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
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
05cb7a9043
Call initializer entry point on start-up; do not create a task
2015-12-11 07:27:45 -06:00
Gregory Nutt
205c23b9d6
Add logic to initialize the per-process user heap when each user process is started
2014-09-10 15:55:36 -06:00
Gregory Nutt
c458e72b70
ELF relocations. Some relocation types do not have a named symbol associated with them. The design did not account for that case
2014-09-09 16:52:51 -06:00
Gregory Nutt
205260d5e2
Reanem kzalloc to kmm_zalloc for consistency
2014-08-31 17:34:44 -06:00
Gregory Nutt
1725946447
Misc changed to get the SAMA5 ELF configuration with address environments working
2014-08-25 13:28:13 -06:00
Gregory Nutt
241a7e17bd
addrenv interface changes: up_addrenv_create() may need to create .text and .bss/.data separately because of differing access privileges (read/execute vs read/write). And, as a consequence, up_addrenv_vaddr() needs to be split into up_addrenv_vtext(0 and up_addrenv_vdata().
2014-08-24 11:54:14 -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
bc46b447dc
Fix all occurrences of "the the" in documentation and comments
2013-08-27 09:40:19 -06: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
87e9dbc4c8
Finishes basic coding of ELF file support
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5259 42af7a65-404d-4744-a932-0658087f49c3
2012-10-25 19:21:47 +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
00ad1f0f4a
A little more ELF loader logic
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5253 42af7a65-404d-4744-a932-0658087f49c3
2012-10-24 23:40:31 +00:00
patacongo
fd01281b68
Flesh out include/elf.h
...
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5251 42af7a65-404d-4744-a932-0658087f49c3
2012-10-24 18:22:15 +00:00