Releases: SVF-tools/SVF
Releases · SVF-tools/SVF
SVF-3.0
This is a stable release of SVF for LLVM-16.0.0 with the following change:
- Fully support for opaque pointers
- Object type inference
- ExtAPI improvement
- Abstract Interpretation API refactoring
- Symbolic abstraction implementation improvement in abstract execution.
In our next release, SVF will support LLVM-17 or 18.
What's Changed
- Add opaque pointer in extapi by @shuangxiangkan in #1355
- remove getbasevalvar in getgepval by @jumormt in #1356
- Bump LLVM to Version 16 by @jumormt in #1357
- use macos-latest for lib publish by @jumormt in #1358
- fix npm by @jumormt in #1359
- build extapi.bc before svfllvm by @jumormt in #1361
- softlink brew llvm install path to SVFHOME/LLVMHOME by @jumormt in #1362
- add AE stage 1 by @bjjwwang in #1360
- refactor / improve coverage / README by @bjjwwang in #1365
- update logo by @fengxxu in #1368
- Fix incomplete/incorrect PTA when using C++ namespaces & virtual functions by @Johanmyst in #1369
- add some comments for cpp type inference by @jumormt in #1371
- move libSvfCore and libSvfLLVM files to lib folder by @bjjwwang in #1366
- fix npm bin folder by @bjjwwang in #1372
- update readme by @fengxxu in #1373
- reduce copy include folder by @bjjwwang in #1377
- Fix incomplete/incorrect callgraphs due to incorrect class names by @Johanmyst in #1376
- refactor obj type inference by @jumormt in #1378
- Fix getMainLLVMModule() by @shuangxiangkan in #1382
- UbuntuArmLLVM link is not added in build.sh by @guanqin-123 in #1383
- Ae convert CFBBG to ICFG by @bjjwwang in #1384
- pull before formatting by @jumormt in #1385
- add simplify ICFG by @bjjwwang in #1386
- Converts a mangled name to C naming style to match functions in extapi.c by @shuangxiangkan in #1393
- fix some non-ret and unused var warning by @jumormt in #1396
- fix LD_LIBRARY_PATH error in setup.sh by @yaoyue123 in #1397
- refactor the PR of merging AE and AEAPI by @bjjwwang in #1395
- refactor: uses()/getUser() -> users() by @jumormt in #1400
- fix var arg and chgnode not found error by @jumormt in #1403
- Sync SVF-EX with https://github.com/SVF-tools/Test-Suite by @bjjwwang in #1404
- first commit of supporting zext and sext by @bjjwwang in #1398
- update AE library by @jiawei-95 in #1408
- set name for each value by @jumormt in #1409
- add x87 double float support, by @bjjwwang in #1412
- Fix #1370: Establish a copy edge for int2ptr instruction/constantexpr by @yuleisui in #1410
- Fix llvm assertion in removeFunAnnotations() by @shuangxiangkan in #1420
- add race checker by @yuleisui in #1419
- Add llvm-17.0.6 support by @adityavardhanpadala in #1422
- [WIP]add AbstractValue by @bjjwwang in #1423
- remove ExeState and rename SVFIR2ItvExeState to SVFIR2AbsState by @bjjwwang in #1426
- remove GlobalES and rename by @bjjwwang in #1428
- fix some bugs and remove some unused data by @bjjwwang in #1429
- rename some datas by @bjjwwang in #1431
- rename some data struct by @bjjwwang in #1434
- remove tmpes in SVFIR2AbsState by @bjjwwang in #1436
- rename es to as, getState to getAbsState by @bjjwwang in #1438
- add const to some funcs in SVFIR2AbsState by @bjjwwang in #1440
- add typeinference pattern: alloc->gep->store->gep->load (issue #1442) by @jumormt in #1443
- Fix bug and CI by @jumormt in #1446
- update xcode version by @jumormt in #1447
- brew install z3 by @jumormt in #1448
- Update build.sh by @bjjwwang in #1450
- Update build.sh by @bjjwwang in #1451
- Bump to LLVM 16.0.2 by @jumormt in #1452
- modification of outputs by @bjjwwang in #1453
- add IntervalValue and AddressValue operator= overload by @bjjwwang in #1456
- add boundedint by @jumormt in #1459
- remove some ambiguous API in AbstractValue by @bjjwwang in #1461
- refactor some api in intervalValue by @bjjwwang in #1462
- refactor APIs in AbstractState/Value by @bjjwwang in #1463
- State1 refactor SVFIR2AbsState by @bjjwwang in #1464
- stage2: refactor AbstractState/Value by @bjjwwang in #1465
- rename ICFGWTONode/Cycle by @bjjwwang in #1466
- add assertion message when calling lb/ub if interval is bottom, don't… by @jumormt in #1467
- add methods: getWTOComponents by @jumormt in #1469
New Contributors
- @fengxxu made their first contribution in #1368
- @yaoyue123 made their first contribution in #1397
- @adityavardhanpadala made their first contribution in #1422
Full Changelog: SVF-2.9...SVF-3.0
SVF-2.9
This is a stable release of SVF for LLVM-14.0.0 with the following change:
- CMake significant changes
- Supporting opaque pointers in progress
- Performing improvement for Andersen in memory and speed
- Symbolic abstraction implementation in abstract execution.
In our next release, SVF will support LLVM-16 and merge the Abstract Execution solver code.
What's Changed
- opaque pointer stage 2-1 by @jumormt in #1304
- remove isNonPointerObj API by @yuleisui in #1315
- Opaque stage 2.2 by @jumormt in #1317
- Fix numOfElements for a C++ object with vtable by @yuleisui in #1318
- remove redundant BUF_CHECK from extapi.c by @bjjwwang in #1320
- Modernise CMake script by @Johanmyst in #1305
- Let Docker use specific cmake version by @xudon9 in #1328
- add intervalESBase by @jumormt in #1333
- turn interprocedural off by @jumormt in #1334
- add arraySize to AddrStmt by @bjjwwang in #1324
- fix a name ambiguous in IntervalExeState by @bjjwwang in #1335
- add symbolic abstraction test by @jiawei-95 in #1339
- Add Memory Statistics and Clean Solitaries in Constraint Graph by @kisslune in #1340
- clean up and improve SVF stats by @yuleisui in #1341
- use template in WTO by @jumormt in #1342
- Bytesize by @jumormt in #1344
- cpp stage 1: move cppUtil to svf-llvm by @jumormt in #1345
- fix svf-npm publish CI: remove previous folder before copying by @jumormt in #1346
- fix npm publish CI by @jumormt in #1347
- opaque pointer support (type inference) for c by @jumormt in #1323
- Rm std::transform by @jumormt in #1348
- use orderedset to select largest type by @jumormt in #1351
- Opaque by @jumormt in #1352
- fix isTemplate and fix a NPD bug by @jumormt in #1353
Full Changelog: SVF-2.8...SVF-2.9
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 https://github.com/SVF...
SVF-2.7
What's Changed
- Upgrade to LLVM-14.0
- SVF File systems for SVFIR and llvm2svf
- Abstract Execution with more classes
- Bugevent
- External API enhancement
- Performance improvement and bug fixing
- Support for extAPI.bc to be linked for analysis of the application bc
- CFL implementation enhancement
New Contributors
- @ChoKyuWon made their first contribution in #992
- @sinotca529 made their first contribution in #1003
- @timmyyuan made their first contribution in #1031
- @Shbinging made their first contribution in #1055
- @JoelYYoung made their first contribution in #1067
- @joeyjiaojg made their first contribution in #1094
- @sfu2 made their first contribution in #1105
- @acidghost made their first contribution in #1116
- @furtherun made their first contribution in #1126
Full Changelog: SVF-2.6...SVF-2.7
SVF-2.6
- Improvements in SVF IR design and implementation (including SVFType, SVFValue, SVFModule)
- Completely remove LLVM dependence (LLVM data structures are contained in the svf-llvm folder)
- Abstract Execution
- CMake simplified (two folders and generating svfcore.a and svfllvm.a)
- Address sanitiser CI/CD
- CFL POCR implementation
- Reading external API summary from ExtAPI.json
- Various bug fixings
SVF-2.5
- SVF IR design and implementation (SVFStmt, SVFVar and etc.)
- Refactoring to further remove LLVM dependence
- General CFL implementation
- External API implementation based on json read/write + programmatically side-effects
- Write/read SVFG into/from a user-specified text file
- Array-sensitive pointer analysis (-model-arrays)
- Supporting data structure for symbolic solving (-model-consts)
- Make version-based vfs pointer analysis multithreaded
SVF-2.4
SVF-2.3
A stable release for LLVM-12.0.0
This is a release after upgrading SVF to LLVM-12.0.0
Stable release for LLVM-10.0.0
Merge pull request #380 from benquike/master Add .editorconfig