bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

OpenVMS todo list:


From: John E. Malmberg
Subject: OpenVMS todo list:
Date: Mon, 3 Jul 2017 18:22:32 -0500
User-agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0

Hello,

This is some of the things that I still need to do to get gnulib to the point of compiling on OpenVMS.

* Config.h
  OpenVMS needs __UNIX_PUTC macro defined for putc_unlocked
  and friends to be visible.

* lib/passfd.c

  This needs "_X_OPEN_SOURCE_EXTENDED" for the XPG4 V2 features
  in the code to compile on OpenVMS.  Specifically the "msg_control"
  and "msg_controllen" members of struct msghdr.

  This would need to be defined before any system header files are
  included.

  OpenVMS provides _CMSG_SPACE and _CMSG_LEN macros instead of
  CMSG_SPACE and CMSG_LEN.  This looks like I would need to
  find out how gllib/sys/socket.h got generated.

  For the OpenVMS header files, enabling _X_OPEN_SOURCE_EXTENDED
  causes macros and symbols not defined by the applicable
  standard to be hidden from the compiler.  There currently
  is no way to make them visible and have XPG4 V2 features enabled.

  So I either need to have lib/passfd.c for OpenVMS define the
  _X_OPEN_SOURCE_EXTENDED macro as such:

  #ifdef __VMS             /* OpenVMS enable XPG4 V2 */
  # define _X_OPEN_SOURCE_EXTENDED
  #endif
  #include <config.h>

  Or I need to have my build procedure create a file named
  lib/gnv$passfd.c_first that contains that macro definition.

  The cc emulation program in OpenVMS GNV will automatically treat
  such files as a "first_include".

* The OpenVMS iconv.h header file has a bug where it does not
  include sys/types.h.

* The OpenVMS math.h header file has a bug where it is missing
  NAN and INFINITY, these are found in the fp.h header file.

* In gl_sublist.c, the OpenVMS compiler is generating a
  "MISSINGRETURN" warning because it does not realize that there
  is no return from an abort() call.
  This should fix that:

  #ifdef __DECC
  # pragma message disable missingreturn
  #endif

  So would adding a useless return statement, but that may cause some
  compilers to complain about unreachable code.

  I do see GCC specific pragmas in the source code.

* The OpenVMS stropts.h header file definition for ioctl() is
  non-standard, which causes problems when it is wrapped
  in ioctl.h

* OpenVMS sys/resource does not define RUSAGE_SELF or
  RUSAGE_CHILDREN.  Comments say ru_stime member of rusage
  is present, but not implemented.

* Because the replacement C99 routines are not prefixed
  with "RPL_" or another prefix, the OpenVMS C Compiler is
  generating a warning when encountering them:

%CC-W-NOTINCRTL, Identifier "strtoumax" is reserved by the C99 standard and will be mapped to "DECC$STRTOUMAX" although it is not available in the CRTL available to the compiler.

  These appear to be routines that the compiler would inline when the
  optimization level allows it.

  It looks like something in the configure tests determine if the
  prefix is generated for a replacement routine or not.  OpenVMS
  generally always will need the prefix on a replacement routine.

* Work out the how to patch the configure test for getdtablesize()
  to pass on OpenVMS.

* The configure test for the real directory for OpenVMS system
  supplied header file fails because they are not in a real directory.
  They are in a library file.  If OpenVMS does not find a header
  file in supplied paths header files or in the source, it junks
  the directory portion the the header file path, and just looks
  up the filename in the text library.

  I export some symbols to cause Configure on VMS to skip the test.

  export gl_cv_next_errno_h="<vms_fake_path/errno.h>"

It looks like for some of these I need to find the appropriate m4 macros and others I need to find the templates for generating the local header files.

Any suggestions on the preferred way to implement patches for these would be appreciated.

Regards,
-John



reply via email to

[Prev in Thread] Current Thread [Next in Thread]