svadev AT lists.siebelschool.illinois.edu
Subject: Svadev mailing list
List archive
- From: John Criswell <criswell AT uiuc.edu>
- To: Jean-Baptiste Tristan <jean.baptiste.tristan AT gmail.com>
- Cc: "svadev AT cs.uiuc.edu" <svadev AT cs.uiuc.edu>
- Subject: Re: [svadev] Documentation
- Date: Tue, 9 Mar 2010 15:20:03 -0600
- List-archive: <http://lists.cs.uiuc.edu/pipermail/svadev>
- List-id: <svadev.cs.uiuc.edu>
- Organization: University of Illinois
Jean-Baptiste Tristan wrote:
Hi,There isn't documentation per se, but the comments in runtime/DebugRuntime might be able to help explain what these functions do. You might also want to consult the SOSP 2007 paper on SVA; it might describe the run-time checks more clearly and is closer to the current SAFECode implementation than the PLDI paper.
I have transformed a piece of code using sc, and the resulting code
has a few extra function declarations such as:
declare void @sc.lscheck(i8*, i8*)
Is there any documentation that could help me understand what those
functions do ?
Briefly, the run-time functions that SAFECode inserts are:
1) sc.lscheck - Load/store check. This is the poolcheck() function from the PLDI 2006 publication.
2) sc.poolcheckalign - Load/store alignment check. Ensures that the pointer points to a valid object and is of the correct alignment
3) sc.boundscheck[ui] - Ensure that an indexing operation (a GEP) does not create an out of bounds pointer. This check was introduced, I believe, in the ICSE publication.
4) pool_register/pool_unregister - These functions tell the run-time when objects have been allocated or deallocated. There are now separate versions for global, stack, and heap objects so that the runtime can treat them differently.
5) pool_shadow/pool_unshadow - These functions implement the MMU remapping for danging pointer detection. This technique is described in the DSN paper. As dangling pointer *detection* (as opposed to *protection*) is disabled by default, you probably won't see any calls to these functions.
Note that there are alternative versions of these functions that take a tag and source filename/line number information. These are used for the SAFECode debugging tool.
Some of those functions have a name that is close to the name of some
of the statements
or expressions used in the type system described in the paper
"SAFEcode: Enforcing Alias Analysis
for Weakly Typed Languages". Do you use those functions to "encode"
the type system described in
this paper into regular LLVM code ?
I don't believe they "encode" the type system; rather, they implement the run-time checks required to provide the memory safety guarantees described in the PLDI and ICSE papers. The typing information, I believe, is implicit in the pools used in the calls to poolalloc and the above run-time checks (when automatic pool allocation is enabled; currently, SAFECode disables automatic pool allocation and uses a simpler transform which puts all heap objects into a single pool; it adjusts the points-to analysis results to reflect the fact that everything is going into a global pool).
There is code to encode the points-to analysis results in the LLVM bitcode. That is the code in the safecode/lib/ProofWrap directory. Dinakar wrote it for the SOSP 2007 paper. I have never used it, so I can't comment on its functionality at present. I may look into it at some point, but that depends on work priorities.
-- John T.
-John
_______________________________________________
svadev mailing list
svadev AT cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/svadev
- [svadev] Documentation, Jean-Baptiste Tristan, 03/09/2010
- Re: [svadev] Documentation, John Criswell, 03/09/2010
- Re: [svadev] Documentation, Adve, Vikram Sadanand, 03/09/2010
- Re: [svadev] Documentation, Jean-Baptiste Tristan, 03/10/2010
- Re: [svadev] Documentation, John Criswell, 03/10/2010
- Re: [svadev] Documentation, Jean-Baptiste Tristan, 03/10/2010
- Re: [svadev] Documentation, Jean-Baptiste Tristan, 03/10/2010
- Re: [svadev] Documentation, Adve, Vikram Sadanand, 03/10/2010
- Re: [svadev] Documentation, John Criswell, 03/11/2010
- Re: [svadev] Documentation, Adve, Vikram Sadanand, 03/11/2010
- Re: [svadev] Documentation, Jean-Baptiste Tristan, 03/10/2010
- Re: [svadev] Documentation, Jean-Baptiste Tristan, 03/10/2010
- Re: [svadev] Documentation, John Criswell, 03/10/2010
- Re: [svadev] Documentation, Jean-Baptiste Tristan, 03/10/2010
- Re: [svadev] Documentation, Adve, Vikram Sadanand, 03/09/2010
- Re: [svadev] Documentation, John Criswell, 03/09/2010
Archive powered by MHonArc 2.6.16.