| 193 | } |
| 194 | |
| 195 | void UTModify::generateFuzzVarDeclarations( |
| 196 | std::map<std::string, std::string> &FuzzVarDecls, |
| 197 | std::map<std::string, std::vector<std::string>> &FuzzVarFlagDecls, |
| 198 | const FuzzInput &Input) const { |
| 199 | const auto &Def = Input.getDef(); |
| 200 | const auto &DataType = Def.DataType; |
| 201 | assert(DataType && "Unexpected Program State"); |
| 202 | |
| 203 | auto Path = Def.Path; |
| 204 | auto VarName = Input.getFuzzVarName(); |
| 205 | auto TypeName = generateDeclTypeName(*DataType); |
| 206 | auto Declaration = "extern " + TypeName + " " + VarName + ";\n"; |
| 207 | if (DataType->isFixedLengthArrayPtr()) |
| 208 | Declaration += |
| 209 | "extern unsigned " + util::getAvasFuzzSizeVarName(VarName) + ";\n"; |
| 210 | |
| 211 | auto Iter = FuzzVarDecls.find(Path); |
| 212 | if (Iter == FuzzVarDecls.end()) |
| 213 | FuzzVarDecls.emplace(Path, Declaration); |
| 214 | else |
| 215 | Iter->second += Declaration; |
| 216 | |
| 217 | if (Def.Declaration == Definition::DeclType_StaticLocal) { |
| 218 | auto Iter = FuzzVarFlagDecls.find(Path); |
| 219 | auto FlagVarName = util::getStaticLocalFlagVarName(VarName); |
| 220 | if (Iter == FuzzVarFlagDecls.end()) |
| 221 | FuzzVarFlagDecls.emplace(Path, std::vector<std::string>({FlagVarName})); |
| 222 | else |
| 223 | Iter->second.emplace_back(FlagVarName); |
| 224 | } |
| 225 | } |
| 226 | |
| 227 | void UTModify::generateFuzzVarGlobalSetters( |
| 228 | std::map<std::string, std::vector<GlobalVarSetter>> &Setters, |
nothing calls this directly
no test coverage detected