[llvm-commits] [poolalloc] r44245 - in /poolalloc/branches/SVA/lib: DSA/Local.cpp DSA/Makefile PoolAllocate/Makefile PoolAllocate/TransformFunctionBody.cpp
John Criswell
criswell at uiuc.edu
Mon Nov 19 13:44:41 PST 2007
Author: criswell
Date: Mon Nov 19 15:44:41 2007
New Revision: 44245
URL: http://llvm.org/viewvc/llvm-project?rev=44245&view=rev
Log:
Recognize malloc() and free() as allocators and deallocators, even in
kernel mode.
Build object files for linking with the SAFECode tool.
Use the correct type for pools when running in kernel and non-kernel mode.
Modified:
poolalloc/branches/SVA/lib/DSA/Local.cpp
poolalloc/branches/SVA/lib/DSA/Makefile
poolalloc/branches/SVA/lib/PoolAllocate/Makefile
poolalloc/branches/SVA/lib/PoolAllocate/TransformFunctionBody.cpp
Modified: poolalloc/branches/SVA/lib/DSA/Local.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/branches/SVA/lib/DSA/Local.cpp?rev=44245&r1=44244&r2=44245&view=diff
==============================================================================
--- poolalloc/branches/SVA/lib/DSA/Local.cpp (original)
+++ poolalloc/branches/SVA/lib/DSA/Local.cpp Mon Nov 19 15:44:41 2007
@@ -1802,6 +1802,7 @@
AllocList.push_back("__alloc_bootmem");
AllocList.push_back(" __get_free_pages");
AllocList.push_back("pseudo_alloc");
+ AllocList.push_back("malloc");
#if 0
FreeList.push_back("kfree");
@@ -1810,6 +1811,7 @@
FreeList.push_back("free_pages");
FreeList.push_back("kmem_cache_free");
FreeList.push_back("pseudo_free");
+ FreeList.push_back("free");
//figure out all system call numbers
Function* lrs = M.getNamedFunction("llva_register_syscall");
Modified: poolalloc/branches/SVA/lib/DSA/Makefile
URL: http://llvm.org/viewvc/llvm-project/poolalloc/branches/SVA/lib/DSA/Makefile?rev=44245&r1=44244&r2=44245&view=diff
==============================================================================
--- poolalloc/branches/SVA/lib/DSA/Makefile (original)
+++ poolalloc/branches/SVA/lib/DSA/Makefile Mon Nov 19 15:44:41 2007
@@ -8,8 +8,8 @@
##===----------------------------------------------------------------------===##
LEVEL = ../..
SHARED_LIBRARY=1
-LOADABLE_MODULE = 1
-DONT_BUILD_RELINKED=1
+#LOADABLE_MODULE = 1
+#DONT_BUILD_RELINKED=1
LIBRARYNAME = LLVMDataStructure
include $(LEVEL)/Makefile.common
Modified: poolalloc/branches/SVA/lib/PoolAllocate/Makefile
URL: http://llvm.org/viewvc/llvm-project/poolalloc/branches/SVA/lib/PoolAllocate/Makefile?rev=44245&r1=44244&r2=44245&view=diff
==============================================================================
--- poolalloc/branches/SVA/lib/PoolAllocate/Makefile (original)
+++ poolalloc/branches/SVA/lib/PoolAllocate/Makefile Mon Nov 19 15:44:41 2007
@@ -7,8 +7,8 @@
# Give the name of a library. This will build a dynamic version.
#
SHARED_LIBRARY=1
-LOADABLE_MODULE = 1
-DONT_BUILD_RELINKED=1
+#LOADABLE_MODULE = 1
+#DONT_BUILD_RELINKED=1
LIBRARYNAME=poolalloc
#
Modified: poolalloc/branches/SVA/lib/PoolAllocate/TransformFunctionBody.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/branches/SVA/lib/PoolAllocate/TransformFunctionBody.cpp?rev=44245&r1=44244&r2=44245&view=diff
==============================================================================
--- poolalloc/branches/SVA/lib/PoolAllocate/TransformFunctionBody.cpp (original)
+++ poolalloc/branches/SVA/lib/PoolAllocate/TransformFunctionBody.cpp Mon Nov 19 15:44:41 2007
@@ -649,7 +649,11 @@
//Dinakar we need pooldescriptors for allocas in the callee if it escapes
BasicBlock::iterator InsertPt = TheCall->getParent()->getParent()->front().begin();
Type *VoidPtrTy = PointerType::get(Type::SByteTy);
+#ifdef SAFECODE
+ ArgVal = new AllocaInst(ArrayType::get(VoidPtrTy, 50), 0, "PD", InsertPt);
+#else
ArgVal = new AllocaInst(ArrayType::get(VoidPtrTy, 16), 0, "PD", InsertPt);
+#endif
Value *ElSize = ConstantInt::get(Type::UIntTy,0);
Value *Align = ConstantInt::get(Type::UIntTy,0);
new CallInst(PAInfo.PoolInit, make_vector(ArgVal, ElSize, Align, 0),"", TheCall);
More information about the llvm-commits
mailing list