SVF-2.8
Major changes
- Improved handling of external functions using a simple extapi.c file to link to the main module.
- API refactoring to address constant field offset for field-sensitivity.
- Refactored abstract execution code and implemented WTO (Weak Topological Ordering).
- Development of Control Dependence and BlockCFG classes.
- Enhancements to CMake for improved handling of dynamically linked libraries.
- Refactoring in preparation for the later adoption of opaque pointers.
- Implemented pointee type and inferred the number of fields in a heap object.
- Implemented symbolic abstraction.
- Bug fixes for Saber in abstract execution, graph construction, and more.
What's Changed
- fix bitvec err for sse by @bjjwwang in #1156
- cfl graphbuilder update by @TalbenXu in #1158
- fix issue 1139 by @JasonZhongZexin in #1155
- fix typo by @canliture in #1160
- Support non-throwing C++
new
functions in ExtAPI by @adriaanjacobs in #1163 - Spelling Fixes by @davis-matthew in #1164
- Replace ExAPI.json with extapi.c (extapi.c explaination wiki: https://github.com/SVF-tools/SVF/wiki/Handling-External-APIs-with-extapi.c) by @shuangxiangkan in #1165
- Put the extapi.c into the svf-llvm/lib/ by @shuangxiangkan in #1168
- Remove “attribute((annotate("SVF")))” from extapi.c by @shuangxiangkan in #1169
- support main() decl in ext.bc and main() def in app.bc(). by @bjjwwang in #1170
- ExtAPI refactor by @bjjwwang in #1174
- remove duplicate/useless enum field 'FunRet' by @canliture in #1175
- fix a bug in computeConstantOffset by @bjjwwang in #1177
- fix a nullptr dereference error by @canliture in #1179
- Fix the bug of failing to find extapi.bc in npm by @shuangxiangkan in #1183
- Add comments to some APIs in SVFIRExtAPI.cpp by @shuangxiangkan in #1185
- fix getgepoffset and accumulateconstantOffset by @bjjwwang in #1184
- Remove "STATIC" annotation in extapi.bc by @shuangxiangkan in #1188
- fix a bug that leads to get many incorrect switch target case value -1 by @canliture in #1191
- add reshapeValue() to getOffsetfromGepPair by @bjjwwang in #1192
- replace int64 with s64 in IntervalValue/Z3Expr by @bjjwwang in #1195
- 0822 wip by @JasonZhongZexin in #1196
- fix incorrect iterator comparision by @canliture in #1199
- Remove redundant functions, annotations and global variables introduc… by @shuangxiangkan in #1204
- Add control dependence and ICFG Wrapper by @jumormt in #1203
- fix compiler err in gcc13.2 by @bjjwwang in #1209
- Add filesystem read/write in SVFLoopAndDoom by @xudon9 in #1207
- Fix some issues about ExtAPI by @shuangxiangkan in #1210
- Fix the extapi.bc path not found issue by @shuangxiangkan in #1212
- Fix typo and simplify code in ExtAPI by @shuangxiangkan in #1215
- Merge ICFGWrapper with CFBasicBlockG by @jumormt in #1218
- fix svf doxygen publish err by @JasonZhongZexin in #1219
- Add func to first BB by @jumormt in #1220
- remove bbToNode from CFBasicBlockGraph by @bjjwwang in #1221
- fix control dependence bug: no nearest common post dominator by @jumormt in #1223
- Split callsite and return site in a CFBBNode by @jumormt in #1227
- fix potential null dereference by @jumormt in #1228
- Allow building of shared libraries by @xudon9 in #1229
- Fix Wto for CFBBGraph by @bjjwwang in #1230
- fix LLVM_DIR rewrite by LLVMConfig.cmake by @jumormt in #1232
- fix WTO and CDG build bug by @jumormt in #1233
- fix mac dynlib build failed by @JasonZhongZexin in #1237
- Suppress warnings for unused variables when SVF_ENABLE_ASSERTIONS is … by @hjjandy in #1238
- fix getByteOffsets in GepStmt and SVFIR2ItvExeState by @bjjwwang in #1240
- add coverage and fix struct gep accumulatedGepByteOffset() by @bjjwwang in #1241
- use getPtrElementType rather than getpointerelementtype by @jumormt in #1245
- fix 2 bug by @bjjwwang in #1246
- fix if offsetVarAndGepTypePair.second is nullptr by @bjjwwang in #1247
- Add BinaryOp and UnaryOp into BreakConstantExpr by @yuleisui in #1249
- fix intervalValue compare operators by @bjjwwang in #1251
- fix CFBBGraph for recursive funcs by @bjjwwang in #1253
- Load extapi module in buildSVFModule(Module& mod) by @shuangxiangkan in #1258
- 1st PR of more precise ObjTypeInfo by @bjjwwang in #1255
- 2nd PR. Add SVF's byte size and fix some api use by @bjjwwang in #1260
- strong update for translating phi by @jumormt in #1263
- fix a bug: 'getExitBB' of SVFFunction may get incorrect exit block. by @canliture in #1262
- handling fun exit node by @jumormt in #1266
- add range limit to IntegerType by @bjjwwang in #1264
- rename API names in AE by @jumormt in #1267
- rename getConstantFldIdx to getConstantStructFldIdx by @bjjwwang in #1268
- add source element type in accesspath by @jumormt in #1269
- rename sourceElementType, fix computeConstantOffset bug by @jumormt in #1271
- fix offset>=so.size() assertion by @bjjwwang in #1272
- fix CFBBGbuilder bug by @jumormt in #1273
- Build CFBasicBlockG based on SVFBasicBlocks rather than ICFG by @jumormt in #1275
- fix bug json report to build better statistic by @bjjwwang in #1276
- Break when app and extapi module have a match by @Qcloud1223 in #1281
- (fix issue #1279) connect actual to formal vfgnode for full svfg by @jumormt in #1282
- refactor extapi by @bjjwwang in #1283
- fix extapi.c and ExtAPI.cpp by @bjjwwang in #1284
- add symbolic abstraction by @jiawei-95 in #1287
- Fix matching parameters and return values for "OVERWRITE" functions a… by @shuangxiangkan in #1285
- consider multiple uses of heap object by @Qcloud1223 in #1293
- Get LLVMContext instance directly from
llvm::Module
when building SVFModule by @Johanmyst in #1292 - infer number of fields of a heap object by @yuleisui in #1290
- remove some opaque pointer dependencies by @jumormt in #1295
- [WIP] remove getPtrElement by @jumormt in #1296
- infer object type in "createObjTypeInfo" instead of "analyzeHeapObjType" by @yuleisui in #1297
- bugfix: check return value of getenv by @sinotca529 in #1300
- bugfix in AndersenPWC by @egnchen in #1302
- Add
-fno-rtti
/fno-exceptions
based on LLVM's configuration by @Johanmyst in #1291 - make the pointee type related to gep more robust by @jumormt in #1303
- -print-pts will now print the base and offset of a field object by @kisslune in #1307
- fix issue #1306: compute vf guard for strong update in another branch by @jumormt in #1309
- Fix bugs for big program by @bjjwwang in #1310
- remove string include by @bjjwwang in #1311
New Contributors
- @canliture made their first contribution in #1160
- @hjjandy made their first contribution in #1238
- @Qcloud1223 made their first contribution in #1281
- @Johanmyst made their first contribution in #1292
- @egnchen made their first contribution in #1302
Full Changelog: SVF-2.7...SVF-2.8