1<?xml version="1.0" encoding='UTF-8'?> 2<template 3 __format__="1" 4 name="POSIX/gcc multithreaded standalone" 5 prefix="art_" 6 errlogmode="tracefile.err" 7 trap_on_io_err="true" 8 remote_mode="false" 9 force_flush="true" 10 fork_enabled="false" 11 multithreaded="true" 12 threading="posix" 13 compiler_type="gcc" 14 trace_target="tracefile.out"> 15 16 <!-- domain names have to be spaces-free --> 17 18 <domain 19 name="heap-memory" 20 float_handle="true" 21 handle="void*" 22 includesGlobal="true" 23 > 24 <!-- bad_handle --> 25 <expr 26 oper="==" 27 type="void*" 28 value="NULL" 29 /> 30 <includes>stdlib.h</includes> 31 <tor 32 __type__="allocator" 33 name="malloc" 34 float_arg_n1="1" 35 float_arg_n2="0" 36 is_handle_arg_out="true" 37 handle_arg_out="0" 38 cpp_alias="" 39 > 40 <validateDom_before></validateDom_before> 41 <args 42 type="void*" 43 name="" 44 /> 45 <args 46 type="size_t" 47 name="size" 48 /> 49 <!-- badRetCode --> 50 <expr 51 oper="==" 52 type="void*" 53 value="NULL" 54 /> 55 </tor> 56 57 <tor 58 __type__="allocator" 59 name="calloc" 60 float_arg_n1="1" 61 float_arg_n2="2" 62 is_handle_arg_out="true" 63 handle_arg_out="0" 64 cpp_alias="" 65 > 66 <validateDom_before></validateDom_before> 67 <args 68 type="void*" 69 name="" 70 /> 71 <args 72 type="size_t" 73 name="nmemb" 74 /> 75 <args 76 type="size_t" 77 name="size" 78 /> 79 80 <!-- badRetCode --> 81 <expr 82 oper="==" 83 type="void*" 84 value="NULL" 85 /> 86 </tor> 87 88 <!-- FIXME 89 т.к. is_handle_arg_out="false", то handle_arg_out может быть пустым или 90 нужна какая-то фиктивная цифра для разборщика? --> 91 <tor 92 __type__="deallocator" 93 name="free" 94 float_arg_n1="0" 95 float_arg_n2="0" 96 is_handle_arg_out="false" 97 handle_arg_out="" 98 cpp_alias="" 99 > 100 <validateDom_before>-</validateDom_before> 101 <validateDom_before>heap-memory</validateDom_before> 102 <args 103 type="void" 104 name="" 105 /> 106 <args 107 type="void *" 108 name="ptr" 109 /> 110 111 <!-- badRetCode --> 112 <expr 113 oper="" 114 type="void" 115 value="" 116 /> 117 118 </tor> 119 120 <!-- torspec:reallocator --> 121 <tor 122 __type__="reallocator" 123 name="realloc" 124 float_arg_n1="2" 125 float_arg_n2="0" 126 is_handle_arg_out="true" 127 handle_arg_out="0" 128 cpp_alias="" 129 > 130 <validateDom_before>-</validateDom_before> 131 <validateDom_before>heap-memory</validateDom_before> 132 <args 133 type="void*" 134 name="" 135 /> 136 <args 137 type="void*" 138 name="ptr" 139 /> 140 <args 141 type="size_t" 142 name="size" 143 /> 144 <!-- badRetCode --> 145 <expr 146 oper="==" 147 type="void*" 148 value="NULL" 149 /> 150 </tor> 151 </domain> 152 153 <!-- 154 <specialTors> 155 </specialTors> 156 --> 157 158 <domain 159 name="stream-io" 160 float_handle="false" 161 handle="FILE*" 162 includesGlobal="true" 163 > 164 165 <!-- bad_handle --> 166 <expr 167 oper="==" 168 type="FILE*" 169 value="NULL" 170 /> 171 <includes>stdio.h</includes> 172 <tor 173 __type__="allocator" 174 name="fopen" 175 float_arg_n1="0" 176 float_arg_n2="0" 177 is_handle_arg_out="true" 178 handle_arg_out="0" 179 cpp_alias="" 180 > 181 <validateDom_before></validateDom_before> 182 <args 183 type="FILE*" 184 name="" 185 /> 186 <args 187 type="const char*" 188 name="path" 189 /> 190 <args 191 type="const char*" 192 name="mode" 193 /> 194 195 <!-- badRetCode --> 196 <expr 197 oper="==" 198 type="FILE*" 199 value="NULL" 200 /> 201 </tor> 202 203 <tor 204 __type__="operator" 205 name="fwrite" 206 float_arg_n1="2" 207 float_arg_n2="3" 208 is_handle_arg_out="false" 209 handle_arg_out="0" 210 cpp_alias="" 211 > 212 <validateDom_before>-</validateDom_before> 213 <validateDom_before>heap-memory</validateDom_before> 214 <validateDom_before>-</validateDom_before> 215 <validateDom_before>-</validateDom_before> 216 <validateDom_before>stream-io</validateDom_before> 217 <args 218 type="size_t" 219 name="" 220 /> 221 <args 222 type="void*" 223 name="ptr" 224 /> 225 <args 226 type="size_t" 227 name="size" 228 /> 229 <args 230 type="size_t" 231 name="nmemb" 232 /> 233 <args 234 type="FILE*" 235 name="stream" 236 /> 237 238 <!-- badRetCode --> 239 <!-- тут RetCode не так прост, например: If an error, or the end-of-file 240 is reached, the return value is a short item count (or zero). 241 fread() does not distinguish between end-of-file and error, and callers 242 must use feof(3) and ferror(3) to determine which occurred. --> 243 <expr 244 oper="" 245 type="" 246 value="" 247 /> 248 </tor> 249 250 <tor 251 __type__="deallocator" 252 name="fclose" 253 float_arg_n1="0" 254 float_arg_n2="0" 255 is_handle_arg_out="false" 256 handle_arg_out="" 257 cpp_alias="" 258 > 259 <validateDom_before>-</validateDom_before> 260 <validateDom_before>stream-io</validateDom_before> 261 <args 262 type="int" 263 name="" 264 /> 265 <args 266 type="FILE*" 267 name="fp" 268 /> 269 <!-- badRetCode --> 270 <expr 271 oper="!=" 272 type="int" 273 value="0" 274 /> 275 </tor> 276 </domain> 277</template> 278