2016
DOI: 10.1145/3022671.2983996
|View full text |Cite
|
Sign up to set email alerts
|

The missing link: explaining ELF static linking, semantically

Abstract: Beneath the surface, software usually depends on complex linker behaviour to work as intended. Even linking hello _ world.c is surprisingly involved, and systems software such as libc and operating system kernels rely on a host of linker features. But linking is poorly understood by working programmers and has largely been neglected by language researchers. In this paper we survey the many use-cases that linkers support and the poorly specified linker speak by which they are controlled: metadata in object file… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1

Citation Types

0
3
0

Year Published

2017
2017
2020
2020

Publication Types

Select...
3
2

Relationship

0
5

Authors

Journals

citations
Cited by 5 publications
(3 citation statements)
references
References 29 publications
0
3
0
Order By: Relevance
“…The linker provided by CompCertELF also works on this subset. Kell et al [2016] have provided the first formalization of the static linking of ELF in the specification language Lem and the proof assistant Isabelle/HOL which covers a significantly larger subset of ELF. However, their formalization of ELF linking has only been used to verify the correctness of relocation for a single instruction program.…”
Section: Related Workmentioning
confidence: 99%
“…The linker provided by CompCertELF also works on this subset. Kell et al [2016] have provided the first formalization of the static linking of ELF in the specification language Lem and the proof assistant Isabelle/HOL which covers a significantly larger subset of ELF. However, their formalization of ELF linking has only been used to verify the correctness of relocation for a single instruction program.…”
Section: Related Workmentioning
confidence: 99%
“…The compiler blindly constructs these sections without considering any possible redundancy, as it can only process the code of a single object file at a time. In turn, when the linker observes redundant sections, it nondeterministically keeps one of them and discards the rest [82]. This deduplication process can cause discrepancies in the layout and fixup information kept as part of our metadata, and thus the corresponding information about all removed sections is discarded at this stage.…”
Section: Link-time Metadata Consolidationmentioning
confidence: 99%
“…However, since the linking process and its mechanisms involved are incompatible across different platforms, most FCI methods based on static linking are individually platform specific and would not be portable. More information on the static linking process in general can be found in Presser et al and Levine and recent discussions on the formal model of static linking along with the executable file format can be found in Kell et al…”
Section: Stages In Program Build Processmentioning
confidence: 99%