These are flags that appear in the benchmark sources, categorized as to whether they are portability candidates, mandatory, or forbidden. The descriptions of the pre-existing Perl preprocessor macros are in general taken from src/spec_config.h.
Selecting one of the following will take you directly to that section:
This flag is can be used on Windows to keep WIN32 from being defined; this may be necessary in compilation environments that do not mimic Microsoft Visual C++.
This macro indicates that none of the available platform selection flags are acceptable and that manual configuration will be done by specifying individual macro settings when building the benchmark.
This macro indicates that the benchmark is being compiled on a system running Linux.
This macro indicates that the benchmark is being compiled on an Intel IA32-compatible system running the Linux operating system.
This macro indicates that the benchmark is being compiled on an Intel IA64-compatible system running the Linux operating system.
This macro indicates that the benchmark is being compiled on an SPARC system running the Linux operating system.
This macro indicates that the benchmark is being compiled on a big-endian PowerPC system running the Linux operating system.
This macro indicates that the benchmark is being compiled on a little-endian PowerPC system running the Linux operating system.
This macro indicates that the benchmark is being compiled on an Alpha system running the Linux operating system.
This macro indicates that the benchmark is being compiled on a MIPS-based system running the Linux operating system.
This macro indicates that the benchmark is being compiled on an AMD64-compatible system running the Linux operating system.
This macro indicates that the benchmark is being compiled on an ARM system running the Linux operating system in the AArch64 execution environment.
This macro indicates that the benchmark is being compiled on an ARM system running the Linux operating system in the AArch32 execution environment.
This macro indicates that the benchmark is being compiled on an Intel IA32-compatible system running some variant of BSD Unix.
This macro indicates that the benchmark is being compiled on an Intel IA64-compatible system running some variant of BSD Unix.
This macro indicates that the benchmark is being compiled on a SPARC system running some variant of BSD Unix.
This macro indicates that the benchmark is being compiled on a PowerPC system running some variant of BSD Unix.
This macro indicates that the benchmark is being compiled on an Alpha system running some variant of BSD Unix.
This macro indicates that the benchmark is being compiled on a MIPS-based system running some variant of BSD Unix.
This macro indicates that the benchmark is being compiled on an AMD64-compatible system running some variant of BSD Unix.
This macro indicates that the benchmark is being compiled on a SPARC/Solaris system.
This macro indicates that the benchmark is being compiled on an x86/Solaris system.
This macro indicates that the benchmark is being compiled on an x64/Solaris system.
This macro indicates that the benchmark is being compiled on an Intel IA64-compatible system running HP-UX.
This macro indicates that the benchmark is being compiled on an HP PA-RISC system running HP-UX.
This macro indicates that the benchmark is being built on an AMD64-compatible system.
This macro indicates that the benchmark is being built on an ARMv8 system.
This macro indicates that the benchmark is being built on a MIPS-based Reliant Unix system.
This macro indicates that the benchmark is being built on a 32-bit Windows system.
This macro indicates that the benchmark is being built on a MIPS-based IRIX system.
This macro indicates that the benchmark is being built on a PowerPC-based AIX system.
This macro indicates that the benchmark is being built on a PowerPC-based MacOS X system.
This macro indicates that the benchmark is being built on an Intel-based MacOS X system.
This macro indicates that the benchmark is being built on an Intel-based MacOS X system in 64-bit mode.
This macro indicates that the benchmark is being built on a MacOS X system.
This macro indicates that the benchmark is being compiled on an Intel IA32-compatible system.
This macro indicates that the benchmark is being compiled on an Alpha-based Tru64 Unix system.
This macro indicates that the benchmark is being compiled on an ARM system running in the AArch32 execution environment.
This macro indicates that the benchmark is being compiled on an ARM system running in the AArch64 execution environment.
This macro indicates that the target system runs an Alpha processor.
This macro indicates that the target system runs an IA64 processor in little-endian mode.
This macro indicates that the target system runs a big-endian PowerPC processor.
This macro indicates that the target system runs a little-endian PowerPC processor.
This macro indicates that the target system runs a SPARC processor.
This macro indicates that the target system runs an HP PA-RISC processor.
This macro indicates that the target system runs an IA64 processor in big-endian mode.
This macro indicates that the target system runs a MIPS processor.
This macro specifies that the target system uses the LP64 data model; specifically, that integers are 32 bits, while longs and pointers are 64 bits.
This macro specifies that the target system uses the ILP64 data model; specifically, that integers, longs and pointers are 64 bits.
This macro specifies that the target system uses some strange data model that is not ILP32, ILP64, LP64, or P64. All of the settings related to the datamodel (type selection and sizes, etc) must be made by hand.
This macro indicates that the benchmark is being compiled on a 64-bit Windows system running an AMD64-compliant processor.
This macro indicates that the benchmark is being compiled on a 64-bit Windows system running an Itanium processor.
This macro specifies that the target system uses the P64 data model; specifically, that integers and longs are 32 bits, while pointers are 64 bits.
This macro causes a dummy element of type __float80 to be inserted into the jmpenv struct in order to force the je_buf element to be properly aligned on IA-64.
This macro specifies the size (in octets) of a native C double on the target system.
This macro specifies the size (in octets) of a native C long long integer on the target system.
This macro specifies the size (in octets) of the native C type specified by I16TYPE on the target system.
This macro specifies a native C type that can contain a signed 16-bit integer value.
This macro specifies the size (in octets) of the native C type specified by I32TYPE on the target system.
This macro specifies a native C type that can contain a signed 32-bit integer value.
This macro specifies the size (in octets) of the native C type specified by I64TYPE on the target system.
This macro specifies a native C type that can contain a signed 64-bit integer value.
This macro specifies the size (in octets) of the native C type specified by I8TYPE on the target system.
This macro specifies a native C type that can contain a signed 8-bit integer value.
This macro specifies the size (in octets) of the native C type specified by U16TYPE on the target system.
This macro specifies a native C type that can contain an unsigned 16-bit integer value.
This macro specifies the size (in octets) of the native C type specified by U32TYPE on the target system.
This macro specifies a native C type that can contain an unsigned 32-bit integer value.
This macro specifies the size (in octets) of the native C type specified by U64TYPE on the target system.
This macro specifies a native C type that can contain an unsigned 64-bit integer value.
This macro specifies the size (in octets) of the native C type specified by U8TYPE on the target system.
This macro specifies a native C type that can contain an unsigned 8-bit integer value.
This macro specifies the size (in octets) of a native C int on the target system.
This macro specifies the size (in octets) of the native C type specified by IVTYPE on the target system.
This macro specifies the native C type that will be used in the IV (Integer Value) slot in Perl's scalar struct.
This macro specifies the size (in octets) of a native C long on the target system.
This macro specifies the size (in octets) of the native C type specified by NVTYPE on the target system.
This macro specifies the native C type that will be used in the NV (Natural Value) slot in Perl's scalar struct.
This macro specifies the size (in octets) of a native C pointer on the target system.
This macro specifies the native C type that can be used to hold signed quad values.
This macro specifies the size (in octets) of a native C short on the target system.
This macro specifies a native C integer type that is at least 32 bits wide. It is used by the SPEC pseudo-random number generator.
This macro specifies the size (in octets) of a C size_t on the target system.
This macro specifies the size (in octets) of the native C type specified by UVTYPE on the target system.
This macro specifies the native C type that will be used in the UV (Unsigned Value) slot in Perl's scalar struct.
This macro specifies the native C type that can be used to hold unsigned quad values.
This macro specifies that the target system uses big-endian (MSB first) byte order.
This macro specifies that the target system uses little-endian (LSB first) byte order.
The opposite of LIBERAL. If this macro is set, some assumptions about how some automatic variables are aligned will not be made. Vector operations and the complement operator may be slower as a result.
This macro indicates the presence of a 64-bit integer type (Quad_t) and its unsigned counterpart (Uquad_t). In cases where this is automatically defined, it can be disabled by also defining SPEC_NO_HAS_QUAD.
This macro prevents HAS_QUAD from being defined.
This macro indicates the presence of a fork routine. In cases where this is automatically defined, it can be disabled by also defining SPEC_NO_HAS_FORK.
This macro prevents HAS_FORK from being defined.
This symbol defines the format string used for printing a Perl IV as a signed decimal integer.
This symbol defines the format string used for printing a Perl UV as an unsigned decimal integer.
This symbol defines the format string used for printing a Perl UV as an unsigned octal integer.
This symbol defines the format string used for printing a Perl UV as an unsigned hexadecimal integer in lowercase abcdef.
This symbol defines the format string used for printing a Perl UV as an unsigned hexadecimal integer in uppercase ABCDEF.
This symbol defines the format string used for printing a Perl NV using %e-ish floating point format.
This symbol defines the format string used for printing a Perl NV using %f-ish floating point format.
This symbol defines the format string used for printing a Perl NV using %g-ish floating point format.
This symbol holds the type used to declare offsets in the kernel.
This symbol holds the number of bytes used by the type specified by Off_t.
This symbol holds the number of bytes used by the type specified by Off_t.
This symbol holds the type used by functions that return a count of bytes or an error condition. It must be a signed type. It is usually ssize_t, but may be long or int, etc.
This symbol holds the type used to declare process IDs in the kernel.
This symbol holds the type used for the 2nd, 3rd, and 4th arguments to select. This is only useful if you have select(), of course.
This symbol, if defined, indicates that 64-bit integers should be used when available.
This macro indicates that the benchmark is being compiled on a 64-bit Windows system.
This macro indicates that the benchmark is being compiled on a Solaris system.
This macro indicates that the benchmark is being compiled on a BSD Unix system.
This macro indicates that the benchmark is being compiled on an HP-UX system.
This macro indicates that the benchmark is being compiled on a Reliant Unix system.
This macro indicates that the benchmark is being compiled on a system running an Intel IA64-compatible processor.
This macro indicates that Perl should use its own implementation of the htonl and ntohl byte-swapping routines.
This macro indicates that sys/param.h should be included.
This macro indicates that fcntl.h should be included. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_I_FCNTL.
Prevent I_FCNTL from being automatically defined.
This macro indicates that sys/file.h should be included. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_I_SYS_FILE.
Prevent I_SYS_FILE from being automatically defined.
This symbol contains the number of bytes required to align a double, or a long double when applicable. Usual values are 2, 4 and 8.
This macro indicates that the length of directory entry names is provided by a d_namlen field. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_DIRNAMLEN.
Prevent DIRNAMLEN from being automatically defined.
This symbol is set to 'struct dirent' or 'struct direct' depending on whether dirent is available or not.
This macro indicates that time.h should be included. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_I_TIME.
Prevent I_TIME from being automatically defined.
This symbol holds the size of a long double.
This symbol is defined if calling fflush(NULL) really does flush all pending stdio output. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_FFLUSH_NULL.
Prevent FFLUSH_NULL from being automatically defined.
This symbol is defined to be the type of char used in stdio.h.
This symbol, if defined, indicates that va_copy should NOT be used to copy variable argument lists even when the default config for the platforms says it should be used.
This symbol, if defined, indicates that the system stores the variable argument list datatype, va_list, in a format that cannot be copied by simple assignment, so that some other means must be used when copying is required. As such systems vary in their provision (or non-provision) of copying mechanisms, handy.h defines a platform-independent macro, Perl_va_copy(src, dst), to do the job.
This symbol is defined if the dup2 routine is available to duplicate file descriptors. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_HAS_DUP2.
Prevent HAS_DUP2 from being automatically defined.
This symbol holds the signedness of the Uid_t type.
This symbol holds the signedness of the Gid_t type.
This symbol indicates that a variable of type NVTYPE can preserve all the bits of a variable of type UVTYPE. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_NV_PRESERVES_UV.
Prevent NV_PRESERVES_UV from being automatically defined.
This symbol contains the number of bits a variable of type NVTYPE can preserve of a variable of type UVTYPE.
This symbol holds the minimum number of bits operated by select. That is, if you do select(n, ...), how many bits at least will be cleared in the masks if some activity is detected. Usually this is either n or 32*ceil(n/32), especially many little-endians do the latter. This is only useful if you have select(), naturally.
This symbol, if defined, contains the string used by stdio to format long doubles (format 'f') for output.
This symbol, if defined, contains the string used by stdio to format long doubles (format 'g') for output.
This symbol, if defined, contains the string used by stdio to format long doubles (format 'e') for output.
This symbol, if defined, contains the string used by stdio to format long doubles (format 'f') for input.
This macro indicates to the C program that the sigsetjmp() routine is available to save the calling process's registers and stack environment for later use by siglongjmp(), and to optionally save the process's signal mask. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_HAS_SIGSETJMP.
Prevent HAS_SIGSETJMP from being automatically defined.
This macro indicates that sys/ioctl.h exists and should be included.
Prevent I_SYS_IOCTL from being automatically defined.
This macro indicates that unistd.h exists and should be included.
Prevent I_UNISTD from being automatically defined.
This macro indicates that inttypes.h exists and should be included.
Prevent I_INTTYPES from being automatically defined.
This macro indicates that the C compiler supports a 'long long' type.
Prevent HAS_LONG_LONG from being automatically defined.
This macro indicates that the fcntl() function exists.
Prevent HAS_FCNTL from being automatically defined.
This macro indicates that sys/time.h exists and should be included.
Prevent I_SYS_TIME from being automatically defined.
This macro indicates that sys/times.h exists and should be included.
Prevent I_SYS_TIMES from being automatically defined.
This macro indicates that sys/wait.h exists and should be included.
Prevent I_SYS_WAIT from being automatically defined.
This macro indicates that the truncate() function exists.
Prevent HAS_TRUNCATE from being automatically defined.
This macro indicates that arpa/inet.h exists and should be included.
Prevent I_ARPA_INET from being automatically defined.
This symbol is defined if the rdev return from Perl's stat() function should be taken from the st_rdev field of C's struct stat. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_USE_STAT_RDEV.
Prevent USE_STAT_RDEV from being automatically defined.
This symbol is defined if the _ptr and _cnt fields (or similar) of the stdio FILE structure can be used to access the stdio buffer for a file handle. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_USE_STDIO_PTR.
Prevent USE_STDIO_PTR from being automatically defined.
This symbol is defined if the _base field (or similar) of the stdio FILE structure can be used to access the stdio buffer for a file handle. In cases where this is set automatically, it can be disabled by also defining SPEC_NO_USE_STDIO_BASE.
Prevent USE_STDIO_BASE from being automatically defined.
Prevent any non-C locales from being used. This is the default.
Prevent NO_LOCALE from being automatically defined. Doing so will probably cause validation to fail.
This symbol, if defined, indicates that this C compiler knows about the const type. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HASCONST.
Prevent HASCONST from being automatically defined.
If defined, this macro indicates that the C compiler can handle function prototypes. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_CAN_PROTOTYPE.
Prevent CAN_PROTOTYPE from being automatically defined.
If defined, this macro indicates that the C compiler can handle function prototypes with variable argument lists. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_CAN_VAPROTO.
Prevent CAN_VAPROTO from being automatically defined.
This symbol, if defined, indicates that the getcwd routine is available to get the current working directory. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_GETCWD.
Prevent HAS_GETCWD from being automatically defined.
This symbol, if defined, indicates that the isnan routine is available to check whether a double is a NaN. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_ISNAN.
Prevent HAS_ISNAN from being automatically defined.
This symbol, if defined, indicates that the isinf routine is available to check whether a double is an infinity. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_ISINF.
Prevent HAS_ISINF from being automatically defined.
This symbol, if defined, indicates that the memchr routine is available to locate characters within a C string. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_MEMCHR.
Prevent HAS_MEMCHR from being automatically defined.
This symbol, if defined, indicates that the memcmp routine is available to compare blocks of memory. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_MEMCMP.
Prevent HAS_MEMCMP from being automatically defined.
This symbol, if defined, indicates that the memcmp routine is available and can be used to compare relative magnitudes of chars with their high bits set. If it is not defined, roll your own version. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_SANE_MEMCMP.
Prevent HAS_SANE_MEMCMP from being automatically defined.
This symbol, if defined, indicates that the memcpy routine is available to copy blocks of memory. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_MEMCPY.
Prevent HAS_MEMCPY from being automatically defined.
This symbol, if defined, indicates that the memmove routine is available to copy potentially overlapping blocks of memory. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_MEMMOVE.
Prevent HAS_MEMMOVE from being automatically defined.
This symbol, if defined, indicates that the memset routine is available to set blocks of memory. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_MEMSET.
Prevent HAS_MEMSET from being automatically defined.
This symbol, if defined, indicates that the select routine is available to select active file descriptors. If the timeout field is used, sys/time.h may need to be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_SELECT.
Prevent HAS_SELECT from being automatically defined.
This symbol, if defined, indicates that the signbit routine is available to check whether a floating point value is negative. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_SIGNBIT.
Prevent HAS_SIGNBIT from being automatically defined.
This symbol is defined to indicate that the strchr()/strrchr() functions are available for string searching. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_STRCHR.
Prevent HAS_STRCHR from being automatically defined.
This symbol, if defined, indicates that the strtod routine is available to provide better numeric string conversion than atof(). In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_STRTOD.
Prevent HAS_STRTOD from being automatically defined.
This symbol, if defined, indicates that the strtol routine is available to provide better numeric string conversion than atoi() and friends. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_STRTOL.
Prevent HAS_STRTOL from being automatically defined.
This symbol, if defined, indicates that the strxfrm() routine is available to transform strings. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_STRXFRM.
Prevent HAS_STRXFRM from being automatically defined.
This symbol, if defined, indicates that this C compiler knows about the volatile declaration. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HASVOLATILE.
Prevent HASVOLATILE from being automatically defined.
This symbol, if defined, indicates that the vprintf routine is available to printf with a pointer to an argument list. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_VPRINTF.
Prevent HAS_VPRINTF from being automatically defined.
This symbol, if defined, indicates that this system's <float.h> or <limits.h> defines the symbol DBL_DIG, which is the number of significant digits in a double precision number. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_DBL_DIG.
Prevent HAS_DBL_DIG from being automatically defined.
This symbol, if defined, indicates that this system's <float.h> or <limits.h> defines the symbol LDBL_DIG, which is the number of significant digits in a long double precision number. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_LDBL_DIG.
Prevent HAS_LDBL_DIG from being automatically defined.
This symbol will be defined if the C compiler supports long doubles. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_LONG_DOUBLE.
Prevent HAS_LONG_DOUBLE from being automatically defined.
Perl's internal atof() implementation stops looking at a string once the maximum number of significant digits that can be represented by an NV (double or long double) has been seen. The NV_DIG (set to DBL_DIG or LDBL_DIG) sets a lower bound for this, but what's needed is an upper bound. By default this is set to NV_DIG+2, but if necessary this macro can be set to a value other than 2 to change that upper bound. In theory, this might be necessary when non-IEEE floating point is used, but there's a good chance that that will cause the benchmark to miscompare. Still, you're allowed to set it if you need it.
This symbol, if defined, indicates that the system supports filenames longer than 14 characters. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_FLEXFILENAMES.
Prevent FLEXFILENAMES from being automatically defined.
This symbol, if defined, indicates that you must access character data through U32-aligned pointers. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_U32_ALIGNMENT_REQUIRED.
Prevent U32_ALIGNMENT_REQUIRED from being automatically defined.
Indicates that the utime.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_UTIME.
Prevent I_UTIME from being automatically defined.
Indicates that the stdbool.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_STDBOOL. Use of this macro automatically disables PERL_BOOL_AS_CHAR.
Prevent I_STDBOOL from being automatically defined.
Defining this macro indicates that no native boolean type is available and that some other type should be used instead. Doing this will require setting the "bool" macro to the name of the type to be used.
When PERL_BOOL_AS_CHAR is defined, you may use this symbol name as a macro to define the type that should be used internally for booleans. If your compilation environment supports a native bool type, this will likely cause the build to completely break.
Indicates that the stddef.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_STDDEF.
Prevent I_STDDEF from being automatically defined.
Indicates that the dirent.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_DIRENT.
Prevent I_DIRENT from being automatically defined.
Indicates that the float.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_FLOAT.
Prevent I_FLOAT from being automatically defined.
Indicates that the limits.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_LIMITS.
Prevent I_LIMITS from being automatically defined.
Indicates that the math.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_MATH.
Prevent I_MATH from being automatically defined.
Indicates that the sys/stat.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_SYS_STAT.
Prevent I_SYS_STAT from being automatically defined.
Indicates that the stdarg.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_STDARG.
Prevent I_STDARG from being automatically defined.
Indicates that the stdlib.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_STDLIB.
Prevent I_STDLIB from being automatically defined.
Indicates that the string.h header file exists and should be included. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_I_STRING.
Prevent I_STRING from being automatically defined.
This symbol, if defined, indicates that this C compiler knows how to copy structures. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_STRUCT_COPY.
Prevent USE_STRUCT_COPY from being automatically defined.
This symbol, if defined, indicates that the rmdir routine is available to remove directories. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_RMDIR.
Prevent HAS_RMDIR from being automatically defined.
This symbol, if defined, indicates that the gettimeofday() system call is available for a sub-second accuracy clock. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_GETTIMEOFDAY.
Prevent HAS_GETTIMEOFDAY from being automatically defined.
This symbol, if defined, indicates that the ioctl routine is available. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_IOCTL.
Prevent HAS_IOCTL from being automatically defined.
This symbol, if defined, indicates that the wait4 routine is available to wait for child process.
This symbol, if defined, indicates that the waitpid routine is available to wait for child process. In cases where this macro is automatically defined, it can be disabled by defining SPEC_NO_HAS_WAITPID.
Prevent HAS_WAITPID from being automatically defined.
This flag indicates that the source is being compiled on an Amiga running AmigaOS. The Amiga was not a porting target for CPU2017, so it's unlikely that this will work.
If the size of a Time_t is too large to fit into a Perl IV, this define should be set. It will cause time values to be put into an NV.
This macro should be set to the name of an openable file that will return EOF immediately upon read. On Unix and Unix-like systems, this is "/dev/null". On Windows systems, it is "nul".
This macro indicates that the system for which the benchmark is being compiled has some characteristics in common with BSD Unix systems.
This macro indicates the byte order and width of an IV. Possible values are
This macro is used in place of HZ if HZ is not defined.
If the nl_langinfo function is available, AND if locales are in use (which would likely cause the benchmark to miscompare), this macro provides the argument to nl_langinfo.
This macro is defined automatically when building under Cygwin with the Win32 API.
This flag is used to indicate the number of significant digits in a double precision number. Normally this would be set by the system's "float.h" or "limits.h" header file.
This flag is used to indicate the number of significant digits in a long double. Normally this would be set by the system's "float.h" or "limits.h" header file.
This flag is used to set the largest value representable in a variable of type long double.
This flag is used to set the largest value representable in a variable of type double.
This symbol, if defined, contains the minimum value that can be stored in a variable of type double.
This symbol, if defined, contains the minimum value that can be stored in a variable of type long double.
This symbol, if defined, contains the maximum value that can be stored in a variable of type double.
This symbol, if defined, contains the maximum value that can be stored in a variable of type long double.
This symbol, if defined, contains the smallest power of 10 that can be stored in a variable of type double.
This symbol, if defined, contains the smallest power of 10 that can be stored in a variable of type long double.
This symbol, if defined, contains the largest power of 10 that can be stored in a variable of type double.
This symbol, if defined, contains the largest power of 10 that can be stored in a variable of type long double.
This flag indicates that the source is being compiled on an MS-DOS system using the DJGPP development environment. This was not a porting target for CPU2017, so it's unlikely that using this flag will work.
This flag indicates that the source should not provide prototypes for standard functions.
This flag indicates that the benchmark is being built on a system that is like MS-DOS.
This flag indicates that the benchmark is being built on an EBCDIC system. Good luck with that.
This flag indicates that environment variable names are not case-sensitive.
This flag may be used to set the value returned by stdio functions upon encountering an end-of-file condition.
If the "argv" argument to exec must be cast to a specific type, this flag may be used to do so.
This flag should be used if the fcntl() function should be used for file locking.
If the close-on-exec flag must or must not be set for open file descriptors before exec()ing, this flag may be used.
This flag says that to flush all pending stdio output one must loop through all the stdio file handles and fflush them individually. This flag is ignored if FFLUSH_NULL is defined.
This macro is used to access the _base field (or equivalent) of the FILE structure which is its argument. USE_STDIO_PTR must be defined for this to have any effect.
This macro is used to determine the number of bytes in the I/O buffer pointed to by the _base field (or equivalent) of the FILE structure which is its argument. USE_STDIO_PTR must be defined for this to have any effect.
This macro is used to access the _cnt field (or equivalent) of the FILE structure which is its argument. USE_STDIO_PTR must be defined for this to have any effect.
This macro is used to access the _ptr field (or equivalent) of the FILE structure which is its argument. USE_STDIO_PTR must be defined for this to have any effect.
This flag can be used to specify the size of the return value of fseek() (or fseeko()) in bytes.
This flag may be used to specify the name of the function that performs the equivalent of strerror(), if strerror() is not available on your system.
This flag may be used to specify the name of the function that performs the equivalent of strtol(), if strtol() is not available on your system.
This flag may be used to specify the name of the function that performs the equivalent of strtoul(), if strtoul() is not available on your system.
This flag may be used to specify the name of the function that performs the equivalent of fflush(), if fflush() is not available on your system.
This flag can be used to set the type used to declare file positions.
This flag can be used to set the return type of free().
This flag can be used to define the equivalent of the fstat() function.
This macro holds the return type of getgid() and the type of the argument to setrgid() and related functions.
Use this flag to set the size of Gid_t in bytes.
This flag lets the benchmark know that the access() system call is available to check for accessibility using real UID/GID.
This flag lets the benchmark know that the accessx() call is available to do extended access checks.
This flag lets the benchmark know that the alarm() routine is available.
This flag lets the benchmark know that the atoll() routine is available to convert strings into long longs.
This flag lets the benchmark know that the bcmp() routine is available to compare blocks of memory.
This flag lets the benchmark know that the bcopy() routine is available to copy blocks of memory.
This flag indicates that a bool type is available.
This flag lets the benchmark know that the bzero() routine is available to set a block of memory to 0.
This flag is used to indicate that a prototype for a function (like drand48(), flock(), etc; there are a large number of such functions) (this should be in lower-case) is available.
This flag lets the benchmark know that the eaccess() call is available to do extended access checks.
This flag indicates that the "floatingpoint.h" header file is available.
This enables code that tries to deal with a bug with Irix/NonStop-UX/PowerUX when calling sprintf with a long double argument.
Setting this macro indicates that the sprintf() bug indicated by the HAS_LDBL_SPRINTF_BUG macro only affects values between -1L and 1L.
This flag indicates that bcopy() can copy overlapping blocks of memory. Normally memcpy() should be used.
This flag indicates that memcpy() can copy overlapping blocks of memory.
This macro should be set to indicate the presence of "w32api/windows.h" under Cygwin on Windows.
This flag indicates that the benchmark code should emulate the behavior of waitpid.
This flag is used to indicate that the a function (like htonl(), ntohs(), etc; there are a large number of such functions) (this should be in lower-case) routine is available.
This flag is used to indicate that the a function (like fchdir(), fgetpos(), etc; there are a large number of such functions) (this should be in lower-case) routine is available.
This flag is used to indicate that the a function (like strerror(), strftime(), etc; there are a large number of such functions) (this should be in lower-case) routine is available.
This flag is used to indicate that the localeconv(), msg(), etc (this should be in lower-case) routine is available.
Contains the number of clock ticks in one second. It should be set by a system header file, but in case it's not, you can set it with this flag.
This flag can be used to set the largest positive number that can fit in an 16 (or 32 or 64) -bit integer. Its value is not used in all cases.
This flag can be used to set the smallest negative number that can fit in an 16 (or 32 or 64) -bit integer. Its value is not used in all cases.
This flag can be used to set the largest positive number that can fit in an unsigned 8 (or 16 or 32 or 64) -bit integer. Its value is not used in all cases.
This flag can be used to set the smallest number that can fit in an unsigned 32 (or 64) -bit integer. Its value is not used in all cases.
This flag can be used to indicate to the benchmark the largest value that can be stored in an unsigned char.
This flag can be used to indicate to the benchmark the largest value that can be stored in an unsigned short integer.
This flag can be used to indicate to the benchmark the largest value that can be stored in an unsigned integer.
This flag can be used to indicate to the benchmark the largest value that can be stored in an unsigned long integer.
This flag can be used to indicate to the benchmark the largest value that can be stored in an unsigned long long integer.
This flag can be use to indicate to the benchmark the largest value that is representable by a double.
This flag can be use to indicate to the benchmark the smallest value that is representable by a double.
This flag can be used to indicate to the benchmark the largest value that can be stored in a short integer.
This flag can be used to indicate to the benchmark the largest value that can be stored in an integer.
This flag can be used to set the largest positive number that can fit in a long integer. Its value is not used in all cases.
This flag can be used to set the largest positive number that can fit in a long long integer. Its value is not used in all cases.
This flag can be used to indicate to the benchmark the smallest value that can be stored in a short integer.
This flag can be used to indicate to the benchmark the smallest value that can be stored in an integer.
This flag can be used to indicate to the benchmark the smallest value that can be stored in a long integer.
This flag can be used to indicate to the benchmark the smallest value that can be stored in a long long integer.
If the macro INT32_MAX (or INT32_MIN, or INT64_MAX, or INT64_MIN, or UINT32_MAX) is set incorrectly by default, this flag may be used to indicate that that macro's value should not be used.
Use of this flag indicates that the "$1.h" (lower-case, of course) should be used.
Use of this flag indicates that the "sys/$1.h" (lower-case, of course) should be used.
These flags are used to set the locale at compilation time. You're allowed to set them, but use of ANY locale other than "C" will almost certainly cause the benchmark to miscompare.
This flag indicates that setlocale() requires that at least one of the standard locate environment variables be defined. Using locales will probably break the benchmark, but you're welcome to try anyway.
This macro contains the maximum length for a path name. It should be supplied by system header files, but in case it is not, you can specify it using this flag.
This flag can be used to define the equivalent of the mkdir() function.
This flag can be used to define the equivalent of the stat() function.
This flag un-does the effect of its non-NO counterpart. These are ALL the defaults, so there's no reason to use one.
This flag can be used if sys/types.h should be included before sys/param.h.
In some cases, this flag may be used to set the maximum number of stdio FILE objects that will be fflush()ed when attempting to flush all streams.
Use this flag if __int64 is the quad data type available.
Use this flag if int64_t is the quad data type available.
Use this flag if long is the quad data type available.
Use this flag if long long is the quad data type available.
This macro may be used to change the default value of CHARBITS on systems that need it.
This flag can be used to indicate the return code from read() when no data is present on the non-blocking file descriptor.
This macro contains the constants for use with seek calls. It should be supplied by system header files, but in case it is not, you can specify it using this flag.
This flag should be used to indicate that the "time.h" header file should be included.
This flag can be used to define the text necessary to begin marking a block of C code as C when building with a C++ compiler.
This flag can be used to define the text necessary to end marking a block of C code as C when building with a C++ compiler.
This flag can be used to define the text necessary to mark a function prototype as "extern C" when building with a C++ compiler.
Use this flag if the FILE_cnt macro can be used as an lvalue.
Use this flag if the FILE_ptr macro can be used as an lvalue.
This symbol is defined if using the FILE_ptr macro as an lvalue leaves File_cnt(fp) unchanged.
This symbol is defined if using the FILE_ptr macro as an lvalue to increase the pointer by n causes File_cnt(fp) to be decreased by n.
This flag can be used to set the buffer size for some name length fields on Windows. These fields are probably never used.
If your system has no integral type of exactly 32 bits, this flag MAY help mitigate the problem. (The benchmark will probably still not work, though.)
This symbol holds the number of bytes used by the type specified by Uid_t.
This macro contains the value of the WNOHANG constant for use with wait calls. It should be supplied by system header files, but in case it is not, you can specify it using this flag.
Your compiler SHOULD define this symbol if the intptr_t type is available. If the type is available but the symbol is not set, you may avoid a redefinition error by using this flag.
This flag may be used to indicate that there is a type definition for uintptr_t.
SPEC_NO_STAT64 may be set for Windows64 systems where there is no _stat64 structure.
This macro contains the type that should be used when a 'struct stat' would be called for.
This flag can be used to define what type should be used in place of the standard uid_t (or time_t, size_t, or mode_t) (this should be in lower case).
This macro holds the return type of a signal handler.
This macro holds the return type of malloc() and the type of the argument to free().
This indicates that the invocation of main() on the target system does not include a pointer to the environment array.
The benchmark does not use large files or highly precise floating point numbers, but you may use these flags to try it out anyway.
Using a locale other than "C" will most likely cause the benchmark to miscompare, but you're still welcome to try.
If your compiler requires 64-bit integer constants to be noted with an "LL" suffix instead of "i64", use this flag.
If your compiler does not define _MSC_VER on Windows, you can use this flag to get typedefs for the POSIX ID types uid_t, gid_t, and mode_t.
This macro defines the number of bits in a byte on the target system.
This macro defines a concatenation that can be used to create a 64-bit constant.
This flag indicates that the benchmark is being built on a system that has long double support and has a powl() function that wrongly returns NaNQ for any negative base.
This macro indicates that the compiler supports C99-style variadic macros.
This macro indicates that a clearenv() function is available to clear out all environment variables.
This macro indicates that a dirfd() function is available for getting the file descriptor of an open directory handle.
This macro indicates that a direct access to the dd_fd member of a directory structure can be used to get the file descriptor of an open directory handle.
This macro indicates the presence of an snprintf() function.
This macro indicates the presence of an unsetenv() function.
This macro indicates the presence of a vsnprintf() function.
This macro indicates that HWND_MESSAGE windows are available. It has no effect on non-Win32 platforms.
These macros define a representation for infinity in whatever type NV is on the target system. They should be set by the compilation environment, but may be set explicitly.
This macro indicates that direct comparison of NaN values doesn't return correct answers.
This macro indicates that the in-memory representation of 0 for whatever type is the native NV type is 0 in memory.
The PERL_STATIC_INLINE symbol may be defined to the text to use to mark a function as inlinable but with only static linkage. Its default value depends on whether the HAS_STATIC_INLINE symbol is defined; if it is defined, the default value for PERL_STATIC_INLINE is the C99-style "static inline". Otherwise it's just "static".
If PERL_STATIC_INLINE is defined, the definition (or not) of HAS_STATIC_INLINE is ignored.
These macros, which are normally set by the compilation environment, can be used to request certain levels of X/Open support from the system header files.
These parameterized macros define the method to cast a pointer type to various other Perl internal and natural types.
This macro indicates the presence of a mkdir() system call or library function. In cases where this is automatically defined, it can be disabled by also defining SPEC_NO_HAS_MKDIR.
This macro prevents HAS_MKDIR from being defined.
Definition of this macro indicates that sprintf() follows the ANSI C standard and returns the length of the string. This is the default, but may be disabled by setting SPEC_NO_SPRINTF_RETURNS_STRLEN.
This macro prevents SPRINTF_RETURNS_STRLEN from being defined.
This macro contains the value of the WCOREDUMP test for use with wait return values. It should be supplied by system header files, but in case it is not, you can specify it using this flag.
This macro contains the value of the WIFEXITED test for use with wait return values. It should be supplied by system header files, but in case it is not, you can specify it using this flag.
This macro contains the value of the maximum size of an ioctl() argument. It should be supplied by system header files, but in case it is not, you can specify it using this flag.
Various versions of Microsoft Visual C++ have featured an ioinfo struct definition that differs from previous and future versions. This macro controls whether or not the known definition in VC2008-2012 is used or not. It is set automatically, but if needed may be set manually.
The preprocessor macro PERL_CORE is always defined when building 600.perlbench_s.
These flags instruct the compiler to search for header files in the specified subdirectories.
These flags are used to attempt to enable large file support on the various platforms that CPU2017 supports. Though no files larger than 2^32 bytes are used, the support for large files is tested by the test workload. This may also be necessary for normal operation on filesystems with 64-bit inodes.
This flag specifies that the File::Spec module should not treat double slashes specially when canonicalizing Unix-style pathnames.
Windows systems need access to some portability header files contained in the win32 subdirectory when building 600.perlbench_s.
This flag is set when building 600.perlbench_s on Windows systems, unless SPEC_NO_WIN32 is set.
This flag is set when building 600.perlbench_s on Windows systems.
This flag is set when building 600.perlbench_s on Windows systems.
This macro indicates that the benchmark is being compiled on a Windows system.
It is forbidden to undefine this mandatory flag.
It is forbidden to undefine this mandatory flag.
It is forbidden to undefine this mandatory flag.
It is forbidden to undefine this mandatory flag.
This macro prevents the usual (empty) definition of dXSUB_SYS.
This macro must remain defined, but empty.
Definition of this symbol is forbidden.
Definition of this symbol is forbidden.
Definition of this symbol is forbidden.
Definition of this symbol is forbidden.
Definition of this symbol is forbidden.
Definition of this symbol is forbidden.
Definition of this symbol is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro defines the contents of one of Perl's internal data structures. Setting it to a non-default value is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro controls the default size for the buffer in the PerlIO abstraction layer. Its default value is 8192 or BUFSIZ, whichever is larger, and it may not be changed for a reportable run.
When at least 32-bit alignment is required on a big-endian platform, this macro is used in the MD5 routines to do endian-reversal on 32-bit quantities. Otherwise an alignment-safe function is used. Changing this setting from its default is not allowed.
This flag indicates that casting floating point values to integers should be done in-line via macros. Its use is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro is a Perl-internal data type accessor; setting it to something other than its default is forbidden.
Enable assertions in the Storable module. Use of this flag is forbidden for reportable runs.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
These flags may enable various Perl internal debugging features. Their use is prohibited.
Enable debugging and assertions in the Storable module. Use of this flag is forbidden for reportable runs.
Enables debugging output for leaked scalar variables. Its use will probably cause the benchmark to miscompare, and is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
These macros may not be changed from their default values.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
Attempting to setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Attempting to change the value of this macro is not allowed.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
It is forbidden to set this macro to a value other than its default.
It is forbidden to set this macro to a value other than its default.
It is forbidden to set this macro to a value other than its default.
Setting this macro to a value other than its default is forbidden.
It is forbidden to set this macro to a value other than its default.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This flag tells that there is an array holding the stdio streams. It is always enabled.
It is forbidden to set this macro to a value other than its default.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
This flag is used to indicate that the setting of the LC_MESSAGES, LC_MONETARY, LC_TIME variable should be honored. This will cause the benchmark to fail to validate, and may not be set.
This flag is used to indicate that the setting of the LC_MESSAGES, LC_MONETARY variable should not be honored. This is the default and may not be changed.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
These macros are used to prevent multiple header inclusion; setting them explicitly is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
The values for these macros may not be set directly.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
It is forbidden to set this macro to a value other than its default.
This macro has no function in the benchmark version of the source; its use is forbidden.
These macros hold Perl internal values, and must not be changed.
It is forbidden to set this macro to a value other than its default.
This flag indicates that the Perl IV (or UV) is a quad type. It is set automatically.
This macro has no function in the benchmark version of the source; its use is forbidden.
It is forbidden to set this macro to a value other than its default.
This flag indicates that libm exports _LIB_VERSION and that math.h defines the enum to manipulate it.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
These lock constants should be supplied by your system header files. They may not be set directly.
These macros are used to indicate compilation on a system that is not supported. They may not be used.
It is forbidden to set this macro to a value other than its default.
This macro has no function in the benchmark version of the source; its use is forbidden.
This flag enables debugging output from the Digest::MD5 module.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
It is forbidden to set this macro to a value other than its default.
It is forbidden to set this macro to a value other than its default.
This macro has no function in the benchmark version of the source; its use is forbidden.
It is forbidden to set this macro to a value other than its default.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
This constant should be supplied by your system header files. It may not be set directly.
This macro defines the contents of one of Perl's internal constants. Setting it to a non-default value is forbidden.
This macro defines the contents of one of Perl's internal types. Setting it to a non-default value is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting these macros to values other than default is forbidden.
This macro is used internally by Perl. Setting it explicitly is not allowed.
These macros are used to indicate that a particular module is being compiled. Setting them explicitly is not allowed.
These macros contain values that are "special" to Perl. They may not be changed.
This macro is used to hold the name of a Perl internal function. It may not be set explicitly.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
This symbol is set automatically and may not be set explicitly.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This symbol is set automatically and may not be set explicitly.
This macro defines a limit on various pattern matching operations to limit stack growth and to avoid "infinite" recursions. It may not be changed.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This flag sets the size for the stack in the sort routines.
The benchmark MUST be built with an ANSI C compiler which will define this constant by default.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
This macro defines a format string for a Perl internal data type. Setting it to a non-default value is forbidden.
This macro defines a Perl internal data flag. Setting it to a non-default value is forbidden.
This constant, if defined, must be defined by a system header file. Setting it explicitly is not allowed.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
These are macros that define how constants of various types can be constructed. They may not be set to anything other than their default values.
Setting this macro to a value other than its default is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This symbol is set automatically and may not be set explicitly.
This symbol is set automatically and may not be set explicitly.
This macro has no function in the benchmark version of the source; its use is forbidden.
This symbol is set automatically and may not be set explicitly.
It is forbidden to set this macro to a value other than its default.
These macros are for use on VMS systems. CPU2017 is not ported to VMS.
This macro has no function in the benchmark version of the source; its use is forbidden.
It is forbidden to set this macro to a value other than its default.
This macro has no function in the benchmark version of the source; its use is forbidden.
It is forbidden to set this macro to a value other than its default.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro to a value other than its default is forbidden.
This symbol is set automatically and may not be set explicitly.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
Setting this macro to a value other than its default is forbidden.
This flag enables some debugging output on Windows platforms. Its use is prohibited.
Setting this macro to a value other than its default is forbidden.
This constant should be supplied by your system header files. They may not be set directly.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This constant should be supplied by your system header files. They may not be set directly.
This macro has no function in the benchmark version of the source; its use is forbidden.
This symbol is set automatically and may not be set explicitly.
This constant should be supplied by your system header files. They may not be set directly.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
These flags are set implicitly by the compilation system and may not be set explicitly.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
Setting this macro to a value other than its default is forbidden.
This macro is used to hold the name of a Perl internal function. It may not be set explicitly.
This macro, if defined, may not be defined explicitly.
This symbol is set automatically and may not be set explicitly.
It is forbidden to set this macro to a value other than its default.
This flag either has no function in the benchmark version of the source, or must not be changed from its default value.
This flag enables experimental optimizations in the Perl regular expression parser and may not be set manually.
This macro is used internally by code in Time::HiRes. It is not used in the benchmark and may not be set manually.
This macro is used internally by code in Time::HiRes. It is not used in the benchmark and may not be set manually.
This macro is used internally by code in Time::HiRes. It is not used in the benchmark and may not be set manually.
This macro is used internally by code in Time::HiRes. It is not used in the benchmark and may not be set manually.
This macro is used internally by code in Time::HiRes. It is not used in the benchmark and may not be set manually.
This macro is used internally by code in Time::HiRes. It is not used in the benchmark and may not be set manually.
This macro is used internally by code in Time::HiRes. It is not used in the benchmark and may not be set manually.
This macro is used internally by code in Time::HiRes. It is not used in the benchmark and may not be set manually.
This macro is used internally by Data::Dumper and may not be set explicitly.
Enable debugging output from the regexp parser. Use of this flag is forbidden for reportable runs.
Enables debugging output for SVs that are potentially being leaked. Use of this flag is forbidden for reportable runs.
This flag enables an experimental optimization in the Perl regular expression parser and may not be set.
This macro enables a workaround that allows -e to work when /dev/null is not present. It is not used in the benchmark and may not be set explicitly.
This macro enables experimental regular expression engine optimization relating to allowing study for fixed-length positive lookahead and lookbehind, and may not be used for reportable runs.
This macro enables some experimental regular expression engine optimizations, and may not be used for reportable runs.
This macro enables some experimental regular expression engine optimizations, and may not be used for reportable runs.
This macro enables some experimental regular expression engine optimizations, and may not be used for reportable runs.
This macro enables some experimental regular expression engine optimizations, and may not be used for reportable runs.
This macro disables a regular expression engine optimization, and may not be used for reportable runs.
These macros indicate the presence of attribute flags that the compiler supports. They may not be set for a reportable run.
This macro sets the text to be inserted into functions from which no return is possible. It may not be set on the compilation command line.
This macro has no function and may not be set for reportable runs.
This macro indicates the presence of the _builtin_expect compiler intrinsic and may not be set for reportable runs.
This macro indicates that the drand48() function returns a quad value. 600.perlbench_s supplies its own PRNG, and this macro may not be set for reportable runs.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
These macros are set and used internally by Perl and may not be set explicitliy.
This macro indicates the presence of a compiler attribute that indicates that printf() can take a null argument. This macro may not be set for reporable runs.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
These macros have no function in the benchmark version of the source; their use is forbidden.
These macros have no function in the benchmark version of the source; their use is forbidden.
This macro is used internally by Perl. Setting it explicitly is not allowed.
These flags enable and specify behavior of debug logging of Perl's memory allocation activities. They may not be set for a reportable run.
These macros have no function in the benchmark version of the source; their use is forbidden.
These macros have no function in the benchmark version of the source; their use is forbidden.
These macros are used internally by Perl. Setting them explicitly is not allowed.
This macro cannot be set to a value other than its default of "static".
These macros are used to define the internal values for some Perl flags, and may not be set explicitly.
These macros have no function in the benchmark version of the source; their use is forbidden.
Defining this macro causes the binary compatibility stubs to be omitted from compilation. It may not be used for a reportable run.
This macro controls whether or not the Data::Dumper extension will attempt to include ppport.h. It may not be set for a reportable run.
This macro controls how PerlIO functions are declared. It may not be set for a reportable run.
This macro controls whether or not functions in the PerlIO layer are declared const. It may not be set for a reportable run.
Setting this macro will cause the PERLIO_STD_IN and PERLIO_STD_OUT macros to be used for file descriptors 0, 1, and 2 respectively. These are not defined by default and may not be defined, so setting this macro will only have the effect of breaking the compilation.
This macro defines a function or expansion to return the absolute value of its argument. It is set by default and may not be changed for a reportable run.
This macro encodes the version of Perl in BCD. Changing its value is not allowed for reportable runs.
This macro controls whether assertions are enabled for copy-on-write optimizations for scalars in the core Perl code. It may not be set for reportable runs.
This macro controls debugging checks and output for read-only conversions in the slab allocator. It may not be set for reportable runs.
Setting this macro will cause Perl to allocate a new SV when a GvSV is created. This may not be used in a reportable run.
This is the default setting for Perl and so doesn't need to be set explicitly.
This macro controls whether do_exec3() is used for do_exec() internally. It is the default on most systems and may not be unset for reportable runs.
This macro controls what text is prepended to C functions which must use C-style calling conventions. It may not be changed for a reportable run.
These macros set the names of functions used to get, set, and unset internal Perl variables. They are set internally and may not be changed.
Setting these macros to a value other than default is forbidden.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
This macro has no function in the benchmark version of the source; its use is forbidden.
Setting this macro enables the internal copy-on-write semantics that existed before copy-on-write shared hash keys were implemented. It may not be set for a reportable run.
This is the default, and setting it wouldn't change that.
This macro enables some memory-allocation checking. It may not be set for a reportable run.
Setting this macro to a value other than its default is forbidden.
If re-entrant functions have a maximum buffer size, this macro can be used to constrain the buffers that Perl uses to that size. It has no function in the benchmark version of the source and may not be set for reportable runs.
This macro has no function in the benchmark and may not be set for reportable runs.
Setting this macro to a value other than its default is forbidden.
Round all values passed to malloc up to a multiple of the value of this macro. The default value is sizeof(size_t) and this may not be changed for reportable runs.
These macros contain the functions used for startup and shutdown of the Perl interpreter. They may not be changed from their default values.
This macro enables internal debugging information for memory allocations. It may not be set for reportable runs.
This macro contains in-line text used to inform the compiler that a particular argument is unused. It may not be set to other than its default value for reportable runs.
This macro has no function in the benchmark source, and may not be explicitly set for reportable runs.
This macro contains in-line text used to inform the compiler that a particular variable is unused. It may not be set to other than its default value for reportable runs.
This macro contains text used to quiet compiler warnings about a particular variable not being used in a function. It may not be set to other than its default value for reportable runs.
This macro controls whether or not Perl keeps track of child processes with using a hash keyed to raw PID values. It has no effect in the benchmark code and may not be set for a reportable run.
This macro causes Perl to assume that malloc() can not efficiently handle allocations that are sized as an even power of two. It may not be set for a reportable run.
This macro indicates that pluggable regular expression extensions are to be accomodated. Defining it will cause the benchmark build to break.
This macro is the function used to push a mortal SV onto the stack. Its default value may not be changed.
This macro enables extra debug state storage and output in the regular expression engine. It may not be used for reportable runs.
On Windows, when _DEBUG is also set, enables warnings about invalid parameters to certain functions. It is set automatically and may not be set explictly.
This macro can be used to set the size of buffers for reentrant functions on OSF1/Alpha. Since this benchmark has not been ported to OSF/1, it is unlikely to have any effect.
These lock constants should be supplied by your system header files. They may not be set directly.
These macros define properties and functions for use with Perl's internal scalar representation. They may not be changed from the default.
This macro defines the contents of one of Perl's internal functions. Setting it to a non-default value is forbidden.
This macro is used and set internally by Perl and may not be set explicitly.
This macro causes Perl to use variables allocated on the heap instead of the stack in some limited cases. It may not be used for a reportable run.
This macro has no function in the benchmark version of the source and may not be set for reportable runs.
This macro causes USE_PTR_TABLE to be defined in the Storable extension. It may not be used for a reportable run.
This macro causes the Storable extension to use Perl's low-level ptr_table functions directly instead of the higher-level HV functions. It may not be used for a reportable run.
This macro has no function in the benchmark version of the source, and may not be set for a reportable run.
This macro can not be overridden for all source files, so attempting to set it to a non-default value is not allowed in a reportable run.
This macro has no function in the benchmark version of the source; its use is forbidden.
These IPv6 constants are not used in the benchmark and may not be set explicitly.
These constants are not used in the benchmark and may not be set explicitly.
These macros are used and set internally by Perl and may not be set explicitly.
These macros define values used internally by the regular expression engine, and may not be changed.
These macros define the contents of some of Perl's internal constants. Setting any of them to a non-default value is forbidden.
These macros disable security-related tainting operations. Perls built without taint support are not supported, and these macros may not be used for reportable runs.
This macro defines a Perl-internal function and may not be explicitly set.
This macro defines the type used for bitfields in Perl internal structures. It may not be changed from the default.
When defined, this macro will cause the benchmark binary to be built with DTrace or SystemTap probes enabled. It may not be used for a reportable run.
These macros define internal functions and values having to do with Perl's internal Unicode support. They may not be changed from their default values for a reportable run.
This macro defines the maximum recursion level allowable. The default value of 100 may not be changed for a reportable run.
These macros affect whether and how hash key traversal randomization happens. They have no effect in the benchmark sources and may not be set for a reportable run.
Defining this macro will cause the benchmark's version output to be slightly altered, which will cause validation to fail. It may not be set for a reportable run.
This macro generally (but not always) will cause a native-code extension to mark functions that might have been internal-only as external. It has no function in the benchmark and may not be set for a reportable run.
This macro is defined during the Perl build process to build the "mini" version of Perl used to process XS into C and generate other files used later in the build process. Setting it will cause the benchmark to fail to build.
These macros control whether or not Perl supports the $`, $&, and $' special variables. They are set automatically and may not be changed for a reportable run.
This macro is set when it is detected that Microsoft Visual C++ 6 is in use. That version has special needs that require workarounds in various places in the code. It is set automatically and may not be explicitly set.
These macros determine what sort of internal Perl type the value of stat.st_ino is stored in. They are not used in the benchmark, and may not be set explicitly for reportable runs.
This macro indicates that the architecture supports unaligned word accesses. It is used only in some of the hash functions that are not used with the benchmark, and so it has no effect. It may not be set explicitly.
This is a Perl internal macro with a set value that cannot be changed.
This macro, if set, is set automatically by the compilation system to the maximum number of bytes needed to represent the maximum Unicode code point. Since the benchmark does not make use of the Unicode support, this macro has no function and thus may not be set explicitly.
This parameterized macro defines a way to cast a pointer such that the compiler will still warn if the const-ness of a variable is being discarded. It is not possible to change its value without modifying the source code.
The value of this macro defines the maximum size of a slab in the optree. Its value may not be changed from the default.
These macros define tests for various compiler built-in features. They are not used in the benchmark source and may not be set explicitly.
Setting this macro will cause Perl's internal tm struct to have space for a 64-bit year. It is set by default and may not be un-set.
This macro is not used in the benchmark sources and may not be set.
This macro defines the steps necessary to change the current interpreter phase. It may not be set to a value other than its default.
The value of this macro determines how much sv_grow() will increase the length of a string that has run out of space. The default value is 2 (25% of the used length) and may not be changed for a reportable run.
This macro is not used in the benchmark sources and may not be set.
This macro is not used in the benchmark sources and may not be set.
This macro is used internally by the "version" module, and it may not be set explicitly.