2020
DOI: 10.1145/3428265
|View full text |Cite
|
Sign up to set email alerts
|

CompCertELF: verified separate compilation of C programs into ELF object files

Abstract: We present CompCertELF, the first extension to CompCert that supports verified compilation from C programs all the way to a standard binary file format, i.e., the ELF object format. Previous work on Stack-Aware CompCert provides a verified compilation chain from C programs to assembly programs with a realistic machine memory model. We build CompCertELF by modifying and extending this compilation chain with a verified assembler which further transforms assembly programs into ELF object files.CompCert supports l… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
11
0

Year Published

2021
2021
2024
2024

Publication Types

Select...
4
3
1

Relationship

2
6

Authors

Journals

citations
Cited by 13 publications
(11 citation statements)
references
References 30 publications
0
11
0
Order By: Relevance
“…We repeat this experiment for 30 times on a machine with Intel(R) i7-4980HQ CPU@2.8 GHz and 16 GB memory. For comparison, we conduct the same experiments on the hand-written encoder and decoder in the X86-32 back-end of Com-pCertELF [20]. The results are shown in Table 3.…”
Section: Discussionmentioning
confidence: 99%
See 1 more Smart Citation
“…We repeat this experiment for 30 times on a machine with Intel(R) i7-4980HQ CPU@2.8 GHz and 16 GB memory. For comparison, we conduct the same experiments on the hand-written encoder and decoder in the X86-32 back-end of Com-pCertELF [20]. The results are shown in Table 3.…”
Section: Discussionmentioning
confidence: 99%
“…Consistency is essential for verification of machine code because it guarantees that manipulation and reasoning over the abstract syntax of instructions can be mirrored precisely onto their binary forms. For example, verification of assemblers requires that instruction decoding reverts the assembling (encoding) process [20]. However, the previously proposed approaches to verifying instruction encoders and decoders all fail to establish consistency: to handle the complexity of instruction formats (especially that of CISC architectures), they employ expressive but ambiguous specifications such as context-free grammars or variants of regular expressions, from which it is impossible to derive consistent encoders and decoders.…”
Section: Introductionmentioning
confidence: 99%
“…The correctness proof was later extended, in version 2.7, to account for separate compilation and linking, following [24]. There have been proposals for more ambitious formalizations of the linking process [49], even implementing a verified linker for a subset of ELF on the x86-32 architecture [56]; 40 Specifying and proving correct a general ELF linker is itself a fairly ambitious project [26].…”
Section: Assembling and Linkingmentioning
confidence: 99%
“…The CompCert memory model is infinite, whereas our representation of arrays in Verilog is inherently finite. There have already been efforts to define a general finite memory model for all intermediate languages in CompCert, such as CompCertS [Besson et al 2018] or CompCert-TSO [Ševčík et al 2013], or keeping the intermediate languages intact and translate to a more concrete finite memory model in the back end, such as in CompCertELF [Wang et al 2020]. We also define such a translation from CompCert's standard infinite memory model to finite arrays that can be represented in Verilog.…”
Section: Memory Modelmentioning
confidence: 99%