Opened 9 years ago
Last modified 6 months ago
#648 new enhancement
Extend dynamic linking support to (an)other architecture(s)
Reported by: | Jakub Jermář | Owned by: | Jiri Svoboda |
---|---|---|---|
Priority: | major | Milestone: | |
Component: | helenos/srv/loader | Version: | mainline |
Keywords: | gsoc16, gsoc17, gsoc18 | Cc: | Jiří Zárevúcky |
Blocker for: | Depends on: | ||
See also: |
Description (last modified by )
HelenOS currently supports dynamic linking only for the ia32 architecture. Extend this support to one or more other architectures.
- Details
- At the moment, all user programs in HelenOS are statically linked by default. This results in very large boot images. Not only is this a waste of disk space, but some machines supported by HelenOS have some kind of a limit on the size of the boot image and so booting HelenOS on them is becoming increasingly challenging. The temporary solution used so far has been to compress some of the boot components and to exclude the so-called non-essential components from the boot image. However, with the ever growing HelenOS codebase, this stop-gap solution is quickly reaching its limits. Besides of that, init RAM disks with only the bare minimum of applications, drivers and servers are not very useful anyway.
Dynamic linking, currently available for ia32 only, can reduce the size of the boot image considerably. Currently, the dynamically linked boot image is 16M smaller than the statically linked image (36.2M). This option should therefore be extended to other architectures supported by HelenOS as well.
- What Gains and Benefits will this bring?
- Dynamically linked HelenOS results in a much smaller boot image, which in turn allows for more software to be placed in the boot image or to boot on machines where the statically linked image was already hitting the size limit.
- Difficulty
- medium
- Required skills
- A successful applicant will have good programming skills in the C language and the ability to survive in a non-standard non-POSIX application environment. He or she will be able to study the relevant ABI specifications. The project will require modifications to the HelenOS build system.
- Documentation
- Possible mentors
- HelenOS Core Team, Jakub Jermar, Jiri Svoboda
Change History (7)
comment:1 by , 9 years ago
Description: | modified (diff) |
---|
comment:2 by , 9 years ago
Component: | helenos/unspecified → helenos/srv/loader |
---|---|
Description: | modified (diff) |
Owner: | set to |
comment:3 by , 7 years ago
Keywords: | gsoc18 added |
---|
comment:4 by , 7 years ago
Cc: | added |
---|
comment:5 by , 6 years ago
comment:6 by , 6 years ago
The bulk of the amd64 support was added in commit d3e938c65a5927cb5851ec4118dd05109bba3ada
comment:7 by , 6 months ago
Currently dynamic linking is supported on amd64, arm32, ia32, ia64, ppc32, sparc64. It is missing on arm64, mips32 and riscv64.
Support for dynamic linking on amd64 was added with commit 15674715412ae9b74ef57bcf964741ea2f00c1bb.