mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 21:32:10 +00:00
[dfsan] Treat vararg custom functions like unimplemented functions.
Because declarations of these functions can appear in places like autoconf checks, they have to be handled somehow, even though we do not support vararg custom functions. We do so by printing a warning and calling the uninstrumented function, as we do for unimplemented functions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216042 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3ef392c4e2
commit
b3b125aafc
@ -476,7 +476,7 @@ DataFlowSanitizer::WrapperKind DataFlowSanitizer::getWrapperKind(Function *F) {
|
||||
return WK_Functional;
|
||||
if (ABIList.isIn(*F, "discard"))
|
||||
return WK_Discard;
|
||||
if (ABIList.isIn(*F, "custom"))
|
||||
if (ABIList.isIn(*F, "custom") && !F->isVarArg())
|
||||
return WK_Custom;
|
||||
|
||||
return WK_Warning;
|
||||
|
@ -16,6 +16,8 @@ declare void @custom1(i32 %a, i32 %b)
|
||||
|
||||
declare i32 @custom2(i32 %a, i32 %b)
|
||||
|
||||
declare void @custom3(...)
|
||||
|
||||
declare void @customcb(i32 (i32)* %cb)
|
||||
|
||||
declare i32 @cb(i32)
|
||||
@ -33,6 +35,10 @@ define void @f() {
|
||||
; CHECK: call void @__dfsw_customcb({{.*}} @"dfst0$customcb", i8* bitcast ({{.*}} @"dfs$cb" to i8*), i16 0)
|
||||
call void @customcb(i32 (i32)* @cb)
|
||||
|
||||
; CHECK: call void @__dfsan_unimplemented
|
||||
; CHECK: call void (...)* @custom3()
|
||||
call void (...)* @custom3()
|
||||
|
||||
ret void
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user