svadev AT lists.siebelschool.illinois.edu
Subject: Svadev mailing list
List archive
- From: Baozeng <sploving1 AT gmail.com>
- To: mentor <criswell AT illinois.edu>
- Cc: svadev AT cs.illinois.edu
- Subject: [svadev] add metadata information for global and stack variables
- Date: Wed, 30 May 2012 22:03:47 +0800
- List-archive: <http://lists.cs.uiuc.edu/pipermail/svadev>
- List-id: <svadev.cs.uiuc.edu>
Dear John,
I added metadata information for global and stack variables(commit
r157609 and commit r157670). Then I first test global variable with
the following test:
#include <stdlib.h>
int p[33];
int main() {
p[35] = 8;
return 0;
}
Then
#clang -fmemsafety -bbc globaltest.c -o test
-L/home/sploving/llvm/projects/safecode/Debug/lib
It shows the following error:
/tmp/globaltest-GkBpxH.o:globaltest.c:function sourcefile: error:
undefined reference to 'baggy.metadata1'
Its IR file is as the following(clang -g -fmemsafety -bbc globaltest.c
-o test_me.bc -c -emit-llvm
):
; ModuleID = '<stdin>'
target datalayout =
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128"
target triple = "i386-pc-linux-gnu"
@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32,
void ()* } { i32 0, void ()* @pool_ctor }]
@baggy.metadata = common global { i32, i32* }
@p = common global { [33 x i32], [116 x i8], { i32, i32* } } { [33 x
i32] zeroinitializer, [116 x i8] zeroinitializer, { i32, i32* }*
@baggy.metadata }, align 256
@baggy.metadata1 = internal constant { i32, i32* }
@sourcefile = internal constant { [28 x i8], [28 x i8], { i32, i32* }
} { [28 x i8] c"/home/sploving/globaltest.c\00", [28 x i8]
zeroinitializer, { i32, i32* }* @baggy.metadata1 }, align 64
define i32 @main() nounwind {
call void @fastlscheck_debug(i8* bitcast ({ [33 x i32], [116 x i8],
{ i32, i32* } }* @p to i8*), i8* bitcast (i32* getelementptr inbounds
([33 x i32]* getelementptr inbounds ({ [33 x i32], [116 x i8], { i32,
i32* } }* @p, i32 0, i32 0), i64 1, i32 2) to i8*), i32 132, i32 4,
i32 0, i8* getelementptr inbounds ({ [28 x i8], [28 x i8], { i32, i32*
} }* @sourcefile, i32 0, i32 0, i32 0), i32 5)
store i32 8, i32* getelementptr inbounds ([33 x i32]* getelementptr
inbounds ({ [33 x i32], [116 x i8], { i32, i32* } }* @p, i32 0, i32
0), i64 1, i32 2), align 4, !dbg !18
ret i32 0, !dbg !20
}
declare void @funccheckui(i8*, i8*)
declare i8* @poolcheckstrui(i8*, i8*)
declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind
declare void @pool_register_global(i8*, i8*, i32)
define internal void @sc.register_globals() nounwind {
entry:
call void @pool_register_global(i8* null, i8* bitcast ({ [33 x i32],
[116 x i8], { i32, i32* } }* @p to i8*), i32 132)
ret void
}
declare void @pool_register(i8*, i8*, i32)
declare void @poolcheck_freeui(i8*, i8*)
declare i32 @nullstrlen(i8*)
declare void @pool_reregister(i8*, i8*, i8*, i32)
declare void @pool_unregister(i8*, i8*)
declare void @pool_register_stack(i8*, i8*, i32)
declare void @pool_unregister_stack(i8*, i8*)
define internal void @pool_ctor() nounwind {
entry:
call void @pool_init_runtime(i32 0, i32 1, i32 0)
call void @sc.register_globals()
ret void
}
declare void @pool_init_runtime(i32, i32, i32)
declare i8* @poolcheckstrui_debug(i8*, i8*, i32, i8*, i32)
declare void @poolcheck_freeui_debug(i8*, i8*, i32, i8*, i32)
declare void @funccheckui_debug(i8*, i8*, i32, i8*, i32)
declare void @pool_register_debug(i8*, i8*, i32, i32, i8*, i32)
declare void @pool_register_stack_debug(i8*, i8*, i32, i32, i8*, i32)
declare void @pool_unregister_debug(i8*, i8*, i32, i8*, i32)
declare void @pool_unregister_stack_debug(i8*, i8*, i32, i8*, i32)
declare void @pool_reregister_debug(i8*, i8*, i8*, i32, i32, i8*, i32)
declare void @poolcheckui(i8*, i8*, i32)
declare i8* @boundscheckui(i8*, i8*, i8*)
declare i8* @exactcheck2(i8*, i8*, i32)
declare void @fastlscheck(i8*, i8*, i32, i32)
declare void @poolcheckui_debug(i8*, i8*, i32, i32, i8*, i32)
declare i8* @boundscheckui_debug(i8*, i8*, i8*, i32, i8*, i32)
declare i8* @exactcheck2_debug(i8*, i8*, i32, i32, i8*, i32)
declare void @fastlscheck_debug(i8*, i8*, i32, i32, i32, i8*, i32)
!llvm.dbg.cu = !{!0}
!0 = metadata !{i32 720913, i32 0, i32 12, metadata !"globaltest.c",
metadata !"/home/sploving", metadata !"clang version 3.0
(https://llvm.org/svn/llvm-project/safecode/trunk/tools/clang
157667)", i1 true, i1 false, metadata !"", i32 0, metadata !1,
metadata !1, metadata !3, metadata !12} ; [ DW_TAG_compile_unit ]
!1 = metadata !{metadata !2}
!2 = metadata !{i32 0}
!3 = metadata !{metadata !4}
!4 = metadata !{metadata !5}
!5 = metadata !{i32 720942, i32 0, metadata !6, metadata !"main",
metadata !"main", metadata !"", metadata !6, i32 4, metadata !7, i1
false, i1 true, i32 0, i32 0, i32 0, i32 0, i1 false, i32 ()* @main,
null, null, metadata !10} ; [ DW_TAG_subprogram ]
!6 = metadata !{i32 720937, metadata !"globaltest.c", metadata
!"/home/sploving", null} ; [ DW_TAG_file_type ]
!7 = metadata !{i32 720917, i32 0, metadata !"", i32 0, i32 0, i64 0,
i64 0, i32 0, i32 0, i32 0, metadata !8, i32 0, i32 0} ; [
DW_TAG_subroutine_type ]
!8 = metadata !{metadata !9}
!9 = metadata !{i32 720932, null, metadata !"int", null, i32 0, i64
32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
!10 = metadata !{metadata !11}
!11 = metadata !{i32 720932} ; [ DW_TAG_base_type ]
!12 = metadata !{metadata !13}
!13 = metadata !{metadata !14}
!14 = metadata !{i32 720948, i32 0, null, metadata !"p", metadata
!"p", metadata !"", metadata !6, i32 3, metadata !15, i32 0, i32 1,
[33 x i32]* getelementptr inbounds ({ [33 x i32], [116 x i8], { i32,
i32* } }* @p, i32 0, i32 0)} ; [ DW_TAG_variable ]
!15 = metadata !{i32 720897, null, metadata !"", null, i32 0, i64
1056, i64 32, i32 0, i32 0, metadata !9, metadata !16, i32 0, i32 0} ;
[ DW_TAG_array_type ]
!16 = metadata !{metadata !17}
!17 = metadata !{i32 720929, i64 0, i64 32} ; [ DW_TAG_subrange_type ]
!18 = metadata !{i32 5, i32 3, metadata !19, null}
!19 = metadata !{i32 720907, metadata !5, i32 4, i32 12, metadata !6,
i32 0} ; [ DW_TAG_lexical_block ]
!20 = metadata !{i32 6, i32 3, metadata !19, null}
What is the matter with my commit?
Another thing, are there any classic examples to test whether BBC
support global and stack variables checking?
--
Best Regards,
Baozeng Ding
OSTG,NFS,ISCAS
- [svadev] add metadata information for global and stack variables, Baozeng, 05/30/2012
- Re: [svadev] add metadata information for global and stack variables, John Criswell, 05/30/2012
- Re: [svadev] add metadata information for global and stack variables, Baozeng, 05/30/2012
- Re: [svadev] add metadata information for global and stack variables, John Criswell, 05/30/2012
- Re: [svadev] add metadata information for global and stack variables, Baozeng, 05/31/2012
- Re: [svadev] add metadata information for global and stack variables, John Criswell, 05/31/2012
- Re: [svadev] add metadata information for global and stack variables, Baozeng, 05/31/2012
- Re: [svadev] add metadata information for global and stack variables, John Criswell, 05/30/2012
- Re: [svadev] add metadata information for global and stack variables, Baozeng, 05/30/2012
- Re: [svadev] add metadata information for global and stack variables, John Criswell, 05/30/2012
Archive powered by MHonArc 2.6.16.