-
Notifications
You must be signed in to change notification settings - Fork 32
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
New Object domain #44
base: dev
Are you sure you want to change the base?
Commits on Apr 4, 2023
-
Configuration menu - View commit details
-
Copy full SHA for a59aaf3 - Browse repository at this point
Copy the full SHA a59aaf3View commit details -
Configuration menu - View commit details
-
Copy full SHA for 14bd9cb - Browse repository at this point
Copy the full SHA 14bd9cbView commit details -
feat(domains): added implementation of decoupled domains
The decoupled domain allows crab to use two different domains during the two different phases of the analysis. In the descending (narrowing) phase it is possible to use an abstract domain which is more precise than the domain used in the ascending (widening) phase. The decoupled domains require two new abstract operations is_asc_phase() and set_phase() in order to manage ascending and descending phases. By default, start in *descending* (i.e., more precise) phase. The interleaved fixpoint iterator has been also modified to notify the underlying domains when there is change of (ascending or descending) phase. Implemented by Greta Dolcetti and Enea Zaffanella.
Configuration menu - View commit details
-
Copy full SHA for 746e98f - Browse repository at this point
Copy the full SHA 746e98fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 382954d - Browse repository at this point
Copy the full SHA 382954dView commit details
Commits on Apr 6, 2023
-
Configuration menu - View commit details
-
Copy full SHA for eec17d4 - Browse repository at this point
Copy the full SHA eec17d4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 75ad004 - Browse repository at this point
Copy the full SHA 75ad004View commit details
Commits on Apr 12, 2023
-
Configuration menu - View commit details
-
Copy full SHA for d455de8 - Browse repository at this point
Copy the full SHA d455de8View commit details
Commits on Apr 14, 2023
-
We minimize string allocation and copies. Also, we add some macros that allow each domain to turn on or off statistics collection which adds a counter and a timer per operation. If stats collection is off then no string allocation or string copy should take place. For instance, the region domain enables stats by adding #define REGION_DOMAIN_SCOPED_STATS(NAME) CRAB_DOMAIN_SCOPED_STATS(NAME, 1) And the interval domain disables stats by adding #define INTERVALS_DOMAIN_SCOPED_STATS(NAME) CRAB_DOMAIN_SCOPED_STATS(NAME, 0) The macro CRAB_DOMAIN_SCOPED_STATS is defined in crab/domains/abstract_domain_macros.def In spite of all optimizations, the most efficient thing is to disable stats collection. By default, only the fixpoint solver and the region domain turn on stats. This is okay because stats gathering is a feature intended only for developers. If needed then the developer can turn on more stats timers and counters and recompile the code.
Configuration menu - View commit details
-
Copy full SHA for e60a688 - Browse repository at this point
Copy the full SHA e60a688View commit details -
Configuration menu - View commit details
-
Copy full SHA for ce9040f - Browse repository at this point
Copy the full SHA ce9040fView commit details -
feat(inter-analysis): integreate dsa info into callsite information
Giving a method to group region variables passed/returned between caller and callee based on dsa intrinsics. The information is precomputed before the analysis and stored into callsite_info class for further abstract operations of calls.
Configuration menu - View commit details
-
Copy full SHA for 5809692 - Browse repository at this point
Copy the full SHA 5809692View commit details -
Configuration menu - View commit details
-
Copy full SHA for 9fbd979 - Browse repository at this point
Copy the full SHA 9fbd979View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7a4f9ac - Browse repository at this point
Copy the full SHA 7a4f9acView commit details -
Configuration menu - View commit details
-
Copy full SHA for f94420d - Browse repository at this point
Copy the full SHA f94420dView commit details -
Configuration menu - View commit details
-
Copy full SHA for bea59ff - Browse repository at this point
Copy the full SHA bea59ffView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9ac250a - Browse repository at this point
Copy the full SHA 9ac250aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 996acc5 - Browse repository at this point
Copy the full SHA 996acc5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 77fe2c9 - Browse repository at this point
Copy the full SHA 77fe2c9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1564f79 - Browse repository at this point
Copy the full SHA 1564f79View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0a18025 - Browse repository at this point
Copy the full SHA 0a18025View commit details -
Configuration menu - View commit details
-
Copy full SHA for bb49656 - Browse repository at this point
Copy the full SHA bb49656View commit details -
Configuration menu - View commit details
-
Copy full SHA for 55448c6 - Browse repository at this point
Copy the full SHA 55448c6View commit details -
Configuration menu - View commit details
-
Copy full SHA for f049fe1 - Browse repository at this point
Copy the full SHA f049fe1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5131b13 - Browse repository at this point
Copy the full SHA 5131b13View commit details -
Configuration menu - View commit details
-
Copy full SHA for 15dcaa0 - Browse repository at this point
Copy the full SHA 15dcaa0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7e83479 - Browse repository at this point
Copy the full SHA 7e83479View commit details -
fix(obj-dom): fix update object info map
In crab IR, region initialization / copy occurs before intrinsic calls. The object info is required for each abstract object so that we need to initialize that info for object not informed by intrinsic calls.
Configuration menu - View commit details
-
Copy full SHA for 56be83f - Browse repository at this point
Copy the full SHA 56be83fView commit details -
Configuration menu - View commit details
-
Copy full SHA for f72e6f2 - Browse repository at this point
Copy the full SHA f72e6f2View commit details -
Configuration menu - View commit details
-
Copy full SHA for a4c8e32 - Browse repository at this point
Copy the full SHA a4c8e32View commit details -
feat(object): add implementation of cache, address, and regs doms
The abstract domain is based on memory abstraction which models memory architecture with cache. Each abstract object contains a cache that precisely materializes memory load / store. The cache only records the most recently used by load/store instructions. The current cache size is one so that any loads / stores for non mru object require to commit and update cache subdomain. In the implementation, we also includes an alias analysis that abstracts references alias properties. That is, we only know two references are alias according to the DSA analysis. Such info are stored in an EUF domain.
Configuration menu - View commit details
-
Copy full SHA for 1923e26 - Browse repository at this point
Copy the full SHA 1923e26View commit details -
Configuration menu - View commit details
-
Copy full SHA for a0659a0 - Browse repository at this point
Copy the full SHA a0659a0View commit details -
Configuration menu - View commit details
-
Copy full SHA for b810dd1 - Browse repository at this point
Copy the full SHA b810dd1View commit details -
Configuration menu - View commit details
-
Copy full SHA for 430ad71 - Browse repository at this point
Copy the full SHA 430ad71View commit details -
Configuration menu - View commit details
-
Copy full SHA for be8551a - Browse repository at this point
Copy the full SHA be8551aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 27f73ea - Browse repository at this point
Copy the full SHA 27f73eaView commit details -
fix(object): convert term to term op for comparison
We use UF domain to represent base addresses. The caches in given two states refer the same MRU object if the base addresses of caches refer the same symbol in the uf domain. The symbol is actually a term operator in crab. The comparison is based on the value of operator but not the term.
Configuration menu - View commit details
-
Copy full SHA for b8ddf4d - Browse repository at this point
Copy the full SHA b8ddf4dView commit details -
feat(object): add reduction operator between cache and base subdomains
Introduce a new redution operator (transfer function) that reduce equalities between registers and fields in the cache. The reduction can be either adding constraints for registers into base domain or adding constraints for fields into corresponding cache domain.
Configuration menu - View commit details
-
Copy full SHA for 882e835 - Browse repository at this point
Copy the full SHA 882e835View commit details -
feat(object): add intrinsic method to perform reduction
The object domain can handle an intrinsic reduction named: crab_intrinsic(do_reduction,@V_1:region,V_2:ref,V_3:bool); where V_1 is a region and V_2 is a reference. The V_3 indicates the direction for reduction. The value of V_3 is true(false) will perform reduction from cache to base (from base to cache).
Configuration menu - View commit details
-
Copy full SHA for 25b0303 - Browse repository at this point
Copy the full SHA 25b0303View commit details -
Configuration menu - View commit details
-
Copy full SHA for de76773 - Browse repository at this point
Copy the full SHA de76773View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6ec6ccd - Browse repository at this point
Copy the full SHA 6ec6ccdView commit details -
Configuration menu - View commit details
-
Copy full SHA for f86721a - Browse repository at this point
Copy the full SHA f86721aView commit details -
Configuration menu - View commit details
-
Copy full SHA for 9b342db - Browse repository at this point
Copy the full SHA 9b342dbView commit details -
Configuration menu - View commit details
-
Copy full SHA for d1b6258 - Browse repository at this point
Copy the full SHA d1b6258View commit details -
Configuration menu - View commit details
-
Copy full SHA for 620c353 - Browse repository at this point
Copy the full SHA 620c353View commit details -
Configuration menu - View commit details
-
Copy full SHA for 02c8fec - Browse repository at this point
Copy the full SHA 02c8fecView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4233faf - Browse repository at this point
Copy the full SHA 4233fafView commit details -
feat(object): use ghost variables to express reference with extra inf…
…ormation Since object domain can express relations between fields in more expressive way, we also want to deal with pointer analysis such as is-dereferenceable. The requirement for this check is using ghost variables to convey pointer information: offset and size. In object domain, now each typed variable such as region or reference are now having at least one ghost variables with fixed naming. This is also guarentee the efficiency for creating and manipulating such variables.
Configuration menu - View commit details
-
Copy full SHA for 95dd51c - Browse repository at this point
Copy the full SHA 95dd51cView commit details -
Configuration menu - View commit details
-
Copy full SHA for f15f309 - Browse repository at this point
Copy the full SHA f15f309View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7bb15bb - Browse repository at this point
Copy the full SHA 7bb15bbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 57244f9 - Browse repository at this point
Copy the full SHA 57244f9View commit details -
feat(object): implement forget, project, rename domain operators
Based on subdomains we have right now, we need to distinguish three types of variables: variables in base domain, reference variables, and fields variables used in odi map. Once we have this classification, the operators can be performed based on each subdomain: base domain, address domain, uf register domain, and (summary domain, cache domain, uf field domain) in odi map.
Configuration menu - View commit details
-
Copy full SHA for 681f497 - Browse repository at this point
Copy the full SHA 681f497View commit details -
Configuration menu - View commit details
-
Copy full SHA for 251f16b - Browse repository at this point
Copy the full SHA 251f16bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 38f8a41 - Browse repository at this point
Copy the full SHA 38f8a41View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3dbd186 - Browse repository at this point
Copy the full SHA 3dbd186View commit details -
Configuration menu - View commit details
-
Copy full SHA for 30c8aca - Browse repository at this point
Copy the full SHA 30c8acaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 670d641 - Browse repository at this point
Copy the full SHA 670d641View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0107251 - Browse repository at this point
Copy the full SHA 0107251View commit details -
fix(object): fix join / meet for singleton objects
This commit fixes the issue of join / meet when two states contain singleton objects. Two states with singleton objects where they might refer the same object (with same address), or they are different. Therefore, join of two singleton objects will become a non-singleton object if they are different.
Configuration menu - View commit details
-
Copy full SHA for 014c48f - Browse repository at this point
Copy the full SHA 014c48fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7074ddb - Browse repository at this point
Copy the full SHA 7074ddbView commit details -
fix: update object info after join / meet
If odi map is used, the object is not singleton. Therefore, any join / meet over non-singleton objects require to commit caches if necessary. If committed, we also need to reset caches as empty.
Configuration menu - View commit details
-
Copy full SHA for 50b8e46 - Browse repository at this point
Copy the full SHA 50b8e46View commit details -
feat(object-domain): flag to move singleton to base domain
- change global object-id map (locate) function to local - add efficient join / meet operations on odi map
Configuration menu - View commit details
-
Copy full SHA for 26c4a09 - Browse repository at this point
Copy the full SHA 26c4a09View commit details -
Configuration menu - View commit details
-
Copy full SHA for 37621a7 - Browse repository at this point
Copy the full SHA 37621a7View commit details -
feat(domain): a symbolic variable equality domain
A symbolic equality domain is an abstract domain which represents equalities used in analyses for allocation-site abstraction or domain reduction. In short, giving two program variables are known to hold equal values in concrete semantics if the analyzer determines that the variables hold equal symbolic term.
Configuration menu - View commit details
-
Copy full SHA for b11d700 - Browse repository at this point
Copy the full SHA b11d700View commit details -
feat(domain): an environement map domain storing object odi
A special seperate domain for odi map. Especially, it covers different cases during domain operations such as join or meet.
Configuration menu - View commit details
-
Copy full SHA for 9060bc2 - Browse repository at this point
Copy the full SHA 9060bc2View commit details -
Configuration menu - View commit details
-
Copy full SHA for b9350d8 - Browse repository at this point
Copy the full SHA b9350d8View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7989f98 - Browse repository at this point
Copy the full SHA 7989f98View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2a3ecb2 - Browse repository at this point
Copy the full SHA 2a3ecb2View commit details -
Configuration menu - View commit details
-
Copy full SHA for f7074f1 - Browse repository at this point
Copy the full SHA f7074f1View commit details
Commits on Apr 18, 2023
-
refactor(params): change doamin reduction params with multiple options
object.reduction_level=FULL_REDUCTION to perform reduction before each transfer function; object.reduction_level=REDUCTION_BEFORE_CHECK to perform reduction only before assertion; object.reduction_level=NO_REDUCTION for no reduction.
Configuration menu - View commit details
-
Copy full SHA for a8adf96 - Browse repository at this point
Copy the full SHA a8adf96View commit details -
refactor(domain): refactor domains for inferring object invariants
- `object_domain`: avoid deep copy during updating odi values; support new statistics; refactor cache operations. - `odi_map_domain`: perform cache flushing before join / meet each odi value; refactor cache operations. - `symbolic equality domain`: supports new join operation in quadratic running time
Configuration menu - View commit details
-
Copy full SHA for 464d617 - Browse repository at this point
Copy the full SHA 464d617View commit details