| United States-English |
|
|
|
![]() |
Release Notes for HP-UX 10.20: HP 9000 Computers > Chapter 5 Other Operating System and Subsystem ChangesProgramming Languages |
|
This section summarizes changes that affect programming languages. For 10.20: At 10.20, there is a single C math library called libm.a, rather than separate SVID (libm) and XPG4 (libM) libraries. The single library is XPG4.2-compliant. Links are provided from each libM to the corresponding libm so if you call the math library, you do not have to change their makefiles. Compiling with -lM and -lm will both continue to work. Because the SVID and POSIX libraries were essentially the same at 10.0 (except for matherr), you should see no effect. There are still pa1.0 and pa1.1 versions of the C math library. To support high-performing math code at pa2.0, modify the millicode library, as discussed below. For 10.20: At 10.0, if a math routine is called with bad arguments, the library code generally invoked a user-written error handler called either matherr or _matherr, depending on the library. This behavior is gradually being obsoleted. At 10.20, the two math libraries are converging and their common math error behavior supports both of the previous conventions. Both _matherr() and matherr will be invoked if a math routine is being called with bad arguments. If _matherr returns a non-zero value, matherr will not be called. At 10.20, both archive and shared math libraries support this combined matherr behavior. In a future HP-UX release, the math library functions will no longer call matherr or _matherr when there is an error. Instead, there will be forward compatibility of shared-linked executables by versioning shared libraries. /usr/lib/libm.2 will be added with the new matherr behavior while continuing to supply a /usr/lib/libm.1 with the old 10.0 behavior. At this future release, you will have to modify your applications so they do not depend on matherr. See the Floating-Point Guide for a sample wrapper function. For 10.20: HUGE_VAL, which is currently defined in <math.h> as the largest double-precision value, will change to IEEE infinity at at future HP-UX release. This will coincide with a change in libc, which returns HUGE_VAL from certain string-to-float conversion routines. For 10.20: At a future HP-UX release, a separate pa1.0 set of math libraries will not be shipped. For 10.20: New math entry points have been added to the millicode library (/usr/lib/milli.a). Because the compiler generates millicode, you can choose the name of these new entry points. For example, you can use the name $$log_20 even though there is an existing $$log entry. The new routines are PA2.0 code and the compiler will only generate calls to the routines if +DA2.0 appears on the compile line. Because of the +Olibcalls switch, which enables the generation of millicode calls for math routines, you can compile your programs and link them with 2.0-specific math routines. This allows you to obtain the full benefits of the pa2.0 architecture improvements in your floating-point applications. For 10.20: The functions frexp, ldexp, and modf, which have been supplied in HP-UX as part of the C library, are being shipped in the math library. This change has been made for XPG4.2 compliance. The functions will also remain in the C library for backward compatibility until the next release of libc. For 10.20: When programs are optimized with +Ovectorize, they can access some special vector support in /usr/lib/pa1.1/libm.a. Other than setting the optimizer switches, you do not have to make changes to obtain the resulting support routines. Among the routines provided are those that can move a vector, multiply by a constant, or take the sum of the elements. The High-Level Optimizer recognizes suitable loops in the user program and replaces them by math library calls. Programs compiled with +DA1.1 or +DA2.0 can benefit from this. Some of the routines in /usr/lib/pa1.1/libm.a are PA2.0 code, but the compiler ensures that they are only linked with 2.0 programs. For 10.20: The linker (ld) and the dynamic loader (dld.sl) issue warning messages for any compatibility issues. These issues are described below. The messages, issued by default, can be turned off with the new option +vcompatwarnings and turned off with the option +vnocompatwarnings. The following will issue a message:
The dynamic loader (dld.sl) also issues warning messages. By default, these message are off. The messages can be turned on by setting the environment variable _HP_DLDOPTS to the include the string warnings. For example,
One of the following can trigger a message:
The changes to the linker will result in more warning messages being issued. This might cause test suites and other programs which rely on the linker's output to fail. The dynamic loader might cause a program to have a slower start-up time because the loader needs to check the environment before the program can be executed. The additional checking the linker must do most likely will have no impact on performance. Program startup time might be affected because the dynamic loader checks the environment before each program is being executed. The LDOPTS environment variable can include the +vnocompatwarnings option instead of placing it on the command line. Similarly, the C and C++ compilers can be called with the -Wl,+vnocompatwarnings option to turn off the messages via the compiler. The following features of the linker/dynamic loader might become obsoleted in a future HP-UX release (some only for a 64-bit environment):
For 10.20: The fastbind is a new tool that can improve the start-up time of programs that use shared libraries (incomplete executables) by storing information about needed shared library symbols in the executable file. The following has been modified:
For 10.20: The archiver (AR) stores the user IDs (UID) and group IDs (GID) of the owner of the SOM file in the ar_uid and ar_gid members of the archive header ar_hdr (defined in the header file /usr/include/ar.h). The ar_uid and ar_gid used to be a decimal number (six ASCII characters), left-justified and blank padded. This resulted in a limit of 99999 on UID and GID. To support user and group IDs larger than 99999, the AR now uses a different encoding for user and group ID values. The new encoding will support all values of the 32-bit signed integer UID and GID. The following has been modified:
For 10.20: The following has been modified:
For 10.20: The linker (ld) supports a command line option +help to invoke the HP-UX Linker and Libraries Online User Guide if you are running an X window system and the environment variable DISPLAY is set to the name of your workstation or X terminal. For UID and GID values greater than 99999, the ar_uid and ar_gid fields of ar_hdr contain the ASCII encoding of UID and GID and not the ASCII decimal number itself as it did previously. The start-up time of programs that have fastbind information might be less because the dynamic loader will use the fastbind information to bind the executable instead of the standard search method for binding the symbols. For 10.20: The -B symbolic and +Ostaticprediction options have been added. Syntax:
The -B symbolic option is used only in building shared libraries to direct the linker to resolve internal calls instead of building import stubs for those calls. Without specifying this option, the default is that unresolved procedures can be resolved either inside or outside the shared library; thus, import stubs are always built. The +Ostaticprediction option sets the branch prediction bit in the output executable file's auxiliary header. This option is only applicable on the PA 2.0 architecture. Using the -B symbolic option in building shared libraries will limit library users from supplying their own customized procedures because all procedures, if defined inside the shared libraries, have already been resolved. Using the +Ostaticprediction option, the bit in the executable file's auxiliary header will enable the branch prediction feature in the PA2.0 architecture. There should be no impact to your applications. For the -B symbolic option, there will be a slight performance improvement because the path length for internal calls will be shorter due to the elimination of import stubs. For the +Ostaticprediction option, the branch prediction feature in the PA2.0 architecture should also improve performance. For 10.20: Features:
The defaults architecture for code generation and scheduling is as follows:
In prior releases, the S800 compiler always generated PA1.0 code and the S700 compiler always generated PA1.1. There is additional performance tuning for the new PA8000 architecture, which is also known as the PA 2.0 architecture. The compiler supports +DA2.0 and +DS2.0 switches to generate peak performance for this architecture. Recompilation for PA2.0 will show significant performance improvements. See the file /usr/lib/sched.models to see the mapping between models and PA architecture versions. There are new pragmas for faster calls to shared libraries and improved performance. Refer to the C Programmer's Guide and this document for descriptions of these pragmas. There are enhancement to optimization levels 2, 3, and 4 to enhance performance of programs, including macro definitions of ABS, MIN, and MAX. The compiler continues to support the existing optimization switches. These switches are:
For 10.10:
For further information about enhancements made to HP C/HP-UX in System Releases 10.00, 10.01, and 10.10, read HP C/HP-UX Release Notes Version A.10.3055 (5964-1375). This is also available online in the file /opt/ansic/newconfig/RelNotes/ansic.10.30. For details of the changes made to the HP C/HP-UX compiler in System Releases 10.00 and 10.01, read HP C/HP-UX Technical Addendum (5963-4468). For revised information on alignment modes and their use, read HP C/HP-UX Release Notes Version A.10.01 (online only) located in the file /opt/ansic/newconfig/RelNotes/ansic.10.01. For 10.0: The HP C compiler product version A.10.00 release includes enhancements to the compiler, optimizer, and online and hardcopy documentation. The following enhancements have been added to the HP C Series 700/800 compiler product since the A.09.61 release:
For more information see:
For 10.10: The new features available with HP C++/HP-UX Version A.03.72 are:
For more information, see your HP C++/HP-UX Version A.10.09 Release Notes and HP C++ Troubleshooting Notes. The release notes are available in the C++ product in hardcopy or in online form in /opt/CC/newconfig/RelNotes/CXX.10.01. The troubleshooting notes are available in the C++ product in /opt/newconfig/RelNotes/tools.ps or in /opt/newconfig/RelNotes/ascii. For 10.0: Changes for the HP C++ version, A.03.60, included:
The HP C++ run-time libraries libC.ansi and libC are now shipped as part of the HP-UX core system. Prior to the HP-UX 10.01 release, these libraries were shipped with the HP C++ product. The following files have been added to the core system at 10.01:
For more information, see the HP C++/HP-UX Version A.10.00 Release Notes for HP 9000 Series 700/800 Computers. These are on your 10.x system in the ASCII file /opt/CC/newconfig/RelNotes/CXX.10.0. HP Micro Focus COBOL/UX must be version B.09.10 or later to run on HP-UX 10.x. For more information on HP Micro Focus COBOL/UX B.09.10 see:
The 10.0 release of the HP FORTRAN/9000 compiler includes the following new features:
For more information about this product, refer to the HP FORTRAN/9000 10.0 Release Notes. New features include:
For more information see:
New features of the Precision Architecture RISC (PA-RISC) Assembler for Release 10.0 include:
For more information see:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||