2006
DOI: 10.1145/1133255.1134028
|View full text |Cite
|
Sign up to set email alerts
|

Modular verification of assembly code with stack-based control abstractions

Abstract: Runtime stacks are critical components of any modern softwarethey are used to implement powerful control structures such as function call/return, stack cutting and unwinding, coroutines, and thread context switch. Stack operations, however, are very hard to reason about: there are no known formal specifications for certifying C-style setjmp/longjmp, stack cutting and unwinding, or weak continuations (in C--). In many proof-carrying code (PCC) systems, return code pointers and exception handlers are treated as … Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
38
0
2

Year Published

2009
2009
2020
2020

Publication Types

Select...
4
2

Relationship

1
5

Authors

Journals

citations
Cited by 34 publications
(40 citation statements)
references
References 32 publications
(13 reference statements)
0
38
0
2
Order By: Relevance
“…The atomicity and isolation properties of transaction can also be formally verified in our framework. We introduce a local guarantee g for each thread, as in SCAP [23] , describing valid memory updates -it is safe for the current transaction to roll back only after make a memory update allowed by g. So when a transaction rolls back, it guarantees that the memory in the current thread state is consistent with the memory at the beginning of the transaction, just as nothing has been done. The isolation is enforced by CSL, in status act the shared memory is required to be unchanged due to that the transaction may roll back, so only in status cmt the memory updates can be visible to other threads.…”
Section: Inference Rulesmentioning
confidence: 99%
“…The atomicity and isolation properties of transaction can also be formally verified in our framework. We introduce a local guarantee g for each thread, as in SCAP [23] , describing valid memory updates -it is safe for the current transaction to roll back only after make a memory update allowed by g. So when a transaction rolls back, it guarantees that the memory in the current thread state is consistent with the memory at the beginning of the transaction, just as nothing has been done. The isolation is enforced by CSL, in status act the shared memory is required to be unchanged due to that the transaction may roll back, so only in status cmt the memory updates can be visible to other threads.…”
Section: Inference Rulesmentioning
confidence: 99%
“…As mentioned in Subsection 1.4, our approach follows the second methodology, which is also used in SCAP [9] and previous work [7][8] . In SCAP, a code specification consists of a precondition p and an action g, rather than using the methodology reasoning about first-class code pointers, to support modular certification of function call, especially the last return instruction of a function.…”
Section: Our Approachmentioning
confidence: 99%
“…In our framework, a code specification θ is a triple, consisting of a precondition p, an action g and a tag b. The precondition p and action g are like the notations used in original SCAP [9] but they have two extra arguments, t and X, as we explained in Section 3. In a code specification θ, precondition p specifies the precondition before machine executes an instruction.…”
Section: Specificationmentioning
confidence: 99%
See 1 more Smart Citation
“…1, note that the infinite loop of the first path never exits the current function, so the end points should be "a4" and "b1". This method needs a logical function stack to be maintained and complicates the program logic system [8].…”
Section: Introductionmentioning
confidence: 99%