Update Assignment 3 API docs
sync: align API docs with SVF master + SVF-Python pybind (2026-05)
Refresh the C++ and Python API tables against the current upstream
(SVF tip c8c6042738, SVF-Python tip bb6f3d8) so that students working
on Lab-Exercise-3 / Assignment-3 do not see references to symbols
that have been removed or renamed.
C++ (AE-CPP-APIs.md, SVF-CPP-API.md, SVF-CPP-Z3-API.md):
- AbstractStateManager.h is gone in master; methods loadValue /
storeValue / getGepObjAddrs / getElementIndex / getByteOffset now
live on AbstractInterpretation. In Assignment-3 those are reached
via the svfStateMgr pointer, so the wiki uses svfStateMgr->getGep*
/ loadValue(ValVar*, ICFGNode*) / storeValue(...).
- AbsExtAPI::handleMemcpy signature changed to
(ValVar*, ValVar*, IntervalValue, u32_t, ICFGNode*) — no longer
takes AbstractState explicitly.
- getAbstractState(node) was renamed to getAbsStateFromTrace(node)
in Assignment-3 (and to getAbsState(node) on the SVF library side).
- SVFBasicTypes.h pinned-commit link rotted; switched to
svf/include/MemoryModel/PointsTo.h.
- AndersenPTA::addCopyEdge clarified as the Assignment-1 subclass
override of AndersenBase::addCopyEdge.
- Z3ExampleMgr renamed to Z3Examples; Z3 page links moved from
Teaching-Software-Verification and yuleisui/* to the public
SVF-tools/Software-Security-Analysis repo.
Python (Pysvf-API.md, AE-Python-APIs.md):
- pysvf.AbstractState no longer carries isAddr / getElementIndex /
getGepObjAddrs / storeValue / loadValue. Rebuilt the table with
the actual current pybind surface (getVar, setVar, store, load,
joinWith, meetWith, widening, narrowing, getIDFromAddr,
printAbstractState, inVarTo*Table, initObjVar, addToFreedAddrs,
isFreedMem, the static address helpers, and the static
isCmp/SwitchBranchFeasible factories).
- Added a new pysvf.AbstractInterpretation section covering the
helpers that absorbed AbstractStateManager (getAbsState /
updateAbsState / getGepElementIndex / getGepByteOffset /
getGepObjAddrs / loadValue / storeValue / getPointeeElement /
getAllocaInstByteSize / getTrace / __getitem__ / __setitem__ /
__contains__ / analyse / runOnModule).
- Fleshed out AbstractValue / IntervalValue surface and added a
small AddressValue section.
- Dropped the BufOverflowHelper section: there is no such class in
the pybind surface; the helpers live on AbstractExecutionHelper
in Assignment-3/Python/Assignment_3_Helper.py (already covered
by AE-Python-APIs.md).
- AE-Python-APIs.md Lab-Exercise-3 and Assignment-3 tables: the
lab still has its own AEState : AbstractState wrapper, so the
lab table now refers to AbstractState directly (with a note that
AEState.loadValue/storeValue are thin wrappers around store/load);
the assignment table mirrors the C++ changes
(svfStateMgr.getGepByteOffset, etc.) and switches the helper
class name from bufOverflowHelper to AbstractExecutionHelper to
match Assignment_3_Helper.py.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sync Pysvf-API.md with latest pysvf bindings
- getSvfStmts() -> getSVFStmts()
- isCfgEdge/isCallCfgEdge/isRetCfgEdge/isIntraCfgEdge -> isCFGEdge/isCallCFGEdge/isRetCFGEdge/isIntraCFGEdge
- asIntraCfgEdge/asCallCfgEdge/asRetCfgEdge -> asIntraCFGEdge/asCallCFGEdge/asRetCFGEdge
- getIcfgNode() -> getICFGNode()
- getIcfg() -> getICFG()
- getPagNodeNum() -> getSVFVarNum()
- getGnode() -> getGNode()
- getCallGraphNode() -> getCallGraphNodeByFunObj()
- getCallSiteId/getSrcId/getDstId -> getCallSiteID/getSrcID/getDstID
- Remove non-existent getCallSite() from CallGraphEdge
- AbstractValue: joinWith/meetWith/narrowWith/widenWith -> join_with/meet_with/narrow_with/widen_with
sync pysvf api with cpp version
sync pysvf api with cpp version
sync pysvf api with cpp version
sync with new name and add API for CallICFGNode and RetICFGNode
fix document and add python documents