[Info-vax] Error running MariaDB

John Reagan xyzzy1959 at gmail.com
Fri Oct 9 16:39:59 EDT 2020


On Friday, October 9, 2020 at 11:49:44 AM UTC-4, Craig A. Berry wrote:
> On 10/8/20 6:35 PM, John Reagan wrote: 
> 
> > You need to use /DEFINE=(__CRTL_VER=80400000) when you compile the code [or whatever the oldest version you want to support].
> Good to know. I'm familiar with checking this in an ifdef but didn't 
> know it was user-settable.
> > Those symbols are described in the CRTL reference manual.
> Not that I can find. Nor does __CRTL_VER appear in 
> 
> $ HELP CC Language_topics Predefined_macros

Ah, I confused the __VMS_VER symbol.  There is a corresponding __CRTL_VER symbol 
that you can see checked in the headers too.  That was back from the days when
newer CRTLs would sometimes get put into compiler kits.  How that we're trying to
put newer functionality into older remedial streams, we're back to the days when
__VMS_VER isn't good enough as it doesn't reflect what ECOs might be installed on
the system which provided a newer CRTL than what originally came with the system.

The V8.4 CRTL Manual, section 1.4.4, Multiple-Version-Support Macro

By default, the header files enable APIs in the HP C RTL provided by the version
of the operating system on which the compilation occurs. This is accomplished by
the predefined setting of the __VMS_VER macro, as described in the HP C User’s
Guide for OpenVMS Systems. For example, compiling on OpenVMS Version 6.2
causes only HP C RTL APIs from Version 6.2 and earlier to be made available.
Another example of the use of the __VMS_VER macro is support for the 64-bit
versions of HP C RTL functions available with OpenVMS Alpha Version 7.0
and higher. In all header files, functions that provide 64-bit support are
conditionalized so that they are visible only if __VMS_VER indicates a version of
OpenVMS that is greater than or equal to 7.0.

To target an older version of the operating system, do the following:

1. Define a logical DECC$SHR to point to the old version of DECC$SHR. The
compiler uses a table from DECC$SHR to perform routine name prefixing.

2. Define __VMS_VER appropriately, either with the /DEFINE qualifier or
with a combination of the #undef and #define preprocessor directives. With
/DEFINE, you may need to disable the warning regarding redefinition of a
predefined macro.

Targeting a newer version of the operating system might not always be possible.
For some versions, you can expect that the new DECC$SHR.EXE will require
new features of the operating system that are not present. For such versions, the
defining if the logical DECC$SHR in Step 1 would cause the compilation to fail.
To override the value of _ _VMS_VER, define __VMS_VER_OVERRIDE on the
compiler command line. Defining __VMS_VER_OVERRIDE without a value sets
__VMS_VER to the maximum value.



More information about the Info-vax mailing list