Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages 2008
DOI: 10.1145/1328438.1328465
|View full text |Cite
|
Sign up to set email alerts
|

A theory of platform-dependent low-level software

Abstract: The C language definition leaves the sizes and layouts of types partially unspecified. When a C program makes assumptions about type layout, its semantics is defined only on platforms (C compilers and the underlying hardware) on which those assumptions hold. Previous work on formalizing C-like languages has ignored this issue, either by assuming that programs do not make such assumptions or by assuming that all valid programs target only one platform. In the latter case, the platform's choices are hard-wired i… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
5
0

Year Published

2008
2008
2019
2019

Publication Types

Select...
3
3
1

Relationship

2
5

Authors

Journals

citations
Cited by 12 publications
(5 citation statements)
references
References 29 publications
0
5
0
Order By: Relevance
“…For example, it supports the platformdependent idiom of treating an array of: struct { short i1; short i2; short i3; short i4;}; as an array of short. We have proven safety given this subtyping rule (Nita et al 2007). …”
Section: Arraysmentioning
confidence: 85%
See 2 more Smart Citations
“…For example, it supports the platformdependent idiom of treating an array of: struct { short i1; short i2; short i3; short i4;}; as an array of short. We have proven safety given this subtyping rule (Nita et al 2007). …”
Section: Arraysmentioning
confidence: 85%
“…See the technical report (Nita et al 2007) for the complete system, which includes rules for run-time forms (such as w) and heaps.…”
Section: Metatheory and Low-level Static Semanticsmentioning
confidence: 99%
See 1 more Smart Citation
“…We can also imagine implementing a read-only filesystem that allows access to the real, underlying filesystem, but treats writes (and other dangerous operations, like execve) as noops. We consider platform-specific filesystems, like /proc, as out of scope; we could in theory apply platform-dependent reasoning [Nita et al 2008].…”
Section: Simulating Posixmentioning
confidence: 99%
“…This means we cannot catch undefined behavior related to alignment restrictions. Note that others have worked on formalizing alignment requirements [20], but it has never been incorporated into a full semantics for C. We also do not handle type qualifiers (like const or volatile); we simply ignore them. This is safe to do when interpreting correct programs, but it means we are not detecting problems related to those features in incorrect programs.…”
Section: Limitations and Future Workmentioning
confidence: 99%