Support for sel4-rumprun
!20 (merged) and !21 (merged) added some code to support Zebu running on sel4-rumprun. However, it does not run on sel4-rumprun yet, due to rodal
does not support sel4-rumprun.
The changes mainly address these issues:
- removed usage of dynamic libraries (
dlopen
,dlsym
, etc) as sel4-rumprun does not support dynamic linking. - rewrote some testcases to avoid using dynamic libraries.
- added feature guard
sel4-rumprun
for OS dependent code. Feature guard is used instead of OS guard as Rust does not correctly recognise sel4-rumprun. - added feature guard
sel4-rumprun-target-side
for two-stage cross compilation.
Problems with the changes:
- it doesn't actually run on rumprun (
rodal
usesdlsym
). - the changes currently have massive code duplication instead of reusing OS/Target dependent code for Linux/x86_64. And duplicated code is not maintained when the original code changes.
- there is some hard-coded path for running Zebu on sel4-rumprun.
- using feature guard
[#cfg(feature = "sel4-rumprun")]
instead of a proper OS guard[#cfg(target_os = "sel4-rumprun")]
makes OS dependent code quite unreadable. For example, for linux code, we have to do
[#cfg(not(feature = "sel4-rumprun))]
[#cfg(target_os = "linux")]
... // linux dependent code
- there is no document on how to setup environment and run Zebu on sel4-rumprun.
These should be addressed if we want to properly support Zebu on sel4-rumprun.