[llvm-dev] Pool allocator + safecode

Ed Robbins via llvm-dev llvm-dev at lists.llvm.org
Thu Oct 8 02:37:16 PDT 2015

Thanks for the fast response John.

On Thu, Oct 1, 2015, at 04:51 PM, John Criswell wrote:
> Dear Ed,
> First, someone has updated the DSA code in the poolalloc project to LLVM 
> 3.7, and a Master's student worked for me over the summer to update a 
> large chunk of SAFECode to LLVM 3.7.  However, the update to LLVM 3.7 
> isn't finished (we need to finish integrating SAFECode back into Clang), 
> and my student has opted to focus on his studies instead of finishing 
> the update, so the current status of SAFECode for LLVM 3.7 is that it's 
> nearly done but suspended.
> If you want the currently updated code, you can get it at 
> https://github.com/jtcriswell/safecode-llvm37.

It's great that someone has begun work on this! I will look at it now.

Can I ask what happened to the llvm-gcc (or dragonegg) front end? I
haven't looked into how it works too much yet (I'm just starting out
with LLVM/clang etc), but if integration with the clang front end works
do you get dragonegg integration for free? From the web page I'm not
sure if dragonegg is also bit-rotting, but a gcc front end would be
useful for me.

> Second, if you need the pool allocation transform, then I must sadly 
> disappoint.  The Automatic Pool Allocation (APA) transformation has 
> suffered bit-rot over the years, and we've stopped using it.  We haven't 
> updated it to work with LLVM 3.7 and currently have no plans to do so.
> The code is still publicly available, so if you are sufficiently 
> motivated, you can update it and fix it if you would like.

I do need the APA transform. I'm a bit confused as to how the DSA code
is useful without APA? I'll cross my fingers and hope that the API
changes to 3.7 aren't too bad. Am I right in thinking that llvm-3.2 is
the last time this worked? Does the above github repo include the latest
APA stuff (albeit disabled)?
> Just out of curiosity, what are you trying to accomplish? Depending on 
> what you need, there may be simpler approaches that will require less 
> engineering effort.

We really want the all singing all dancing safecode framework with APA
as detailed in the 2005 TECS SafeCode paper (Memory Safety Without
Garbage Collection for Embedded Applications). We are trying to build a
C based embedded system that is type safe at the lowest possible run
time cost. So I am also going to modify the uninitialized pointer MMU
based stuff to work with the ARM Cortex M3 MPU. I don't think there are
any shortcuts here (I'd be happy to be proved wrong though) - we need

Thanks again,

> Regards,
> John Criswell
> On 10/1/15 10:51 AM, Ed Robbins via llvm-dev wrote:
> > Hi,
> > I'm trying to get the pool allocator and safe code building against llvm
> > trunk. I've run into a build error, and I see that in the past another
> > user was told just not to build the pool allocator for use with safecode
> > [1]. However, I really want the pool allocator transforms, so I just
> > wanted to check why the suggestion was not to use it. Has it been
> > superseded in some way by something else? Or is it just broken at the
> > moment? I'll assume the latter for now and see if I can fix it...
> >
> > Cheers
> >
> > [1] http://lists.llvm.org/pipermail/llvm-dev/2015-July/088739.html
> >
> -- 
> John Criswell
> Assistant Professor
> Department of Computer Science, University of Rochester
> http://www.cs.rochester.edu/u/criswell

More information about the llvm-dev mailing list