You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Paul Bowen-Huggett edited this page Sep 11, 2018
·
13 revisions
Missing features
Support for IR alias and ifunc.
Exception handling
Debugging information
Linker support!
The linker is a critical component of the program repository. Much of the compiler work has been aimed at reducing the work that must be performed at link time. Until we have a working repository-based static linker, most of the gains that I'm hoping for from the repo won't be realised.
However, as a stop-gap measure to enable running programs to be linked, we've got the repo2obj tool which creates an ELF object file from a program repository database and a "ticket file" create by from a compilation.
Design Restrictions
The program repository design deliberately doesn't attempt to reproduce all of the exotic extensions that are available in object file formats such as ELF. These restrictions are chosen to simplify the implementation and, more importantly, to improve performance. Part of the motivation comes from a wish to focus on targeting application developers rather than kernel-level development.
No custom-named sections, e.g. __attribute__((section("name")))
No weak symbols, e.g. __attribute__(weak)
No custom static constructor/destructor ordering, e.g. __attribute__(init_priority(x));