Inspecting the Chosen Elaboration Order (GNAT User’s Guide for Native Platforms)

### 9.13 Inspecting the Chosen Elaboration Order ¶

To see the elaboration order chosen by the binder, inspect the contents of file b~xxx.adb. On certain targets, this file appears as b_xxx.adb. The elaboration order appears as a sequence of calls to `Elab_Body` and `Elab_Spec`, interspersed with assignments to Exxx which indicates that a particular unit is elaborated. For example:

>     System.Soft_Links'Elab_Body;
>     E14 := True;
>     System.Secondary_Stack'Elab_Body;
>     E18 := True;
>     System.Exception_Table'Elab_Body;
>     E24 := True;
>     Ada.Io_Exceptions'Elab_Spec;
>     E67 := True;
>     Ada.Tags'Elab_Spec;
>     Ada.Streams'Elab_Spec;
>     E43 := True;
>     Interfaces.C'Elab_Spec;
>     E69 := True;
>     System.Finalization_Root'Elab_Spec;
>     E60 := True;
>     System.Os_Lib'Elab_Body;
>     E71 := True;
>     System.Finalization_Implementation'Elab_Spec;
>     System.Finalization_Implementation'Elab_Body;
>     E62 := True;
>     Ada.Finalization'Elab_Spec;
>     E58 := True;
>     Ada.Finalization.List_Controller'Elab_Spec;
>     E76 := True;
>     System.File_Control_Block'Elab_Spec;
>     E74 := True;
>     System.File_Io'Elab_Body;
>     E56 := True;
>     Ada.Tags'Elab_Body;
>     E45 := True;
>     Ada.Text_Io'Elab_Spec;
>     Ada.Text_Io'Elab_Body;
>     E07 := True;

Note also binder switch `-l`, which outputs the chosen elaboration order and provides a more readable form of the above:

>     ada (spec)
>     interfaces (spec)
>     system (spec)
>     system.case_util (spec)
>     system.case_util (body)
>     system.concat_2 (spec)
>     system.concat_2 (body)
>     system.concat_3 (spec)
>     system.concat_3 (body)
>     system.htable (spec)
>     system.parameters (spec)
>     system.parameters (body)
>     system.crtl (spec)
>     interfaces.c_streams (spec)
>     interfaces.c_streams (body)
>     system.restrictions (spec)
>     system.restrictions (body)
>     system.standard_library (spec)
>     system.exceptions (spec)
>     system.exceptions (body)
>     system.storage_elements (spec)
>     system.storage_elements (body)
>     system.secondary_stack (spec)
>     system.stack_checking (spec)
>     system.stack_checking (body)
>     system.string_hash (spec)
>     system.string_hash (body)
>     system.htable (body)
>     system.strings (spec)
>     system.strings (body)
>     system.traceback (spec)
>     system.traceback (body)
>     system.traceback_entries (spec)
>     system.traceback_entries (body)
>     ada.exceptions (spec)
>     ada.exceptions.last_chance_handler (spec)
>     system.soft_links (spec)
>     system.soft_links (body)
>     ada.exceptions.last_chance_handler (body)
>     system.secondary_stack (body)
>     system.exception_table (spec)
>     system.exception_table (body)
>     ada.io_exceptions (spec)
>     ada.tags (spec)
>     ada.streams (spec)
>     interfaces.c (spec)
>     interfaces.c (body)
>     system.finalization_root (spec)
>     system.finalization_root (body)
>     system.memory (spec)
>     system.memory (body)
>     system.standard_library (body)
>     system.os_lib (spec)
>     system.os_lib (body)
>     system.unsigned_types (spec)
>     system.stream_attributes (spec)
>     system.stream_attributes (body)
>     system.finalization_implementation (spec)
>     system.finalization_implementation (body)
>     ada.finalization (spec)
>     ada.finalization (body)
>     ada.finalization.list_controller (spec)
>     ada.finalization.list_controller (body)
>     system.file_control_block (spec)
>     system.file_io (spec)
>     system.file_io (body)
>     system.val_uns (spec)
>     system.val_util (spec)
>     system.val_util (body)
>     system.val_uns (body)
>     system.wch_con (spec)
>     system.wch_con (body)
>     system.wch_cnv (spec)
>     system.wch_jis (spec)
>     system.wch_jis (body)
>     system.wch_cnv (body)
>     system.wch_stw (spec)
>     system.wch_stw (body)
>     ada.tags (body)
>     ada.exceptions (body)
>     ada.text_io (spec)
>     ada.text_io (body)
>     text_io (spec)
>     gdbstr (body)