Remove the need for `loader_link_address`

Open
#477 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Refactor
Clarity
Needs clarification
Activity status
Quiet
Tech stack
rust

Research direction

Start by tracing how loader_link_address places the loader, kernel image, and initial task in main memory, then review the work-arounds in pull requests 206 and 476. Define a replacement that avoids overlapping relocation regions for large images and confirm that the loader_link_address requirement can be removed.

Written by the indexing model from the issue text.

Description

We should look into removing the loader_link_address as it is fragile and also platform-specific.

The main issue that I've encountered is that we usually place loader_link_address somewhere near the start of main memory, the loader code itself goes at loader_link_address and then directly after is the binary data for the kernel and the initial task. These are then relocated to specific places in memory decided by the tool. What happens when you have really large images is that the regions that have to be copied around end up overlapping with the location of the loader itself.

I've had to do work-arounds like https://github.com/seL4/microkit/pull/206 and https://github.com/seL4/microkit/pull/476.

Dominant language
Rust
Stars
201
Forks
80
Avg merge
1d 4h
Merged PRs (30d)
7

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from seL4/microkit

All issues in seL4/microkit

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.