Jump to page titleUNITED STATES
hp.com home products and services support and drivers solutions how to buy
» contact hp


more options
 
hp.com home
End of Jump to page title
HP Services Software Patches
Jump to content


» software & drivers
» ask Compaq
» reference library
» forums & communities
» support tools
» warranty information
» contact support
» parts
» give us feedback

patches by topic
» DOS
» OpenVMS
» Security
» Tru64 Unix
» Ultrix 32
» Windows
» Windows NT

associated links
» what's new
» contract access
» browse patch tree
» search patch tree
» join mailing list

connection tools
» nameserver lookup
» traceroute
» ping


Find Support Information and Customer Communities for Presario.
Content starts here
OpenVMS VMS73_ACRTL-V0300 Alpha V7.3 Compaq C RTL ECO Summary
TITLE: OpenVMS VMS73_ACRTL-V0300 Alpha V7.3 Compaq C RTL ECO Summary
 
NOTE:  An OpenVMS saveset or PCSI installation file is stored
       on the Internet in a self-expanding compressed file.
 
       For OpenVMS savesets, the name of the compressed saveset
       file will be kit_name.a-dcx_vaxexe for OpenVMS VAX or
       kit_name.a-dcx_axpexe for OpenVMS Alpha. Once the OpenVMS
       saveset is copied to your system, expand the compressed
       saveset by typing RUN kitname.dcx_vaxexe or kitname.dcx_alpexe.
 
       For PCSI files, once the PCSI file is copied to your system,
       rename the PCSI file to kitname.pcsi-dcx_axpexe or
       kitname.pcsi-dcx_vaxexe, then it can be expanded by typing
       RUN kitname.pcsi-dcx_axpexe or kitname.pcsi-dcx_vaxexe.  The
       resultant file will be the PCSI installation file which can be
       used to install the ECO.
 

New Kit Date:       13-DEC-2002
Modification Date:  Not Applicable
Modification Type:  NEW KIT


Copyright (c) Compaq Computer Corporation 2002.  All rights reserved.

OP/SYS:     OpenVMS Alpha 

COMPONENT:  DECC$SHR (Compaq C RTL)

SOURCE:     Compaq Computer Corporation

ECO INFORMATION:

     ECO Kit Name:  VMS73_ACRTL-V0300
                    DEC-AXPVMS-VMS73_ACRTL-V0300--4.PCSI
     ECO Kits Superseded by This ECO Kit: VMS73_ACRTL-V0200  
     ECO Kit Approximate Size:  16688 Blocks
     Kit Applies To:  OpenVMS Alpha V7.3
     System/Cluster Reboot Necessary:  Yes
     Rolling Re-boot Supported:  Yes
     Installation Rating:  INSTALL_3
                           3 - To  be  installed  by  customers  experiencing  the  problems
           		       corrected.

     Kit Dependencies:

       The following remedial kit(s), or later, must be installed BEFORE
       installation of this, or any required  kit:

         VMS73_UPDATE-V0100

       In order to receive all the corrections listed in this
       kit, the following remedial kits should also be installed:

         None 


ECO KIT SUMMARY:

An ECO kit exists for Compaq C on OpenVMS Alpha V7.3.  This kit 
addresses the following problems: 

PROBLEMS ADDRESSED IN KIT VMS73_ACRTL-V0300

     Note:  The first several entries list new features in this ECO kit.
     For more information, see the New Features section of the release
     notes.



     o  C header files are shipped with this ECO kit.  These files
        will be installed only if needed by your system.

     o  You can now set the default (working) directory for child
        processes created by vfork/exec*, using the new RTL function
        decc$set_child_default_dir().


     o  64-bit pointer support is added for sendmsg(), recvmsg(),
        getaddrinfo(), and freeaddrinfo().


     o  A new feature logical DECC$ALLOW_REMOVE_OPEN_FILES is added to
        control the behavior of remove() on open files.



     o  The following new C RTL functions are provided with this kit:
        pread()
        pwrite()
        readv()
        _readv64()
        __writev64()
        decc$set_child_default_dir()

          For more information, see the "New Features" section of the
          release notes for this ECO kit.



     o  New socket routine poll() is provided with this kit.





     o  In some circumstances, the OpenVMS linker flagged the
        GETADDRINFO_COMPAT43 symbol as undefined.  This is fixed.


     o  The following socket routines did not have 64-bit pointer
        support.  Now they do:

        accept()    
        getpeername()
        getsockname()



     o  A previous fix to fwrite(), which involved padding short-sized
        records with zeros to align them with bigger records in a
        fixed-length-record file, allowed new records to have a
        carriage return after every single byte, thereby creating a
        large number of spurious records in the file.

          Fix:

          Because this is a change in behavior, a feature logical has
          been added to control the new behavior.  This new feature
          logical, DECC$WRITE_SHORT_RECORDS, supports the previous fix
          to fwrite() (to accommodate short-sized records), while
          retaining the legacy way of writing records to a fixed-length
          file as the default behavior:

             When DECC$WRITE_SHORT_RECORDS is set to "ENABLE",
             short-sized records are padded with zeros to align records
             on record boundaries.

             When DECC$WRITE_SHORT_RECORDS is set to "DISABLE" or when
             it is deassigned, the legacy behavior of writing records is
             implemented.  This is the recommended and default behavior.




     o  Recent versions of the C RTL, along with header files supplied
        with Version 6.5 of the C compiler, incorrectly made a
        local-time version of the ftw() function the default when
        compiling with the _VMS_V6_SOURCE macro defined.

          Fix:

          This behavior was incompatible with previous C RTL versions,
          and has been restored to default to the UTC-based ftw()
          function under the same circumstances.  Now, to get the
          local-time ftw(), you must compile with
          /DEFINE=__LOCAL_TIME_FTW, in addition to the macros
          _VMS_V6_SOURCE and _DECC_V4_SOURCE.



     o  For spawned processes that are C programs, defining the
        DECC$EXEC_FILEATTR_INHERITANCE feature logical name to a value
        of 1 or ENABLE no longer causes the spawned child process to
        inherit file positioning for all file access modes;
        specifically, append mode does not inherit file positioning.

          Fix:

          For a child process to inherit file positioning for all file
          access modes including append, DECC$EXEC_FILEATTR_INHERITANCE
          must be set to a value of 2:

             $ DEFINE  DECC$EXEC_FILEATTR_INHERITANCE 2

          For a child process to inherit file positioning for all file
          access modes except append, set DECC$EXEC_FILEATTR_INHERITANCE
          to a value of 1:

             $ DEFINE  DECC$EXEC_FILEATTR_INHERITANCE 1

          This change was made in OpenVMS Version 7.3-1.  This ECO
          propagates the fix to OpenVMS Versions 7.3 and 7.22.




     o  Incomplete support for 64-bit iconv() was mistakenly put into
        recent (Spring 2002) ECO kits and OpenVMS V7.3-1.

        This gave the illusion of 64-bit iconv() support under some
        circumstances (linking with STARLET.OLB).  This was never
        supported, and still is not supported.

          Fix:

          Because 64-bit iconv() is neither functional nor supported,
          this ECO removes DECC$_ICONV64.

          Users compiling with /POINTER=LONG should now expect a
          compiler error message such as the following:

             %CC-W-PTRMISMATCH, In this statement, the referenced type of the
             pointer value "(char ...)0" is "long pointer to char", which is
             not compatible with "short pointer to char".




PROBLEMS ADDRESSED IN KIT VMS73_ACRTL-V0200:

  o  In previous releases of C RTL, all file positions were
     calculated using 32-bit arithmetic.  This restricted certain
     file operations to file sizes less than 2GB.

     This restriction has now been removed.  File operations using
     C RTL I/O may now be performed on file sizes up to 2
     terabytes.

     By default, applications may only use offsets expressed in 32
     bits.  The function fgetpos() now returns the correct file
     offset when the file position is beyond 2GB.

     Developers can also program their application to express file
     sizes and positions in 64-bits.

     The new 64-bit interfaces can be selected at compile time by
     defining the _LARGEFILE feature macro:

          $ CC /DEFINE=_LARGEFILE 

     When specified, a 64-bit integer is used to express the
     integral type off_t.

     Support has been added for compiling applications to use file
     sizes and offsets that are 2 gigabytes or larger.  This is
     accomplished by allowing file offsets of 64-bit integers.  Two
     new functions have been added:

           -  fseeko

           -  ftello


     These are identical to fseek and ftell , but they accept or
     return values of type off_t , which allows for a 64-bit
     variant of off_t to be used.

     Modifications to accommodate a 64-bit file offset have been
     made to the following existing C RTL functions:

           -  fstat

           -  ftruncate

           -  ftw

           -  lseek

           -  mmap

           -  stat

           -  truncate

     Note that ECO kits released in August 2000 and later for both
     VAX and Alpha had a problem with stream file larger than 2GB.
     Attempts to position at the beginning of file using rewind(),
     lseek() or fseek() may fail and leave the file position at
     end-of-file.  In V7.3, this can cause an ACCVIO.  This is also
     fixed.


  o  Support for the Chinese GB18030 character set was added to the
     C Run-Time for the VMSI18N Internationalization kit which also
     supports GB18030.

     This is one of two kits required for GB18030 support, the
     other is ALPVMSI18N01_073 on OpenVMS Alpha V7.3.

     This C Run-Time kit must be installed before the VMSI18N kit.


  o  The function strftime() V conversion specifier, did not return
     the correct number of weeks in the year for some boundary
     dates at the end of December or the beginning of January.


       o  Function strftime() reported either week 52 or 53 for last
          week of December.  It should report "1" for December dates
          which are in the same week as January 1st of the next
          year, when the week that contains Jan 1 has four or more
          days in the next year.

       o  Function strftime() always reported week 53 when early
          January dates were not in week 1, even if the last week in
          December was actually week 52.  They should be reported as
          week 52.


  o  Threaded C applications can hang, when doing operations which
     result in file I/O.

     The frequency of the hang varies with the timing of statements
     in the user's program.  Changing the program can eliminate the
     hang, especially adding extra I/O function calls.


  o  Function ecvt() (convert to string) had performance problems
     due to its use of thread-specific data.  The function called
     LIB$AST_IN_PROG() protects the thread-specific data against
     corruption by an interrupting AST.  LIB$AST_IN_PROG()
     introduces a high overhead resulting in poor performance.

     Function ecvt() was not intended to be AST-safe.  The handling
     of thread-specific data was revised in C RTL for OpenVMS
     V7.1-1.  This introduced the test for LIB$AST_IN_PROG() and
     the resulting overhead.

     The default is now thread-safe but not AST-safe.  This greatly
     improves performance.

     The AST-safe mode can be restored by enabling the feature
     DECC$THREAD_DATA_AST_SAFE:

         $ DEFINE DECC$THREAD_DATA_AST_SAFE ENABLE


  o  A C application can become noticeably slower after adding
     calls to C Run-Time function times() to get performance data.

     The times() function used an asynchronous system call $GETJPI
     which includes significant overhead.

     Function times() has been changed to take advantage of changes
     in OpenVMS which now make the call synchronous which
     significantly reduces overhead.


  o  Function alarm() did not correctly recognize an unexpired
     timer and did not always return the correct time remaining.

     Function alarm() supports a single timer.  When another
     request to alarm() is issued, any pending request should be
     canceled, a new alarm scheduled and the time remaining on the
     original timer returned.

     Function alarm() was changed to:

       o  Use static variable for storing scheduled alarm.

       o  If the unexpired time is less than zero then report zero.

       o  If the unexpired time is greater than zero then return a
          minimum of 1.


  o  When called from a higher access mode, function fopen() can
     fail with a Bad Address error.


  o  Child processes did not inherit file open context "ctx=eol"
     when specified in the parent process.

     The child process inherits the file open contexts of the
     parent.  It does this by interpreting the context and
     generating an open request with the reconstituted optional
     arguments.  The algorithm for building the open request was
     not updated accordingly, and so this option was ignored.

     This has been fixed.


  o  C programs cannot create files with special characters such as
     '#' in UNIX mode.

     The CRTL requires a new feature logical DECC$EFS_CHARSET to be
     defined with the value ENABLE to use EFS extended characters.
     Many existing applications make assumptions about file names
     based on the presence of certain characters.  This is
     necessary because non-standard and undocumented C RTL
     extensions do not work when EFS extended character set support
     is enabled.

     The existing feature logical DECC$FILENAME_UNIX_ONLY specifies
     filename interpretation.  Two new feature logical have been
     created to enable some of these features independent of
     whether OpenVMS names are accepted.


       *  DECC$FILENAME_UNIX_ONLY - Always interpret names as UNIX
          style.

          Never interpret a name as a OpenVMS format name.  This is
          the primary behavior when DECC$FILENAME_UNIX_ONLY is set
          to ENABLE.

       *  DECC$FILENAME_UNIX_NO_VERSION - Ignore OpenVMS generation
          numbers and never treat the last element of a UNIX name as
          a generation number.

          This behavior can now be selected independently by
          enabling feature logical DECC$FILENAME_UNIX_NO_VERSION.

       *  When not otherwise specified, always report file names in
          UNIX style.

          This behavior can now be selected independently by
          enabling feature logical DECC$FILENAME_UNIX_REPORT.

     The implementation supports conversion from OpenVMS to UNIX
     needed for readdir(), ftw(), getname(), fgetname(), and
     getcwd(), etc.


  o  Function fstat() is not reporting permissions for files of
     type S_IFCHR and reports that owner is owner of current
     process.

     Function fstat() leaves the XABITM block for
     XAB$_UCHAR_DIRECTORY linked to the FAB if $DISPLAY fails.

     This also affects stat().


  o  Function setvbuf() restricted maximun buffer size for stream
     files to 32767 instead of 65535.

     When setvbuf() is used on a file not opened by RMS, such as a
     socket, the application may ACCVIO.


  o  Applications testing the return status of pclose() in OpenVMS
     mode cannot detect warnings.

     To check the OpenVMS status, compile with the _VMS_WAIT macro
     defined.  This will enable OpenVMS Warning, Failure and
     Success conditions.

        $ cc/define=_VMS_WAIT 

     This is similar to function waitpid(), where _VMS_WAIT is
     documented.


  o  C programs calling sockets were slow because of how the CRTL
     was resolving entries for socket functions in TCP/IP shared
     libraries.


  o  Extraneous thousands separator displayed for negative values
     when using locale support with printf().

     For example, "-,999,999.00" instead of "-999,999.00".


  o  Functions remove() and unlink() cannot delete files that are
     open.  This is expected to work, and has been fixed.


  o  The C RTL was unconditionally converting the values for PATH
     and HOME to lowercase.

     C RTL preserves case in command line arguments when
     DECC$ARGV_PARSE_STYLE is enabled and "SET
     PROC/PARSE_STYLE=EXTENDED" is in effect.

     It is appropriate that when command line arguments have case
     preserved that the environment variables HOME and PATH be
     treated likewise.


  o  This was fixed.


  o  Function access() is not testing whether the device is
     software write-locked when a user requests write access.

     If device is write-locked, errno is set to EROFS and failure
     is now returned.


  o   -  tempnam() is required by the standard to offer at least
         10,000 unique names.  CRTL currently allows 156.

      -  access() is called to determine if a file to be created
         exists.  For tempnam() the name is always in
         OpenVMS-style.  When OpenVMS style names are disabled,
         access() will always fail indicating that there is no
         matching file.

      -  tmpnam() reports the new name in a static buffer, instead
         of a thread-specific buffer.

      -  When tempnam() is called repeatedly, no attempt is made to
         remember the last generated name.  If a file is created
         for each call, the program will get slower as it tests for
         the existence for each created file.


  o  If the top level directory on a device contains file names
     which collate before 000000.DIR, ftw() and readdir do not
     detect that 000000.DIR is a special directory and will
     recursively search it.

     000000.DIR is now recognized as the top level directory and
     treated appropriately.


  o  Trying to rename() file xx.yy to zz gets filename zz.yy.

     Trying to rename() file xx.yy to .zz gets filename xx.zz.

     This problem has been fixed, but requires a C RTL feature
     logical set.  The user will get zz or .zz, as they specified.

     For compatibility with existing programs the new behavior must
     be enabled using a feature logical name:

              $ DEFINE DECC$RENAME_NO_INHERIT ENABLE

     If DECC$RENAME_NO_INHERIT is ENABLED, the rename function
     tries to emulate UNIX.

       -  There is some validation of old and new names to determine
          if they are directories and ensure that a directory name
          will be valid after the rename.

       -  The effective new name does not inherit any elements from
          the old name.

       -  rename is performed using RMS function SYS$RENAME.

     This mode is designed for UNIX style names.  Validation is
     less complete for OpenVMS style names.

     If feature DECC$RENAME_NO_INHERIT is DISABLED, the rename
     function follows OpenVMS renaming policy.  Apart from
     converting UNIX names to OpenVMS format, in this mode the
     underlying LIBRTL function LIB$RENAME_FILE performs most of
     the validation.


  o  A call to function "access(path, W_OK)" will fail if the
     file/directory does not have delete access enabled.

     Write access to a directory is commonly tested to see if a
     file can be created in the directory.  Directories on OpenVMS
     are not typically created with delete access.  Change access()
     to allow access with write access.


  o  Function getenv() call could corrupt the stack and cause an
     ACCVIO in a multi-threading application.  This has been fixed.


  o  Function getch() will ACCVIO for termination sequences longer
     than 8 bytes.  This has been fixed.


INSTALLATION NOTES:

Because the images in this kit will not take effect until the
system is rebooted, you must reboot the system after installing
this kit.

If you have other nodes in your OpenVMS cluster, they must also be
rebooted in order to make use of the new image(s).  If it is not
possible or convenient to reboot the entire cluster at this time, a
rolling re-boot may be performed.

INSTALLATION INSTRUCTIONS:

Install this kit with the POLYCENTER Software Installation Utility
by logging into the SYSTEM account, and typing the following at the
DCL prompt:

$ PRODUCT INSTALL VMS73_ACRTL/SOURCE=

The kit location may be a tape drive, CD, or a disk directory that
contains the kit.  If /SOURCE is not specified, the utility
searches in the location defined by the logical name PCSI$SOURCE.
If PCSI$SOURCE is not defined, and the /SOURCE qualifier is not
specified, the POLYCENTER Software Installation utility searches
the current default directory.

Special Installation Instructions:

     o  %INSTALL-E-NODELSHRADR Error Message

        During installation you may see the following message:

        %INSTALL-E-NODELSHRADR, unable to delete image with shareable
        address data
        -INSTALL-I-PLSREBOOT, please reboot to install a new version of
        this image


        This is not a cause for concern.  It simply means that
        DECC$SHR.EXE was installed as a resident image, which is the
        standard configuration for OpenVMS Alpha systems.  The new
        image will not take effect until the system is rebooted.


     o  Scripting of Answers to Installation Questions

        During installation, this kit will ask and require user
        response to several questions.  If you wish to automate the
        installation of this kit and avoid having to provide responses
        to these questions, you must create a DCL command procedure
        that includes the following definitions and commands:

           -  $ DEFINE/SYS NO_ASK$BACKUP TRUE

           -  $ DEFINE/SYS NO_ASK$REBOOT TRUE

           -  Add the following qualifiers to the PRODUCT INSTALL
              command and add that command to the DCL procedure.

                /PROD=DEC/BASE=AXPVMS/VER=V3.0


           -  De-assign the logicals assigned

        For example, a sample command file to install the
        VMS73_ACRTL-V0300 kit would be:

            $
            $ DEFINE/SYS NO_ASK$BACKUP TRUE
            $ DEFINE/SYS NO_ASK$REBOOT TRUE
            $!
            $ PROD INSTALL VMS73_ACRTL/PROD=DEC/BASE=AXPVMS/VER=V3.0
            $!
            $ DEASSIGN/SYS NO_ASK$BACKUP
            $ DEASSIGN/SYS NO_ASK$REBOOT
            $!
            $ exit


All trademarks are the property of their respective owners.
Files on this server are as follows:
»dec-axpvms-vms73_acrtl-v0300--4.README
»dec-axpvms-vms73_acrtl-v0300--4.CHKSUM
»dec-axpvms-vms73_acrtl-v0300--4.pcsi-dcx_axpexe
privacy statement using this site means you accept its terms