Affiliation:
1. University of Cambridge, UK
Abstract
Beneath the surface, software usually depends on complex
linker behaviour
to work as intended. Even linking <pre>hello_world.c</pre> is surprisingly involved, and systems software such as <pre>libc</pre> 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 files, command-line options, and linker-script language. We provide the first validated formalisation of a realistic executable and linkable format (ELF), and capture aspects of the Application Binary Interfaces for four mainstream platforms (AArch64, AMD64, Power64, and IA32). Using these, we develop an executable specification of static linking, covering (among other things) enough to link small C programs (we use the example of bzip2) into a correctly running executable. We provide our specification in Lem and Isabelle/HOL forms. This is the first formal specification of mainstream linking. We have used the Isabelle/HOL version to prove a sample correctness property for one case of AMD64 ABI relocation, demonstrating that the specification supports formal proof, and as a first step towards the much more ambitious goal of verified linking. Our work should enable several novel strands of research, including linker-aware verified compilation and program analysis, and better languages for controlling linking.
Funder
Engineering and Physical Sciences Research Council
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Cited by
14 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. A study of inline assembly in solidity smart contracts;Proceedings of the ACM on Programming Languages;2022-10-31
2. The Trusted Computing Base of the CompCert Verified Compiler;Programming Languages and Systems;2022
3. CompCertELF: verified separate compilation of C programs into ELF object files;Proceedings of the ACM on Programming Languages;2020-11-13
4. Guided linking: dynamic linking without the costs;Proceedings of the ACM on Programming Languages;2020-11-13
5. Slimium: Debloating the Chromium Browser with Feature Subsetting;Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security;2020-10-30