Opened 8 years ago

Last modified 10 days 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 Jakub Jermář)

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 Jakub Jermář, 8 years ago

Description: modified (diff)

comment:2 by Jakub Jermář, 8 years ago

Component: helenos/unspecifiedhelenos/srv/loader
Description: modified (diff)
Owner: set to Jiri Svoboda

comment:3 by Jakub Jermář, 6 years ago

Keywords: gsoc18 added

comment:4 by Jiří Zárevúcky, 6 years ago

Cc: Jiří Zárevúcky added

comment:5 by Jiri Svoboda, 5 years ago

Support for dynamic linking on amd64 was added with commit 15674715412ae9b74ef57bcf964741ea2f00c1bb.

comment:6 by Jiri Svoboda, 5 years ago

The bulk of the amd64 support was added in commit d3e938c65a5927cb5851ec4118dd05109bba3ada

comment:7 by Jiri Svoboda, 10 days ago

Currently dynamic linking is supported on amd64, arm32, ia32, ia64, ppc32, sparc64. It is missing on arm64, mips32 and riscv64.

Note: See TracTickets for help on using tickets.