svf-tools 1.0.1019 → 1.0.1021
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/svf/include/Util/ExtAPI.h +3 -0
- package/svf/lib/Util/ExtAPI.cpp +10 -5
- package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +10 -0
- package/svf-llvm/lib/CppUtil.cpp +0 -5
- package/svf-llvm/lib/LLVMUtil.cpp +35 -0
- package/svf-llvm/lib/SVFIRBuilder.cpp +1 -1
- package/svf-llvm/lib/SymbolTableBuilder.cpp +3 -3
- package/svf-llvm/lib/extapi.c +176 -136
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1021",
|
|
4
4
|
"description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -91,6 +91,9 @@ public:
|
|
|
91
91
|
// Does (F) allocate a new object and assign it to one of its arguments?
|
|
92
92
|
bool is_arg_alloc(const SVFFunction *F);
|
|
93
93
|
|
|
94
|
+
// Does (F) allocate a new stack object and return it?
|
|
95
|
+
bool is_alloc_stack_ret(const SVFFunction *F);
|
|
96
|
+
|
|
94
97
|
// Get the position of argument which holds the new object
|
|
95
98
|
s32_t get_alloc_arg_pos(const SVFFunction *F);
|
|
96
99
|
|
package/svf/lib/Util/ExtAPI.cpp
CHANGED
|
@@ -216,19 +216,24 @@ bool ExtAPI::is_memset(const SVFFunction *F)
|
|
|
216
216
|
|
|
217
217
|
bool ExtAPI::is_alloc(const SVFFunction* F)
|
|
218
218
|
{
|
|
219
|
-
return F && hasExtFuncAnnotation(F, "
|
|
219
|
+
return F && hasExtFuncAnnotation(F, "ALLOC_HEAP_RET");
|
|
220
220
|
}
|
|
221
221
|
|
|
222
222
|
// Does (F) allocate a new object and assign it to one of its arguments?
|
|
223
223
|
bool ExtAPI::is_arg_alloc(const SVFFunction* F)
|
|
224
224
|
{
|
|
225
|
-
return F && hasExtFuncAnnotation(F, "
|
|
225
|
+
return F && hasExtFuncAnnotation(F, "ALLOC_HEAP_ARG");
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
bool ExtAPI::is_alloc_stack_ret(const SVFFunction* F)
|
|
229
|
+
{
|
|
230
|
+
return F && hasExtFuncAnnotation(F, "ALLOC_STACK_RET");
|
|
226
231
|
}
|
|
227
232
|
|
|
228
233
|
// Get the position of argument which holds the new object
|
|
229
234
|
s32_t ExtAPI::get_alloc_arg_pos(const SVFFunction* F)
|
|
230
235
|
{
|
|
231
|
-
std::string allocArg = getExtFuncAnnotation(F, "
|
|
236
|
+
std::string allocArg = getExtFuncAnnotation(F, "ALLOC_HEAP_ARG");
|
|
232
237
|
assert(!allocArg.empty() && "Not an alloc call via argument or incorrect extern function annotation!");
|
|
233
238
|
|
|
234
239
|
std::string number;
|
|
@@ -237,14 +242,14 @@ s32_t ExtAPI::get_alloc_arg_pos(const SVFFunction* F)
|
|
|
237
242
|
if (isdigit(c))
|
|
238
243
|
number.push_back(c);
|
|
239
244
|
}
|
|
240
|
-
assert(!number.empty() && "Incorrect naming convention for svf external functions(
|
|
245
|
+
assert(!number.empty() && "Incorrect naming convention for svf external functions(ALLOC_HEAP_ARG + number)?");
|
|
241
246
|
return std::stoi(number);
|
|
242
247
|
}
|
|
243
248
|
|
|
244
249
|
// Does (F) reallocate a new object?
|
|
245
250
|
bool ExtAPI::is_realloc(const SVFFunction* F)
|
|
246
251
|
{
|
|
247
|
-
return F && hasExtFuncAnnotation(F, "
|
|
252
|
+
return F && hasExtFuncAnnotation(F, "REALLOC_HEAP_RET");
|
|
248
253
|
}
|
|
249
254
|
|
|
250
255
|
|
|
@@ -360,9 +360,19 @@ inline bool isHeapAllocExtCall(const Instruction *inst)
|
|
|
360
360
|
return isHeapAllocExtCallViaRet(inst) || isHeapAllocExtCallViaArg(inst);
|
|
361
361
|
}
|
|
362
362
|
|
|
363
|
+
bool isStackAllocExtCallViaRet(const Instruction *inst);
|
|
364
|
+
|
|
365
|
+
inline bool isStackAllocExtCall(const Instruction *inst)
|
|
366
|
+
{
|
|
367
|
+
return isStackAllocExtCallViaRet(inst);
|
|
368
|
+
}
|
|
369
|
+
|
|
363
370
|
// Check if a given value represents a heap object.
|
|
364
371
|
bool isHeapObj(const Value* val);
|
|
365
372
|
|
|
373
|
+
// Check if a given value represents a stack object.
|
|
374
|
+
bool isStackObj(const Value* val);
|
|
375
|
+
|
|
366
376
|
/// Whether an instruction is a callsite in the application code, excluding llvm intrinsic calls
|
|
367
377
|
bool isNonInstricCallSite(const Instruction* inst);
|
|
368
378
|
|
package/svf-llvm/lib/CppUtil.cpp
CHANGED
|
@@ -705,7 +705,6 @@ bool LLVMUtil::isConstantObjSym(const Value* val)
|
|
|
705
705
|
*/
|
|
706
706
|
Set<std::string> cppUtil::extractClsNamesFromFunc(const Function *foo)
|
|
707
707
|
{
|
|
708
|
-
assert(foo->hasName() && "foo does not have a name? possible indirect call");
|
|
709
708
|
const std::string &name = foo->getName().str();
|
|
710
709
|
if (isConstructor(foo) || isDestructor(foo))
|
|
711
710
|
{
|
|
@@ -893,9 +892,6 @@ bool cppUtil::matchesLabel(const std::string &foo, const std::string &label)
|
|
|
893
892
|
*/
|
|
894
893
|
bool cppUtil::isTemplateFunc(const Function *foo)
|
|
895
894
|
{
|
|
896
|
-
/// if the function does not have a name, it can be a compiler generated internal function.
|
|
897
|
-
if(foo->hasName() == false)
|
|
898
|
-
return false;
|
|
899
895
|
const std::string &name = foo->getName().str();
|
|
900
896
|
bool matchedLabel = matchesLabel(name, znstLabel) || matchesLabel(name, znkstLabel) ||
|
|
901
897
|
matchesLabel(name, znkLabel);
|
|
@@ -911,7 +907,6 @@ bool cppUtil::isTemplateFunc(const Function *foo)
|
|
|
911
907
|
*/
|
|
912
908
|
bool cppUtil::isDynCast(const Function *foo)
|
|
913
909
|
{
|
|
914
|
-
assert(foo->hasName() && "foo does not have a name? possible indirect call");
|
|
915
910
|
return foo->getName().str() == dyncast;
|
|
916
911
|
}
|
|
917
912
|
|
|
@@ -646,6 +646,21 @@ bool LLVMUtil::isHeapAllocExtCallViaArg(const Instruction* inst)
|
|
|
646
646
|
}
|
|
647
647
|
}
|
|
648
648
|
|
|
649
|
+
bool LLVMUtil::isStackAllocExtCallViaRet(const Instruction *inst)
|
|
650
|
+
{
|
|
651
|
+
LLVMModuleSet* pSet = LLVMModuleSet::getLLVMModuleSet();
|
|
652
|
+
ExtAPI* extApi = ExtAPI::getExtAPI();
|
|
653
|
+
bool isPtrTy = inst->getType()->isPointerTy();
|
|
654
|
+
if (const CallBase* call = SVFUtil::dyn_cast<CallBase>(inst))
|
|
655
|
+
{
|
|
656
|
+
const Function* fun = call->getCalledFunction();
|
|
657
|
+
return fun && isPtrTy &&
|
|
658
|
+
extApi->is_alloc_stack_ret(pSet->getSVFFunction(fun));
|
|
659
|
+
}
|
|
660
|
+
else
|
|
661
|
+
return false;
|
|
662
|
+
}
|
|
663
|
+
|
|
649
664
|
/**
|
|
650
665
|
* Check if a given value represents a heap object.
|
|
651
666
|
*
|
|
@@ -670,6 +685,26 @@ bool LLVMUtil::isHeapObj(const Value* val)
|
|
|
670
685
|
return false;
|
|
671
686
|
}
|
|
672
687
|
|
|
688
|
+
/**
|
|
689
|
+
* @param val The value to check.
|
|
690
|
+
* @return True if the value represents a stack object, false otherwise.
|
|
691
|
+
*/
|
|
692
|
+
bool LLVMUtil::isStackObj(const Value* val)
|
|
693
|
+
{
|
|
694
|
+
if (SVFUtil::isa<AllocaInst>(val))
|
|
695
|
+
{
|
|
696
|
+
return true;
|
|
697
|
+
}
|
|
698
|
+
// Check if the value is an instruction and if it is a stack allocation external call
|
|
699
|
+
else if (SVFUtil::isa<Instruction>(val) &&
|
|
700
|
+
LLVMUtil::isStackAllocExtCall(SVFUtil::cast<Instruction>(val)))
|
|
701
|
+
{
|
|
702
|
+
return true;
|
|
703
|
+
}
|
|
704
|
+
// Return false if none of the above conditions are met
|
|
705
|
+
return false;
|
|
706
|
+
}
|
|
707
|
+
|
|
673
708
|
bool LLVMUtil::isNonInstricCallSite(const Instruction* inst)
|
|
674
709
|
{
|
|
675
710
|
bool res = false;
|
|
@@ -282,7 +282,7 @@ void SVFIRBuilder::initialiseNodes()
|
|
|
282
282
|
llvmModuleSet()->setValueAttr(llvmValue,pag->getGNode(iter->second));
|
|
283
283
|
}
|
|
284
284
|
// Check if the value is an alloca instruction and add a stack object node
|
|
285
|
-
else if (
|
|
285
|
+
else if (LLVMUtil::isStackObj(llvmValue))
|
|
286
286
|
{
|
|
287
287
|
const SVFFunction* f =
|
|
288
288
|
SVFUtil::cast<SVFInstruction>(iter->first)->getFunction();
|
|
@@ -724,13 +724,13 @@ void SymbolTableBuilder::analyzeObjType(ObjTypeInfo* typeinfo, const Value* val)
|
|
|
724
724
|
|
|
725
725
|
/*!
|
|
726
726
|
* Analyze byte size of heap alloc function (e.g. malloc/calloc/...)
|
|
727
|
-
* 1) __attribute__((annotate("
|
|
727
|
+
* 1) __attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
728
728
|
void* safe_malloc(unsigned long size).
|
|
729
729
|
Byte Size is the size(Arg0)
|
|
730
|
-
2)__attribute__((annotate("
|
|
730
|
+
2)__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0*Arg1")))
|
|
731
731
|
char* safecalloc(int a, int b)
|
|
732
732
|
Byte Size is a(Arg0) * b(Arg1)
|
|
733
|
-
3)__attribute__((annotate("
|
|
733
|
+
3)__attribute__((annotate("ALLOC_HEAP_RET"), annotate("UNKNOWN")))
|
|
734
734
|
void* __sysv_signal(int a, void *b)
|
|
735
735
|
Byte Size is Unknown
|
|
736
736
|
If all required arg values are constant, byte Size is also constant,
|
package/svf-llvm/lib/extapi.c
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#include <stddef.h>
|
|
2
2
|
#define NULL ((void *)0)
|
|
3
|
-
#define STATIC_OBJECT malloc(10)
|
|
4
3
|
|
|
5
4
|
/*
|
|
6
5
|
Functions with __attribute__((annotate("XXX"))) will be handle by SVF specifcially.
|
|
@@ -8,452 +7,453 @@
|
|
|
8
7
|
|
|
9
8
|
The description of methodProperties is as follows:
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
ALLOC_HEAP_RET, // returns a pointer to a newly allocated heap object
|
|
11
|
+
ALLOC_HEAP_ARGi // stores a pointer to an allocated object in *argi
|
|
12
|
+
ALLOC_STACK_RET, // returns a pointer to a newly allocated stack object
|
|
13
|
+
REALLOC_HEAP_RET,
|
|
14
|
+
MEMSET, // memcpy() operations
|
|
15
|
+
MEMCPY, // memset() operations
|
|
16
|
+
OVERWRITE, // svf function overwrite app function
|
|
17
17
|
*/
|
|
18
|
-
__attribute__((annotate("
|
|
18
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
19
19
|
void *malloc(unsigned long size)
|
|
20
20
|
{
|
|
21
21
|
return NULL;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
__attribute__((annotate("
|
|
24
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
25
25
|
void *fopen(const char *voidname, const char *mode)
|
|
26
26
|
{
|
|
27
27
|
return NULL;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
__attribute__((annotate("
|
|
30
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
31
31
|
void *fopen64(const char *voidname, const char *mode)
|
|
32
32
|
{
|
|
33
33
|
return NULL;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
__attribute__((annotate("
|
|
36
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
37
37
|
void *fdopen(int fd, const char *mode)
|
|
38
38
|
{
|
|
39
39
|
return NULL;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
__attribute__((annotate("
|
|
42
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
43
43
|
struct dirent64 *readdir64(void *dirp)
|
|
44
44
|
{
|
|
45
45
|
return NULL;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
__attribute__((annotate("
|
|
48
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
49
49
|
void *tmpvoid64(void)
|
|
50
50
|
{
|
|
51
51
|
return NULL;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
__attribute__((annotate("
|
|
54
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0*Arg1")))
|
|
55
55
|
void *calloc(unsigned long nitems, unsigned long size)
|
|
56
56
|
{
|
|
57
57
|
return NULL;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
__attribute__((annotate("
|
|
60
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
61
61
|
void *zmalloc(unsigned long size)
|
|
62
62
|
{
|
|
63
63
|
return NULL;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
__attribute__((annotate("
|
|
66
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
67
67
|
void *gzdopen(int fd, const char *mode)
|
|
68
68
|
{
|
|
69
69
|
return NULL;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
__attribute__((annotate("
|
|
72
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
73
73
|
void *iconv_open(const char *tocode, const char *fromcode)
|
|
74
74
|
{
|
|
75
75
|
return NULL;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
__attribute__((annotate("
|
|
78
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
79
79
|
void *lalloc(unsigned long size, int a)
|
|
80
80
|
{
|
|
81
81
|
return NULL;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
__attribute__((annotate("
|
|
84
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
85
85
|
void *lalloc_clear(unsigned long size, int a)
|
|
86
86
|
{
|
|
87
87
|
return NULL;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
__attribute__((annotate("
|
|
90
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
91
91
|
long *nhalloc(unsigned int a, const char *b, int c)
|
|
92
92
|
{
|
|
93
93
|
return NULL;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
-
__attribute__((annotate("
|
|
96
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
97
97
|
void *oballoc(unsigned long size)
|
|
98
98
|
{
|
|
99
99
|
return NULL;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
__attribute__((annotate("
|
|
102
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
103
103
|
void *popen(const char *command, const char *type)
|
|
104
104
|
{
|
|
105
105
|
return NULL;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
__attribute__((annotate("
|
|
108
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
109
109
|
void *pthread_getspecific(const char *a, const char *b)
|
|
110
110
|
{
|
|
111
111
|
return NULL;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
__attribute__((annotate("
|
|
114
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
115
115
|
struct dirent *readdir(void *dirp)
|
|
116
116
|
{
|
|
117
117
|
return NULL;
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
__attribute__((annotate("
|
|
120
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0*Arg1")))
|
|
121
121
|
void* safe_calloc(unsigned nelem, unsigned elsize)
|
|
122
122
|
{
|
|
123
123
|
return NULL;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
__attribute__((annotate("
|
|
126
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
127
127
|
void* safe_malloc(unsigned long size)
|
|
128
128
|
{
|
|
129
129
|
return NULL;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
-
__attribute__((annotate("
|
|
132
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0*Arg1")))
|
|
133
133
|
char* safecalloc(int a, int b)
|
|
134
134
|
{
|
|
135
135
|
return NULL;
|
|
136
136
|
}
|
|
137
137
|
|
|
138
|
-
__attribute__((annotate("
|
|
138
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
139
139
|
char* safemalloc(int a, int b)
|
|
140
140
|
{
|
|
141
141
|
return NULL;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
__attribute__((annotate("
|
|
144
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
145
145
|
void *setmntent(const char *voidname, const char *type)
|
|
146
146
|
{
|
|
147
147
|
return NULL;
|
|
148
148
|
}
|
|
149
149
|
|
|
150
|
-
__attribute__((annotate("
|
|
150
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
151
151
|
void *shmat(int shmid, const void *shmaddr, int shmflg)
|
|
152
152
|
{
|
|
153
153
|
return NULL;
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
__attribute__((annotate("
|
|
156
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
157
157
|
void* __sysv_signal(int a, void *b)
|
|
158
158
|
{
|
|
159
159
|
return NULL;
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
-
__attribute__((annotate("
|
|
162
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
163
163
|
void (*signal(int sig, void (*func)(int)))(int)
|
|
164
164
|
{
|
|
165
165
|
return NULL;
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
__attribute__((annotate("
|
|
168
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
169
169
|
char *tempnam(const char *dir, const char *pfx)
|
|
170
170
|
{
|
|
171
171
|
return NULL;
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
__attribute__((annotate("
|
|
174
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
175
175
|
void *tmpvoid(void)
|
|
176
176
|
{
|
|
177
177
|
return NULL;
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
__attribute__((annotate("
|
|
180
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
181
181
|
void* xcalloc(unsigned long size1, unsigned long size2)
|
|
182
182
|
{
|
|
183
183
|
return NULL;
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
-
__attribute__((annotate("
|
|
186
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
187
187
|
void* xmalloc(unsigned long size)
|
|
188
188
|
{
|
|
189
189
|
return NULL;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
__attribute__((annotate("
|
|
192
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
193
193
|
void *_Znam(unsigned long size)
|
|
194
194
|
{
|
|
195
195
|
return NULL;
|
|
196
196
|
}
|
|
197
197
|
|
|
198
|
-
__attribute__((annotate("
|
|
198
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
199
199
|
void *_Znaj(unsigned long size)
|
|
200
200
|
{
|
|
201
201
|
return NULL;
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
-
__attribute__((annotate("
|
|
204
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
205
205
|
void *_Znwj(unsigned long size)
|
|
206
206
|
{
|
|
207
207
|
return NULL;
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
-
__attribute__((annotate("
|
|
210
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
211
211
|
void *__cxa_allocate_exception(unsigned long size)
|
|
212
212
|
{
|
|
213
213
|
return NULL;
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
__attribute__((annotate("
|
|
216
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg1")))
|
|
217
217
|
void* aligned_alloc(unsigned long size1, unsigned long size2)
|
|
218
218
|
{
|
|
219
219
|
return NULL;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
__attribute__((annotate("
|
|
222
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg1")))
|
|
223
223
|
void* memalign(unsigned long size1, unsigned long size2)
|
|
224
224
|
{
|
|
225
225
|
return NULL;
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
__attribute__((annotate("
|
|
228
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
229
229
|
void *valloc(unsigned long size)
|
|
230
230
|
{
|
|
231
231
|
return NULL;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
__attribute__((annotate("
|
|
234
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg1")))
|
|
235
235
|
void *mmap64(void *addr, unsigned long len, int prot, int flags, int fildes, long off)
|
|
236
236
|
{
|
|
237
237
|
return NULL;
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
-
__attribute__((annotate("
|
|
240
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
241
241
|
char *XSetLocaleModifiers(char *a)
|
|
242
242
|
{
|
|
243
243
|
return NULL;
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
-
__attribute__((annotate("
|
|
246
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
247
247
|
char * __strdup(const char * string)
|
|
248
248
|
{
|
|
249
249
|
return NULL;
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
-
__attribute__((annotate("
|
|
252
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
253
253
|
char *crypt(const char *key, const char *salt)
|
|
254
254
|
{
|
|
255
255
|
return NULL;
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
-
__attribute__((annotate("
|
|
258
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
259
259
|
char *ctime(const void *timer)
|
|
260
260
|
{
|
|
261
261
|
return NULL;
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
__attribute__((annotate("
|
|
264
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
265
265
|
char *dlerror(void)
|
|
266
266
|
{
|
|
267
267
|
return NULL;
|
|
268
268
|
}
|
|
269
269
|
|
|
270
|
-
__attribute__((annotate("
|
|
270
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
271
271
|
void *dlopen(const char *voidname, int flags)
|
|
272
272
|
{
|
|
273
273
|
return NULL;
|
|
274
274
|
}
|
|
275
275
|
|
|
276
|
-
__attribute__((annotate("
|
|
276
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
277
277
|
const char *gai_strerror(int errcode)
|
|
278
278
|
{
|
|
279
279
|
return NULL;
|
|
280
280
|
}
|
|
281
281
|
|
|
282
|
-
__attribute__((annotate("
|
|
282
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
283
283
|
const char *gcry_cipher_algo_name(int errcode)
|
|
284
284
|
{
|
|
285
285
|
return NULL;
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
-
__attribute__((annotate("
|
|
288
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
289
289
|
const char *svfgcry_md_algo_name_(int errcode)
|
|
290
290
|
{
|
|
291
291
|
return NULL;
|
|
292
292
|
}
|
|
293
293
|
|
|
294
|
-
__attribute__((annotate("
|
|
294
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
295
295
|
char *getenv(const char *name)
|
|
296
296
|
{
|
|
297
297
|
return NULL;
|
|
298
298
|
}
|
|
299
299
|
|
|
300
|
-
__attribute__((annotate("
|
|
300
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
301
301
|
char *getlogin(void)
|
|
302
302
|
{
|
|
303
303
|
return NULL;
|
|
304
304
|
}
|
|
305
305
|
|
|
306
|
-
__attribute__((annotate("
|
|
306
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
307
307
|
char *getpass(const char *prompt)
|
|
308
308
|
{
|
|
309
309
|
return NULL;
|
|
310
310
|
}
|
|
311
311
|
|
|
312
|
-
__attribute__((annotate("
|
|
312
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
313
313
|
const char * gnutls_strerror(int error)
|
|
314
314
|
{
|
|
315
315
|
return NULL;
|
|
316
316
|
}
|
|
317
317
|
|
|
318
|
-
__attribute__((annotate("
|
|
318
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
319
319
|
const char *gpg_strerror(unsigned int a)
|
|
320
320
|
{
|
|
321
321
|
return NULL;
|
|
322
322
|
}
|
|
323
323
|
|
|
324
|
-
__attribute__((annotate("
|
|
324
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
325
325
|
const char * gzerror(void* file, int * errnum)
|
|
326
326
|
{
|
|
327
327
|
return NULL;
|
|
328
328
|
}
|
|
329
329
|
|
|
330
|
-
__attribute__((annotate("
|
|
330
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
331
331
|
char *inet_ntoa(unsigned int in)
|
|
332
332
|
{
|
|
333
333
|
return NULL;
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
-
__attribute__((annotate("
|
|
336
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
337
337
|
void *initscr(void)
|
|
338
338
|
{
|
|
339
339
|
return NULL;
|
|
340
340
|
}
|
|
341
341
|
|
|
342
|
-
__attribute__((annotate("
|
|
342
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
343
343
|
void* llvm_stacksave()
|
|
344
344
|
{
|
|
345
345
|
return NULL;
|
|
346
346
|
}
|
|
347
347
|
|
|
348
|
-
__attribute__((annotate("
|
|
348
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg1")))
|
|
349
349
|
void *mmap(void *addr, unsigned long len, int prot, int flags, int fildes, long off)
|
|
350
350
|
{
|
|
351
351
|
return NULL;
|
|
352
352
|
}
|
|
353
353
|
|
|
354
|
-
__attribute__((annotate("
|
|
354
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
355
355
|
void *newwin(int nlines, int ncols, int begin_y, int begin_x)
|
|
356
356
|
{
|
|
357
357
|
return NULL;
|
|
358
358
|
}
|
|
359
359
|
|
|
360
|
-
__attribute__((annotate("
|
|
360
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
361
361
|
char *nl_langinfo(int item)
|
|
362
362
|
{
|
|
363
363
|
return NULL;
|
|
364
364
|
}
|
|
365
365
|
|
|
366
|
-
__attribute__((annotate("
|
|
366
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
367
367
|
void *opendir(const char *name)
|
|
368
368
|
{
|
|
369
369
|
return NULL;
|
|
370
370
|
}
|
|
371
371
|
|
|
372
|
-
__attribute__((annotate("
|
|
372
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
373
373
|
void *sbrk(long increment)
|
|
374
374
|
{
|
|
375
375
|
return NULL;
|
|
376
376
|
}
|
|
377
377
|
|
|
378
|
-
__attribute__((annotate("
|
|
378
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
379
379
|
char *strdup(const char *s)
|
|
380
380
|
{
|
|
381
381
|
return NULL;
|
|
382
382
|
}
|
|
383
383
|
|
|
384
|
-
__attribute__((annotate("
|
|
384
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
385
385
|
char *strerror(int errnum)
|
|
386
386
|
{
|
|
387
387
|
return NULL;
|
|
388
388
|
}
|
|
389
389
|
|
|
390
|
-
__attribute__((annotate("
|
|
390
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
391
391
|
char *strsignal(int errnum)
|
|
392
392
|
{
|
|
393
393
|
return NULL;
|
|
394
394
|
}
|
|
395
395
|
|
|
396
|
-
__attribute__((annotate("
|
|
396
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
397
397
|
char *textdomain(const char * domainname)
|
|
398
398
|
{
|
|
399
399
|
return NULL;
|
|
400
400
|
}
|
|
401
401
|
|
|
402
|
-
__attribute__((annotate("
|
|
402
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
403
403
|
char *tgetstr(char *id, char **area)
|
|
404
404
|
{
|
|
405
405
|
return NULL;
|
|
406
406
|
}
|
|
407
407
|
|
|
408
|
-
__attribute__((annotate("
|
|
408
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
409
409
|
char *tigetstr(char *capname)
|
|
410
410
|
{
|
|
411
411
|
return NULL;
|
|
412
412
|
}
|
|
413
413
|
|
|
414
|
-
__attribute__((annotate("
|
|
414
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
415
415
|
char *tmpnam(char *s)
|
|
416
416
|
{
|
|
417
417
|
return NULL;
|
|
418
418
|
}
|
|
419
419
|
|
|
420
|
-
__attribute__((annotate("
|
|
420
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
421
421
|
char *ttyname(int fd)
|
|
422
422
|
{
|
|
423
423
|
return NULL;
|
|
424
424
|
}
|
|
425
425
|
|
|
426
|
-
__attribute__((annotate("
|
|
426
|
+
__attribute__((annotate("REALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
427
427
|
char *getcwd(char *buf, unsigned long size)
|
|
428
428
|
{
|
|
429
429
|
return NULL;
|
|
430
430
|
}
|
|
431
431
|
|
|
432
|
-
__attribute__((annotate("
|
|
432
|
+
__attribute__((annotate("REALLOC_HEAP_RET"), annotate("AllocSize:Arg1")))
|
|
433
433
|
char *mem_realloc(void *ptr, unsigned long size)
|
|
434
434
|
{
|
|
435
435
|
return NULL;
|
|
436
436
|
}
|
|
437
437
|
|
|
438
|
-
__attribute__((annotate("
|
|
438
|
+
__attribute__((annotate("REALLOC_HEAP_RET"), annotate("AllocSize:Arg1")))
|
|
439
439
|
char *realloc(void *ptr, unsigned long size)
|
|
440
440
|
{
|
|
441
441
|
return NULL;
|
|
442
442
|
}
|
|
443
443
|
|
|
444
|
-
__attribute__((annotate("
|
|
444
|
+
__attribute__((annotate("REALLOC_HEAP_RET"), annotate("AllocSize:Arg1")))
|
|
445
445
|
void* safe_realloc(void *p, unsigned long n)
|
|
446
446
|
{
|
|
447
447
|
return NULL;
|
|
448
448
|
}
|
|
449
449
|
|
|
450
|
-
__attribute__((annotate("
|
|
450
|
+
__attribute__((annotate("REALLOC_HEAP_RET"), annotate("AllocSize:Arg1*Arg2")))
|
|
451
451
|
void* saferealloc(void *p, unsigned long n1, unsigned long n2)
|
|
452
452
|
{
|
|
453
453
|
return NULL;
|
|
454
454
|
}
|
|
455
455
|
|
|
456
|
-
__attribute__((annotate("
|
|
456
|
+
__attribute__((annotate("REALLOC_HEAP_RET"), annotate("AllocSize:UNKNOWN")))
|
|
457
457
|
void* safexrealloc()
|
|
458
458
|
{
|
|
459
459
|
return NULL;
|
|
@@ -475,85 +475,85 @@ char* strsep(char** stringp, const char* delim)
|
|
|
475
475
|
return *stringp;
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
-
__attribute__((annotate("
|
|
478
|
+
__attribute__((annotate("REALLOC_HEAP_RET"), annotate("AllocSize:Arg1")))
|
|
479
479
|
void *xrealloc(void *ptr, unsigned long bytes)
|
|
480
480
|
{
|
|
481
481
|
return NULL;
|
|
482
482
|
}
|
|
483
483
|
|
|
484
|
-
__attribute__((annotate("
|
|
484
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
485
485
|
void *_Znwm(unsigned long size)
|
|
486
486
|
{
|
|
487
487
|
return NULL;
|
|
488
488
|
}
|
|
489
489
|
|
|
490
|
-
__attribute__((annotate("
|
|
490
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
491
491
|
void *_ZnwmRKSt9nothrow_t(unsigned long size, void *)
|
|
492
492
|
{
|
|
493
493
|
return NULL;
|
|
494
494
|
}
|
|
495
495
|
|
|
496
|
-
__attribute__((annotate("
|
|
496
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
497
497
|
void *_ZnamRKSt9nothrow_t(unsigned long size, void *)
|
|
498
498
|
{
|
|
499
499
|
return NULL;
|
|
500
500
|
}
|
|
501
501
|
|
|
502
|
-
__attribute__((annotate("
|
|
502
|
+
__attribute__((annotate("ALLOC_HEAP_ARG0"), annotate("AllocSize:UNKNOWN")))
|
|
503
503
|
int asprintf(char **restrict strp, const char *restrict fmt, ...)
|
|
504
504
|
{
|
|
505
505
|
return 0;
|
|
506
506
|
}
|
|
507
507
|
|
|
508
|
-
__attribute__((annotate("
|
|
508
|
+
__attribute__((annotate("ALLOC_HEAP_ARG0"), annotate("AllocSize:UNKNOWN")))
|
|
509
509
|
int vasprintf(char **strp, const char *fmt, void* ap)
|
|
510
510
|
{
|
|
511
511
|
return 0;
|
|
512
512
|
}
|
|
513
513
|
|
|
514
|
-
__attribute__((annotate("
|
|
514
|
+
__attribute__((annotate("ALLOC_HEAP_ARG0"), annotate("AllocSize:UNKNOWN")))
|
|
515
515
|
int db_create(void **dbp, void *dbenv, unsigned int flags)
|
|
516
516
|
{
|
|
517
517
|
return 0;
|
|
518
518
|
}
|
|
519
519
|
|
|
520
|
-
__attribute__((annotate("
|
|
520
|
+
__attribute__((annotate("ALLOC_HEAP_ARG0"), annotate("AllocSize:UNKNOWN")))
|
|
521
521
|
int gnutls_pkcs12_bag_init(void *a)
|
|
522
522
|
{
|
|
523
523
|
return 0;
|
|
524
524
|
}
|
|
525
525
|
|
|
526
|
-
__attribute__((annotate("
|
|
526
|
+
__attribute__((annotate("ALLOC_HEAP_ARG0"), annotate("AllocSize:UNKNOWN")))
|
|
527
527
|
int gnutls_pkcs12_init(void *a)
|
|
528
528
|
{
|
|
529
529
|
return 0;
|
|
530
530
|
}
|
|
531
531
|
|
|
532
|
-
__attribute__((annotate("
|
|
532
|
+
__attribute__((annotate("ALLOC_HEAP_ARG0"), annotate("AllocSize:UNKNOWN")))
|
|
533
533
|
int gnutls_x509_crt_init(void *a)
|
|
534
534
|
{
|
|
535
535
|
return 0;
|
|
536
536
|
}
|
|
537
537
|
|
|
538
|
-
__attribute__((annotate("
|
|
538
|
+
__attribute__((annotate("ALLOC_HEAP_ARG0"), annotate("AllocSize:UNKNOWN")))
|
|
539
539
|
int gnutls_x509_privkey_init(void *a)
|
|
540
540
|
{
|
|
541
541
|
return 0;
|
|
542
542
|
}
|
|
543
543
|
|
|
544
|
-
__attribute__((annotate("
|
|
544
|
+
__attribute__((annotate("ALLOC_HEAP_ARG0"), annotate("AllocSize:Arg2")))
|
|
545
545
|
int posix_memalign(void **a, unsigned long b, unsigned long c)
|
|
546
546
|
{
|
|
547
547
|
return 0;
|
|
548
548
|
}
|
|
549
549
|
|
|
550
|
-
__attribute__((annotate("
|
|
550
|
+
__attribute__((annotate("ALLOC_HEAP_ARG1"), annotate("AllocSize:UNKNOWN")))
|
|
551
551
|
int scandir(const char *restrict dirp, struct dirent ***restrict namelist, int (*filter)(const struct dirent *), int (*compar)(const struct dirent **, const struct dirent **))
|
|
552
552
|
{
|
|
553
553
|
return 0;
|
|
554
554
|
}
|
|
555
555
|
|
|
556
|
-
__attribute__((annotate("
|
|
556
|
+
__attribute__((annotate("ALLOC_HEAP_ARG2"), annotate("AllocSize:UNKNOWN")))
|
|
557
557
|
int XmbTextPropertyToTextList(void *a, void *b, char ***c, int *d)
|
|
558
558
|
{
|
|
559
559
|
return 0;
|
|
@@ -727,7 +727,7 @@ void* _ZNSt5arrayIPK1ALm2EE4backEv(void *arg)
|
|
|
727
727
|
return ptr2;
|
|
728
728
|
}
|
|
729
729
|
|
|
730
|
-
__attribute__((annotate("
|
|
730
|
+
__attribute__((annotate("ALLOC_HEAP_RET"), annotate("AllocSize:Arg0")))
|
|
731
731
|
void *SyGetmem(unsigned long size)
|
|
732
732
|
{
|
|
733
733
|
return NULL;
|
|
@@ -1045,202 +1045,242 @@ void _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_(void **arg
|
|
|
1045
1045
|
*arg0 = arg1;
|
|
1046
1046
|
}
|
|
1047
1047
|
|
|
1048
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1048
1049
|
const unsigned short **__ctype_b_loc(void)
|
|
1049
1050
|
{
|
|
1050
|
-
return
|
|
1051
|
+
return NULL;
|
|
1051
1052
|
}
|
|
1052
1053
|
|
|
1054
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1053
1055
|
int **__ctype_tolower_loc(void)
|
|
1054
1056
|
{
|
|
1055
|
-
return
|
|
1057
|
+
return NULL;
|
|
1056
1058
|
}
|
|
1057
1059
|
|
|
1060
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1058
1061
|
int **__ctype_toupper_loc(void)
|
|
1059
1062
|
{
|
|
1060
|
-
return
|
|
1063
|
+
return NULL;
|
|
1061
1064
|
}
|
|
1062
1065
|
|
|
1066
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1063
1067
|
int *__errno_location(void)
|
|
1064
1068
|
{
|
|
1065
|
-
return
|
|
1069
|
+
return NULL;
|
|
1066
1070
|
}
|
|
1067
1071
|
|
|
1072
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1068
1073
|
int * __h_errno_location(void)
|
|
1069
1074
|
{
|
|
1070
|
-
return
|
|
1075
|
+
return NULL;
|
|
1071
1076
|
}
|
|
1072
1077
|
|
|
1078
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1073
1079
|
void* __res_state(void)
|
|
1074
1080
|
{
|
|
1075
|
-
return
|
|
1081
|
+
return NULL;
|
|
1076
1082
|
}
|
|
1077
1083
|
|
|
1084
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1078
1085
|
char *asctime(const void *timeptr)
|
|
1079
1086
|
{
|
|
1080
|
-
return
|
|
1087
|
+
return NULL;
|
|
1081
1088
|
}
|
|
1082
1089
|
|
|
1090
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1083
1091
|
char * bindtextdomain(const char * domainname, const char * dirname)
|
|
1084
1092
|
{
|
|
1085
|
-
return
|
|
1093
|
+
return NULL;
|
|
1086
1094
|
}
|
|
1087
1095
|
|
|
1096
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1088
1097
|
char * bind_textdomain_codeset(const char * domainname, const char * codeset)
|
|
1089
1098
|
{
|
|
1090
|
-
return
|
|
1099
|
+
return NULL;
|
|
1091
1100
|
}
|
|
1092
1101
|
|
|
1102
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1093
1103
|
char *ctermid(char *s)
|
|
1094
1104
|
{
|
|
1095
1105
|
return s;
|
|
1096
1106
|
}
|
|
1097
1107
|
|
|
1108
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1098
1109
|
char * dcgettext(const char * domainname, const char * msgid, int category)
|
|
1099
1110
|
{
|
|
1100
|
-
return
|
|
1111
|
+
return NULL;
|
|
1101
1112
|
}
|
|
1102
1113
|
|
|
1114
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1103
1115
|
char * dgettext(const char * domainname, const char * msgid)
|
|
1104
1116
|
{
|
|
1105
|
-
return
|
|
1117
|
+
return NULL;
|
|
1106
1118
|
}
|
|
1107
1119
|
|
|
1120
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1108
1121
|
char * dngettext(const char * domainname, const char * msgid, const char * msgid_plural, unsigned long int n)
|
|
1109
1122
|
{
|
|
1110
|
-
return
|
|
1123
|
+
return NULL;
|
|
1111
1124
|
}
|
|
1112
1125
|
|
|
1126
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1113
1127
|
struct group *getgrgid(unsigned int gid)
|
|
1114
1128
|
{
|
|
1115
|
-
return
|
|
1129
|
+
return NULL;
|
|
1116
1130
|
}
|
|
1117
1131
|
|
|
1132
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1118
1133
|
struct group *getgrnam(const char *name)
|
|
1119
1134
|
{
|
|
1120
|
-
return
|
|
1135
|
+
return NULL;
|
|
1121
1136
|
}
|
|
1122
1137
|
|
|
1138
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1123
1139
|
struct hostent *gethostbyaddr(const void *addr, unsigned int len, int type)
|
|
1124
1140
|
{
|
|
1125
|
-
return
|
|
1141
|
+
return NULL;
|
|
1126
1142
|
}
|
|
1127
1143
|
|
|
1144
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1128
1145
|
struct hostent *gethostbyname(const char *name)
|
|
1129
1146
|
{
|
|
1130
|
-
return
|
|
1147
|
+
return NULL;
|
|
1131
1148
|
}
|
|
1132
1149
|
|
|
1150
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1133
1151
|
struct hostent *gethostbyname2(const char *name, int af)
|
|
1134
1152
|
{
|
|
1135
|
-
return
|
|
1153
|
+
return NULL;
|
|
1136
1154
|
}
|
|
1137
1155
|
|
|
1156
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1138
1157
|
struct mntent *getmntent(void *stream)
|
|
1139
1158
|
{
|
|
1140
|
-
return
|
|
1159
|
+
return NULL;
|
|
1141
1160
|
}
|
|
1142
1161
|
|
|
1162
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1143
1163
|
struct protoent *getprotobyname(const char *name)
|
|
1144
1164
|
{
|
|
1145
|
-
return
|
|
1165
|
+
return NULL;
|
|
1146
1166
|
}
|
|
1147
1167
|
|
|
1168
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1148
1169
|
struct protoent *getprotobynumber(int proto)
|
|
1149
1170
|
{
|
|
1150
|
-
return
|
|
1171
|
+
return NULL;
|
|
1151
1172
|
}
|
|
1152
1173
|
|
|
1174
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1153
1175
|
struct passwd *getpwent(void)
|
|
1154
1176
|
{
|
|
1155
|
-
return
|
|
1177
|
+
return NULL;
|
|
1156
1178
|
}
|
|
1157
1179
|
|
|
1180
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1158
1181
|
struct passwd *getpwnam(const char *name)
|
|
1159
1182
|
{
|
|
1160
|
-
return
|
|
1183
|
+
return NULL;
|
|
1161
1184
|
}
|
|
1162
1185
|
|
|
1186
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1163
1187
|
struct passwd *getpwuid(unsigned int uid)
|
|
1164
1188
|
{
|
|
1165
|
-
return
|
|
1189
|
+
return NULL;
|
|
1166
1190
|
}
|
|
1167
1191
|
|
|
1192
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1168
1193
|
struct servent *getservbyname(const char *name, const char *proto)
|
|
1169
1194
|
{
|
|
1170
|
-
return
|
|
1195
|
+
return NULL;
|
|
1171
1196
|
}
|
|
1172
1197
|
|
|
1198
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1173
1199
|
struct servent *getservbyport(int port, const char *proto)
|
|
1174
1200
|
{
|
|
1175
|
-
return
|
|
1201
|
+
return NULL;
|
|
1176
1202
|
}
|
|
1177
1203
|
|
|
1204
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1178
1205
|
struct spwd *getspnam(const char *name)
|
|
1179
1206
|
{
|
|
1180
|
-
return
|
|
1207
|
+
return NULL;
|
|
1181
1208
|
}
|
|
1182
1209
|
|
|
1210
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1183
1211
|
char * gettext(const char * msgid)
|
|
1184
1212
|
{
|
|
1185
|
-
return
|
|
1213
|
+
return NULL;
|
|
1186
1214
|
}
|
|
1187
1215
|
|
|
1216
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1188
1217
|
struct tm *gmtime(const void *timer)
|
|
1189
1218
|
{
|
|
1190
|
-
return
|
|
1219
|
+
return NULL;
|
|
1191
1220
|
}
|
|
1192
1221
|
|
|
1222
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1193
1223
|
const char *gnu_get_libc_version(void)
|
|
1194
1224
|
{
|
|
1195
|
-
return
|
|
1225
|
+
return NULL;
|
|
1196
1226
|
}
|
|
1197
1227
|
|
|
1228
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1198
1229
|
const char * gnutls_check_version(const char * req_version)
|
|
1199
1230
|
{
|
|
1200
|
-
return
|
|
1231
|
+
return NULL;
|
|
1201
1232
|
}
|
|
1202
1233
|
|
|
1234
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1203
1235
|
struct lconv *localeconv(void)
|
|
1204
1236
|
{
|
|
1205
|
-
return
|
|
1237
|
+
return NULL;
|
|
1206
1238
|
}
|
|
1207
1239
|
|
|
1240
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1208
1241
|
struct tm *localtime(const void *timer)
|
|
1209
1242
|
{
|
|
1210
|
-
return
|
|
1243
|
+
return NULL;
|
|
1211
1244
|
}
|
|
1212
1245
|
|
|
1246
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1213
1247
|
char * ngettext(const char * msgid, const char * msgid_plural, unsigned long int n)
|
|
1214
1248
|
{
|
|
1215
|
-
return
|
|
1249
|
+
return NULL;
|
|
1216
1250
|
}
|
|
1217
1251
|
|
|
1252
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1218
1253
|
void *pango_cairo_font_map_get_default(void)
|
|
1219
1254
|
{
|
|
1220
|
-
return
|
|
1255
|
+
return NULL;
|
|
1221
1256
|
}
|
|
1222
1257
|
|
|
1258
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1223
1259
|
char *re_comp(const char *regex)
|
|
1224
1260
|
{
|
|
1225
|
-
return
|
|
1261
|
+
return NULL;
|
|
1226
1262
|
}
|
|
1227
1263
|
|
|
1264
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1228
1265
|
char *setlocale(int category, const char *locale)
|
|
1229
1266
|
{
|
|
1230
|
-
return
|
|
1267
|
+
return NULL;
|
|
1231
1268
|
}
|
|
1232
1269
|
|
|
1270
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1233
1271
|
char *tgoto(const char *cap, int col, int row)
|
|
1234
1272
|
{
|
|
1235
|
-
return
|
|
1273
|
+
return NULL;
|
|
1236
1274
|
}
|
|
1237
1275
|
|
|
1276
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1238
1277
|
char *tparm(char *str, ...)
|
|
1239
1278
|
{
|
|
1240
|
-
return
|
|
1279
|
+
return NULL;
|
|
1241
1280
|
}
|
|
1242
1281
|
|
|
1282
|
+
__attribute__((annotate("ALLOC_STACK_RET")))
|
|
1243
1283
|
const char *zError(int a)
|
|
1244
1284
|
{
|
|
1245
|
-
return
|
|
1246
|
-
}
|
|
1285
|
+
return NULL;
|
|
1286
|
+
}
|