Next: Other Elaboration Order Considerations, Previous: Elaboration for Indirect Calls, Up: Elaboration Order Handling in GNAT
First, compile your program with the default options, using none of
the special elaboration control switches. If the binder successfully
binds your program, then you can be confident that, apart from issues
raised by the use of access-to-subprogram types and dynamic dispatching,
the program is free of elaboration errors. If it is important that the
program be portable to other compilers than GNAT, then use the
-gnatel
switch to generate messages about missing Elaborate
or
Elaborate_All
pragmas, and supply the missing pragmas.
If the program fails to bind using the default static elaboration
handling, then you can fix the program to eliminate the binder
message, or recompile the entire program with the
-gnatE switch to generate dynamic elaboration checks,
and, if you are sure there really are no elaboration problems,
use a global pragma Suppress (Elaboration_Check)
.