DEC Ada ______________________________________________ Version 3.3 Release Notes for Digital UNIX[R] Systems January 1997 These release notes contain important release information for DEC Ada Version 3.3 on the Digital UNIX (formerly DEC OSF/1) operating system. Operating System: Digital UNIX Version 3.2G, 4.0, 4.0B Software Version: DEC Ada Version 3.3 for Digital UNIX Systems Digital Equipment Corporation Maynard, Massachusetts __________________________________________________________ January 1997 Digital Equipment Corporation makes no representations that the use of its products in the manner described in this publication will not infringe on existing or future patent rights, nor do the descriptions contained in this publication imply the granting of licenses to make, use, or sell equipment or software in accordance with the description. Possession, use, or copying of the software described in this publication is authorized only pursuant to a valid written license from Digital or an authorized sublicensor. © Digital Equipment Corporation 1996. All Rights Reserved. The following are trademarks of Digital Equipment Corporation: Alpha, Bookreader, DEC, DEC Ada, DEC Fortran, DEC FUSE, DECterm, DECthreads, DECwindows, Digital UNIX, Digital, ULTRIX, VAX DOCUMENT, and the DIGITAL logo. Motif, OSF, and OSF/1 are registered trademarks of the Open Software Foundation, Inc. UNIX is a registered trademark in the United States and other countries licensed exclusively through X/Open Company Ltd. X Window System is a trademark of the Massachusetts Institute of Technology. All other trademarks and registered trademarks are the property of their respective holders. This document was prepared using VAX DOCUMENT Version 2.1. ________________________________________________________________ Contents Preface.................................................. v 1 General Information 1.1 Prerequisites for Installing DEC Ada Version 3.3 ......................................... 1-1 1.2 Disk Space Requirements ..................... 1-2 1.3 Predefined Library Source Available ......... 1-3 1.4 Support for ada_debug ....................... 1-3 1.5 Incompatible Program Libraries in Version 3.3 ............................................. 1-3 1.6 Unaligned Access Messages ................... 1-3 1.7 The gprof Command Available for DEC Ada Programs .................................... 1-5 1.8 Support for New Compiler Switches ........... 1-5 1.9 Documentation Notes ......................... 1-7 1.9.1 DEC Ada Developing Ada Programs on Digital UNIX Systems .................... 1-7 1.9.2 DEC Ada Installation Guide for Digital UNIX Systems ............................ 1-7 1.9.3 DEC Ada Overview and Comparison on Digital Platforms ....................... 1-7 1.9.4 Sending Digital Your Comments ........... 1-7 2 Problems Fixed by This Release iii 3 Current Restrictions 3.1 DEC Ada Version 3.3 Compiler Restrictions ... 3-1 3.1.1 The -04 Optimization Option.............. 3-1 3.1.2 Size of Process Descriptor Table ........ 3-2 3.1.3 Compiler Instruction Generates Unaligned Access Error Message .................... 3-4 3.2 Restrictions on Digital UNIX Systems ........ 3-4 3.3 Debugging Restrictions ...................... 3-5 3.3.1 Restrictions on Ladebug Debugging ....... 3-7 3.3.2 Restrictions on dbx Debugging ........... 3-8 3.4 DEC Ada-specific DECdts Restrictions ........ 3-8 3.5 DEC Ada Version 3.1 Run-Time Library Restrictions ................................ 3-9 3.6 DEC Ada-specific DEC FUSE Restrictions....... 3-9 Tables 1 Conventions Used in This Manual.......... vi 1-1 DEC Ada Subset Sizes (Kilobytes Required)................................ 1-2 iv ________________________________________________________________ Preface These release notes characterize the Version 3.3 release of DEC Ada on the Digital UNIX platform. These notes contain information that either supplements or supersedes the information in the DEC Ada documentation set. New customers may want to read and understand the entire release notes before using DEC Ada. Customers upgrading from Version 3.2 may find that they need to read only notes that are new for Version 3.3. Intended Audience These release notes are intended for any programmer, user, or system manager who needs information on the Version 3.3 release of DEC Ada on the Digital UNIX platform. Document Structure These release notes are organized as follows: o Chapter 1 gives general information on the compiler and compiler environment (relevant to this release) and provides any necessary documentation notes. o Chapter 2 describes problems fixed by this release. o Chapter 3 details current restrictions on the compiler, the predefined library, the program library manager, and the debugger. v Associated Documents For more information on DEC Ada Version 3.3 for Digital UNIX systems, refer to the following documents: o DEC Ada Developing Ada Programs on Digital UNIX Systems o DEC Ada Run-Time Reference Manual for DEC OSF/1 Systems o DEC Ada Language Reference Manual o DEC Ada Installation Guide for Digital UNIX Systems Conventions Table 1 shows the conventions used in this manual. Table_1_Conventions_Used_in_This_Manual___________________ Convention__________Description___________________________ Digital UNIX Refers to the Digital UNIX Alpha systems operating system, unless otherwise specified. % A percent sign (%) represents the system prompt. In interactive examples, a label enclosed in a box indicates that you press a key on the terminal; for example, . Ctrl/x The phrase Ctrl/x indicates that you must press the key labeled Ctrl while you simultaneously press another key, for example, Ctrl/C, Ctrl/D, Ctrl/L, Ctrl/O, or Ctrl/Z. boldface monospace In interactive examples, boldface text monospace text represents user input. (continued on next page) vi Table_1_(Cont.)_Conventions_Used_in_This_Manual___________ Convention__________Description___________________________ monospaced text This typeface is used in text to indicate the exact name of a command, routine, partition, pathname, directory, or file. This typeface is also used in interactive examples and other screen displays. variable This typeface is used in syntax to indicate variable values. UPPERCASE The Digital UNIX system differentiates lowercase between lowercase and uppercase characters. Literal strings that appear in text, examples, syntax descriptions, and function definitions must be typed exactly as shown. cat(1) Cross-references to the online ref- erence pages include the appropriate section number in parentheses. For example, a reference to cat(1) indicates that you can find the material on the cat command in Section 1 of the reference pages. . . . A horizontal ellipsis in an example or figure indicates that not all of the statements are shown. . A vertical ellipsis in an interactive . figure or example indicates that not . all of the commands and responses are shown. n A lowercase italic n indicates the generic use of a number. (continued on next page) vii Table_1_(Cont.)_Conventions_Used_in_This_Manual___________ Convention__________Description___________________________ file-spec . . . A horizontal ellipsis following an argument, option, or value in syntax descriptions indicates that additional arguments, options, or values can be entered. boldface text Boldface text indicates DEC Ada reserved words. type_name Italicized words in syntax descrip- tions indicate descriptive prefixes that are intended to give additional semantic information rather than to define a separate syntactic category. [expression] Square brackets indicate that the enclosed item is optional. {, mechanism_name Braces in DEC Ada syntax indicate that } the enclosed item can be repeated zero or more times. italic text Italic text emphasizes important information, indicates variables, and indicates complete titles of manuals. Italic text also represents information that can vary in system messages (for example, Internal error number.) | A vertical bar in DEC Ada syntax separates alternative items unless it occurs immediately after an opening brace, in which case it stands for ____________________itself._______________________________ viii 1 ________________________________________________________________ General Information This chapter provides general information on the compiler and compiler environment relevant to the Version 3.3 release. 1.1 Prerequisites for Installing DEC Ada Version 3.3 DEC Ada Version 3.3 for Digital UNIX systems requires Version 3.2G or Version 4.0 or Version 4.0B of the Digital UNIX operating system. DEC Ada Version 3.3 requires the following base system subsets: o Compiler Back End o Software Development Environment o DEC Ada Run-Time Library ________________________Note ________________________ ADALIB331, which is shipped with Digital UNIX V4.0 and V4.0A, is not supported. _____________________________________________________ The DEC Ada Version 3.3 Run-Time Library (ADALIBnnn) contains a run-time library of code to support the generated code from the compiler and must be installed to run DEC Ada programs. Files for use with Version 3.2G of the Digital UNIX operating system are installed in the directory /usr/lib /cmplrs/ada_322 under the subset name ADALIB322. General Information 1-1 Files for use with Version 4.0 and Version 4.0B of the Digital UNIX operating system are installed in the directory /usr/lib/cmplrs/ada_401 under the subset name ADALIB401. 1.2 Disk Space Requirements Table 1-1 lists the disk space requirements for loading DEC Ada software subsets. These requirements apply to the disks where you load the DEC Ada subsets. The requirements are listed by directory for convenience if you are doing installations on systems where these directories are mount points for different disk partitions. Table_1-1_DEC_Ada_Subset_Sizes_(Kilobytes_Required)_______ Subset Name________Directory_____________________Kbytes_Required_ ADABASEnnn[1/usr/lib/cmplrs/ada_nnn[1] 10100 /bin ADADOCnnn[1]/usr/lib/cmplrs/ada_nnn[1] 3900 /release_notes ADAEXAnnn[1]/usr/lib/cmplrs/ada_nnn[1] 4100 /examples ADALIB322 /usr/cmplrs/ada_322/lib 600 ADALIB401 /usr/cmplrs/ada_401/lib 600 ADAMANnnn[1]/usr/man/man1 100 ADAPALnnn[1]/usr/lib/cmplrs/ada_nnn[1] 15000 /lib Total[2]: 33800 [1]nnn_is_the_version_number_of_DEC_Ada___________________ [2]This total assumes the installation of either ADALIB322 or ADALIB401 (not both) __________________________________________________________ 1-2 General Information 1.3 Predefined Library Source Available The predefined library source code is now available in the DEC Ada predefined library, ADAPAL. You can access this source through the acat command as well as through the documented adalibsrc directory. 1.4 Support for ada_debug If you experience problems calling the ada_debug routine, you may need to upgrade the version of Ladebug you are running. Call the Digital Customer Support Center to upgrade your version of Ladebug to 4.0-26. You may see the following error message when you are expecting the ada_debug prompt: (decladebug) p ada_debug() Main program terminated by unhandled exception: CONSTRAINT_ERROR at pc: 0x000000 012003620C Segmentation fault (core dumped) 1.5 Incompatible Program Libraries in Version 3.3 To compile DEC Ada programs from another system, you must create new program libraries and compile the DEC Ada sources using DEC Ada Version 3.3 for Digital UNIX Systems. Compilation units compiled with a pre-DEC Ada Version 3.3 compiler are made obsolete by the DEC Ada Version 3.3 compiler and program library manager. Pre-Version 3.3 compilation units must be recompiled with the Version 3.3 compiler. 1.6 Unaligned Access Messages It is possible to get "unaligned access" messages from Store_Colors in X_Lib (and possibly other routines) when variables of type X_Lib.Color_Type or X_Lib.Vector_Of_ Color_Type are allocated at unaligned addresses. To fix this, you can do one of the following: General Information 1-3 o Use uac p 0 or uac p noprint to turn off the unaligned access messages. (This is more of a workaround than a fix.) o Add at mod 8; to the representation specification for X_Lib.Color_Type in motifbinding_x_lib_.ada within the predefined Ada library and recompile the Motif bindings. Please note the following: 5305c5305 < record at mod 8; --- > record The new representation specification follows: for COLOR_TYPE use record at mod 8; PIXEL at 0 range 0..63; RED at 8 range 0..15; GREEN at 10 range 0..15; BLUE at 12 range 0..15; DO_RED at 14 range 0..0; DO_GREEN at 14 range 1..1; DO_BLUE at 14 range 2..2; FILLER_3 at 14 range 3..3; FILLER_4 at 14 range 4..4; FILLER_5 at 14 range 5..5; FILLER_6 at 14 range 6..6; FILLER_7 at 14 range 7..7; FILLER_8 at 14 range 8..8; FILLER_9 at 14 range 9..9; FILLER_10 at 14 range 10..10; FILLER_11 at 14 range 11..11; FILLER_12 at 14 range 12..12; FILLER_13 at 14 range 13..13; FILLER_14 at 14 range 14..14; FILLER_15 at 14 range 15..15; end record; 1-4 General Information 1.7 The gprof Command Available for DEC Ada Programs The gprof command, which displays call graph profile data, is now available for DEC Ada programs. gprof produces an execution profile of programs. The effect of called routines is incorporated into the profile of each caller. The profile data is taken from the specified call graph profile file created by programs compiled and linked with the -pg flag and the -threads feature enabled as in the following example: % setenv PROFFLAGS "-threads" % ada gprof_test.ada -pg -g3 % ald -o gprof_test.out -pg gprof_test After the program has been executed, gprof can display its call graph profile data as in the following example: % gprof_test.out . . . % gprof -s gprof_test.out call graph profile: The sum of self and descendents is the major sort for this listing. function entries: index the index of the function in the call graph listing, as an aid to locating it (see below). . . . For more information on gprof, see the gprof(1) reference page. 1.8 Support for New Compiler Switches The V3.3 compiler implements support for two new switches: -arch and -tune. The -arch compiler switch is used to control the use of new Alpha instructions. General Information 1-5 The -tune compiler switch selects processor-specific tuning for implementations of the Alpha architecture. Tuning for a specific implementation can provide improvements in run-time performance. Option keywords for both switches are defined as follows: o 0-Selects instruction tuning appropriate for generic implementations of the Alpha architecture. o 1-Selects instruction tuning appropriate for the host machine. o 2-Selects instruction tuning appropriate for ev4 implementations (21064, 21064A, 21066, and 21068 processors) of the Alpha architecture. o 3-Selects instruction tuning appropriate for ev5 and ev5-compatible implementations (21164 processors) of the Alpha architecture. o 4-Generates instructions appropriate for ev56 implementations (21164A processors). For example: % ada -arch0 t.ada ________________________Note ________________________ The option keywords as documented here differ from the option keywords as documented in the DEC Ada Developing Ada Programs on Digital UNIX Systems. The hardcopy manual is in error. _____________________________________________________ Setting the -arch switch causes a corresponding setting in the -tune switch. If desired, you can override the -tune setting by explicitly specifying it on the command line. These switches and option keywords are also documented in the online reference page ada(1). 1-6 General Information 1.9 Documentation Notes This section contains information about the hardcopy and online documentation prepared for this release. 1.9.1 DEC Ada Developing Ada Programs on Digital UNIX Systems DEC Ada Developing Ada Programs on Digital UNIX Systems is revised for this release. In particular, Chapter 6, "Debugging DEC Ada Programs", now includes and updates the material in the online guide DEC Ada Guide to Debugging for DEC OSF/1 Version 3.0 AXP Systems. The online guide will no longer be shipping with the DEC Ada compiler. The option keywords are documented incorrectly in the guide. For correct documentation, see Section 1.8 in these release notes. 1.9.2 DEC Ada Installation Guide for Digital UNIX Systems The numbers given in the installation guide for disc space requirements are incorrect. For correct disk space requirements, please see Section 1.2 in these release notes. 1.9.3 DEC Ada Overview and Comparison on Digital Platforms Shipped with this release is a new manual, the DEC Ada Overview and Comparison on Digital Platforms, which provides a technical overview of Digital's implementation of the Ada programming language and compares that implementation across various Digital platforms. The guide can be found, in POSTSCRIPT and ASCII formats, at the following location: /usr/lib/cmplrs/ada/dec_ada_overview_and_comparison* 1.9.4 Sending Digital Your Comments We welcome your comments on these release notes or on any other pieces of documentation. You can send comments in the following ways: o Internet electronic mail: ada_docs@zko.mts.dec.com o FAX: 603-881-0120 Attn: Languages Documentation, ZKO2-3 /K35 General Information 1-7 o A letter addressed to: Digital Equipment Corporation Languages Documentation, ZKO2-3/K35 110 Spit Brook Road Nashua, NH 03062-2698 USA If you have suggestions for improving a particular section or find any errors, please indicate the title of the manual, release notes, or online help and the section (if available). Digital also welcomes general comments. 1-8 General Information 2 ________________________________________________________________ Problems Fixed by This Release This chapter lists reported problems fixed by this release. It is not meant to indicate all problems resolved but merely to list some problems that may be encountered by the typical user. The intention is to provide a brief, rather than an in- depth, description of the problem and its resolution. The following lists problems fixed by Version 3.3: o A problem in the POSIX bindings could cause incorrect results from the fcntl, mktime, pipe, and tcgettatr routines. The problem was observed with the optimizer improvements in the DEC Ada V3.3 compiler. This problem has been fixed. o Due to a presumed bug in the Digital UNIX operating system, at least one routine in LOW_LEVEL_IO leaks memory in some circumstances. This problem is fixed in the Digital UNIX operating system. o POSIX_Process_Environment.Delete_Environment_ Variable could get an unhandled exception at runtime (incorrectly) for programs loaded non-share (-S0). This problem has been corrected with a fix to the DEC Ada POSIX bindings. o On Digital UNIX Version 4.0 systems, DEC Ada priorities sometimes do not get set correctly in ADALIB400 due to a change in the treatment of CMA priorities within DECthreads. ADALIB401, which is shipped with the DEC Ada, has fixed this problem. o Comparisons of records or arrays with floating-point components were not working properly if a negative zero value was involved. This problem has been fixed. Problems Fixed by This Release 2-1 o When raising exceptions, DEC Ada programs could get unpredictable results on Digital UNIX V3.2 and higher due to a change in the operating system. This problem appears when raising exceptions that were generated either by DEC Ada or by the user. This problem appeared when the last machine instruction generated in a subprogram is "gentrap." This problem has been corrected with a fix to the compiler. o Delay times were slightly inaccurate. This problem has been fixed by loading a tasking runtime library to be used with programs using delay statements. o Programs tended to loop, hang, or terminate with exception messages when delay statements were used without Ada tasking. The problem is fixed by loading a tasking runtime library which handles the situation properly whenever delay statements are used. o FLOAT_TEXT_IO.PUT did not round IEEE floating-point numbers correctly when rounding numbers less than one. In addition, this routine was printing negative zero and failing to round correctly at the halfway point. These problems have been fixed in the predefined library image. o The compiler was looping on large aggregates. Significant performance improvements can be seen with the DEC Ada upgrade. o The V3.2 compiler crashes and displays the following message on Digital UNIX systems: signal Segmentation fault at [split_collapse:6878 +0x14,0x30600064] This problem is fixed by a new compiler. o Programs failed on Digital UNIX V3.0 systems with the following message: Main program terminated by unhandled exception: DATA_ERROR at pc: 0x000000012002 Failure has not been seen on Digital UNIX V3.2G and V4.0 systems. 2-2 Problems Fixed by This Release o The compiler hangs when using -g2 switch. This problem has been fixed with a new compiler. o DEC Ada was crashing when compiling with the -g switch. The program terminated with the following message: Main program terminated by unhandled exception: SIGSEGV at pc: 0x000000003051FB This problem has been corrected with a fix to the compiler. o The buffer flushing mechanism changed and caused a difference in the behavior of undocumented features. Programs relying on this behavior were in error. This problem has been corrected with a fix to predefined package LOW_LEVEL_IO. o The existing ADALIB321 V3.2 runtime library has objects that are considered obsolete by an ld that was patched for Digital UNIX V3.2C and later systems. This version of ld is also shipped on Digital UNIX V3.2G. Users see extraneous messages, but the images load successfully when these objects are referenced in the ADALIB321 V3.2 runtime library. The following is an example of the message that the user may see: /usr/lib/libada.a(gem_pl_vm.o): version stamp: 11.0, does not match ld's: 3.11 This has been fixed by recompiling and shipping a new DEC Ada runtime. o Fixed-point constants determined at compile-time were being rounded differently from fixed-point constants determined at run-time. Fixed-point constants now round away from zero whether determined at compile-time or at run-time. o The POSIX_PROCESS_PRIMITIVES procedure Wait_And_Check was modified to handle correctly "non-blocking wait". o The POSIX_PROCESS_PRIMITIVES procedure Append_Action was modified to traverse correctly the linked list of actions. o Previously, the Motif V1.2 bindings were a copy of the V1.1 bindings. With this kit, DEC Ada now ships the correct Motif V1.2 bindings. Problems Fixed by This Release 2-3 o Process looping infinitely when DEC Ada concurrent license units should be available The user sees the following message: ada: Info: Your concurrent license for DEC Ada (ADAO-USER) limits the number of users; limit exceeded, waiting... Process will loop indefinitely and not notice an available unit. This problem has been fixed. o Compiler internal error SIGSEGV If you are compiling with debugging enabled and optimization disabled, you see the following error message: SIGSEGV at pc: 0x 000000003051FB8C Both conditions (debugging enabled and optimization disabled) are required. This problem has been corrected. o INTEGER'IMAGE gives incorrect data The integer'image construct was not producing the correct results in DEC Ada V3.2 under Digital UNIX. The following example illustrates the problem: with TEXT_IO; procedure C530VBC is begin if TRUE then null; end if; TEXT_IO.PUT_LINE (' ' & INTEGER'IMAGE(10)); end C530VBC; The problem is fixed in this release. o Incorrect determination of program limits during debugging The debugger was unable to set breakpoints on valid lines within the program because these lines appeared to the debugger to be outside the program limits. This problem has been corrected. 2-4 Problems Fixed by This Release o Incorrect determination of scope of loop parameter The compiler was not correctly determining the scope of a loop parameter for debugging purposes. This problem manifested itself if the same loop parameter was used for two separate loops within the same scope. The debugger was not able to distinguish between the two separate instances of the loop parameter. Therefore, the debugger (Ladebug) produced an error message instead of the value for the loop parameter in some contexts. The problem would manifest itself in an example like the following: for N in 1 .. 10 loop ...; end loop; for N in 5 .. 20 loop ...; end loop; Ladebug knows there are two definitions of N, but it cannot manipulate them. This problem has been corrected and allows you to examine the loop parameters. o Problems entering Ladebug post-Digital UNIX V3.2 Post-Digital UNIX V3.2, problems have surfaced because -g2 is no longer the default option to the compilers. The elaboration object file, ald_mmmmmmmm_nnnnnnnnnn.o, contains routines to initialize and finalize the Ada program or component at runtime. These routines include functions Main and ada$acs$start and procedure ada$elab. The elaboration object file gets compiled by ald /amake when you link a DEC Ada main program. With this file, -g2 must be explicitely given to get debugging information for this object. As a result, Ladebug is not aware that it is debugging an Ada program, and it does not allow the user to see the source simulation intended to help debug program startup and elaboration (if needed). Problems Fixed by This Release 2-5 This problem only occurs post-Digital UNIX V3.2 and is fixed by this ECO release. o Ordering of Linker libraries to ld The amake and ald commands invoke the ld linker. Previously, the ld linker was being fed incorrect library switches, producing "multiply defined" errors when attempting to link a DEC Ada application statically. This problem manifested itself through two different error messages as follows: ld: /usr/ccs/lib/libc.a(_sigprocmsk.o): _sigprocmask: multiply defined ald: Error: Errors during link operation Or: ld: /usr/ccs/lib/libpthreads.a(cma_malloc.o): malloc: multiply defined /usr/ccs/lib/libpthreads.a(cma_malloc.o): free: multiply defined /usr/ccs/lib/libpthreads.a(cma_malloc.o): realloc: multiply defined Error: Undefined: __Argv The workaround is to use the following combination of switches for ald: -lada -lm -lots -lpthreads -qlpthread -lmach -lexc -qlc_r -lc This problem is fixed. o Long Linker lines broken up and handled incorrectly An incomplete link occurred if the command line for the ald command was sufficiently long to require division into smaller ld lines and the first subdivision contained all the object files in the elaboration queue. In such cases, the final ld line was not generated and the link was not completed. To confirm that this is the problem, add the -v option to ald. This causes the actual ld commands to be echoed. If the last ld command echoed contains the -r option (assuming you did not specify -r to ald), then you are experiencing this problem. The problem is 2-6 Problems Fixed by This Release confirmed because ald uses -r for one or more partial links and then invokes ld without -r to do the final link. If the last ld invocation echoed uses -r, then ald has forgotten to output the final link. This problem has been corrected. o Premature STORAGE_ERROR exception If you are running Digital UNIX V3.2, you may see a premature exception (STORAGE_ERROR) for heap allocations. This exception only appears with images linked non-shared. The heap allocations are failing much sooner than with images linked shared. The problem only appears on Digital UNIX V3.2. This problem does not appear on Digital UNIX V3.0 and Digital UNIX V3.2B appears to be a viable upgrade workaround. Problems Fixed by This Release 2-7 3 ________________________________________________________________ Current Restrictions This chapter describes DEC Ada restrictions in the following areas: o Compiler o Digital UNIX operating system o Debugging environment o DEC FUSE features o DECdts o Run-time library 3.1 DEC Ada Version 3.3 Compiler Restrictions The following are restrictions for this version of the compiler: o Opening a file for append and not writing to it overwrites the file. o Users who give priorities explicitly to DECthreads directly (possibly in multi-language programs) may notice changes. 3.1.1 The -04 Optimization Option When the -04 optimization option is in effect (the default unless the -g or -g2 option is specified), compilation speed can appear slow for some units because the compiler assumes a pragma INLINE for calls to some local subprograms. As a result, the compiler virtual size can become large for some units, causing a slow compilation rate. Current Restrictions 3-1 If you find that the compiler is slow for a particular unit and the -O4 option is in effect, try compiling again with a lower optimization level. For example, try compiling with the -O3 option. You can check the virtual size of the compiler by entering the ps u command while the compiler is running. (You can use the w flag to control the width of the ps command output.) For example: % ps uw USER PID %CPU %MEM VSZ RSS TT S STARTED TIME COMMAND jones 13571 28.0 46.0 66.4M 28.5 pa U 09:39:04 2:19.43 /usr/bin/adacom jones 944 1.0 0.5 2.18M 624K p6 S 10:06:57 0:01.13 -csh (csh) jones 974 0.0 0.4 2.13M 496K p6 I 10:11:43 0:00.09 csh test.com jones 976 0.0 0.0 160K 32K p6 I 10:11:43 0:00.02 ada /j/ada2 In the COMMAND column, /usr/bin/adacom denotes the DEC Ada compiler. The VSZ column gives the virtual size of the compiler. Except for large units, the virtual size of the compiler normally is in the range of 5.0M to 30.0M bytes. A large virtual size (for example, 66.4) suggests that you should be using an optimization level other than -O4. 3.1.2 Size of Process Descriptor Table On Digital UNIX Version 1.3 and Version 2.0 systems, the compiler uses the size of the process descriptor table to control the number of files it keeps open during a compilation. The size of the process descriptor table specifies the limit for the maximum number of open files allowed for each process. By default on some systems, the size of this table can be set to a value that is larger than the size of the systemwide table. (The systemwide table specifies the limit for the maximum number of open files allowed collectively for all processes on the system.) On systems where the size of the process descriptor table is set to a value larger than the size of the systemwide table, the systemwide table may become full, especially if there are many other processes running. When the process descriptor table becomes full, the following compiler 3-2 Current Restrictions error is displayed when the compiler tries to open a new file: ada: Error: xxx.acu: File table overflow To work around this problem, you can do either of the following: o Reduce the per-process limit Check and reset the per-process limit by using the limit descriptors command in the C shell (csh) or the ulimit -n command in the Korn shell (ksh). For example, if you are using the C shell, enter the following commands: % limit descriptors # Check the per-process limit 4096 % limit descriptors 100 # Reset the limit to 100 If you are using the Korn shell, enter the following commands: % ulimit -n # Check the per-process limit 4096 % ulimit -n 100 # Reset the limit to 100 You may want to put the command that resets the limit in your ~/.cshrc or ~/.profile file. o Increase the systemwide limit To check the systemwide limit, you need to log in as root or su to root, then use the debugger to print the value of the systemwide limit as follows: % login root (or su) # dbx -k /vmunix /dev/mem (dbx) print nfile 992 (dbx) quit To reset the systemwide limit, modify the nfile and nvnode parameters in the param.c file and then run the doconfig program to rebuild the kernel. Current Restrictions 3-3 3.1.3 Compiler Instruction Generates Unaligned Access Error Message Due to a compiler error, the compiler occasionally generates an instruction that requires the alignment of the data in memory to be different from the actual alignment. When this occurs, the Digital UNIX operating system detects the error and executes an equivalent instruction for unaligned data. With this fixup, your program works as expected although performance is reduced. A message similar to the following is displayed each time such a fixup is executed: Unaligned access pid=7968 va=408b62ea pc=300a28d4 ra=300a292c type=ldl You can suppress such messages using the uac(1) command. For example, if you always want to suppress these messages, you can put the following command into ~/.login: uac p 0 For more information, see the uac(1) reference page. 3.2 Restrictions on Digital UNIX Systems The following restrictions apply to Digital UNIX systems: o Programs exhausting their stack may not work on Digital UNIX V4.0 and V4.0A systems. This restriction should be alleviated with a fix to the Digital UNIX kernel for Version 4.0B. o Digital UNIX V4.0 identifies and reports references to a nonexistent .rdata section. This can occur when the program contains references to null data records and no other data. The user sees the following error message during linking: ald: Error: Errors during link operation
:Permission denied. o DEC Ada tasking programs cannot be linked non-shared (- S0) on Digital UNIX V4.0. DEC Ada users will experience this restriction on Digital UNIX V4.0 systems because DECthreads is not shipping a non-shared library at this time. 3-4 Current Restrictions o When linking some DEC Ada programs into a dynamic executable (the default for the ald command), the Digital UNIX V3.0 linker ld may terminate with an error similar to the following: ld: mgot_get_got_idx_for_pmext: Found symbol(ADA$..._...) isnt in current got(0) ald: Error: Errors during link operation The workaround is to link the program into a static executable. Specify the -S0 option to the ald command which results in ald invoking ld with the -non_shared option. o DEC Ada does not support the om optimization tool that performs post-linking optimizations. 3.3 Debugging Restrictions The following debugging restrictions are global; they apply to debugging with either Ladebug or dbx. o Task debugging is not supported on multiprocessor systems. A workaround is to use the ada_debug command, hold [id], to place the specified tasks on hold during a debugging session. Tasks may then be released using the release [id] command. For more information on these commands and other ada_debug commands, see the DEC Ada manual, Developing Ada Programs on Digital UNIX Systems. o The ada_debug run command is no longer supported on Digital UNIX V4.0 systems. o Some kinds of source program identifiers are not passed to the debugger, so no operations on those identifiers are possible. To see what symbols are provided to the debugger, use the stdump command as in the following example: stdump -c a.out | more o Constants cannot be debugged. They are omitted from the debugging information for your program. o Setting a breakpoint on a label name does not work. Current Restrictions 3-5 o The debugger does not recognize (as a pointer) variables of a private type whose corresponding full type declaration is an access type. Instead, you can use the px alias to print the hexadecimal value of the variable and then use the general memory examination mode with this hexadecimal value providing the starting point. o You may not be able to set a breakpoint on an instance of a subprogram that is declared in a generic unit, especially if the program contains more than one instantiation of the same generic unit. In such cases, the following commands may work: (dbx) func NEW_G$ELAB -- Where NEW_G is an instantiation -- of generic unit G (dbx) which P -- Where P is the name of a -- subprogram declared in G g.P -- Confirms that dbx is finding the -- correct P (dbx) px P -- Displays the address of P 0x120004130 (dbx) stopi at 0x120004130 o The debugger does not support extended 8-bit (Latin-1) characters in identifiers. o When you link a DEC Ada program, the ald command includes a routine called main in the program's executable file to manage the program's execution. For example, this routine elaborates the program and invokes your main program. If your main program is also named main, attempts to set a breakpoint do not work as expected. In this case, you can use the command stop at ADA$MAIN$M to set a breakpoint at your main program. 3-6 Current Restrictions 3.3.1 Restrictions on Ladebug Debugging The following restrictions apply to debugging with the Ladebug debugger: o ada_debug(). If you see the following error message when you are expecting the ada_debug prompt, you may need to upgrade your version of Ladebug: (decladebug) p ada_debug() Main program terminated by unhandled exception: CONSTRAINT_ERROR at pc: 0x000000 012003620C Segmentation fault (core dumped) Call the Digital Customer Support Center (CSC) for more information. o On Digital UNIX using Ladebug, users are not able to reference up-level nested declarations. Users instead get the following error: (ladebug) print u Error: value of u is being taken in frame that does not enclose its scope Consider the following test program: procedure t is a : integer; procedure test is begin a := 1; end; begin a := 2; test; end; When Ladebug is asked to print the value of the variable a, the following error messages result: Error: value of a is being taken in frame that does not enclose its scope Error: no value for symbol a Error: no value for a Current Restrictions 3-7 The workaround is as follows: (ladebug) whereis a "/tle/ada13/test/t.ada"`t`a (ladebug) p "/tle/ada13/test/t.ada"`t`a Another workaround is to use dbx in this situation. 3.3.2 Restrictions on dbx Debugging The following restrictions apply to debugging using dbx: o If a single source file contains multiple compilation units, dbx may be unable to set breakpoints on some subprograms. In some cases, putting each compilation unit in a separate source file will alleviate the problem. o When debugging DEC Ada tasking programs, the ada_ debug() show -f command displays incorrect values for the "Stack in use:" field for tasks other than the currently executing task. 3.4 DEC Ada-specific DECdts Restrictions The Digital Distributed Time Service (DECdts) and other programs that call adjtime() can cause DEC Ada delays to appear insufficient. The Digital UNIX operating system implements delays by blocking the delaying task for the specified number of hard clock ticks. With each hard clock tick, the operating system checks to see if any delays have expired. If so, then it wakes up the tasks. It also checks to see if the time-of-day clock (used by Calendar.Clock) should be updated. If you are running DECdts, there may be cases where the time-of-day clock does not get updated with every clock tick because of clock synchronization. This lack of updating the time-of-day clock is what causes DEC Ada delays to appear insufficient. 3-8 Current Restrictions Suppose the current time of day is 100 clock ticks past midnight and the task decides to delay for 10 clock ticks. With each clock tick, the kernel checks the queue of delayed tasks to see if the time-of-day clock should be incremented. However because of DECdts, suppose there are two occasions when the time-of-day clock is not incremented. In this case, at the tenth hard clock tick the task delay is over and the task is activated. If the task then gets the current time of day (for example, by calling Calendar.Clock) it will be 108. When this is compared to the time when the delay started (100), it will appear that the delay lasted only 8 clock ticks when it actually lasted 10 hard clock ticks. Any program (not just DECdts) that calls adjtime() can affect the time-of-day clock. For more information, see the adjtime(2) reference page. 3.5 DEC Ada Version 3.1 Run-Time Library Restrictions The signal SIGABRT, which was designed to handle interrupt entries, does not work as explained in the Digital UNIX documentation. It is expected that this will be fixed in a future release of the operating system. 3.6 DEC Ada-specific DEC FUSE Restrictions On systems running Digital UNIX Version 3.0 and DEC FUSE Version 2.0, new categories in cross-references are not fully supported. Restrictions on DEC FUSE Debugging You need to disable the initial breakpoint (in main) if you want the DEC FUSE Debugger to be case-insensitive initially. The DEC FUSE Debugger's Source Browser does not handle augmented filenames that result from having multiple compilation units in the same source file. This prevents using the Source Browser to set a breakpoint in a subprogram that is in a package that shares its source file with other units. Current Restrictions 3-9 Restrictions on Using the DEC FUSE cross referencer or call graph browser When using the DEC FUSE cross referencer or call graph browser with DEC Ada, you may see the following message in the DEC FUSE database manager's transcript box: fuseadaxref: Error: fscanf result: 1 This message may be displayed when a cross reference database is created or updated and should be ignored. 3-10 Current Restrictions