"If an implementation supports pragma Export to a given language, then it should also allow the main subprogram to be written in that language. It should support some mechanism for invoking the elaboration of the Ada library units included in the system, and for invoking the finalization of the environment task. On typical systems, the recommended mechanism is to provide two subprograms whose link names are adainit and adafinal. adainit should contain the elaboration code for library units. adafinal should contain the finalization code. These subprograms should have no effect the second and subsequent time they are called."
"Automatic elaboration of pre-elaborated packages should be provided when pragma Export is supported."
Followed when the main program is in Ada. If the main program is in a foreign language, then adainit must be called to elaborate pre-elaborated packages.
"For each supported convention L other than Intrinsic, an implementation should support Import and Export pragmas for objects of L-compatible types and for subprograms, and pragma Convention for L-eligible types and for subprograms, presuming the other language has corresponding features. Pragma Convention need not be supported for scalar types."