-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Memory regions in Boogie using Data Structure Analysis #279
Conversation
…sallowed characters are not included
…s to the external functions
} | ||
|
||
override def getMergedRegion(address: BigInt, size: Int): Option[MergedRegionDSA] = { | ||
val dsg = DSATopDown(program.mainProcedure) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is size necessary? i don't think it is used by DSA MRA region injector? I think it also makes sense to check if the size is covered by the cell. But I assume this wouldn't hold for examples with globals with disjoint fields (cells) because the size passed as a parameter is the whole global region's size. However, maybe this is not necessary until we have better field-sensitivity implemented
The rest looks good to me |
DSA-Regions extra Constraints #280 |
Implements #249
--memory-regions dsa
option to insert regions based on the Data Structure Analysis results into the Boogie output--memory-regions mra
ExternalLocation
which represents the abstract external function or objectDSAMemoryRegionSystemTestsBAP
andDSAMemoryRegionSystemTestsGTIRB
test suites which run all SystemTests with the--memory-regions dsa
option setThe DSA-based memory regions are currently able to handle all existing test cases successfully, though it likely does not handle anything involving overlapping accesses successfully yet since the DSA implementation there is not yet finished. It tracks the memory regions by creating a new Map,
accessIndexToSlice
, which maps fromMemoryLoad
s andMemoryStore
s toSlice
s representing the indices of the accesses. This mapping is used as the basis for regions, with distinct cells representing distinct memory regions.