Added support for client-side decorations.
assert assembly
” annotations for each instruction.branch
, call
, or return
conditional
or unconditional
access
or read
access
or write
number_of_parameters
and index_of_parameter
.DW_AT_noreturn
flag
for routines to identify whether they never return to the callee.In the XML results file, the possible values for expectation
and
analysis_status
are now success
or fail
(rather than true
or false
).
NULL
from the associated base registers.
These are identified by means of the DWARF debug information
and the types associated with the base register.
If such a NULL pointer dereference is detected, this is
reported appropriately in the textual report.SYSCALL
,
TRAPV
, TRAPSV
, TRAPINV
,
SVLCX
, and BISR
perform a read access to determine the new value of register FCX
and a write access to save the lower or upper context on the CSA stack.
The write access is now also modeled in the decoder.
The read access is now modeled in the decoder and the value analysis.MTCR
and MTDCR
perform a write access to the memory mapped Core SFR (CSFR) space.
This write access is now also modeled for the value analysis.RET
and RFE
perform a read access to restore the upper context registers from the CSA stack and a write access to update free context list. These read and write accesses are now also modeled in the decoder.RSLCX
performs a read access to restore the lower context registers from the CSA stack and a write access to update free context list. These read and write accesses are now also modeled in the decoder.STLCX
and STUCX
perform a write access to store the lower/upper context registers in memory. This write access is now also modeled in the decoder.FCALL
, FCALLA
, and FCALLI
perform a write access to save the contents of the link register on the user stack. This write access is now also modeled in the decoder.FRET
performs a read access to restore the contents of the link register from the user stack. This read access is now also modeled in the decoder.ST.T
performs a read and a write access to change a single bit in memory. These read and write accesses are now also modeled in the decoder.These changes can affect AIS2 annotations that use
-> read(n)
,
-> write(n)
, or
-> access(n)
to locate a program point if they span over the aforementioned instructions.
core_id
is now modeled directly as a register
instead of being memory-mapped. Thus, it can now be used in AIS2 expressions via
reg("core_id")
.TRAPINV
qk_ais2_computed_targets
for all architectures.
It combines and supersedes the test cases qk_ais2_computed_*_targets
,
and additionally checks for the new AIS2 annotation targets
.core_id
is now only checked
for the target types that export it.