svf-tools 1.0.1020 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-tools",
3
- "version": "1.0.1020",
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
 
@@ -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, "ALLOC_RET");
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, "ALLOC_ARG");
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, "ALLOC_ARG");
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(ALLOC_ARG + number)?");
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, "REALLOC_RET");
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
 
@@ -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 (SVFUtil::isa<AllocaInst>(llvmValue))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0*Arg1")))
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("ALLOC_RET"), annotate("UNKNOWN")))
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,
@@ -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
- ALLOC_RET, // returns a ptr to a newly allocated object
12
- ALLOC_ARGi // stores a pointer to an allocated object in *argi
13
- REALLOC_RET,
14
- MEMSET, // memcpy() operations
15
- MEMCPY, // memset() operations
16
- OVERWRITE, // svf function overwrite app function
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:Arg0*Arg1")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:Arg0*Arg1")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0*Arg1")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg1")))
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("ALLOC_RET"), annotate("AllocSize:Arg1")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg1")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:Arg1")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("REALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("REALLOC_RET"), annotate("AllocSize:Arg1")))
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("REALLOC_RET"), annotate("AllocSize:Arg1")))
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("REALLOC_RET"), annotate("AllocSize:Arg1")))
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("REALLOC_RET"), annotate("AllocSize:Arg1*Arg2")))
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("REALLOC_RET"), annotate("AllocSize:UNKNOWN")))
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("REALLOC_RET"), annotate("AllocSize:Arg1")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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("ALLOC_ARG0"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_ARG0"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_ARG0"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_ARG0"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_ARG0"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_ARG0"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_ARG0"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_ARG0"), annotate("AllocSize:Arg2")))
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("ALLOC_ARG1"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_ARG2"), annotate("AllocSize:UNKNOWN")))
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("ALLOC_RET"), annotate("AllocSize:Arg0")))
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 STATIC_OBJECT;
1051
+ return NULL;
1051
1052
  }
1052
1053
 
1054
+ __attribute__((annotate("ALLOC_STACK_RET")))
1053
1055
  int **__ctype_tolower_loc(void)
1054
1056
  {
1055
- return STATIC_OBJECT;
1057
+ return NULL;
1056
1058
  }
1057
1059
 
1060
+ __attribute__((annotate("ALLOC_STACK_RET")))
1058
1061
  int **__ctype_toupper_loc(void)
1059
1062
  {
1060
- return STATIC_OBJECT;
1063
+ return NULL;
1061
1064
  }
1062
1065
 
1066
+ __attribute__((annotate("ALLOC_STACK_RET")))
1063
1067
  int *__errno_location(void)
1064
1068
  {
1065
- return STATIC_OBJECT;
1069
+ return NULL;
1066
1070
  }
1067
1071
 
1072
+ __attribute__((annotate("ALLOC_STACK_RET")))
1068
1073
  int * __h_errno_location(void)
1069
1074
  {
1070
- return STATIC_OBJECT;
1075
+ return NULL;
1071
1076
  }
1072
1077
 
1078
+ __attribute__((annotate("ALLOC_STACK_RET")))
1073
1079
  void* __res_state(void)
1074
1080
  {
1075
- return STATIC_OBJECT;
1081
+ return NULL;
1076
1082
  }
1077
1083
 
1084
+ __attribute__((annotate("ALLOC_STACK_RET")))
1078
1085
  char *asctime(const void *timeptr)
1079
1086
  {
1080
- return STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
1153
+ return NULL;
1136
1154
  }
1137
1155
 
1156
+ __attribute__((annotate("ALLOC_STACK_RET")))
1138
1157
  struct mntent *getmntent(void *stream)
1139
1158
  {
1140
- return STATIC_OBJECT;
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 STATIC_OBJECT;
1165
+ return NULL;
1146
1166
  }
1147
1167
 
1168
+ __attribute__((annotate("ALLOC_STACK_RET")))
1148
1169
  struct protoent *getprotobynumber(int proto)
1149
1170
  {
1150
- return STATIC_OBJECT;
1171
+ return NULL;
1151
1172
  }
1152
1173
 
1174
+ __attribute__((annotate("ALLOC_STACK_RET")))
1153
1175
  struct passwd *getpwent(void)
1154
1176
  {
1155
- return STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
1207
+ return NULL;
1181
1208
  }
1182
1209
 
1210
+ __attribute__((annotate("ALLOC_STACK_RET")))
1183
1211
  char * gettext(const char * msgid)
1184
1212
  {
1185
- return STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
1231
+ return NULL;
1201
1232
  }
1202
1233
 
1234
+ __attribute__((annotate("ALLOC_STACK_RET")))
1203
1235
  struct lconv *localeconv(void)
1204
1236
  {
1205
- return STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
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 STATIC_OBJECT;
1273
+ return NULL;
1236
1274
  }
1237
1275
 
1276
+ __attribute__((annotate("ALLOC_STACK_RET")))
1238
1277
  char *tparm(char *str, ...)
1239
1278
  {
1240
- return STATIC_OBJECT;
1279
+ return NULL;
1241
1280
  }
1242
1281
 
1282
+ __attribute__((annotate("ALLOC_STACK_RET")))
1243
1283
  const char *zError(int a)
1244
1284
  {
1245
- return STATIC_OBJECT;
1246
- }
1285
+ return NULL;
1286
+ }