GNAT Dynamic Analysis Suite (previously known as GNATcoverage) 24 Release Notes

We present here a few highlights of the new features in GNAT DAS 24. You can access the complete list here.

Vulnerability report

From 24.2, you can download the GNAT DAS vulnerability report from the Release Download section. It will provide you the list of the CVEs that can impact this product and the corresponding impact analysis describing whether the product is concerned by each CVE.

Platform Status Changes

GNAT Dynamic Analysis Suite depends on GNAT Pro toolchains; as such, changes to GNAT Pro-supported host platforms are equally applicable to the GNAT Dynamic Analysis Suite. For detailed information on platform status changes to the GNAT Pro suite, see the GNAT Pro Release notes.

C++ support

GNATcoverage now support C++ code when compiler with GNAT Pro C/C++, up to MC/DC.

Coverage Criteria for Ada 2012 Contracts

GNATcoverage now provides coverage criteria for Ada 2012 contracts, including pre-conditions, post-conditions, invariants and predicates, for up to MC/DC.

Initial Support for Ada 2022

Initial support for constructions introduced by Ada 2022 has been introduced at all levels.

Integrated instrumentation

GNATcoverage now offers an alternative instrumentation process that seamlessly integrates into the build workflow. Instead of instrumenting the entire source closure before building, we configure the build process to utilize a specialized compiler generated by GNATcoverage. This compiler wrapper performs on-the-fly instrumentation and subsequently delegates the compilation task to the original compiler. This feature is currently available as a prototype for C/C++ languages, using gcc/g++ on a Linux host.

GNATfuzz and GNATtest integration

GNATfuzz will be able to take an existing GNATtest testuite as a seed of fuzzing. It will also be able to generate a testsuite containing a subset of significant tests discovered through the fuzzing campaign, to re-import to GNATtest. See the GNAT DAS user’s guide for more details.

Improvement of test generation heuristics with value substitution

GNATfuzz will locate constant values within equality conditions in the binary code and analyze the data to see if there is a correspondence to the input state. It will then look in the input corpus and try to locate matching values with the values being compared against the constants. These matching input values will be substituted by the constants as a means to improve the quality of the test case generation and solve branch conditions with a clear input to state correspondence. This is done through the integration of an AFL++ feature known as CMPLOG.