1. About This Guide

This guide describes the specialized GNAT Pro features that relate to the GNAT Pro Safety-Critical and GNAT Pro High-Security products. These Ada tool suites (previously known as the GNAT Pro High-Integrity Edition) are designed especially for developing high-integrity applications, i.e., applications that need to be certified for compliance with software safety standards such as DO-178B/C or software security standards such as the Common Criteria.

GNAT Pro implements Ada 95, Ada 2005 and Ada 2012, and it may also be invoked in Ada 83 compatibility mode. By default, GNAT Pro assumes Ada 2012, but you can override with a compiler switch to explicitly specify the language version. (Please refer to the section “Compiling Different Versions of Ada” in GNAT User’s Guide for Native Platforms for details on these switches.) Throughout this manual, references to “Ada” without a year suffix apply to all Ada 95/2005/2012 versions of the language.

A major feature of GNAT Pro Safety-Critical and GNAT Pro High-Security is their support for both predefined and user-specified profiles.

A profile is a compiler-enforced Ada language subset with a corresponding (possibly empty) run-time library. Thus selecting a profile has two effects:

  • The compiler will reject any source file that uses features outside the chosen subset.
  • The run-time library (if any) bound with the program will contain support only for the features in the chosen subset

The profiles predefined by GNAT Pro Safety-Critical and GNAT Pro High-Security, depending on the target, are as follows:

  • The Zero Footprint Profile, an Ada subset requiring no run-time support;

  • The Cert Profile, supporting the features in the Zero Footprint profile together with a restricted set of thread-safe features, in particular exception propagation;

  • The Ravenscar Profiles, supporting the features in the Zero Footprint profile (Ravenscar SFP) or the Cert profile (Ravenscar Cert) together with a restricted set of tasking features;

  • The Full-Runtime Profile, supporting the complete Ada language.

The Zero Footprint Profile, the Cert Profile and the Ravenscar Profiles are collectively known as the High-Integrity Profiles since they are designed to be used in high-integrity (safety-critical and/or high-security) systems. A High-Integrity Profile program is a program built with one of the High-Integrity Profiles.

These profiles are applications of a general technology implemented by GNAT Pro Safety-Critical and GNAT Pro High-Security: user-defined profiles. The programmer can select a particular subset of language features and obtain compiler enforcement of this subset, with a corresponding specially configured run-time library containing only what is required for the chosen features. This provides additional flexibility and control, beyond the predefined profiles.

This guide explains the various GNAT Pro features and tool options that may be useful for high-integrity applications, defines the High-Integrity Profiles and the run-time configurability mechanism. Target specific topics are treated in the GNAT User’s Guide Supplement for Cross Platforms.

1.1. What This Guide Contains

This guide contains the following chapters:

1.2. What You Should Know Before Reading This Guide

This guide assumes a basic understanding of the Ada 95 language and familiarity with the GNAT Pro User’s Guide for Native Platforms, in particular the material related to cross-compilation environments.

It does not require knowledge of the features introduced by Ada 2005 or Ada 2012. These Ada reference manuals are included in the GNAT Pro documentation package.

1.4. Conventions

Following are examples of the typographical and graphic conventions used in this guide:

  • Functions, utility program names, standard names, and classes.

  • Option flags

  • File names

  • Variables

  • Emphasis

  • [optional information or parameters]

  • Examples are described by text

    and then shown this way.
  • Commands that are entered by the user are shown as preceded by a prompt string comprising the $ character followed by a space.

  • Full file names are shown with the ‘/’ character as the directory separator; e.g., parent-dir/subdir/myfile.adb. If you are using GNAT on a Windows platform, please note that the ‘\’ character should be used instead.