(gnat_ugn-11.info)Top


Next: About This Guide Up: (dir)
Enter node , (file) or (file)node

GNAT User’s Guide for Native Platforms
**************************************

     GNAT User’s Guide for Native Platforms , Dec 11, 2020

     AdaCore

     Copyright © 2008-2021, Free Software Foundation

`GNAT, The GNU Ada Development Environment'

GCC version 11.4.0
AdaCore

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover Texts being "GNAT User’s Guide
for Native Platforms", and with no Back-Cover Texts.  A copy of the
license is included in the section entitled Note: GNU Free Documentation
License.

About This Guide
Getting Started with GNAT
The GNAT Compilation Model
Building Executable Programs with GNAT
GNAT Utility Programs
GNAT and Program Execution
Platform-Specific Information
Example of Binder Output File
Elaboration Order Handling in GNAT
Inline Assembler
GNU Free Documentation License
Index
 — The Detailed Node Listing —

About This Guide

What This Guide Contains
What You Should Know before Reading This Guide
Related Information
Conventions
Getting Started with GNAT

System Requirements
Running GNAT
Running a Simple Ada Program
Running a Program with Multiple Units
The GNAT Compilation Model

Source Representation
Foreign Language Representation
File Naming Topics and Utilities
Configuration Pragmas
Generating Object Files
Source Dependencies
The Ada Library Information Files
Binding an Ada Program
GNAT and Libraries
Conditional Compilation
Mixed Language Programming
GNAT and Other Compilation Models
Using GNAT Files with External Tools
Foreign Language Representation

Latin-1
Other 8-Bit Codes
Wide_Character Encodings
Wide_Wide_Character Encodings
File Naming Topics and Utilities

File Naming Rules
Using Other File Names
Alternative File Naming Schemes
Handling Arbitrary File Naming Conventions with gnatname
File Name Krunching with gnatkr
Renaming Files with gnatchop
Handling Arbitrary File Naming Conventions with gnatname

Arbitrary File Naming Conventions
Running gnatname
Switches for gnatname
Examples of gnatname Usage
File Name Krunching with gnatkr

About gnatkr
Using gnatkr
Krunching Method
Examples of gnatkr Usage
Renaming Files with gnatchop

Handling Files with Multiple Units
Operating gnatchop in Compilation Mode
Command Line for gnatchop
Switches for gnatchop
Examples of gnatchop Usage
Configuration Pragmas

Handling of Configuration Pragmas
The Configuration Pragmas Files
GNAT and Libraries

Introduction to Libraries in GNAT
General Ada Libraries
Stand-alone Ada Libraries
Rebuilding the GNAT Run-Time Library
General Ada Libraries

Building a library
Installing a library
Using a library
Stand-alone Ada Libraries

Introduction to Stand-alone Libraries
Building a Stand-alone Library
Creating a Stand-alone Library to be used in a non-Ada context
Restrictions in Stand-alone Libraries
Conditional Compilation

Modeling Conditional Compilation in Ada
Preprocessing with gnatprep
Integrated Preprocessing
Modeling Conditional Compilation in Ada

Use of Boolean Constants
Debugging - A Special Case
Conditionalizing Declarations
Use of Alternative Implementations
Preprocessing
Preprocessing with gnatprep

Preprocessing Symbols
Using gnatprep
Switches for gnatprep
Form of Definitions File
Form of Input Text for gnatprep
Mixed Language Programming

Interfacing to C
Calling Conventions
Building Mixed Ada and C++ Programs
Generating Ada Bindings for C and C++ headers
Generating C Headers for Ada Specifications
Building Mixed Ada and C++ Programs

Interfacing to C++
Linking a Mixed C++ & Ada Program
A Simple Example
Interfacing with C++ constructors
Interfacing with C++ at the Class Level
Generating Ada Bindings for C and C++ headers

Running the Binding Generator
Generating Bindings for C++ Headers
Switches
Generating C Headers for Ada Specifications

Running the C Header Generator
GNAT and Other Compilation Models

Comparison between GNAT and C/C++ Compilation Models
Comparison between GNAT and Conventional Ada Library Models
Using GNAT Files with External Tools

Using Other Utility Programs with GNAT
The External Symbol Naming Scheme of GNAT
Building Executable Programs with GNAT

Building with gnatmake
Compiling with gcc
Compiler Switches
Linker Switches
Binding with gnatbind
Linking with gnatlink
Using the GNU make Utility
Building with gnatmake

Running gnatmake
Switches for gnatmake
Mode Switches for gnatmake
Notes on the Command Line
How gnatmake Works
Examples of gnatmake Usage
Compiling with gcc

Compiling Programs
Search Paths and the Run-Time Library (RTL)
Search Paths and the Run-Time Library RTL.
Order of Compilation Issues
Examples
Compiler Switches

Alphabetical List of All Switches
Output and Error Message Control
Warning Message Control
Debugging and Assertion Control
Validity Checking
Style Checking
Run-Time Checks
Using gcc for Syntax Checking
Using gcc for Semantic Checking
Compiling Different Versions of Ada
Character Set Control
File Naming Control
Subprogram Inlining Control
Auxiliary Output Control
Debugging Control
Exception Handling Control
Units to Sources Mapping Files
Code Generation Control
Binding with gnatbind

Running gnatbind
Switches for gnatbind
Command-Line Access
Search Paths for gnatbind
Examples of gnatbind Usage
Switches for gnatbind

Consistency-Checking Modes
Binder Error Message Control
Elaboration Control
Output Control
Dynamic Allocation Control
Binding with Non-Ada Main Programs
Binding Programs with No Main Subprogram
Linking with gnatlink

Running gnatlink
Switches for gnatlink
Using the GNU make Utility

Using gnatmake in a Makefile
Automatically Creating a List of Directories
Generating the Command Line Switches
Overcoming Command Line Length Limits
GNAT Utility Programs

The File Cleanup Utility gnatclean
The GNAT Library Browser gnatls
The File Cleanup Utility gnatclean

Running gnatclean
Switches for gnatclean
The GNAT Library Browser gnatls

Running gnatls
Switches for gnatls
Example of gnatls Usage
GNAT and Program Execution

Running and Debugging Ada Programs
Profiling
Improving Performance
Overflow Check Handling in GNAT
Performing Dimensionality Analysis in GNAT
Stack Related Facilities
Memory Management Issues
Running and Debugging Ada Programs

The GNAT Debugger GDB
Running GDB
Introduction to GDB Commands
Using Ada Expressions
Calling User-Defined Subprograms
Using the next Command in a Function
Stopping When Ada Exceptions Are Raised
Ada Tasks
Debugging Generic Units
Remote Debugging with gdbserver
GNAT Abnormal Termination or Failure to Terminate
Naming Conventions for GNAT Source Files
Getting Internal Debugging Information
Stack Traceback
Pretty-Printers for the GNAT runtime
Stack Traceback

Non-Symbolic Traceback
Symbolic Traceback
Profiling

Profiling an Ada Program with gprof
Profiling an Ada Program with gprof

Compilation for profiling
Program execution
Running gprof
Interpretation of profiling results
Improving Performance

Performance Considerations
Text_IO Suggestions
Reducing Size of Executables with Unused Subprogram/Data Elimination
Performance Considerations

Controlling Run-Time Checks
Use of Restrictions
Optimization Levels
Debugging Optimized Code
Inlining of Subprograms
Floating Point Operations
Vectorization of loops
Other Optimization Switches
Optimization and Strict Aliasing
Aliased Variables and Optimization
Atomic Variables and Optimization
Passive Task Optimization
Reducing Size of Executables with Unused Subprogram/Data Elimination

About unused subprogram/data elimination
Compilation options
Example of unused subprogram/data elimination
Overflow Check Handling in GNAT

Background
Management of Overflows in GNAT
Specifying the Desired Mode
Default Settings
Implementation Notes
Stack Related Facilities

Stack Overflow Checking
Static Stack Usage Analysis
Dynamic Stack Usage Analysis
Memory Management Issues

Some Useful Memory Pools
The GNAT Debug Pool Facility
Platform-Specific Information

Run-Time Libraries
Specifying a Run-Time Library
GNU/Linux Topics
Microsoft Windows Topics
Mac OS Topics
Run-Time Libraries

Summary of Run-Time Configurations
Specifying a Run-Time Library

Choosing the Scheduling Policy
GNU/Linux Topics

Required Packages on GNU/Linux
Microsoft Windows Topics

Using GNAT on Windows
Using a network installation of GNAT
CONSOLE and WINDOWS subsystems
Temporary Files
Disabling Command Line Argument Expansion
Windows Socket Timeouts
Mixed-Language Programming on Windows
Windows Specific Add-Ons
Mixed-Language Programming on Windows

Windows Calling Conventions
Introduction to Dynamic Link Libraries (DLLs)
Introduction to Dynamic Link Libraries DLLs.
Using DLLs with GNAT
Building DLLs with GNAT Project files
Building DLLs with GNAT
Building DLLs with gnatdll
Ada DLLs and Finalization
Creating a Spec for Ada DLLs
GNAT and Windows Resources
Using GNAT DLLs from Microsoft Visual Studio Applications
Debugging a DLL
Setting Stack Size from gnatlink
Setting Heap Size from gnatlink
Windows Calling Conventions

C Calling Convention
Stdcall Calling Convention
Win32 Calling Convention
DLL Calling Convention
Using DLLs with GNAT

Creating an Ada Spec for the DLL Services
Creating an Import Library
Building DLLs with gnatdll

Limitations When Using Ada DLLs from Ada
Exporting Ada Entities
Ada DLLs and Elaboration
Creating a Spec for Ada DLLs

Creating the Definition File
Using gnatdll
GNAT and Windows Resources

Building Resources
Compiling Resources
Using Resources
Debugging a DLL

Program and DLL Both Built with GCC/GNAT
Program Built with Foreign Tools and DLL Built with GCC/GNAT
Windows Specific Add-Ons

Win32Ada
wPOSIX
Mac OS Topics

Codesigning the Debugger
Elaboration Order Handling in GNAT

Elaboration Code
Elaboration Order
Checking the Elaboration Order
Controlling the Elaboration Order in Ada
Controlling the Elaboration Order in GNAT
Mixing Elaboration Models
ABE Diagnostics
SPARK Diagnostics
Elaboration Circularities
Resolving Elaboration Circularities
Elaboration-related Compiler Switches
Summary of Procedures for Elaboration Control
Inspecting the Chosen Elaboration Order
Inline Assembler

Basic Assembler Syntax
A Simple Example of Inline Assembler
Output Variables in Inline Assembler
Input Variables in Inline Assembler
Inlining Inline Assembler Code
Other Asm Functionality
Other Asm Functionality

The Clobber Parameter
The Volatile Parameter