Dynamic Object File Loading

Chris Johns chrisj at rtems.org
Tue Mar 5 23:12:03 UTC 2013

Joel Sherrill wrote:
> Chris Johns has been working on that. He is in Sidney and still asleep.
> The basics are working. He needs to update that page.

Sure. I can do that.

>  From what I know, more architectures need to be added for sure. And
> working on test coverage is important. There are likely features to be
> added.

Yes this is an important needed part of the project. Generating tests 
for this project is complicated by the multi-stage build and link 
processes needed to generate kernel symbols and then to have them 
present in the executable. Some targets have a suitable file system like 
i386 qemu which is easier to handle while others do not such as the 
SPARC SIS simulator. This means we need to handle the more complex case 
of no file system when testing. An internal tar file is no solution 
either because you need to link, get the symbols, add the symbols file 
to the tar file and then relink.

> One off-shoot idea we have had is that we think he has enough
> infrastructure to statically identify which methods in an executable
> are not referenced.

This is more of an RTEMS Tools project than an RTL project but I am 
happy to have it come under the RTL project's control. The RTEMS Linker 
uses a C++ framework to perform its tasks and this could be used to make 
this tool. The student would need to have a fair amount of C++ and STL 
experience to work with the RTEMS Tool C++ framework.

> He needs to comment. :)

Architecture and testing is a top priority and should be suitable for 
GSoC. The ARM architecture is a good example. I have code in the RTL 
project to support it but it needs testing. ARM has a range of 
relocation fix up records that need to be tested. I am not sure how you 
generate these record and if they are valid for RTEMS and the operating 
modes we support. Adding support for all architectures would be nice. 
These tasks are C and target based.

The project also has tasks related to management on the host of library 
based objects. For example you have an application that links to create 
module a.rap and another module that links to create b.rap and both use 
a common library function foo() from foo.o from libbar.a. The RTEMS 
linker (rtems-ld) needs a mode where foo.o is collected in to a "target 
library" and that library is viewable by rtems-ld when each module is 
linked. This avoids foo.o being linked into both applications. This task 
leads to another task of adding archive support for RAP format object 
files. Again these tasks require a good level of C++ and STL experience.


More information about the devel mailing list