buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

41
REPORT DOCUMENTATION PAGE I0 Pubik emet buden formh ooo Ifor rOiSA uctbS iui o ing doss pcumrwi maim i mi, ses nl, totl o n. Arktlon. VA 2Z202-4302. and to t Offie od kftlo -and Imleguis" AlanW Offce o Mwm n~c~ewodo AD- A245 252 1. AGENCY USE LY(LeI 1111111II ItIt11111 11111 1111 11111',3 EOTTP N AE OEE :1 Final: 10 May 1991 to 01 June 1993 4. TITLE AND SUBTITLE 5. FUNDING NUMBERS Irvine Compiler Corporation, ICC Ada v7.0.0, HP 9000 Model 400, HP-UX Rel 7.03 (Host & Target), 910510W1.11147 6. AUTHOR(S) Wright-Patterson AFB, Dayton, OH USA 7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES) 8. PERFORMING ORGANIZATION Ada Validation Facility, Language Control Facility ASD/SCEL REPORT NUMBER Bldg. 676, Rm 135 AVF-VSR-467-1191 Wright-Patterson AFB, Dayton, OH 45433 9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES) 10. SPONSORING/MONITORING AGENCY Ada Joint Program Office REPORT NUMBER United States Department of Defense Pentagon, Rm 3E114 Washington, D.C. 20301-3081 11. SUPPLEMENTARY NOTES 12a. DISTRIBUTION/AVAILABILITY STATEMENT 12b. DISTRIBUTION COOE Approved for public release; distribution unlimited. 13. ABSTRACT (Maximum 200 wordS) Irvine Compiler Corporation, ICC Wright-Patterson AFB, Ada v7.0.0, HP 9000 Model 400, HP-UX Rel 7.03 (Host & Target), ACVC 1.11. _DT IC ELECT[I SAU41992 14. SUBJECT TERMS 15. NUMBER OF PAGES Ada programming language, Ada Compiler Val. Summary Report, Ada Compiler Val. 16._PRICECODE Capability, Val. Testing, Ada Val. Office, Ada Val. Facility, ANSI/MIL-STD-1815A, AJPO. 16. PRICE CODE 17. SECURITY CLASSIFICATION 18. SECURITY CLASSIFICATION 19. SECURITY CLASSIFICATION 20. LIMITATION OF ABSTRACT OF REPORT OF ABSTRACT UNCLASSIFIED UNCLASSIFED UNCLASSIFIED NSN 7540-01-280-550 SL d ard Form 298. (Rev. 2-89) Prescribed by ANSI Std. 239-128

Upload: others

Post on 05-Oct-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

REPORT DOCUMENTATION PAGE I0-0188Pubik emet buden formh ooo Ifor rOiSA uctbS iui o ing doss pcumrwi maim i mi,

ses nl, totl o n. Arktlon. VA 2Z202-4302. and to t Offie od kftlo -and Imleguis" AlanW Offce o

Mwm n~c~ewodo AD- A245 2521. AGENCY USE LY(LeI 1111111II ItIt11111 11111 1111 11111',3 EOTTP N AE OEE

:1 Final: 10 May 1991 to 01 June 1993

4. TITLE AND SUBTITLE 5. FUNDING NUMBERS

Irvine Compiler Corporation, ICC Ada v7.0.0, HP 9000 Model 400, HP-UX Rel 7.03(Host & Target), 910510W1.11147

6. AUTHOR(S)

Wright-Patterson AFB, Dayton, OHUSA

7. PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES) 8. PERFORMING ORGANIZATION

Ada Validation Facility, Language Control Facility ASD/SCEL REPORT NUMBER

Bldg. 676, Rm 135 AVF-VSR-467-1191Wright-Patterson AFB, Dayton, OH 45433

9. SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES) 10. SPONSORING/MONITORING AGENCY

Ada Joint Program Office REPORT NUMBER

United States Department of DefensePentagon, Rm 3E114Washington, D.C. 20301-3081

11. SUPPLEMENTARY NOTES

12a. DISTRIBUTION/AVAILABILITY STATEMENT 12b. DISTRIBUTION COOE

Approved for public release; distribution unlimited.

13. ABSTRACT (Maximum 200 wordS)

Irvine Compiler Corporation, ICC Wright-Patterson AFB, Ada v7.0.0, HP 9000 Model 400, HP-UX Rel 7.03 (Host &Target), ACVC 1.11.

_DT ICELECT[I

SAU41992

14. SUBJECT TERMS 15. NUMBER OF PAGES

Ada programming language, Ada Compiler Val. Summary Report, Ada Compiler Val. 16._PRICECODE

Capability, Val. Testing, Ada Val. Office, Ada Val. Facility, ANSI/MIL-STD-1815A, AJPO. 16. PRICE CODE

17. SECURITY CLASSIFICATION 18. SECURITY CLASSIFICATION 19. SECURITY CLASSIFICATION 20. LIMITATION OF ABSTRACTOF REPORT OF ABSTRACT

UNCLASSIFIED UNCLASSIFED UNCLASSIFIED

NSN 7540-01-280-550 SL d ard Form 298. (Rev. 2-89)Prescribed by ANSI Std. 239-128

Page 2: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

AVF Control Number: AVF-VSR-467-119119 November 1991

91-01-04-ICC

Ada COMPILERVALIDATION SUMMARY REPORT:

Certificate Number: 910510W1.11147Irvine Compiler Corporation

ICC Ada v7.0.0HP 9000 Model 400, HP-UX Rel 7.03 -> HP 9000 Model 400, HP-UX Rel 7.03

Prepared By:Ada Validation Facility

ASD/SCELWright Patterson AFB OH 45433-6503

12- 1 159 011

92-01159

Page 3: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

Certificate Information

The following Ada implementation was tested and determined to pass ACVC1.11. Testing was completed on 10 May 1991.

Compiler Name and Version: ICC Ada v7.0.0

Host Computer System: HP 9000 Model 400, HP-UX Rel 7.03

Target Computer System: HP 9000 Model 400, HP-UX Rel 7.03

Customer Agreement Number: 91-01-04-ICC

See section 3.1 for any additional information about the testingenvironment.

As a result of this validation effort, Validation Certificate910510W1.11147 is awarded to Irvine Compiler Corporation. This certificateexpires on 1 March 1993.

This report has been reviewed and is approved.

Ada Validation FacilitySteven P. WilsonTechnical DirectorASD/SCELWright-Patterson AFB OH 45433-6503

SAd a gat~f QdizationDirector, Compu r & Software Engineering DivisionInstitute for Defense AnalysesAlexandria VA 22311

00988100U ForAcaesslouNTIS GRA&I

2-DTIC TAB 0Unannounced 0

Ada Joint Program Office JustifuatonDr. John Solomond, DirectorDepartment of DefenseWashington DC 20301 yDstributlO/

AvailabtlitY odOS

-- .vail notDist SpeolS3.

Page 4: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

DECLARATION OF CONFORMANCE

Customer: Irvine Compiler Corporation

Ada Validation Facility: ASD/SCEL, Wright-Patterson AFB OH 45433-6503

ACVC Version: 1.11

Ada Implementation:

Compiler Name and Version: ICC Ada v7.0.O

Host Computer System: HP 9000 Model 400, HP-UX Rel 7.03

Target Computer System: HP 9000 Model 400, HP-UX Rel 7.03

Customer's Declaration

I, the undersigned, representing Irvine Compiler Corporation, declarethat Irvine Compiler Corporation has no knowledge of deliberate devi-

ations from the Ada Language Standard ANSI/MIL-STD-1815A in the

implementation listed in this declaration.

_ _ _ _ _ _ _ Date: _ _ _ _Scott Ogata, Executfve Vice-PresidentIrvine Compiler Corporation34 Executive Park, Suite 270Irvine, CA 92714

Page 5: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

TABLE OF CONTENTS

CHAPTER 1 INTRODUCTION

1.1 USE OF THIS VALIDATION SUMMARY REPORT ........ .. 1-11.2 REFERENCES ................................ 1-21.3 ACVC TEST CLASSES ....................... .. 1-21.4 DEFINITION OF TERMS ...... ............... .. 1-3

CHAPTER 2 IMPLEMENTATION DEPENDENCIES

2.1 WITHDRAWN TESTS ....... ................. .. 2-12.2 INAPPLICABLE TESTS ...... ................ .. 2-12.3 TEST MODIFICATIONS ...... ................ .. 2-4

CHAPTER 3 PROCESSING INFORMATION

3.1 TESTING ENVIRONMENT ..... ............... .. 3-13.2 SUMMARY OF TEST RESULTS .... ............. .. 3-13.3 TEST EXECUTION ....... .................. ..3-2

APPENDIX A MACRO PARAMETERS

APPENDIX B COMPILATION SYSTEM AND LINKER OPTIONS

APPENDIX C APPENDIX F OF THE Ada STANDARD

Page 6: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

TABLE OF CONTENTS

CHAPTER 1 INTRODUCTION

1.1 USE OF THIS VALIDATION SUMMARY REPORT ... ...... 1-11.2 REFERENCES ........ .................... .1-21.3 ACVC TEST CLASSES ....................... .. 1-21.4 DEFINITION OF TERMS ..................... .. 1-3

CHAPTER 2 IMPLEMENTATION DEPENDENCIES

2.1 WITHDRAWN TESTS ....... ................. ..2-12.2 INAPPLICABLE TESTS ...... ................ ..2-12.3 TEST MODIFICATIONS ...... ................ ..2-4

CHAPTER 3 PROCESSING INFORMATION

3.1 TESTING ENVIRONMENT ..... ............... .. 3-13.2 SUMMARY OF TEST RESULTS .... ............. .. 3-13.3 TEST EXECUTION ....... .................. .3-2

APPENDIX A MACRO PARAMETERS

APPENDIX B COMPILATION SYSTEM OPTIONS

APPENDIX C APPENDIX F OF THE Ada STANDARD

Page 7: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

CHAPTER 1

INTRODUCTION

The Ada implementation described above was tested according to the AdaValidation Procedures [Pro901 against the Ada Standard (Ada831 using thecurrent Ada Compiler Validation Capability (ACVC). This Validation SummaryReport (VSR) gives an account of the testing of this Ada implementation.For any technical terms used in this report, the reader is referred to[Pro9O]. A detailed description of the ACVC may be found in the currentACVC User's Guide tUG891.

1.1 USE OF THIS VALIDATION SUMMARY REPORT

Consistent with the national laws of the originating country, the AdaCertification Body may make full and free public disclosure of this report.In the United States, this is provided in accordance with the "Freedom ofInformation Act" (5 U.S.C. #552). The results of this validation applyonly to the computers, operating systems, and compiler versions identifiedin this report.

The organizations represented on the signature page of this report do notrepresent or warrant that all statements set forth in this report areaccurate and complete, or that the subject implementation has nononconformities to the Ada Standard other than those presented. Copies ofthis report are available to the public from the AVF which performed thisvalidation or from:

National Technical Information Service5285 Port Royal RoadSpringfield VA 22161

Questions regarding this report or the validation test results should bedirected to the AVF which performed this validation or to:

Ada Validation OrganizationComputer & Software Engineering DivisionInstitute for Defense Analyses1801 North Beauregard StreetAlexandria VA 22311-1772

1-1

Page 8: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

INTRODUCTION

1.2 REFERENCES

[Ada83] Reference Manual for the Ada Programming Language,ANSI/MIL-STD-815AFe-bruary 1983 and ISO 8652-1987.

[Pro9O] Ada Compiler Validation Procedures, Version 2.1, Ada Joint ProgramORfice, August 1990.

[UG89J Ada Compiler Validation Capability User's Guide, 21 June 1989.

1.3 ACVC TEST CLASSES

Compliance of Ada implementations is tested by means of the ACVC. The ACVCcontains a collection of test programs structured into six test classes:A, B, C, D, E, and L. The first letter of a test name identifies the classto which it belongs. Class A, C, D, and E tests are executable. Class Band class L tests are expected to produce errors at compile time and linktime, respectively.

The executable tests are written in a self-checking manner and produce aPASSED, FAILED, or NOT APPLICABLE message indicating the result when theyare executed. Three Ada library units, the packages REPORT and SPPRT13,and the procedure CHECK FILE are used for this purpose. The package REPORTalso provides a set of Identity functions used to defeat some compileroptimizations allowed by the Ada Standard that would circumvent a testobjective. The package SPPRT13 is used by many tests for Chapter 13 of theAda Standard. The procedure CHECK FILE is used to check the contents oftext files written by some of the Class C tests for Chapter 14 of the AdaStandard. The operation of REPORT and CHECK FILE is checked by a set ofexecutable tests. If these units are not operating correctly, validationtesting is discontinued.

Class B tests check that a compiler detects illegal language usage. ClassB tests are not executable. Each test in this class is compiled and theresulting compilation listing is examined to verify that all violations ofthe Ada Standard are detected. Some of the class B tests contain legal Adacode which must not be flagged illegal by the compiler. This behavior isalso verified.

Class L tests check that an Ada implementation correctly detects violationof the Ada Standard involving multiple, separately compiled units. Errorsare expected at link time, and execution is attempted.

In some tests of the ACVC, certain macro strings have to be replaced byimplementation-specific values -- for example, the largest integer. A listof the values used for this implementation is provided in Appendix A. Inaddition to these anticipated test modifications, additional changes may berequired to remove unforeseen conflicts between the tests andimplementation-dependent characteristics. The modifications required forthis implementation are described in section 2.3.

1-2

Page 9: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

INTRODUCTION

For each Ada implementation, a customized test suite is produced by theAVF. This customization consists of making the modifications described inthe preceding paragraph, removing withdrawn tests (see section 2.1) and,possibly some inapplicable tests (see section 2.2 and [UG89]).

In order to pass an ACVC an Ada implementation must process each test ofthe customized test suite according to the Ada Standard.

1.4 DEFINITION OF TERMS

Ada Compiler The software and any needed hardware that have to be addedto a given host and target computer system to allowtransformation of Ada programs into executable form andexecution thereof.

Ada Compiler The means for testing compliance of Ada implementations,Validation consisting of the test suite, the support programs, the ACVCCapability user's guide and the template for the validation summary(ACVC) report.

Ada An Ada compiler with its host computer system and itsImplementation target computer system.

Ada Joint The part of the certification body which provides policy andProgram guidance for the Ada certification system.Office (AJPO)

Ada The part of the certification body which carries out theValidation procedures required to establish the compliance of an AdaFacility (AVF) implementation.

Ada The part of the certification body that provides technicalValidation - guidance for operations of the Ada certification system.Organization(AVO)

Compliance of The ability of the implementation to pass an ACVC version.an AdaImplementation

Computer A functional unit, consisting of one or more computers andSystem associated software, that uses common storage for all or

part of a program and also for all or part of the datanecessary for the execution of the program; executesuser-written or user-designated programs; performsuser-designated data manipulation, including arithmeticoperations and logic operations; and that can executeprograms that modify themselves during execution. Acomputer system may be a stand-alone unit or may consist ofseveral inter-connected units.

1-3

Page 10: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

INTRODUCTION

Conformity Fulfillment by a product, process, or service of allrequirements specified.

Customer An individual or corporate entity who enters into anagreement with an AVF which specifies the terms andconditions for AVF services (of any kind) to be performed.

Declaration of A formal statement from a customer assuring that conformityConformance is realized or attainable on the Ada implementation for

which validation status is realized.

Host Computer A computer system where Ada source programs are transformedSystem into executable form.

Inapplicable A test that contains one or more test objectives found to be

test irrelevant for the given Ada implementation.

ISO International Organization for Standardization.

LRM The Ada standard, or Language Reference Manual, published asANSI/MIL-STD-1815A-1983 and ISO 8652-1987. Citations fromthe LRM take the form "<section>.<subsection>:<paragraph>."

Operating Software that controls the execution of programs and thatSystem provides services such as resource allocation, scheduling,

input/output control, and data management. Usually,operating systems are predominantly software, but partial orcomplete hardware implementations are possible.

Target A computer system where the executable form of Ada programsComputer are executed.System

Validated Ada The compiler of a validated Ada implementation.Compiler

Validated Ada An Ada implementation that has been validated successfullyImplementation either by AVF testing or by registration [Pro90].

Validation The process of checking the conformicy of an Ada compiler tothe Ada programming language and of issuing a certificatefor this iaplementation.

Withdrawn A test found to be incorrect and not used in conformitytest testing. A test may be incorrect because it has an invalid

test objective, fails to meet its test objective, orcontains erroneous or illegal use of the Ada programminglanguage.

1-4

Page 11: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

CHAPTER 2

IMPLEMENTATION DEPENDENCIES

2.1 WITHDRAWN TESTS

The following tests have been withdrawn by the AVO. The rationale forwithdrawing each test is available from either the AVO or the AVF. Thepublication date for this list of withdrawn tests is 14 March 1991.

E28005C B28006C C34006D C35702A C35702B C35508IC35508J C35508M C35508N B41308B C43004A C45114AC45346A C45612A C45612B C45612C C45651A C46022AB49008A A74006A C74308A B83022B B83022H B83025BB83025D C83026A B83026B C83041A B85001L C86001FC94021A C97116A C98003B BA2011A CB7001A CB7001BCB7004A CC1223A BC1226A CC1226B BC3009B BD1BO2BBDlBO6A ADiBO8A BD2AO2A CD2A21E CD2A23E CD2A32ACD2A41A CD2A41E CD2A87A CD2B15C BD3006A BD4008ACD4022A CD4022D CD4024B CD4024C CD4024D CD4031ACD4O51D CD5111A CD7004C ED7005D CD7005E AD7006ACD7006E AD7201A AD7201E CD7204B AD7206A BD8002ABD8004C CD9005A CD9005B CDA2O1E CE2107I CE2117ACE2117B CE2119B CE2205B CE2405A CE3111C CE3116ACE3118A CE3411B CE3412B CE3607B CE3607C CE3607DCE3812A CE3814A CE3902B

2.2 INAPPLICABLE TESTS

A test is inapplicable if it contains tpst objectives which are irrelevantfor a given Ada implementation. Reasons for a test's inapplicability maybe supported by documents issued by the ISO and the AJPO known as AdaCommentaries and commonly referenced in the format AI-ddddd. For thisimplementation, the following tests were determined to be inapplicable forthe reasons indicated; references to Ada Commentaries are included asappropriate.

2-1

Page 12: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

IMPLEMENTATION DEPENDENCIES

The following 201 tests have floating-point type declarations requiringmore digits than SYSTEM.MAXDIGITS:

C24113L..Y (14 tests) C35705L..Y (14 tests)C35706L..Y (14 tests) C35707L..Y (14 tests)C35708L..Y (14 tests) C35802L..Z (15 tests)C45241L..Y (14 tests) C45321L..Y (14 tests)C45421L..Y (14 tests) C45521L..Z (15 tests)C45524L..Z (15 tests) C45621L..Z (15 tests)C45641L..Y (14 tests) C46012L..Z (15 tests)

The following 20 tests check for the predefined type LONGINTEGER; forthis implementation, there is no such type:

C35404C C45231C C45304C C45411C C45412CC45502C C45503C C45504C C45504F C45611CC45613C C45614C C45631C C45632C B52004DC55B07A B55B09C B86001V C86006C CD71OF

C35713B, C45423B, B86001T, and C86006H check for the predefined typeSHORTFLOAT; for this implementation, there is no such type.

C35713C, B86001U, and C86006G check for the predefined type LONGFLOAT;for this implementation, there is :ij such type.

C35713D and B8600lZ check for a predefined floating-point type with aname other than FLOAT, LONG FLOAT, or SHORTFLOAT; for thisimplementation, there is no such type.

C45423A, C45523A, and C45622A check that the proper exception is raisedif MACHINE OVERFLOqS is TRUE and the results of various floating-pointoperations-lie outside the range of the base type; for thisimplementation, MACHINEOVERFLOWS is FALSE.

C45531M..P and C45532M..P (8 tests) check fixed-point operations fortypes that require a SYSTEM.MAX MANTISSA of 47 or greater; for thisimplementation, MAXMANTISSA is-less than 47.

C45536A, C46013B, C46031B, C46033B, and C46034B contain length clausesthat specify values for 'SMALL that are not powers of two or ten; thisimplementation does not support such values for 'SMALL.

B86001Y uses the name of a predefined fixed-point type other than typeDURATION; for this implementation, there is no such type.

CD1009C checks whether a length clause can specify a non-default sizefor a floating-point type; this implementation does not support suchsizes.

CD2A53A checks operations of a fixed-point type for which a lengthclause specifies a power-of-ten TYPE'SMALL; this implementation does notsupport decimal 'SMALLs. (See section 2.3.)

2-2

Page 13: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

IMPLEMENTATION DEPENDENCIES

CD2A84A, CD2A84E, CD2A84I..J (2 tests), and CD2A840 use length clausesto specify non-default sizes for access types; this implementation doesnot support such sizes.

BD800lA, BDBOO3A, BD8004A..B (2 tests), and AD8O11A use machine codeinsertions; this implementation provides no package MACHINE CODE.

AE2101C and EE2201D..E (2 tests) use instantiations of packageSEQUENTIAL 10 with unconstrained array types and record types withdiscriminants without defaults; these instantiations are rejected bythis compiler.

AE2101H, EE2401D, and EE2401G use instantiations of package DIRECT 10with unconstrained array types and record types with discriminantswithout defaults; these instantiations are rejected by this compiler.

The tests listed in the following table check that USE ERROR is raisedif the given file operations are not supported for the-given combinationof mode and access method; this implementation supports theseoperations.

Test File Operation Mode File Access MethodCE2102D CREATE INFILE SEQUENTIAL 10CE2102E CREATE OUT FILE SEQUENTIAL_10CE2102F CREATE INOUT FILE DIRECT0IOCE2102F CREATE IN FILE DIRECT_10

CE2102J CREATE OUT FILE DIRECT-IOCE2102N OPEN IN FILE SEQUENTIAL 10CE21020 RESET IN-FILE SEQUENTIAL-IOCE2102P OPEN OUT FILE SEQUENTIAL-IOCE21020 RESET OUT-FILE SEQUENTIAL-IOCE2102R OPEN INOUT FILE DIRECT 10CE2102S RESET INOUT-FILE DIRECT-IOCE2102T OPEN IN FILE DIRECT-IOCE2102U RESET IN-FILE DIRECT-IOCE2102V OPEN OUT FILE DIRECT-IOCE2102W RESET OUT-FILE DIRECT-IOCE3102E CREATE IN FILE TEXTI0CE3102F RESET Any Mode TEXT-10CE3102G DELETE TEXT_10CE3102I CREATE OUT FILE TEXT-IOCE3102J OPEN IN FILE TEXT-IOCE3102K OPEN OUT FILE TEXT-IO

CE2203A checks that WRITE raises USE ERROR if the capacity of anexternal sequential file is exceeded; this implementation cannotrestrict file capacity.

CE2403A checks that WRITE raises USE ERROR if the capacity of anexternal direct file is exceeded; this implementation cannot restrictfile capacity.

2-3

Page 14: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

IMPLEMENTATION DEPENDENCIES

CE3304A checks that SET LINE LENGTH and SET PAGE LENGTH raise USE ERRORif they specify an inapproprTate value for the external file; there areno inappropriate values for this implementation.

CE3413B checks that PAGE raises LAYOUT ERROR when the value of the pagenumber eceeds COUNT'LAST; for this implementation, the value ofCOUNT'LAST is greater than 150000, making the checking of this objectiveimpractical.

2.3 TEST MODIFICATIONS

Modifications (see section 1.3) were required for 36 tests and 2 supportpackages.

The following tests were split into two or more tests because thisimplementation did not report the violations of the Ada Standard in the wayexpected by the original tests.

B24009A B59001E B59001F B83033B

CD2A53A was graded inapplicable by Evaluation Modification as directed bythe AVO. The test contains a specification of a power-of-lO value as'SMALL for a fixed-point type. The AVO ruled that, under ACVC 1.11,support of decimal 'SMALLs may be omitted.

The tests below were graded passed by Test Modification as directed by theAVO. These tests all use one of the generic support procedures,LengthCheck or Enum Check (in support files LENCHECK.ADA & ENUMCHEK.ADA),which use the generic procedure Unchecked Conversion. This implementationrejects instantiations of UncheckedConversion with array types that havenon-static index ranges. The AVO ruled that since this issue was notaddressed by AI-00590, which addresses required support forUnchecked Conversion, and since AI-00590 is considered not binding underACVC 1.11, the support procedures could be modified to remove the use ofUnchecked Conversion. Lines 40..43, 50, and 56..58 in LENCHECK and lines42, 43, and 58..63 in ENUMCHEK were commented out.

CD1009A CD1009I CD1009M CD1009V CD1009W CDlCO3ACDlCO4D CD2A21A..C CD2A22J CD2A23A..B CD2A24A CD2A31A..CCD2A81A CD3014C CD3014F CD3015C CD3Ol5E..F CD3O15HCD3O15K CD3022A CD4061A

LA3004A and LA3004B were graded passed by Processing and EvaluationModification as directed by the AVO. These tests check that when thebodies of library units (a procedure, function, and package) are madeobsolete, that the implementation will detect the missing bodies at linktime. This implementation will detect the missing bodies at link time.This implementation detects the missing bodies, but it also issues error

2-4

Page 15: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

IMPLEMENTATION DEPENDENCIES

messages that indicate that the main procedures must be re-compiled; thisbehavior violates LRM 10.3:6 & 8. To confirm that the implementation doesnot in fact require recompilation of the main procedures, the obsoletebodies were re-compiled (files LA3004A2..4 and LA3004B2..4 were modified tocontain only the bodies) and the tests were then linked and executed;Report.Result output "NOT APPLICABLE" as expected.

C34009D and C34009J were graded passed by Evaluation Modification asdirected by the AVO. These tests check that 'SIZE for a composite type isgreater than or equal to the sum of its components' 'SIZE values; but thisissue is addressed by AI-00825, which has not been considered; there is notan obvious interpretation. This implementation represents array componentswhose length depends on a discriminant with a default value by implicitpointers into the heap space; thus, the 'SIZE of such a record type mightbe less than the sum of its components 'SIZEs, since the size of the heapspace that is used by the varying-length array components is not counted aspart of the 'SIZE of the record type. These tests were graded passed giventhat the Report.Result output was "FAILED" and the only Report.Failedoutput was "INCORRECT 'BASE'SIZE", from line 195 of C34009D and line 193 inC34009J.

2-5

Page 16: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

CHAPTER 3

PROCESSING INFORMATION

3.1 TESTING ENVIRONMENT

The Ada implementation tested in this validation effort is describedadequately by the information given in the initial pages of this report.

For technical and sales information about this Ada implementation, contact:

Joe KohliIrvine Compiler Corporation34 Executive Park, Suite 270Irvine, California 92714

Testing of this Ada implementation was conducted at the customer's site bya validation team from the AVF.

3.2 SUMMARY OF TEST RESULTS

An Ada Implementation passes a given ACVC version if it processes each testof the customized test suite in accordance with the Ada ProgrammingLanguage Standard, whether the test is applicable or inapplicable;otherwise, the Ada Implementation fails the ACVC [Pro90].

3-1

Page 17: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

PROCSSING TIh MATIW

For all processed tests (inapplicable and applicable), a result wasobtained that conforms to the Ada Programning Language Standard.

a) Total Number of Applicable Tests 3787b) Total Number of Withdrawn Tests 93c) Processed Inapplicable Tests 89d) Non-Processed I/O Tests 0e) Non-Processed Floating-Point

Precision Tests 201

f) Total Number of Inapplicable Tests 290

g) Total Number of Tests for ACVC 1.11 4170

All I/O tests of the test suite were processed because this implementationsupports a file system. The above number of floating-point tests were notprocessed because they used floating-point precision exceeding thatsupported by the implementation. When this compiler was tested, the testslisted in section 2.1 had been withdrawn because of test errors.

3.3 TEST EXECUTICN

A magnetic tape containing the customized test suite (see section 1.3) wastaken on-site by the validation team for processing. The contents of themagnetic tape were loaded onto the host computer using NFS from a remotehost with a directly connected 9-track tape drive. The communicationnetwork was Ethernet.

After the test files were loaded onto the host computer, the full set oftests was processed by the Ada implementation.

The tests were compiled and linked on the host computer system, asappropriate. The executable images resided on the host/target computersystem and were run. The results were captured on the host computersystem.

3-2

Page 18: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

PROCESSING INFORMATION

Testing was performed using command scripts provided by the customer andreviewed by the validation team. See Appendix B for a complete listing ofthe processing options for this implementation. It also indicates thedefault options. The options invoked explicitly for validation testingduring this test were:

Option I Switch Effect

-stack-check Enable stack overflow checking-numeric check Enable arithmetic overflow checks-elaborafion check Enable elaboration checking-noinfo Suppress informationals-quiet Suppress compiler banners-link=<main program> Link the provided subprogram-listing Generate a compilation listing-maximum error=O Set maximum number of errors before abort

(A value of zero specifies that there is nomaximum error limit.)

-nopreprocess Disable compilation of preprocessor directives-nowarnings Suppress warnings

Test output, compiler and linker listings, and job logs were captured onmagnetic tape and archived at the AVF. The listings examined on-site bythe validation team were also archived.

3-3

Page 19: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

APPENDIX A

MACRO PARAMETERS

This appendix contains the macro parameters used for customizing the ACVC.The meaning and purpose of these parameters are explained in [UG891. Theparameter values are presented in two tables. The first table lists thevalues that are defined in terms of the maximum input-line length, which isthe value for SMAX IN LEN--also listed here. These values are expressedhere as Ada string aggregates, where "V" represents the maximum input-linelength.

Macro Parameter Macro Value

$MAXINLEN 254

$BIGIDl (l..V-1 => 'A', V => '1')

$BIGID2 (l..V-l => 'A', V => '2')

$BIGID3 (1..V/2 => 'A') & '3' &(1..V-1-V/2 => 'A')

$BIGID4 (1..V/2 => 'A') & '4' &(1..V-1-V/2 => 'A')

$BIG INT LIT (1..V-3 => '0') & "298"

$BIGREALLIT (1..V-5 => '0') & "690.0"

$BIGSTRING1 '"' & (l..V/2 => 'A') & f"l

$BIGSTRING2 '"' & (1..V-1-V/2 => 'A') & 'I' & f"l

SBLANKS (1..V-20 => '

$MAXLENINTBASEDLITERAL"2:" & (l..V-5 => '0') & "11:"

SMAX LEN REALBASEDLITERAL"16:" & (1..V-7 => '0') & "F.E:"

A-I

Page 20: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

MACRO PARAMETERS

$MAXSTRINGLITERAL '"' & (I..V-2 => 'A') & '"'

The following table lists all of the other macro parameters and theirrespective values.

Macro Parameter Macro Value

$ACCSIZE 96

$ALIGNMENT 4

$COUNTLAST 2147483647

$DEFAULTMEMSIZE 16777216

$DEFAULTSTORUNIT 8

$DEFAULTSYSNAME M68000

$DELTADOC 0.000_000_000_465_661 287 307 739 257_812_5

$ENTRYADDRESS addressof_entryl

$ENTRYADDRESS1 address ofentry2

$ENTRYADDRESS2 address of entry3

$FIELDLAST 2147483647

$FILETERMINATOR F f

$FIXED-NAME NOSUCHFIXEDTYPE

SFLOATNAME NOSUCHFLOATNAME

$FORMSTRING ""

$FORMSTRING2 "CANNOT RESTRICT FILE CAPACITY"

$GREATER THANDURATION524287.5

$GREATERTHANDURATION BASE LAST0Toooooo.o0

$GREATERTHANFLOAT BASE LAST-- - 1.123558209288946943370739E+307

SGREATERTHAN FLOAT SAFE LARGE1.123558209288946943370739E+307

A-2

Page 21: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

MACRO PARAMETERS

$GREATERTHANSHORT-FLOAT SAFELARGE1.0f308

SHIGHPRIORITY 255

$ILLEGALEXTERNALFILE NAMEl/NODIRECTORY/ FILENAME

$ ILLEGAL EXTERNAL FILE NAME 2/NODIRECTORY/THIS-FILE-NAME-IS-ILLEGAL

$INAPPROPRIATELINELENGTH-1

$INAPPROPRIATEPAGELENGTH-1

$INCLUDE PRAGMA1 PRAGMA INCLUDE ("a28006d1.tst")

SINCLUDEPRAGMA2 PRAGMA INCLUDE ("lb28006f1.tst")

$INTEGERFIRST -2147483648

$INTEGERLAST 2147483647

$INTEGER LAST PLUS 1 2147483648

$INTERFACELANGUAGE C

$LESSTHANDURATION -524287.5

$LESS THANDURTION-BASE FIRST-1,6000000.0

$LINETERMINATOR ASCII.LF

SLOWPRIORITY 0

$MACHINECODE STATEMENT

NULL;

$MACHINECODETYPE NOSUCHTYPE

$MANTISSADOC 31

SMAXDIGITS 15

SMAXINT 2147483647

$MAXINTPLUS 1 2147483648

$MININT -2147483648

A- 3

Page 22: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

MACRO PARAMETERS

$NAME TINYINTEGER

$NAlIELIST 1468000

$NAMESPECIFICATIONi ./X2120A

$NAMESPECIFICATION2 ./X2102B

$NAMESPECIFICATIoN3 ./X3119A

$NEGBASEDINT 16#FFFFFFFE#

$NEWHEMSIZE 16777216

$NEW STOR-UNIT 8

$NEWSYSNAME M68000

$PAGETERMINATOR ASCII.FF

$RECORD-DEFINITION NEW INTEGER;

$RECORDNAME, NOSUCHMACHINECODE TYPE

$TASKSIZE 32

$TASKSTORAGESIZE 16383

$TICK (./00

$VARIABLEADDRESS address-of-varl

$VARIABLEADDRESS1 address-of-var2

$VARIABLEADDRESS2 address-of-var3

$YOURPRAGMA EXPORTOBJECT

A-4

Page 23: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

APPENDIX B

COMPILATION SYSTEM AND LINKER OPTIONS

The compiler and linker options of this Ada implementation, as described inthis Appendix, are provided by the customer. Unless specifically notedothervise, references in this appendix are to compiler and linkerdocumentation and not to this report.

B-i

Page 24: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

Apr 7 22:37 1991 hp350.doc/cmpie.and linkoptions.eLL Page 1

Passive ICC Quatifiers-arguments -ergs Display all arguments to the ICC comand-display Display all actions as they are performed-help List commonly used qualifiers-helpall -ell List all available qualifiers-hide Suppress naming ICC subprocesses (VMS only)-!gnore-cfg -!cfg Ignore configuration file qualifiers-Ignore any -Jenv Ignore environment variable qualifiers-normal- Compile with 'normal' massages-quiet Campite quietly-save.pes2 Save all intermediate fiLes-save tms -save Save temporary files generated by pes2-succZd Always return the success status-symbols -sy= Show current value of ICC commnd's symbols-tamp Use temporary directory for intermediate files-t =pcars) Use crgp as the temporary directory-unique Use unique file names for intermediate files-verbose Compte with verbose messages

Active ICC Qualifiers-asa Stop at the generated assembly file-ass flag -asmf-<ar9) Explicitly add flag(s) for the asseabler-aismname -smwarg> Use 4erg, as the assembler-c Stop at the generated C source file-cc flag -ccf=<rg) Explicitly add flag(s) for the C compiler-cc-name -ccn<arg Use <arP as the C compiler-co;timize Invoke the C optimizer-axe Link a non-Ada program-execute Execute and delete executable after Linking-execute flag -execfu<arg> Explicitly add flog(s) for the executable-adaext<arg> Set Ads file extension-asmext=<arg3 Set assembly file extension-c ext=<arg> Set C file extension-exeextuxarg> Set executable file extension-int exts<arg> Set IFORN file extension-libexta<r9> Set object archive/ltibrary file extension-mrg"ext=<arg> Set list merge file extension-obj-ext=arg3 Set object file extension-opt-ext-arg> Set optimized IFORM file extension-pasext-arp Set Pascal file extension-int- Stop at the generated iform file-keep temps<arg> Save file(s) with extension(s) in <erg>-L ib-ry -tib=acrg Set the compilation library directory-loader name -toaderacar p Use arp as the Loader-loader_)reftag -losdprefzarg>

Explicitly add pro-flag(s) for Loader- toderpostflog -loadpst fzrg)

Explicitly add post-flag(s) for Loader-mapn<arR) Generate a Link map file (ICC Linker only)merge Invoke the ICC list merger

-Erg Stop at the generated list merge file-o)4 Stop at the generated oject flee fefault]

-obLib= erg> Instat the object file in Library <erg)-obtlib flag -objtibf=<arg> Explicitly add flag(s) for object Librarian-obj i ibname -objtlbn=-<rg> Use 'argp as the object Librarian-ont - Stop at the optimizer iform file-optimize -opt Invoke the Ada optimizer-pretoader=<arp Execute <arp before Linking-proatoderf lag -preoodf-<arg>

Explicitly add flag(s) for pretoader-posttoader=arv> Execute 'rg> after linking-postloader flag -patloadf<arg)

Explicitly add flag(s) for posttoeder-rantib name -renlibn~=arp Use <arR as the rentib library processor-relesesr Set the release directoryshoDonly Display all actions to be performed-systew<ar> Set the system library directory-toot versions<arg> Specify the ICC tooLset version

Ads Qualifiers-information Enabte informtional warnings (default]-checks Enable alt runtime checks (default]-compatible calls Generate calts compatible with C calls-cross reference -xref Generate cross-reference file (.xrf)-dectiearo> Declare an identifier-debugger Compile for the Ada symbolic debugger- taborstion-check -elab check

Generate ELABORATION checking-exception info Enable extra EXCEPTION information (default]-informtin Enable informational warnings [default]-listing Generate list file (.tst)-maximum errors=<arg) Set maximu numer of errors reported-preprocess Generate commented preprocess file (.app)-rate Rate code efficiency-stack check Generate stack checking code-syntaljonly Syntax check only-trim Generate trimmed preprocess file (.app)-warnings -w Enabte warnings-wrap Enable auto-wrapping error messages [default]-zero Zero st records (default]

Page 25: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

Apr 7 22:37 M99 hp3SO.doc/copfLeand*Ltfnopton.a~l Page 2

ICC Cods generator Qualifiers-branch relative Use relative branches (380 ant )-conat T-oePlace constant aggregates in COD segmnthiost Tnc d K- -XdGanrate hsdeugrinformation

-Leafprocedures Generate LEAF procs when possible (180960 only)?rLie Genrate runtim %?prof ' prof iling

:Iopc~fnfoGenerate extenda ocal :nformstian-fpu-u6m88 -Wam8 Generate inline hardware fLoating-point cods-framslGze Generate fram size for each subp (iS0960 only)-naom Generate namelist file (.n)-numeric check -rumchk Generate overtflow detection cods:probe sTack Generate stack probes-profiTo ~ensrote rutme profiling-real Use real1 nams-static Static mode (C cods generator only)

ICC Prelinker Qualifiers-coepifnk -clo'arp Ada coI.I fie and Link <arg3, Into ane file-force link Frelnk, even i f dependency errors

:he ) izeu~arpAllocate -4a4rg) bytes of heap (iM0960 only)tM--tmluarg2,, Ada link compiLatIoan un~it arq>-output -ontarp Use 4arp as the executable tile nam-stack-size -stacku'are Allocate tarip bytes of user stack (180960 only)

Page 26: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

APPENDIX C

APPENDIX F OF THE Ada STANDARD

The only allowed implementation dependencies correspond toimplementation-dependent pragmas, to certain machine-dependent conventionsas mentioned in Chapter 13 of the Ada Standard, and to certain allowedrestrictions on representation clauses. The implementation-depeneintcharacteristics of this Ada implementation, as described in this Appendix,are provided by the customer. Unless specifically noted otherwise,references in this Appendix are to compiler documentation and not to thisreport. Implementation-specific portions of the package STANDARD, whichare not a part of Appendix F, are:

package STANDARD is

type INTEGER is range -2147483648 .. 2147483647;

type FLOAT is digits 15range -1.12355820928895E+307 .. -1.12355820928895E+307;

type DURATION is delta 2.0**(-12)range -524287.0 .. 524287.0;

type SHORTINTEGER is range -32768 .. 32767;

type TINYINTEGER is range -128 ..127;

..........

end STANDARD;

C-I

Page 27: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

Appendix FICC Ada Version 7.0

Hewlett-Packard, Model 9000/350HP-UX, Release 7.0

Irvine Compiler Corporation34 Executive Park, Suite 270

Irvine, CA 92714(714) 250-1366

April 23, 1991

1 ICC Ada Implementation

The Ada language definition leaves implementation of certain features tothe language implementor. This appendix describes the implementation-dependent characteristics of ICC Ada.

2 Pragmas

The following predefined pragmas are implemented in ICC Ada as describedby the Ada Reference Manual:

Elaborate This pragma allows the user to modify the elaboration order ofcompilation units.

Inline Subprogram inlining is implemented. Inline substitutions are per-formed by the ICC optimizer. This pragma is not supported for genericsubprograms or subprograms which contain nested subprograms.

List This pragma enables or disables writing to the output list file.

Pack Packing on arrays and records is implemented to the bit level. Slicesof packed arrays are not implemented, except boolean arrays.

ma m imm m m ummm u n ml m m' u Im •1

Page 28: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

2

Page This pragma ejects a new page in the output list file (if enabled).

Priority This pragma sets the priority of a task or main program. Therange of the subtype priority is 0..255.

The following predefined pragmas have been extended by ICC:

Interface This pragma is allowed to designate variables in addition to sub-programs. It is also allowed to have an optional third parameter whichis a string designating the name for the linker to use to reference thevariable or subprogram. The third parameter has the same effect aspragma Interface, name.

Suppress In addition to suppressing the standard checks, ICC also permitssuppressing the following:

Exception- info Suppressing Exception- info improves run-time per-formance by reducing the amount of information maintained formessages that appear when exceptions are propagated out of themain program or any task.

All-checks Suppressing All-checks suppresses all the standardchecks as well as Exception- info.

The following predefined pragmas are currently not implemented by ICC:

Controlled Memory-size OptimizeShared Storage- unit System- name

The following additional pragmas have been defined by ICC: (For furtherdetails on these pragmas refer to the ICC Ada User's Reference Guide.)

Compress This pragma reduces the storage required for discrete subtypesin structures (arrays and records). Its single argument is the nameof a discrete subtype. It specifies that the subtype should be repre-sented as compactly as possible (regardless of the representation of thesubtype's base type) when the subtype is used in a structured type.The storage requirement for variables and parameters is not affected.Pragma Compress must appear prior to any reference to the namedsubtype.

Page 29: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

3

Export This pragma is a complement to the predefined pragma Inter-face. It enables subprograms written in Ada to be called from otherlanguages. It takes 2 or 3 arguments. The first is the language to becalled from, the second is the subprogram name, and the third is anoptional string designating the actual subprogram name to be usedby the linker. Pragma Export must appear prior to the body of thedesignated subprogram.

External- name This pragma is equivalent to the ICC pragma Exportwith an implicit language type of "Ada" and a required external name.This pragma allows the user to specify the exact name of the subpro-gram that will be used in the generated object file. This pragma isprovided for compatibility with existing Ada source files.

Foreign This pragma is used to add an object file or an object library fileto the link command line used when linking the current compilationunit. Pragma Foreign is most frequently used in conjunction withpragma Interface so that foreign object files may be automaticallyincluded when the Ada compilation unit is linked. This pragma ac-cepts two parameters. The first parameter indicates the location ofthe foreign object name on the link command line. It must be eitherNormal or Post. The second parameter is a string denoting the foreignobject. This string is passed unmodified to the linker, so it should bea complete filename. If the location is Normal, then the foreign objectis included immediately after the current Ada compilation unit on thelink command line. If the location is Post, then the foreign object"name is included at the end of the link command line. When multipleForeign Post pragmas are used in a single program, the order of theforeign objects on the link command line is not defined.

Interface-Name This pragma takes a variable or subprogram name anda string to be used by the linker to reference the variable or subpro-gram. It has the same effect as the optional third parameter to pragmaInterface.

No- zero The single parameter to No zero is the name of a record type.If the named record type has holes (or gaps) between fields that arenormally initialized with zeroes, this pragma will suppress the clearingof the holes. If the named record type has no holes this pragma hasno effect. When zeroing is disabled, comparisons (equality and non-

Page 30: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

4

equality) of the named type are disallowed. The use of this pragmacan significantly reduce initialization time for record objects. TheICC Command Interpreter also has the qualifier NO-ZERO which hasthe effect of implicitly applying pragma No- zero to all record typesdeclared in the file.

Put, Put-line These pragmas take any number of arguments and writetheir value to standard output at compile time when encounteredby the compiler. The arguments may be expressions of any string,enumeration, or integer type, whose value is known at compile time.Pragma Put- line adds a carriage return after printing all of its argu-ments. These pragmas are often useful in conjunction with conditionalcompilation. They may appear anywhere a pragma is allowed.

Static elaboration This pragma is used immediately within a packagespecification to state that all elaboration for the package is intendedto be static. A warning will be generated for all objects within thepackage specification or corresponding body which require dynamicelaboration.

Unsigned Literal This pragma, when applied to a 32-bit signed integertype, affects the interpretation of literals for the type. Literals be-tween 2**31 and 2**32 are accepted for the type and are representedas if the type were unsigned. Operations on the type are unaffected.Note that (with checking suppressed), signed addition, subtraction,and multiplication are equivalent to the corresponding unsigned op-erations. However, division and relational operators are different andshould be used with caution. This pragma is used for type Addressin package System.

Uselib This pragma is used within a context clause to explicitly add a listof named searched libraries to the library search list of the currentcompilation. The specified libraries are searched first in all followingWITH clauses.

3 Preprocessor Directives

ICC Ada incorporates an integrated preprocessor whose directives beginwith the keyword Pragma. They are as follows:

Page 31: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

5

Abort This pragma causes the current compilation to be immediatelyhalted. It is useful when unexpected circumstances arise inside condi-tionally compiled code.

If, Elsif, Else, End These preprocessor directives provide a conditionalcompilation mechanism. The directives If and Elsif take a booleanstatic expression as their single argument. If the expression evaluatesto False then all text up to the next End, Elsif or Else directive isignored. Otherwise, the text is compiled normally. The usage of thesedirectives is identical to that of the similar Ada constructs. These di-rectives may appear anywhere pragmas are allowed and can be nestedto any depth.

Include This preprocessor directive provides a compile-time source file in-clusion mechanism. It is integrated with the library management sys-tem, and the automatic recompilation facilities.

The results of the preprocessor pass, with the preprocessor directivesdeleted and the appropriate source code included, may be output to a file atcompile-time. The preprocessor may be disabled by using the NOPREPROCESScommand-line qualifier, in which case the above directives are ignored.

4 Attributes

ICC Ada implements all of the predefined attributes, including the Repre-sentation Attributes described in section 13.7 of the Ada RM.Limitations of the predefined attributes are:

Address This attribute cannot be used with a statement label or a taskentry.

The implementation defined attributes for ICC Ada are:

Version, System, Target, CG_ mode These attributes are used by ICCfor conditional compilation. The prefix must be a discrete type. Thevalues returned vary depending on the target architecture and oper-ating system.

Page 32: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

6

5 Input/Output Facilities

5.1

The implementation dependent specifications from TEXT-1O and DI-RECT-IO are:

type COUNT is range 0 .. IITEGERI'LAST;subtype FIELD is INTEGER range 0 .. INTEGER'LAST;

5.2 FORM Parameter

ICC Ada implements the FORM parameter to the procedures OPEN andCREATE in DIRECTIO, SEQUENTIAL-IO, and TEXT-IO to performa variety of ancillary functions. The FORM parameter is a string literalcontaining parameters in the style of named parameter notation. In generalthe FORM parameter has the following format:

"fieldi => value, [, field. => valuen ]"

where fieldj => value can be

OPTION => NORMALOPTION => APPENDPAGE-MARKERS => TRUEPAGE-MARKERS => FALSEREAD-INCOMPLETE => TRUEREAD-INCOMPLETE => FALSEMASK => <9 character protection mask>

Each field is separated from its value with a "=>" and each field/valuepair is separated by a comma. Spaces may be added anywhere betweentokens and upper-case/lower-case is insignificant. For example:

create( f, out-file, "list.data","option => append, PAGEMARKERS => FALSE, Mask => rwxrwx---);

The interpretation of the fields and their values is presented below.

OPTION Files may be opened for appendage. This causes data to beappended directly onto the end of an existing file. The default is

Page 33: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

7

NORMAL which overwrites existing data. This field applies to OPEN inall three standard I/O packages. It has no effect if applied to procedureCREATE.

PAGE_-MARKERS If FALSE then all TEXT_ IO routines dealing with pageterminators are disabled. They can be called, however they will nothave any effect. In addition the page terminator character ('L) is al-lowed to be read with GET and GET-LINE. The default is TRUE whichleaves page terminators active. Disabling page terminators is particu-larly useful when using TEXT. IO with an interactive device. For out-put files, disabling page terminators will suppress the page terminatorcharacter that is normally written at the end of the file.

READ-INCOMPLETE This field applies only to DIRECT-.I0 and SEQUENTIAL- 10and dictates what will be done with reads of incomplete records. Nor-mally, if a READ is attempted and there is not enough data in the filefor a complete record, then END-ERROR or DATA-ERROR will be raised.By setting READ.INCOMPLETE to TRUE, an incomplete record will beread successfully and the remaining bytes in the record will be ze-roed. Attempting a read after the last incomplete record will raiseEND-ERROR. The SIZE function will reflect the fact that there is onemore record when the last record is incomplete and READ- INCOMPLETEis TRUE.

MASK Set a protection mask to control access to a file. The mask is astandard nine character string notation used by Unix. The letterscannot be rearranged or deleted so that the string is always exactlynine characters long. This applies to CREATE in all three standardI/O packages. The default is determined at runtime by the user'senvironment settings.

The letters in the Mask are used to define the Read, Write andeXecute permissions for the User, Group and World respectively. Wher-ever the appropriate letter exists, the corresponding privilege is granted.If a "-" is used instead, then that privilege is denied. For example ifMask were set to "rv-rv--- -"then read and write privilege is grantedto the file owner and his/her group, but no world rights are given.

If a syntax error is encountered within the FORM parameter then theexception USE-.ERROR is raised at the OPEN or CREATE call. Also, the stan-

Page 34: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

8

dard function TEXT-IO. FORM returns the current setting of the form fields,

including default values, as a single string.

6 Package SYSTEM

Package SYSTEM is defined as:

package SYSTEM is

type WAME is (M68000);

-- Language Defined Constants

SYSTEIlIME : constant NINE := X68000;

STORAGE-UNIT : constant : = 8;MEMORY-SIZE : constant : 16*(2e*20);MINIIT : constant -2**31;KAX_.IXT : constant : 2**31-1;MAXDIGITS : constant 16;MAMIANTISSA : constant = 31;FINEDELTa : constant 2.0.*(-31);TICK : constant 1.0/60.0;

type ADDRESS is range IIN1T .. MIIIET; -- Signed 32 bit range.

subtype PRIORITY is INTEGER range 0 .. 255; -- 0 is default priority.

-- Constants for the STIHEAP package

BITSPERBMU : constant :z 8; -- Bits per basic machine unit.NAX-LIGNKENT : constant :% 4; -- Maximum alignment required.MIN.MEN.BLOCK : constant :v 1024; -- Minimum chunk request size.

-- Constants for the HOST package

HOSTCLOCK.IRESOLUTIO constant 1; -- 1 microsecond.BASE.DATE.CORRECTION : constant : 26_202; -- Unix base date is 1/1/1970.

pragma UNSIGIEDLITERAL (ADDRESS); -- Allow unsigned literals.

NULL-ADDRESS : constant ADDRESS : ; -- Value of type ADDRESS-- equal to NULL.

pragua PUT.LINE ("Target: ", SYSTEMNAME);

Page 35: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

9

end SYSTEM;

7 Limits

Most data structures held within the ICC Ada compiler are dynamicallyallocated, and hence have no inherent limit (other than available memory).Some limitations are:

The maximum input line length is 254 characters.

The maximum number of tasks abortable by a single abort statement is64.

Include files can be nested to a depth of 3.

The number of packages, subprograms, tasks, variables, aggregates, typesor labels which can appear in a compilation unit is unlimited.

The number of compilation units which can appear in one file is unlimited.

The number of statements per subprogram or block is unlimited.

Packages, tasks, subprograms and blocks can be nested to any depth.

There is no maximum number of compilation units per library, nor anymaximum number of libraries per library system.

8 Numeric Types

ICC Ada supports three predefined integer types:

TINY.INTEGER -128..127 8 bitsSHORT-INTEGER -32768..32767 16 bitsINTEGER -2147483648..2147483647 32 bits

In addition, unsigned 8-bit, 16-bit and 32-bit integer types can be definedby the user via the SIZE length clause. Storage requirements for types canbe reduced by using pragma Pack and record representation clauses and forsubtypes by using the ICC pragma Compress.

Type float is available.

Page 36: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

10

Attribute FLOAT valuesize 64 bitsdigits 15first -1.12355820928895E + 307last +1.12355820928895E + 307

Fixed point types automatically assume the smallest storage size necessaryto represent all of the model numbers with the indicated delta and range.The size of a fixed point type may be changed via the SMALL representationclause and the SIZE length clause. Unsigned fixed point types may bedefined using the SIZE length clause.

ICC Ada rounds real (fixed and floating point) values away from zero atthe mid-point between integral values (i.e. 1.5 rounds to 2.0 and -3.5 roundsto -4.0).

9 Tasks

The type DURATION is defined with the following characteristics:

Attribute DURATION valuedelta 2.44140625E - 04 secsmall 2.44140625E - 04 secfirst -524287.0 seclast 524287.0 sec

The subtype SYSTEM.PRIORITY as defined provides the following range:

Attribute PRIORITY valuefirst 0last 255

Higher numbers correspond to higher priorities. If no priority is specifiedfor a task, PRIORITY'FIRST is assigned during task creation.

10 Representation Clauses

10.1 Type Representation Clauses

10.1.1 Length Clauses

The amount of storage to be associated with an entity is specified by meansof a length clause. The following is a list of length clauses and their imple-

Page 37: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

11

mentation status:

e The SIZE length clause is implemented. When applied to integer rangetypes this length clause can be used to reduce storage requirementsincluding storage as unsigned values. It may be used to declare anunsigned 32-bit type. Length clauses are allowed for float and fixedpoint types, however the storage requirements for these types cannotbe reduced below the smallest applicable predefined type available.

e The STORAGE-SIZE length clause for task types is implemented.The size specified is used to allocate both the task's Task InformationBlock (TIB) and its stack.

* The STORAGE-SIZE length clause for access types is implemented.When a length clause is encountered for an access type, a block ofmemory is reserved in the user's heap space. This block of memorycannot be expanded beyond the bounds specified in the length clause.When the memory in this block is exhausted, STORAGE-ERROR is raised.Due to heap management overhead, the full amount of memory indi-cated in the length clause may not be available for allocation.

* The SMALL length clause for fixed point types is implemented forpowers of two. ICC Ada does not support SMALL values that are notintegral powers of two.

10.1.2 Enumeration Representation Clauses

Enumeration representation clauses are implemented. The use of enumera-tion representation clauses can greatly increase the overhead associated withtheir reference. In particular, FOR loops on such enumerations are very ex-pensive. Representation clauses which define the default representation (i.e.The first element is.ordinal 0, the second 1, the third 2, etc.) are detectedand cause no additional overhead.

10.1.3 Record Representation Clauses

Record representation clauses are implemented to the bit-level. Records con-taining discriminants and dynamic arrays may not be organized as expectedbecause of unexpected changes of representation. There are no implemen-tation generated names that can be used in record representation clauses.

Page 38: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

12

Record representation clauses allow more precise packing than pragmaPack. Record representation clauses allow the user to specify the exactlocation of fields within a record to the bit-level. The ICC Ada compilerimplements bit-level record representation clauses including nested recordsstarting on bit-boundaries. Since the user specifies the exact bit location,overhead for extracts and stores may be very high, so record representationclauses should be applied very carefully. Record representation clauses areimplemented using the following rules:

" Fields of records may be allocated to the nearest bit for elements whichare smaller than 32-bits. This includes small nested records. Elements32-bits or larger (and all arrays) must be placed on byte boundaries.

" If the specified storage space for an element is not adequate using itsdefault allocation, it will automatically be packed in two stages: (1)Normal packing will be attempted using the default alignment rules. Ifthis does not adequately reduce storage then (2) bit-level packing willbe attempted with all fields aligned on 8-bit or smaller boundaries. Ifthis bit-level packing still does not meet the storage requirement, anerror message will be generated.

" The optional alignment clause may be used to specify an alignmentup to 8 bytes.

" All fields of a record representation clause which are left unspecifiedwill be allocated at the end of the record using the default alignmentrules for each element.

" The fields of a record representation clause may be specified in anyorder and the storage order of the fields does not need to be the sameas the order in which they were declared.

" If no alignment clause is specified, the alignment requirement for therecord is equivalent to the largest alignment requirement of its ele-ments.

10.2 Address Clauses

Address clauses are implemented for variables. Address clauses for localvariables using dynamic values are implemented. The use of a dynamic ad-dress can facilitate overlaying since the address specified may be the value of

Page 39: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

13

a variable of type System.Address or may be the result of an expression us-ing the predefined Address attribute. Address clauses are not implementedfor subprograms, packages, tasks, constant objects, or statement labels.

11 Interface to Other Languages

Pragma Interface allows Ada programs to interface with (i.e., call) subpro-grams written in another language (e.g., assembly, C), and pragma Exportallows programs written in another language to interface with programs writ-ten in Ada. The accepted languages are: Intrinsic, Ada, C and Assembly.The aliases Assembler and ASM can also be used instead of Assembly. Thelanguage Intrinsic should be used with care-it is used by ICC for inter-nally handled operators.

12 Unchecked Type Conversion

The generic function Unchecked- conversion is implemented. In general,unchecked- conversion can be used when the underlying representations ofvalues are similar.kcceptable conversions are:

* Conversion of scalars. Unchecked-.conversion can be used to changethe type of scalar values without restriction. In most circumstancesthe unchecked conversion produces no additional code.

e Conversion of static constrained structures. Constrained static arraysand records are represented as contiguous areas of memory, and hencecan be converted using unchecked- conversion.

e Conversion of scalars to static constrained structures. Scalar objectsmay be converted to static constrained structures with no additionaloverhead. If a scalar value is converted to a structure, an aggregateis first built to hold the scalar value and its address is used as theaddress of the resulting structure.

Because the representation of dynamic structures uses implidt pointers anddope-vectors, ICC Ada does not allow unchecked conversions to or fromdynamic or unconstrained structures (arrays or records). A compile-timeerror message will be generated for such instantiations.

Page 40: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

14

Although the Ada compiler does not produce errors for the followingunchecked conversions, they should be avoided since their results are notobvious:

" Conversion from constrained discriminant records. Conversion fromdiscriminant records can cause unpredictable behavior because of un-derlying representation changes. The unchecked- conversion will usethe same rules as described above for performing the copy, howeverthe results of this operation may not be what the user desires, sinceICC Ada does not place arrays constrained by the discriminant in-linewith the other fields in a discriminant record. In place of the arrayonly a pointer is used and the array is allocated dynamically from theinternally maintained heap.

" Conversion to or from pointers to unconstrained arrays. Unconstrainedarray pointers are implemented as special dope-vectors in ICC Ada.Conversions to or from these dope-vectors are not recommended.

" Conversion to or from any type or object declared in a generic. Gener-ics can cause hidden representation changes. Unchecked- conversionsof any object or type declared in a generic should be avoided.

ICC Ada does not require that the sizes of the parameters to anunchecked.conversion be identical. The size of the target type is used todetermine the number of bytes to copy. The size of the target type (inbytes) is determined by the Ada front end and exactly that many bytes arecopied from the source address to the target address. This can cause prob-lems (e.g. memory faults) when the source object is smaller than the targetobject. For example, using unchecked- conversion to convert a character intoan integer will cause 4 bytes to be copied starting from the address of thecharacter. The first byte copied will be the value of the character, but thevalues of the remaining three bytes cannot be predicted since they dependon values of variables or fields immediately after the character in memory.If the source object is larger than the target object then only the bytes thatwill fit in the target object are copied from the source starting at the address

of the first byte of the source.

13 Unchecked Storage Deallocation

Unchecked- deallocation is implemented. Unchecked. deallocation of

Page 41: buden o ing doss pcumrwi maim i mi, ses n~c~ewodo nl, totl

15

structures containing dynamic elements (such as discriminant records withdynamic arrays) should not be performed since these nested structures arenot automatically deallocated.

14 Main Programs

Main programs may be procedures or functions aad may have any numberof parameters. Parameter and function return types can be either discretetypes (including enumerations) or unconstrained arrays. Parameters mayalso include default values. If the main program is a function, then uponexit the returned value will be printed on the user's screen. If the programis invoked with the wrong number of parameters a usage error message isprinted and execution is aborted. If an illegal value is passed to a parameterthen CONSTRAINT-ERROR is raised.