<?xml version="1.0"?>
<!DOCTYPE flagsdescription SYSTEM
       "http://www.spec.org/dtd/cpuflags2.dtd">

<!-- This file defines flags that appear in the sources for 600.perlbench_s.

  Copyright 2005-2017 Standard Performance Evaluation Corporation

  $Revision: 5894 $
  $Date: 2018-04-13 18:53:49 -0400 (Fri, 13 Apr 2018) $
-->
<flagsdescription>

<!-- Normal flags file should suggest a name for themselves -->
<filename>600.perlbench_s.flags</filename>

<title>600.perlbench_s Flags</title>

<header>
<![CDATA[
<p>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.</p>
]]>
</header>

<!-- These are default flags that _ALL_ builds get.  Note that Windows -->
<!-- builds get a few extra flags. -->

<flag name="DPERL_CORE" class="mandatory">
The preprocessor macro PERL_CORE is always defined when building 600.perlbench_s.</flag>

<flag name="UPERL_CORE" class="forbidden">
It is forbidden to undefine this mandatory flag.
</flag>

<flag name="inc_dirs" class="mandatory" regexp="-I(?:\.|dist/IO|cpan/Time-HiRes|cpan/HTML-Parser|ext/re|specrand)(?=\s|$)">
  These flags instruct the compiler to search for header files in the specified subdirectories.
<example>
-I.,
-Idist/IO,
-Icpan/Time-HiRes,
-Icpan/HTML-Parser,
-Iext/re,
-Ispecrand
</example>
</flag>

<flag name="LFS_support" class="mandatory" regexp="-D(?:_LARGE_FILES|_LARGEFILE_SOURCE|_FILE_OFFSET_BITS=64)(?=\s|$)">
<example>
-D_LARGE_FILES,
-D_LARGEFILE_SOURCE,
-D_FILE_OFFSET_BITS=64
</example>
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.
</flag>

<flag name="DDOUBLE_SLASHES_SPECIAL:0" class="mandatory">
  This flag specifies that the File::Spec module should not treat double
  slashes specially when canonicalizing Unix-style pathnames.
</flag>

<flag name="Iwin32" class="mandatory">
Windows systems need access to some portability header files contained in the
win32 subdirectory when building 600.perlbench_s.
</flag>

<flag name="DWIN32" class="mandatory">
This flag is set when building 600.perlbench_s on Windows systems, unless SPEC_NO_WIN32 is set.
</flag>
<flag name="DSPEC_NO_WIN32" class="portability">
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++.
</flag>

<flag name="UWIN32" class="forbidden">
It is forbidden to undefine this mandatory flag.
</flag>

<flag name="DPERLDLL" class="mandatory">
This flag is set when building 600.perlbench_s on Windows systems.
</flag>

<flag name="UPERLDLL" class="forbidden">
It is forbidden to undefine this mandatory flag.
</flag>

<flag name="DWIN32_NO_SOCKETS" class="mandatory">
This flag is set when building 600.perlbench_s on Windows systems.
</flag>

<flag name="UWIN32_NO_SOCKETS" class="forbidden">
It is forbidden to undefine this mandatory flag.
</flag>

<!-- These are the optional flags that _MAY_ be used when building -->
<!-- 600.perlbench_s.  Note that it is likely that at least one (which -->
<!-- includes many others) will be needed. -->
<!-- The canonical source is src/spec_config.h, which this file attempts -->
<!-- to faithfully reproduce. -->

<flag name="DSPEC_MANUAL_CONFIGURATION" class="portability">
  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.
</flag>

<flag name="DSPEC_LINUX" class="portability">
<include flag="DI_TIME" />
This macro indicates that the benchmark is being compiled on a system
running Linux.
</flag>

<flag name="DSPEC_LINUX_IA32" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_IA32" />
This macro indicates that the benchmark is being compiled on an Intel
IA32-compatible system running the Linux operating system.
</flag>

<flag name="DSPEC_LINUX_IA64" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_IA64LE" />
<include flag="DSPEC_IA64" />
<include flag="DSPEC_NO_NV_PRESERVES_UV" />
This macro indicates that the benchmark is being compiled on an Intel
IA64-compatible system running the Linux operating system.
</flag>

<flag name="DSPEC_LINUX_SPARC" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_SPARC" />
This macro indicates that the benchmark is being compiled on an SPARC
system running the Linux operating system.
</flag>

<flag name="DSPEC_LINUX_PPC" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_PPC" />
This macro indicates that the benchmark is being compiled on a big-endian
PowerPC system running the Linux operating system.
</flag>

<flag name="DSPEC_LINUX_PPC_LE" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_PPC_LE" />
This macro indicates that the benchmark is being compiled on a little-endian
PowerPC system running the Linux operating system.
</flag>

<flag name="DSPEC_LINUX_ALPHA" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_ALPHA" />
This macro indicates that the benchmark is being compiled on an Alpha
system running the Linux operating system.
</flag>

<flag name="DSPEC_LINUX_MIPS" class="portability">
<include flag="DSPEC_LINUX" />
This macro indicates that the benchmark is being compiled on a MIPS-based
system running the Linux operating system.
</flag>

<flag name="DSPEC_LINUX_X64" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_X64" />
This macro indicates that the benchmark is being compiled on an AMD64-compatible
system running the Linux operating system.
</flag>

<flag name="DSPEC_LINUX_AARCH64" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_AARCH64" />
This macro indicates that the benchmark is being compiled on an ARM system
running the Linux operating system in the AArch64 execution environment.
</flag>

<flag name="DSPEC_LINUX_AARCH32" class="portability">
<include flag="DSPEC_LINUX" />
<include flag="DSPEC_AARCH32" />
This macro indicates that the benchmark is being compiled on an ARM system
running the Linux operating system in the AArch32 execution environment.
</flag>

<flag name="DSPEC_BSD_IA32" class="portability">
<include flag="DSPEC_BSD" />
<include flag="DSPEC_IA32" />
This macro indicates that the benchmark is being compiled on an Intel
IA32-compatible system running some variant of BSD Unix.
</flag>

<flag name="DSPEC_BSD_IA64" class="portability">
<include flag="DSPEC_BSD" />
<include flag="DSPEC_IA64LE" />
<include flag="DSPEC_IA64" />
This macro indicates that the benchmark is being compiled on an Intel
IA64-compatible system running some variant of BSD Unix.
</flag>

<flag name="DSPEC_BSD_SPARC" class="portability">
<include flag="DSPEC_BSD" />
<include flag="DSPEC_SPARC" />
This macro indicates that the benchmark is being compiled on a SPARC
system running some variant of BSD Unix.
</flag>

<flag name="DSPEC_BSD_PPC" class="portability">
<include flag="DSPEC_BSD" />
<include flag="DSPEC_PPC" />
This macro indicates that the benchmark is being compiled on a PowerPC
system running some variant of BSD Unix.
</flag>

<flag name="DSPEC_BSD_ALPHA" class="portability">
<include flag="DSPEC_BSD" />
<include flag="DSPEC_ALPHA" />
This macro indicates that the benchmark is being compiled on an Alpha
system running some variant of BSD Unix.
</flag>

<flag name="DSPEC_BSD_MIPS" class="portability">
<include flag="DSPEC_BSD" />
This macro indicates that the benchmark is being compiled on a MIPS-based
system running some variant of BSD Unix.
</flag>

<flag name="DSPEC_BSD_X64" class="portability">
<include flag="DSPEC_BSD" />
<include flag="DSPEC_X64" />
This macro indicates that the benchmark is being compiled on an AMD64-compatible
system running some variant of BSD Unix.
</flag>

<flag name="DSPEC_SOLARIS_SPARC" class="portability">
<include flag="DSPEC_SOLARIS" />
<include flag="DSPEC_SPARC" />
This macro indicates that the benchmark is being compiled on a SPARC/Solaris
system.
</flag>

<flag name="DSPEC_SOLARIS_IA32" class="portability">
<include flag="DSPEC_SOLARIS" />
<include flag="DSPEC_IA32" />
This macro indicates that the benchmark is being compiled on an x86/Solaris
system.
</flag>

<flag name="DSPEC_SOLARIS_X64" class="portability">
<include flag="DSPEC_SOLARIS" />
<include flag="DSPEC_X64" />
This macro indicates that the benchmark is being compiled on an x64/Solaris
system.
</flag>


<flag name="DSPEC_HPUX_IA64" class="portability">
<include flag="DSPEC_HPUX" />
<include flag="DSPEC_IA64BE" />
<include flag="DSPEC_IA64" />
This macro indicates that the benchmark is being compiled on an Intel
IA64-compatible system running HP-UX.
</flag>

<flag name="DSPEC_HPUX_HPPA" class="portability">
<include flag="DSPEC_HPUX" />
<include flag="DSPEC_HPPA" />
This macro indicates that the benchmark is being compiled on an HP PA-RISC
system running HP-UX.
</flag>

<flag name="DSPEC_X64" class="portability">
<include flag="DSPEC_LITTLEENDIAN" />
<include flag="DMYSWAP" />
<include flag="DNEED_VA_COPY" />
<include flag="DSPEC_NO_NV_PRESERVES_UV" />
This macro indicates that the benchmark is being built on an AMD64-compatible
system.
</flag>

<flag name="DSPEC_ARMV8" class="portability">
<include flag="DSPEC_LITTLEENDIAN" />
<include flag="DMYSWAP" />
<include flag="DNEED_VA_COPY" />
<include flag="DSPEC_NO_NV_PRESERVES_UV" />
This macro indicates that the benchmark is being built on an ARMv8
system.
</flag>

<flag name="DSPEC_RELIANT_MIPS" class="portability">
<include flag="DSPEC_RELIANT" />
<include flag="DSPEC_MIPS" />
This macro indicates that the benchmark is being built on a MIPS-based
Reliant Unix system.
</flag>


<flag name="DSPEC_WIN32" class="portability">
<include flag="DSPEC_WINDOWS" />
<include flag="DSPEC_IA32" />
This macro indicates that the benchmark is being built on a 32-bit Windows
system.
</flag>

<flag name="DSPEC_IRIX" class="portability">
<include flag="DSPEC_MIPS" />
<include flag="DI_FCNTL" />
This macro indicates that the benchmark is being built on a MIPS-based
IRIX system.
</flag>

<flag name="DSPEC_AIX" class="portability">
<include flag="DSPEC_PPC" />
<include flag="DI_SYS_PARAM" />
<include flag="DDIRNAMLEN" />
<include flag="DI_TIME" />
This macro indicates that the benchmark is being built on a PowerPC-based
AIX system.
</flag>

<flag name="DSPEC_MACOSX_PPC" class="portability">
<include flag="DSPEC_MACOSX" />
<include flag="DSPEC_PPC" />
This macro indicates that the benchmark is being built on a PowerPC-based
MacOS X system.
</flag>

<flag name="DSPEC_MACOSX_IA32" class="portability">
<include flag="DSPEC_MACOSX" />
<include flag="DSPEC_IA32" />
This macro indicates that the benchmark is being built on an Intel-based
MacOS X system.
</flag>

<flag name="DSPEC_MACOSX_X64" class="portability">
<include flag="DSPEC_MACOSX" />
<include flag="DSPEC_X64" />
This macro indicates that the benchmark is being built on an Intel-based
MacOS X system in 64-bit mode.
</flag>

<flag name="DSPEC_MACOSX" class="portability">
<include flag="DDIRNAMLEN" />
<include flag="DHAS_DUP2" />
This macro indicates that the benchmark is being built on a MacOS X system.
</flag>

<flag name="DSPEC_IA32" class="portability">
<include flag="DSPEC_LITTLEENDIAN" />
<include flag="DMYSWAP" />
This macro indicates that the benchmark is being compiled on an Intel
IA32-compatible system.
</flag>


<flag name="DSPEC_TRU64" class="portability">
<include flag="DSPEC_ALPHA" />
<include flag="DDIRNAMLEN" />
This macro indicates that the benchmark is being compiled on an Alpha-based
Tru64 Unix system.
</flag>

<flag name="DSPEC_AARCH32" class="portability">
This macro indicates that the benchmark is being compiled on an ARM system
running in the AArch32 execution environment.
</flag>

<flag name="DSPEC_AARCH64" class="portability">
This macro indicates that the benchmark is being compiled on an ARM system
running in the AArch64 execution environment.
</flag>

<flag name="DSPEC_ALPHA" class="portability">
<include flag="DSPEC_LITTLEENDIAN" />
<include flag="DMYSWAP" />
<include flag="DSPEC_NO_NV_PRESERVES_UV" />
This macro indicates that the target system runs an Alpha processor.
</flag>

<flag name="DSPEC_IA64LE" class="portability">
<include flag="DSPEC_LITTLEENDIAN" />
<include flag="DMYSWAP" />
This macro indicates that the target system runs an IA64 processor in
little-endian mode.
</flag>

<flag name="DSPEC_PPC" class="portability">
<include flag="DSPEC_BIGENDIAN" />
This macro indicates that the target system runs a big-endian PowerPC processor.
</flag>

<flag name="DSPEC_PPC_LE" class="portability">
<include flag="DSPEC_LITTLEENDIAN" />
This macro indicates that the target system runs a little-endian PowerPC processor.
</flag>

<flag name="DSPEC_SPARC" class="portability">
<include flag="DSPEC_BIGENDIAN" />
This macro indicates that the target system runs a SPARC processor.
</flag>

<flag name="DSPEC_HPPA" class="portability">
<include flag="DSPEC_BIGENDIAN" />
This macro indicates that the target system runs an HP PA-RISC processor.
</flag>

<flag name="DSPEC_IA64BE" class="portability">
<include flag="DSPEC_BIGENDIAN" />
This macro indicates that the target system runs an IA64 processor in
big-endian mode.
</flag>

<flag name="DSPEC_MIPS" class="portability">
<include flag="DSPEC_BIGENDIAN" />
This macro indicates that the target system runs a MIPS processor.
</flag>

<flag name="DSPEC_LP64" class="portability">
<include flag="SPEC_INT32_T" />
<include flag="DUSE_64_BIT_INT" />
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.
</flag>

<flag name="DSPEC_ILP64" class="portability">
<include flag="SPEC_INT32_T" />
<include flag="DUSE_64_BIT_INT" />
This macro specifies that the target system uses the ILP64 data model;
specifically, that integers, longs and pointers are 64 bits.
</flag>

<flag name="DSPEC_GOOFY_DATAMODEL" class="portability">
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.
</flag>

<flag name="DSPEC_WIN64" class="portability">
<include flag="DSPEC_X64" />
<include flag="DCONSERVATIVE" />
<include flag="LSEEKSIZE" />
<include flag="NVSIZE" />
<include flag="NVTYPE" />
<include flag="Off_t" />
<include flag="Off_t_size" />
<include flag="SPEC_INT32_T" />
<include flag="SSize_t" />
<include flag="DUSE_64_BIT_INT" />
<include flag="DWIN64" />
This macro indicates that the benchmark is being compiled on a 64-bit Windows
system running an AMD64-compliant processor.
</flag>

<flag name="DSPEC_WIN64_IA64" class="portability">
<include flag="DCONSERVATIVE" />
<include flag="LSEEKSIZE" />
<include flag="NVSIZE" />
<include flag="NVTYPE" />
<include flag="Off_t" />
<include flag="Off_t_size" />
<include flag="SPEC_INT32_T" />
<include flag="SSize_t" />
<include flag="DUSE_64_BIT_INT" />
<include flag="DWIN64" />
<include flag="DSPEC_NO_NV_PRESERVES_UV" />
<include flag="DSPEC_WINDOWS" />
<include flag="DSPEC_IA64LE" />
<include flag="DSPEC_IA64" />
This macro indicates that the benchmark is being compiled on a 64-bit Windows
system running an Itanium processor.
</flag>

<flag name="DSPEC_P64" class="portability">
<include flag="SPEC_INT32_T" />
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.
</flag>

<flag name="DSPEC_IA64_GCC_ALIGNMENT" class="portability">
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.
</flag>

<flag name="DOUBLESIZE" class="portability" regexp="-DDOUBLESIZE=\d+">
This macro specifies the size (in octets) of a native C double on the target
system.
<example>
-DDOUBLESIZE=XXX
</example>
</flag>

<flag name="LONGLONGSIZE" class="portability" regexp="-DLONGLONGSIZE=\d+">
This macro specifies the size (in octets) of a native C long long integer on
the target system.
<example>
-DLONGLONGSIZE=XXX
</example>
</flag>

<flag name="I16SIZE" class="portability" regexp="-DI16SIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
I16TYPE on the target system.
<example>
-DI16SIZE=XXX
</example>
</flag>

<flag name="I16TYPE" class="portability" regexp="-DI16TYPE=\d+">
This macro specifies a native C type that can contain a signed 16-bit integer value.
<example>
-DI16TYPE=XXX
</example>
</flag>

<flag name="I32SIZE" class="portability" regexp="-DI32SIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
I32TYPE on the target system.
<example>
-DI32SIZE=XXX
</example>
</flag>

<flag name="I32TYPE" class="portability" regexp="-DI32TYPE=\d+">
This macro specifies a native C type that can contain a signed 32-bit integer
value.
<example>
-DI32TYPE=XXX
</example>
</flag>

<flag name="I64SIZE" class="portability" regexp="-DI64SIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
I64TYPE on the target system.
<example>
-DI64SIZE=XXX
</example>
</flag>

<flag name="I64TYPE" class="portability" regexp="-DI64TYPE=\d+">
This macro specifies a native C type that can contain a signed 64-bit integer value.
<example>
-DI64TYPE=XXX
</example>
</flag>

<flag name="I8SIZE" class="portability" regexp="-DI8SIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
I8TYPE on the target system.
<example>
-DI8SIZE=XXX
</example>
</flag>

<flag name="I8TYPE" class="portability" regexp="-DI8TYPE=\d+">
This macro specifies a native C type that can contain a signed 8-bit integer value.
<example>
-DI8TYPE=XXX
</example>
</flag>

<flag name="U16SIZE" class="portability" regexp="-DU16SIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
U16TYPE on the target system.
<example>
-DU16SIZE=XXX
</example>
</flag>

<flag name="U16TYPE" class="portability" regexp="-DU16TYPE=\d+">
This macro specifies a native C type that can contain an unsigned 16-bit integer value.
<example>
-DU16TYPE=XXX
</example>
</flag>

<flag name="U32SIZE" class="portability" regexp="-DU32SIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
U32TYPE on the target system.
<example>
-DU32SIZE=XXX
</example>
</flag>

<flag name="U32TYPE" class="portability" regexp="-DU32TYPE=\d+">
This macro specifies a native C type that can contain an unsigned 32-bit integer value.
<example>
-DU32TYPE=XXX
</example>
</flag>

<flag name="U64SIZE" class="portability" regexp="-DU64SIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
U64TYPE on the target system.
<example>
-DU64SIZE=XXX
</example>
</flag>

<flag name="U64TYPE" class="portability" regexp="-DU64TYPE=\d+">
This macro specifies a native C type that can contain an unsigned 64-bit integer value.
<example>
-DU64TYPE=XXX
</example>
</flag>

<flag name="U8SIZE" class="portability" regexp="-DU8SIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
U8TYPE on the target system.
<example>
-DU8SIZE=XXX
</example>
</flag>

<flag name="U8TYPE" class="portability" regexp="-DU8TYPE=\d+">
This macro specifies a native C type that can contain an unsigned 8-bit integer value.
<example>
-DU8TYPE=XXX
</example>
</flag>

<flag name="INTSIZE" class="portability" regexp="-DINTSIZE=\d+">
This macro specifies the size (in octets) of a native C int on the target
system.
<example>
-DINTSIZE=XXX
</example>
</flag>

<flag name="IVSIZE" class="portability" regexp="-DIVSIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
IVTYPE on the target system.
<example>
-DIVSIZE=XXX
</example>
</flag>

<flag name="IVTYPE" class="portability" regexp="-DIVTYPE=\d+">
This macro specifies the native C type that will be used in the IV (Integer
Value) slot in Perl's scalar struct.
<example>
-DIVTYPE=XXX
</example>
</flag>

<flag name="LONGSIZE" class="portability" regexp="-DLONGSIZE=\d+">
This macro specifies the size (in octets) of a native C long on the target
system.
<example>
-DLONGSIZE=XXX
</example>
</flag>

<flag name="NVSIZE" class="portability" regexp="-DNVSIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
NVTYPE on the target system.
<example>
-DNVSIZE=XXX
</example>
</flag>

<flag name="NVTYPE" class="portability" regexp="-DNVTYPE=\d+">
This macro specifies the native C type that will be used in the NV (Natural
Value) slot in Perl's scalar struct.
<example>
-DNVTYPE=XXX
</example>
</flag>

<flag name="PTRSIZE" class="portability" regexp="-DPTRSIZE=\d+">
This macro specifies the size (in octets) of a native C pointer on the target
system.
<example>
-DPTRSIZE=XXX
</example>
</flag>

<flag name="QUADKIND" class="portability" regexp="-DQUADKIND=\d+">
<![CDATA[
This macro indicates what kind of native C type Quad_t and Uquad_t are.  It
will be one of
<ol>
  <li> QUAD_IS_INT (use 'int')</li>
  <li> QUAD_IS_LONG (use 'long')</li>
  <li> QUAD_IS_LONG_LONG (use 'long long')</li>
  <li> QUAD_IS_INT64_T (use 'int64_t')</li>
  <li> QUAD_IS___INT64 (use '__int64')</li>
</ol>
]]>
<example>
-DQUADKIND=XXX
</example>
</flag>

<flag name="Quad_t" class="portability" regexp="-DQuad_t=\d+">
This macro specifies the native C type that can be used to hold signed quad
values.
<example>
-DQuad_t=XXX
</example>
</flag>

<flag name="SHORTSIZE" class="portability" regexp="-DSHORTSIZE=\d+">
This macro specifies the size (in octets) of a native C short on the target
system.
<example>
-DSHORTSIZE=XXX
</example>
</flag>

<flag name="SPEC_INT32_T" class="portability" regexp="-DSPEC_INT32_T=\d+">
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.
<example>
-DSPEC_INT32_T=XXX
</example>
</flag>

<flag name="Size_t_size" class="portability" regexp="-DSize_t_size=\d+">
This macro specifies the size (in octets) of a C size_t on the target system.
<example>
-DSize_t_size=XXX
</example>
</flag>

<flag name="UVSIZE" class="portability" regexp="-DUVSIZE=\d+">
This macro specifies the size (in octets) of the native C type specified by
UVTYPE on the target system.
<example>
-DUVSIZE=XXX
</example>
</flag>

<flag name="UVTYPE" class="portability" regexp="-DUVTYPE=\d+">
This macro specifies the native C type that will be used in the UV (Unsigned
Value) slot in Perl's scalar struct.
<example>
-DUVTYPE=XXX
</example>
</flag>

<flag name="Uquad_t" class="portability" regexp="-DUquad_t=\d+">
This macro specifies the native C type that can be used to hold unsigned quad
values.
<example>
-DUquad_t=XXX
</example>
</flag>

<flag name="DSPEC_BIGENDIAN" class="portability">
This macro specifies that the target system uses big-endian (MSB first) byte
order.
</flag>

<flag name="DSPEC_LITTLEENDIAN" class="portability">
This macro specifies that the target system uses little-endian (LSB first) byte
order.
</flag>

<flag name="DCONSERVATIVE" class="portability">
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.
</flag>

<flag name="DHAS_QUAD" class="portability">
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.
</flag>

<flag name="DSPEC_NO_HAS_QUAD" class="portability">
This macro prevents HAS_QUAD from being defined.
</flag>

<flag name="DHAS_FORK" class="portability">
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.
</flag>

<flag name="DSPEC_NO_HAS_FORK" class="portability">
This macro prevents HAS_FORK from being defined.
</flag>

<flag name="IVdf" class="portability" regexp="-DIVdf=\S+">
This symbol defines the format string used for printing a Perl IV
as a signed decimal integer.
<example>
-DIVdf=XXX
</example>
</flag>

<flag name="UVuf" class="portability" regexp="-DUVuf=\S+">
This symbol defines the format string used for printing a Perl UV
as an unsigned decimal integer.
<example>
-DUVuf=XXX
</example>
</flag>

<flag name="UVof" class="portability" regexp="-DUVof=\S+">
This symbol defines the format string used for printing a Perl UV
as an unsigned octal integer.
<example>
-DUVof=XXX
</example>
</flag>

<flag name="UVxf" class="portability" regexp="-DUVxf=\S+">
This symbol defines the format string used for printing a Perl UV
as an unsigned hexadecimal integer in lowercase abcdef.
<example>
-DUVxf=XXX
</example>
</flag>     

<flag name="UVXf" class="portability" regexp="-DUVXf=\S+">
This symbol defines the format string used for printing a Perl UV
as an unsigned hexadecimal integer in uppercase ABCDEF.
<example>
-DUVXf=XXX
</example>
</flag>

<flag name="NVef" class="portability" regexp="-DNVef=\S+">
This symbol defines the format string used for printing a Perl NV
using %e-ish floating point format.
<example>
-DNVef=XXX
</example>
</flag>     

<flag name="NVff" class="portability" regexp="-DNVff=\S+">
This symbol defines the format string used for printing a Perl NV
using %f-ish floating point format.
<example>
-DNVff=XXX
</example>
</flag>

<flag name="NVgf" class="portability" regexp="-DNVgf=\S+">
This symbol defines the format string used for printing a Perl NV
using %g-ish floating point format.
<example>
-DNVgf=XXX
</example>
</flag>

<flag name="Off_t" class="portability" regexp="-DOff_t=\S+">
This symbol holds the type used to declare offsets in the kernel.
<example>
-DOff_t=XXX
</example>
</flag>

<flag name="LSEEKSIZE" class="portability" regexp="-DLSEEKSIZE=\d+">
This symbol holds the number of bytes used by the type specified by Off_t.
<example>
-DLSEEKSIZE=XXX
</example>
</flag>

<flag name="Off_t_size" class="portability" regexp="-DOff_t_size=\d+">
This symbol holds the number of bytes used by the type specified by Off_t.
<example>
-DOff_t_size=XXX
</example>
</flag>

<flag name="SSize_t" class="portability" regexp="-DSSize_t=\d+">
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.
<example>
-DSSize_t=XXX
</example>
</flag>

<flag name="Pid_t" class="portability" regexp="-DPid_t=\S+">
This symbol holds the type used to declare process IDs in the kernel.
<example>
-DPid_t=XXX
</example>
</flag>

<flag name="Select_fd_set_t" class="portability" regexp="-DSelect_fd_set_t=\S+">
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.
<example>
-DSelect_fd_set_t=XXX
</example>
</flag>

<flag name="DUSE_64_BIT_INT" class="portability">
This symbol, if defined, indicates that 64-bit integers should
be used when available.
</flag>

<flag name="DWIN64" class="portability">
This macro indicates that the benchmark is being compiled on a 64-bit Windows
system.
</flag>

<flag name="DSPEC_WINDOWS" class="mandatory">
<include flag="DI_FCNTL" />
<include flag="DDIRNAMLEN" />
<include flag="DI_TIME" />
<include flag="DSPEC_NO_HAS_QUAD" />
<include flag="DSPEC_NO_HAS_FORK" />
<include flag="DHAS_DUP2" />
<include flag="DSPEC_NO_HAS_SIGSETJMP" />
<include flag="DSPEC_NO_I_SYS_IOCTL" />
<include flag="DSPEC_NO_I_UNISTD" />
<include flag="DSPEC_NO_I_INTTYPES" />
<include flag="DSPEC_NO_HAS_LONG_LONG" />
<include flag="DSPEC_NO_HAS_FCNTL" />
<include flag="DSPEC_NO_I_SYS_TIME" />
<include flag="DSPEC_NO_I_SYS_TIMES" />
<include flag="DSPEC_NO_I_SYS_WAIT" />
<include flag="DSPEC_NO_HAS_TRUNCATE" />
<include flag="DSPEC_NO_I_ARPA_INET" />
<include flag="DUSE_STAT_RDEV" />
This macro indicates that the benchmark is being compiled on a Windows system.
</flag>

<flag name="DSPEC_SOLARIS" class="portability">
<include flag="DI_FCNTL" />
<include flag="DSPEC_NO_FFLUSH_NULL" />
<include flag="DSPEC_NO_HAS_SIGSETJMP" />
This macro indicates that the benchmark is being compiled on a Solaris system.
</flag>

<flag name="DSPEC_BSD" class="portability">
This macro indicates that the benchmark is being compiled on a BSD Unix system.
</flag>

<flag name="DSPEC_HPUX" class="portability">
<include flag="DDIRNAMLEN" />
<include flag="DSPEC_NO_FFLUSH_NULL" />
This macro indicates that the benchmark is being compiled on an HP-UX system.
</flag>

<flag name="DSPEC_RELIANT" class="portability">
This macro indicates that the benchmark is being compiled on a Reliant Unix
system.
</flag>

<flag name="DSPEC_IA64" class="portability">
This macro indicates that the benchmark is being compiled on a system running
an Intel IA64-compatible processor.
</flag>

<flag name="DMYSWAP" class="portability">
This macro indicates that Perl should use its own implementation of the htonl
and ntohl byte-swapping routines.
</flag>

<flag name="DI_SYS_PARAM" class="portability">
This macro indicates that sys/param.h should be included.
</flag>

<flag name="DI_FCNTL" class="portability">
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.
</flag>

<flag name="DSPEC_NO_I_FCNTL" class="portability">
Prevent I_FCNTL from being automatically defined.
</flag>

<flag name="DI_SYS_FILE" class="portability">
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.
</flag>

<flag name="DSPEC_NO_I_SYS_FILE" class="portability">
Prevent I_SYS_FILE from being automatically defined.
</flag>

<flag name="MEM_ALIGNBYTES" class="portability" regexp="-DMEM_ALIGNBYTES=\d+">
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.
<example>
-DMEM_ALIGNBYTES=XXX
</example>
</flag>

<flag name="DDIRNAMLEN" class="portability">
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.
</flag>

<flag name="DSPEC_NO_DIRNAMLEN" class="portability">
Prevent DIRNAMLEN from being automatically defined.
</flag>

<flag name="Direntry_t" class="portability" regexp="-DDirentry_t=struct.dir\S+">
This symbol is set to 'struct dirent' or 'struct direct' depending on whether
dirent is available or not.
<example>
-DDirentry_t=struct.dirS+
</example>
</flag>

<flag name="DI_TIME" class="portability">
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.
</flag>

<flag name="DSPEC_NO_I_TIME" class="portability">
Prevent I_TIME from being automatically defined.
</flag>

<flag name="CASTFLAGS" class="portability" regexp="[-/]DCASTFLAGS(?:=\d*)?\b">
<![CDATA[
This symbol contains flags that say what difficulties the compiler has casting
odd floating point values to unsigned long.  It will be one of
<ul>
  <li> 0 = no troubles</li>
  <li> 1 = couldn't cast &lt; 0</li>
  <li> 2 = couldn't cast &gt;= 0x80000000</li>
  <li> 4 = couldn't cast in argument expression list</li>
</ul>
]]>
<example>
-DCASTFLAGS=XXX
</example>
</flag>

<flag name="LONG_DOUBLESIZE" class="portability" regexp="-DLONG_DOUBLESIZE=\d+">
This symbol holds the size of a long double.
<example>
-DLONG_DOUBLESIZE=XXX
</example>
</flag>

<flag name="DFFLUSH_NULL" class="portability">
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.
</flag>

<flag name="DSPEC_NO_FFLUSH_NULL" class="portability">
Prevent FFLUSH_NULL from being automatically defined.
</flag>

<flag name="STDCHAR" class="portability" regexp="-DSTDCHAR=\S+">
This symbol is defined to be the type of char used in stdio.h.
<example>
-DSTDCHAR=XXX
</example>
</flag>

<flag name="DSPEC_NO_NEED_VA_COPY" class="portability">
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.
</flag>

<flag name="DNEED_VA_COPY" class="portability">
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.
</flag>

<flag name="DHAS_DUP2" class="portability">
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.
</flag>

<flag name="DSPEC_NO_HAS_DUP2" class="portability">
Prevent HAS_DUP2 from being automatically defined.
</flag>

<flag name="Gconvert" class="portability" regexp="-DGconvert=\S+">
<![CDATA[
This preprocessor macro is defined to convert a floating point
number to a string without a trailing decimal point.  This 
emulates the behavior of sprintf("%g"), but is sometimes much more 
efficient.  If gconvert() is not available, but gcvt() drops the
trailing decimal point, then gcvt() is used.  If all else fails, 
a macro using sprintf("%g") is used. Arguments for the Gconvert 
macro are: value, number of digits, whether trailing zeros should 
be retained, and the output buffer. 
The usual values are
<ul>
  <li> d_Gconvert='gconvert((x),(n),(t),(b))'</li>
  <li> d_Gconvert='gcvt((x),(n),(b))'</li>
  <li> d_Gconvert='sprintf((b),"%.*g",(n),(x))'</li>
</ul>

The last two assume trailing zeros should not be kept.
]]>
<example>
-DGconvert=XXX
</example>
</flag>

<flag name="Uid_t_sign" class="portability" regexp="-DUid_t_sign=\S+">
This symbol holds the signedness of the Uid_t type.
<example>
-DUid_t_sign=XXX
</example>
</flag>

<flag name="Gid_t_sign" class="portability" regexp="-DGid_t_sign=\S+">
This symbol holds the signedness of the Gid_t type.
<example>
-DGid_t_sign=XXX
</example>
</flag>

<flag name="DNV_PRESERVES_UV" class="portability">
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.
</flag>

<flag name="DSPEC_NO_NV_PRESERVES_UV" class="portability">
Prevent NV_PRESERVES_UV from being automatically defined.
</flag>

<flag name="NV_PRESERVES_UV_BITS" class="portability" regexp="-DNV_PRESERVES_UV_BITS=\d+">
This symbol contains the number of bits a variable of type NVTYPE can preserve
of a variable of type UVTYPE.  
<example>
-DNV_PRESERVES_UV_BITS=XXX
</example>
</flag>

<flag name="SELECT_MIN_BITS" class="portability" regexp="-DSELECT_MIN_BITS=\d+">
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.
<example>
-DSELECT_MIN_BITS=XXX
</example>
</flag>

<flag name="PERL_PRIfldbl" class="portability" regexp="-DPERL_PRIfldbl=\S+">
This symbol, if defined, contains the string used by stdio to
format long doubles (format 'f') for output.
<example>
-DPERL_PRIfldbl=XXX
</example>
</flag>

<flag name="PERL_PRIgldbl" class="portability" regexp="-DPERL_PRIgldbl=\S+">
This symbol, if defined, contains the string used by stdio to
format long doubles (format 'g') for output.
<example>
-DPERL_PRIgldbl=XXX
</example>
</flag>


<flag name="PERL_PRIeldbl" class="portability" regexp="-DPERL_PRIeldbl=\S+">
This symbol, if defined, contains the string used by stdio to
format long doubles (format 'e') for output.
<example>
-DPERL_PRIeldbl=XXX
</example>
</flag>

<flag name="PERL_SCNfldbl" class="portability" regexp="-DPERL_SCNfldbl=\S+">
This symbol, if defined, contains the string used by stdio to
format long doubles (format 'f') for input.
<example>
-DPERL_SCNfldbl=XXX
</example>
</flag>

<flag name="DHAS_SIGSETJMP" class="portability">
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.
</flag>

<flag name="DSPEC_NO_HAS_SIGSETJMP" class="portability">
Prevent HAS_SIGSETJMP from being automatically defined.
</flag>

<flag name="DI_SYS_IOCTL" class="portability">
This macro indicates that sys/ioctl.h exists and should be included.
</flag>
<flag name="DSPEC_NO_I_SYS_IOCTL" class="portability">
Prevent I_SYS_IOCTL from being automatically defined.
</flag>

<flag name="DI_UNISTD" class="portability">
This macro indicates that unistd.h exists and should be included.
</flag>
<flag name="DSPEC_NO_I_UNISTD" class="portability">
Prevent I_UNISTD  from being automatically defined.
</flag>

<flag name="DI_INTTYPES" class="portability">
This macro indicates that inttypes.h exists and should be included.
</flag>
<flag name="DSPEC_NO_I_INTTYPES" class="portability">
Prevent I_INTTYPES from being automatically defined.
</flag>

<flag name="DHAS_LONG_LONG" class="portability">
This macro indicates that the C compiler supports a 'long long' type.
</flag>
<flag name="DSPEC_NO_HAS_LONG_LONG" class="portability">
Prevent HAS_LONG_LONG from being automatically defined.
</flag>

<flag name="DHAS_FCNTL" class="portability">
This macro indicates that the fcntl() function exists.
</flag>
<flag name="DSPEC_NO_HAS_FCNTL" class="portability">
Prevent HAS_FCNTL from being automatically defined.
</flag>

<flag name="DI_SYS_TIME" class="portability">
This macro indicates that sys/time.h exists and should be included.
</flag>
<flag name="DSPEC_NO_I_SYS_TIME" class="portability">
Prevent I_SYS_TIME from being automatically defined.
</flag>

<flag name="DI_SYS_TIMES" class="portability">
This macro indicates that sys/times.h exists and should be included.
</flag>
<flag name="DSPEC_NO_I_SYS_TIMES" class="portability">
Prevent I_SYS_TIMES from being automatically defined.
</flag>

<flag name="DI_SYS_WAIT" class="portability">
This macro indicates that sys/wait.h exists and should be included.
</flag>
<flag name="DSPEC_NO_I_SYS_WAIT" class="portability">
Prevent I_SYS_WAIT from being automatically defined.
</flag>

<flag name="DHAS_TRUNCATE" class="portability">
This macro indicates that the truncate() function exists.
</flag>
<flag name="DSPEC_NO_HAS_TRUNCATE" class="portability">
Prevent HAS_TRUNCATE from being automatically defined.
</flag>

<flag name="DI_ARPA_INET" class="portability">
This macro indicates that arpa/inet.h exists and should be included.
</flag>
<flag name="DSPEC_NO_I_ARPA_INET" class="portability">
Prevent I_ARPA_INET from being automatically defined.
</flag>

<flag name="DSPEC_NO_dXSUB_SYS" class="forbidden">
This macro prevents the usual (empty) definition of dXSUB_SYS.
</flag>
<flag name="dXSUB_SYS" class="forbidden" regexp="-DdXSUB_SYS(?:=\S*)?">
This macro must remain defined, but empty.
<example>
-DdXSUB_SYS=XXX
</example>
</flag>

<flag name="DUSE_STAT_RDEV" class="portability">
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.
</flag>

<flag name="DSPEC_NO_USE_STAT_RDEV" class="portability">
Prevent USE_STAT_RDEV from being automatically defined.
</flag>

<flag name="DUSE_STDIO_PTR" class="portability">
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.
</flag>

<flag name="DSPEC_NO_USE_STDIO_PTR" class="portability">
Prevent USE_STDIO_PTR from being automatically defined.
</flag>

<flag name="DUSE_STDIO_BASE" class="portability">
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.
</flag>

<flag name="DSPEC_NO_USE_STDIO_BASE" class="portability">
Prevent USE_STDIO_BASE from being automatically defined.
</flag>

<flag name="DUSE_DYNAMIC_LOADING" class="forbidden">
Definition of this symbol is forbidden.
</flag>

<flag name="DHAS_CRYPT" class="forbidden">
Definition of this symbol is forbidden.
</flag>

<flag name="DHAS_CHOWN" class="forbidden">
Definition of this symbol is forbidden.
</flag>

<flag name="DHAS_CHROOT" class="forbidden">
Definition of this symbol is forbidden.
</flag>

<flag name="DHAS_PHOSTNAME" class="forbidden">
Definition of this symbol is forbidden.
</flag>

<flag name="DHAS_CSH" class="forbidden">
Definition of this symbol is forbidden.
</flag>

<flag name="DPERL_MALLOC_WRAP" class="forbidden">
Definition of this symbol is forbidden.
</flag>

<flag name="DNO_LOCALE" class="portability">
Prevent any non-C locales from being used.  This is the default.
</flag>
<flag name="DSPEC_REALLY_USE_LOCALE" class="portability">
Prevent NO_LOCALE from being automatically defined.  Doing so will probably
cause validation to fail.
</flag>

<flag name="DHASCONST" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HASCONST" class="portability">
Prevent HASCONST from being automatically defined.
</flag>

<flag name="DCAN_PROTOTYPE" class="portability">
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.
</flag>
<flag name="DSPEC_NO_CAN_PROTOTYPE" class="portability">
Prevent CAN_PROTOTYPE from being automatically defined.
</flag>

<flag name="DCAN_VAPROTO" class="portability">
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.
</flag>
<flag name="DSPEC_NO_CAN_VAPROTO" class="portability">
Prevent CAN_VAPROTO from being automatically defined.
</flag>

<flag name="DHAS_GETCWD" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_GETCWD" class="portability">
Prevent HAS_GETCWD from being automatically defined.
</flag>

<flag name="DHAS_ISNAN" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_ISNAN" class="portability">
Prevent HAS_ISNAN from being automatically defined.
</flag>

<flag name="DHAS_ISINF" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_ISINF" class="portability">
Prevent HAS_ISINF from being automatically defined.
</flag>

<flag name="DHAS_MEMCHR" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_MEMCHR" class="portability">
Prevent HAS_MEMCHR from being automatically defined.
</flag>

<flag name="DHAS_MEMCMP" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_MEMCMP" class="portability">
Prevent HAS_MEMCMP from being automatically defined.
</flag>

<flag name="DHAS_SANE_MEMCMP" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_SANE_MEMCMP" class="portability">
Prevent HAS_SANE_MEMCMP from being automatically defined.
</flag>

<flag name="DHAS_MEMCPY" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_MEMCPY" class="portability">
Prevent HAS_MEMCPY from being automatically defined.
</flag>

<flag name="DHAS_MEMMOVE" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_MEMMOVE" class="portability">
Prevent HAS_MEMMOVE from being automatically defined.
</flag>

<flag name="DHAS_MEMSET" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_MEMSET" class="portability">
Prevent HAS_MEMSET from being automatically defined.
</flag>

<flag name="DHAS_SELECT" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_SELECT" class="portability">
Prevent HAS_SELECT from being automatically defined.
</flag>

<flag name="DHAS_SIGNBIT" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_SIGNBIT" class="portability">
Prevent HAS_SIGNBIT from being automatically defined.
</flag>

<flag name="DHAS_STRCHR" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_STRCHR" class="portability">
Prevent HAS_STRCHR from being automatically defined.
</flag>

<flag name="DHAS_STRTOD" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_STRTOD" class="portability">
Prevent HAS_STRTOD from being automatically defined.
</flag>

<flag name="DHAS_STRTOL" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_STRTOL" class="portability">
Prevent HAS_STRTOL from being automatically defined.
</flag>

<flag name="DHAS_STRXFRM" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_STRXFRM" class="portability">
Prevent HAS_STRXFRM from being automatically defined.
</flag>

<flag name="VOIDFLAGS" class="portability" regexp="-DVOIDFLAGS=\d+">
<![CDATA[
This symbol indicates how much support of the void type is given by this
compiler.  What various bits mean:

<ul>
  <li> 1 = supports declaration of void</li>
  <li> 2 = supports arrays of pointers to functions returning void</li>
  <li> 4 = supports comparisons between pointers to void functions and addresses of void functions</li>
  <li> 8 = suports declaration of generic void pointers</li>
</ul>
]]>
<example>
-DVOIDFLAGS=XXX
</example>
</flag>

<flag name="DHASVOLATILE" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HASVOLATILE" class="portability">
Prevent HASVOLATILE from being automatically defined.
</flag>

<flag name="DHAS_VPRINTF" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_VPRINTF" class="portability">
Prevent HAS_VPRINTF from being automatically defined.
</flag>

<flag name="DHAS_DBL_DIG" class="portability">
<![CDATA[
This symbol, if defined, indicates that this system's &lt;float.h&gt;
or &lt;limits.h&gt; 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.
]]>
</flag>
<flag name="DSPEC_NO_HAS_DBL_DIG" class="portability">
Prevent HAS_DBL_DIG from being automatically defined.
</flag>

<flag name="DHAS_LDBL_DIG" class="portability">
<![CDATA[
This symbol, if defined, indicates that this system's &lt;float.h&gt;
or &lt;limits.h&gt; 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.
]]>
</flag>
<flag name="DSPEC_NO_HAS_LDBL_DIG" class="portability">
Prevent HAS_LDBL_DIG from being automatically defined.
</flag>

<flag name="DHAS_LONG_DOUBLE" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_LONG_DOUBLE" class="portability">
Prevent HAS_LONG_DOUBLE from being automatically defined.
</flag>

<flag name="DMAX_SIG_DIG_PLUS" class="portability">
  <example>-DMAX_SIG_DIG_PLUS=4</example>
  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.
</flag>

<flag name="DFLEXFILENAMES" class="portability">
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.
</flag>
<flag name="DSPEC_NO_FLEXFILENAMES" class="portability">
Prevent FLEXFILENAMES from being automatically defined.
</flag>

<flag name="DU32_ALIGNMENT_REQUIRED" class="portability">
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.
</flag>
<flag name="DSPEC_NO_U32_ALIGNMENT_REQUIRED" class="portability">
Prevent U32_ALIGNMENT_REQUIRED from being automatically defined.
</flag>

<flag name="DI_UTIME" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_UTIME" class="portability">
Prevent I_UTIME from being automatically defined.
</flag>

<flag name="DI_STDBOOL" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_STDBOOL" class="portability">
Prevent I_STDBOOL from being automatically defined.
</flag>

<flag name="DPERL_BOOL_AS_CHAR" class="portability">
  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.
</flag>

<flag name="Dbool" class="portability">
  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.
</flag>

<flag name="DI_STDDEF" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_STDDEF" class="portability">
Prevent I_STDDEF from being automatically defined.
</flag>

<flag name="DI_DIRENT" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_DIRENT" class="portability">
Prevent I_DIRENT from being automatically defined.
</flag>

<flag name="DI_FLOAT" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_FLOAT" class="portability">
Prevent I_FLOAT from being automatically defined.
</flag>

<flag name="DI_LIMITS" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_LIMITS" class="portability">
Prevent I_LIMITS from being automatically defined.
</flag>

<flag name="DI_MATH" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_MATH" class="portability">
Prevent I_MATH from being automatically defined.
</flag>

<flag name="DI_SYS_STAT" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_SYS_STAT" class="portability">
Prevent I_SYS_STAT from being automatically defined.
</flag>

<flag name="DI_STDARG" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_STDARG" class="portability">
Prevent I_STDARG from being automatically defined.
</flag>

<flag name="DI_STDLIB" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_STDLIB" class="portability">
Prevent I_STDLIB from being automatically defined.
</flag>

<flag name="DI_STRING" class="portability">
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.
</flag>
<flag name="DSPEC_NO_I_STRING" class="portability">
Prevent I_STRING from being automatically defined.
</flag>

<flag name="DUSE_STRUCT_COPY" class="portability">
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.
</flag>
<flag name="DSPEC_NO_STRUCT_COPY" class="portability">
Prevent USE_STRUCT_COPY from being automatically defined.
</flag>

<flag name="DHAS_RMDIR" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_RMDIR" class="portability">
Prevent HAS_RMDIR from being automatically defined.
</flag>

<flag name="DHAS_GETTIMEOFDAY" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_GETTIMEOFDAY" class="portability">
Prevent HAS_GETTIMEOFDAY from being automatically defined.
</flag>

<flag name="DHAS_IOCTL" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_IOCTL" class="portability">
Prevent HAS_IOCTL from being automatically defined.
</flag>

<flag name="DHAS_WAIT4" class="portability">
This symbol, if defined, indicates that the wait4 routine is
available to wait for child process.
</flag>

<flag name="DHAS_WAITPID" class="portability">
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.
</flag>
<flag name="DSPEC_NO_HAS_WAITPID" class="portability">
Prevent HAS_WAITPID from being automatically defined.
</flag>

<flag name="DACC_SELF" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DADD_TO_REGEXEC" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="inet_consts" class="forbidden" regexp="[-/]D[AP]F_(?:UNIX|INET)(?:=\S*)\b">
<example>
-DPF_INET,
-DAF_INET,
-DAF_UNIX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DALTERNATE_SHEBANG" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DALWAYS_DEFTYPES" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DAMIGAOS" class="portability">
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.
</flag>

<flag name="lib_locs" class="forbidden" regexp="[-/]D(?:APPLLIB_EXP|ARCHLIB_EXP|PRIVLIB_EXP|SITEARCH_EXP|SITELIB_EXP|SITELIB_STEM|PERL_VENDORARCH_EXP|PERL_VENDORLIB_EXP|PERL_VENDORLIB_NAME|PERL_VENDORLIB_STEM|USE_SITECUSTOMIZE)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DAPPLLIB_EXP=XXX,
-DARCHLIB_EXP=XXX,
-DPRIVLIB_EXP=XXX,
-DSITEARCH_EXP=XXX,
-DSITELIB_EXP=XXX,
-DSITELIB_STEM=XXX,
-DPERL_VENDORARCH_EXP=XXX,
-DPERL_VENDORLIB_EXP=XXX,
-DPERL_VENDORLIB_NAME=XXX,
-DPERL_VENDORLIB_STEM=XXX,
-DUSE_SITECUSTOMIZE=XXX
</example>
</flag>

<flag name="DARG_ZERO_IS_SCRIPT" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DATLEASTFIVEOHOHFIVE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="atol_atoul" class="forbidden" regexp="[-/]DAtou?l(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DAtoul=XXX,
-DAtol=XXX
</example>
</flag>

<flag name="DBASEOP_DEFINITION" class="forbidden">
This macro defines the contents of one of Perl's internal data structures.
Setting it to a non-default value is forbidden.
</flag>

<flag name="DBIG_TIME" class="portability">
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.
</flag>

<flag name="DBINARY_BUILD_NOTICE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DBIT_BUCKET" class="portability" regexp="[-/]DBIT_BUCKET(?:=\S*)?">
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".
<example>
-DBIT_BUCKET=XXX
</example>
</flag>

<flag name="DBOGUS_GETNAME_RETURN" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DBSD" class="portability">
<include flag="DBSDish" />
This macro indicates that the source is being built on a BSD system.
</flag>

<flag name="DBSD_GETPGRP" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DBSD_SETPGRP" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DBSDish" class="portability">
This macro indicates that the system for which the benchmark is being compiled
has some characteristics in common with BSD Unix systems.
</flag>

<flag name="DBUFSIZ" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DPERLIOBUF_DEFAULT_BUFSIZ" class="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.
</flag>

<flag name="DBYTEORDER" class="portability" regexp="[-/]DBYTEORDER(?:=[0-9xX]*)?">
<![CDATA[
<p>This macro indicates the byte order and width of an IV.  Possible values are</p>
<ul>
 <li>0x87654321 - Big-endian 64-bit system</li>
 <li>0x4321 - Big-endian 32-bit system</li>
 <li>0x12345678 - Little-endian 64-bit system</li>
 <li>0x1234 - Little-endian 32-bit system</li>
</ul>
]]>
<example>
-DBYTEORDER=12345
</example>
</flag>

<flag name="DBYTESWAP" class="forbidden" regexp="[-/]DBYTESWAP(?:=\S*)?">
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.
<example>
-DBYTESWAP=XXX
</example>
</flag>

<flag name="DCAST_INLINE" class="forbidden">
This flag indicates that casting floating point values to integers should be
done in-line via macros.  Its use is forbidden.
</flag>

<flag name="DCHARMASK" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DCHECK_HOST_INTERP" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DCLK_TCK" class="portability" regexp="[-/]DCLK_TCK(?:=\d+)?">
This macro is used in place of HZ if HZ is not defined.
<example>
-DCLK_TCK=XXX
</example>
</flag>

<flag name="DCODESET" class="portability" regexp="[-/]DCODESET(?:=\S+)?">
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.
<example>
-DCODESET=XXX
</example>
</flag>

<flag name="DCOMPLEX_STATUS" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="thread_stuff" class="forbidden" regexp="[-/]DCOND_(?:DESTROY|BROADCAST|INIT|SIGNAL|WAIT)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DCOND_DESTROY=XXX,
-DCOND_BROADCAST=XXX,
-DCOND_INIT=XXX,
-DCOND_SIGNAL=XXX,
-DCOND_WAIT=XXX
</example>
</flag>

<flag name="DCP_UTF8" class="forbidden" regexp="[-/]DCP_UTF8(?:=\S+)?">
Setting this macro to a value other than its default is forbidden.
<example>
-DCP_UTF8=XXX
</example>
</flag>

<flag name="DCRAY_HACK" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="r_protos1" class="forbidden" regexp="[-/]D(END|GET|SET)(GR|HOST|NET|PROTO|SERV|PW)ENT_R_PROTO(?:=\S+)?">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DENDGRENT_R_PROTO=XXX,
-DENDHOSTENT_R_PROTO=XXX,
-DENDNETENT_R_PROTO=XXX,
-DENDPROTOENT_R_PROTO=XXX,
-DENDSERVENT_R_PROTO=XXX,
-DENDPWENT_R_PROTO=XXX,
-DGETGRENT_R_PROTO=XXX,
-DGETHOSTENT_R_PROTO=XXX,
-DGETNETENT_R_PROTO=XXX,
-DGETPROTOENT_R_PROTO=XXX,
-DGETSERVENT_R_PROTO=XXX,
-DGETPWENT_R_PROTO=XXX,
-DSETGRENT_R_PROTO=XXX,
-DSETHOSTENT_R_PROTO=XXX,
-DSETNETENT_R_PROTO=XXX,
-DSETPROTOENT_R_PROTO=XXX,
-DSETSERVENT_R_PROTO=XXX,
-DSETPWENT_R_PROTO=XXX
</example>
</flag>

<flag name="r_protos3" class="forbidden" regexp="[-/]DREADDIR(|64)_R_PROTO(?:=\S+)?">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DREADDIR_R_PROTO=XXX,
-DREADDIR64_R_PROTO=XXX
</example>
</flag>

<flag name="r_protos5" class="forbidden" regexp="[-/]DGET(GRGID|(GR|PW)NAM|(HOST|NET|PROTO|SERV)BY(ADDR|NAME|NUMBER|PORT)|LOGIN|PWUID|SPNAM)_R_PROTO(?:=\S+)?">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DGETGRGID_R_PROTO=XXX,
-DGETGRNAM_R_PROTO=XXX,
-DGETPWNAM_R_PROTO=XXX,
-DGETHOSTBYADDR_R_PROTO=XXX,
-DGETHOSTBYNAME_R_PROTO=XXX,
-DGETNETBYADDR_R_PROTO=XXX,
-DGETNETBYNAME_R_PROTO=XXX,
-DGETPROTOBYADDR_R_PROTO=XXX,
-DGETPROTOBYNAME_R_PROTO=XXX,
-DGETSERVBYADDR_R_PROTO=XXX,
-DGETSERVBYNAME_R_PROTO=XXX,
-DGETLOGIN_R_PROTO=XXX,
-DGETPWUID_R_PROTO=XXX,
-DGETSPNAM_R_PROTO=XXX,
-DGETPROTOBYNUMBER_R_PROTO=XXX,
-DGETSERVBYPORT_R_PROTO=XXX
</example>
</flag>

<flag name="r_protos6" class="forbidden" regexp="[-/]D(C|GM|LOCAL|ASC)TIME_R_PROTO(?:=\S+)?">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DCTIME_R_PROTO=XXX,
-DGMTIME_R_PROTO=XXX,
-DLOCALTIME_R_PROTO=XXX,
-DASCTIME_R_PROTO=XXX
</example>
</flag>

<flag name="r_protos7" class="forbidden" regexp="[-/]D(CRYPT|CTERMID|SETLOCALE|STRERROR|TMPNAM|TTYNAME)_R_PROTO(?:=\S+)?">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DCRYPT_R_PROTO=XXX,
-DCTERMID_R_PROTO=XXX,
-DSETLOCALE_R_PROTO=XXX,
-DSTRERROR_R_PROTO=XXX,
-DTMPNAM_R_PROTO=XXX,
-DTTYNAME_R_PROTO=XXX
</example>
</flag>

<flag name="DCSH" class="forbidden" regexp="[-/]DCSH(?:=\S+)?">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DCSH=XXX
</example>
</flag>

<flag name="DCTYPE256" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DCYGWIN_WITH_W32API" class="portability">
This macro is defined automatically when building under Cygwin with the
Win32 API.
</flag>

<flag name="accessor_macro" class="forbidden" regexp="[-/]D(?:AvFILLp|Cop(?:yD|FILE(?:|AV|GV|GV_set|SV|_set)|STASH(?:|PV|PV_set|_eq|_set))|Hv(?:HASKFLAGS|NAMELEN_get|NAMEUTF8|NAME_HEK|PLACEHOLDERS|SHAREKEYS_off|TOTALKEYS)|CVf_(?:ASSERTION|LVALUE)|boolSV)(?:=\S*)?">
This macro is a Perl-internal data type accessor; setting it to something
other than its default is forbidden.
<example>
-DAvFILLp=XXX,
-DCopyD=XXX,
-DCopFILE=XXX,
-DCopFILEAV=XXX,
-DCopFILEGV=XXX,
-DCopFILEGV_set=XXX,
-DCopFILESV=XXX,
-DCopFILE_set=XXX,
-DCopSTASH=XXX,
-DCopSTASHPV=XXX,
-DCopSTASHPV_set=XXX,
-DCopSTASH_eq=XXX,
-DCopSTASH_set=XXX,
-DHvHASKFLAGS=XXX,
-DHvNAMELEN_get=XXX,
-DHvNAMEUTF8=XXX,
-DHvNAME_HEK=XXX,
-DHvPLACEHOLDERS=XXX,
-DHvSHAREKEYS_off=XXX,
-DHvTOTALKEYS=XXX,
-DCVf_ASSERTION=XXX,
-DCVf_LVALUE=XXX,
-DboolSV=XXX
</example>
</flag>

<flag name="DDASSERT" class="forbidden">
Enable assertions in the Storable module.  Use of this flag is forbidden for
reportable runs.
</flag>

<flag name="DDBL_DIG" class="portability" regexp="[-/]D(?:OVR_)?DBL_DIG(?:=\d*)?\b">
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.
<example>
-DOVR_DBL_DIG=XXX,
-DDBL_DIG=XXX
</example>
</flag>

<flag name="DLDBL_DIG" class="portability" regexp="[-/]D(?:OVR_)?LDBL_DIG(?:=\d*)?\b">
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.
<example>
-DOVR_LDBL_DIG=XXX,
-DLDBL_DIG=XXX
</example>
</flag>

<flag name="epsilons" class="forbidden" regexp="[-/]D(?:L?DBL|NV)_EPSILON(?:=\S*)?">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DLDBL_EPSILON=XXX,
-DDBL_EPSILON=XXX,
-DNV_EPSILON=XXX
</example>
</flag>

<flag name="LDBL_INFINITY" class="portability" regexp="[-/]DLDBL_INFINITY(?i:=[-0-9+efg]*)?\b">
This flag is used to set the largest value representable in a variable of type
long double.
<example>
-DLDBL_INFINITY=12345
</example>
</flag>

<flag name="DBL_INFINITY" class="portability" regexp="[-/]DDBL_INFINITY(?i:=[-0-9+efg]*)?\b">
This flag is used to set the largest value representable in a variable of type
double.
<example>
-DDBL_INFINITY=12345
</example>
</flag>

<flag name="mant_digits" class="forbidden" regexp="[-/]DL?DBL_MANT_DIG(?:=\d*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DLDBL_MANT_DIG=XXX,
-DDBL_MANT_DIG=XXX
</example>
</flag>

<flag name="DDBL_MIN" class="portability" regexp="[-/]DDBL_MIN(?i:=[-0-9+efg]*)?\b">
This symbol, if defined, contains the minimum value that can be stored in
a variable of type double.
<example>
-DDBL_MIN=12345
</example>
</flag>

<flag name="DLDBL_MIN" class="portability" regexp="[-/]DLDBL_MIN(?i:=[-0-9+efg]*)?\b">
This symbol, if defined, contains the minimum value that can be stored in
a variable of type long double.
<example>
-DLDBL_MIN=12345
</example>
</flag>

<flag name="double_max" class="portability" regexp="[-/]D(?:DBL_MAX|HUGE_VAL)(?i:=[-0-9+efgl]*)?\b">
<example>
-DDBL_MAX=3.40282347E+38L,
-DHUGE_VAL=3.40282347E+38L
</example>
This symbol, if defined, contains the maximum value that can be stored in
a variable of type double.
</flag>

<flag name="DLDBL_MAX" class="portability" regexp="[-/]D(?:LDBL_MAX|HUGE_VALL)(?i:=[-0-9+efgl]*)?\b">
<example>
-DLDBL_MAX=1.7976931348623157E+308L,
-DHUGE_VAL=1.7976931348623157E+308L
</example>
This symbol, if defined, contains the maximum value that can be stored in
a variable of type long double.
</flag>

<flag name="DDBL_MIN_10_EXP" class="portability" regexp="[-/]DDBL_MIN_10_EXP(?:=\S*)\b">
This symbol, if defined, contains the smallest power of 10 that can be
stored in a variable of type double.
<example>
-DDBL_MIN_10_EXP=XXX
</example>
</flag>

<flag name="DLDBL_MIN_10_EXP" class="portability" regexp="[-/]DLDBL_MIN_10_EXP(?:=\S*)\b">
This symbol, if defined, contains the smallest power of 10 that can be
stored in a variable of type long double.
<example>
-DLDBL_MIN_10_EXP=XXX
</example>
</flag>

<flag name="DDBL_MAX_10_EXP" class="portability" regexp="[-/]DDBL_MAX_10_EXP(?:=\S*)\b">
This symbol, if defined, contains the largest power of 10 that can be
stored in a variable of type double.
<example>
-DDBL_MAX_10_EXP=XXX
</example>
</flag>

<flag name="DLDBL_MAX_10_EXP" class="portability" regexp="[-/]DLDBL_MAX_10_EXP(?:=\S*)\b">
This symbol, if defined, contains the largest power of 10 that can be
stored in a variable of type long double.
<example>
-DLDBL_MAX_10_EXP=XXX
</example>
</flag>

<flag name="NaNs" class="forbidden" regexp="[-/]D(?:L?DBL_)?[QS]?NAN(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DLDBL_QNAN=XXX,
-DLDBL_SNAN=XXX,
-DLDBL_NAN=XXX,
-DDBL_QNAN=XXX,
-DDBL_SNAN=XXX,
-DDBL_NAN=XXX,
-DQNAN=XXX,
-DSNAN=XXX,
-DNAN=XXX
</example>
</flag>

<flag name="debug_flags" class="forbidden" regexp="[-/]D(?:DEBUGGING|MDH_HAS_SIZE|PERL_DEBUG_READONLY_COW|PERL_MEMORY_DEBUG_HEADER_SIZE|PERL_TRACE_OPS|TIME_64_DEBUG|USE_HASH_SEED_DEBUG|USE_MDH)(?:=\S*)\b">
These flags may enable various Perl internal debugging features.  Their use is
prohibited.
<example>
-DDEBUGGING=XXX,
-DMDH_HAS_SIZE=XXX,
-DPERL_DEBUG_READONLY_COW=XXX,
-DPERL_MEMORY_DEBUG_HEADER_SIZE=XXX,
-DPERL_TRACE_OPS=XXX,
-DTIME_64_DEBUG=XXX,
-DUSE_HASH_SEED_DEBUG=XXX,
-DUSE_MDH
</example>
</flag>

<flag name="DDEBUGME" class="forbidden">
Enable debugging and assertions in the Storable module.  Use of this flag
is forbidden for reportable runs.
</flag>

<flag name="DDEBUG_LEAKING_SCALARS" class="forbidden">
Enables debugging output for leaked scalar variables.  Its use will probably
cause the benchmark to miscompare, and is forbidden.
</flag>

<flag name="DDEC_OSF1_3_X" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="constant_SVs" class="forbidden" regexp="[-/]D(?:ERR|DEF)SV(?:=\S*)\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DERRSV=XXX,
-DDEFSV=XXX
</example>
</flag>

<flag name="DDETACH" class="forbidden" regexp="[-/]DDETACH(?:=\S*)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DDETACH=XXX
</example>
</flag>

<flag name="DDIRSIZ" class="forbidden" regexp="[-/]DDIRSIZ(?:=\S*)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DDIRSIZ=XXX
</example>
</flag>

<flag name="DDJGPP" class="portability">
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.
</flag>

<flag name="DDOINIT" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DDONT_DECLARE_STD" class="portability">
This flag indicates that the source should not provide prototypes for
standard functions.
</flag>

<flag name="DDONT_USE_CRITICAL_SECTION" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DDOSISH" class="portability">
This flag indicates that the benchmark is being built on a system that is
like MS-DOS.
</flag>

<flag name="DDPPP_NAMESPACE" class="forbidden" regexp="[-/]DDPPP_NAMESPACE(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DDPPP_NAMESPACE=XXX
</example>
</flag>

<flag name="DDUMPADDR" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DDYNAMIC_ENV_FETCH" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DDllMain" class="forbidden" regexp="[-/]DDllMain(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DDllMain=XXX
</example>
</flag>

<flag name="return_codes" class="forbidden" regexp="[-/]D(?:EINVAL|EACCES|ENOTSOCK|EAI_AGAIN|EAI_BADFLAGS|EAI_FAIL|EAI_MEMORY|EAI_NODATA|EBADMSG|EIDRM|ENODATA|ENOMSG|ENOSR|ENOSTR|ENOTRECOVERABLE|EOTHER|EOVERFLOW|ETIME|ETXTBSY)(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DEACCES=XXX,
-DEAI_AGAIN=XXX,
-DEAI_BADFLAGS=XXX,
-DEAI_FAIL=XXX,
-DEAI_MEMORY=XXX,
-DEAI_NODATA=XXX,
-DEBADMSG=XXX,
-DEIDRM=XXX,
-DEINVAL=XXX,
-DENODATA=XXX,
-DENOMSG=XXX,
-DENOSR=XXX,
-DENOSTR=XXX,
-DENOTRECOVERABLE=XXX,
-DENOTSOCK=XXX,
-DEOTHER=XXX,
-DEOVERFLOW=XXX,
-DETIME=XXX,
-DETXTBSY=XXX
</example>
</flag>

<flag name="unused_return_codes" class="forbidden" regexp="[-/]D(?:ECONNABORTED|ECONNRESET|ECONNREFUSED|EAFNOSUPPORT|EAI_FAMILY|EAI_NONAME|EAI_SERVICE|EAI_SOCKTYPE|ENOLINK)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DEAFNOSUPPORT=XXX,
-DEAI_FAMILY=XXX,
-DEAI_NONAME=XXX,
-DEAI_SERVICE=XXX,
-DEAI_SOCKTYPE=XXX,
-DECONNABORTED=XXX,
-DECONNREFUSED=XXX,
-DECONNRESET=XXX,
-DENOLINK=XXX
</example>
</flag>

<flag name="DEBCDIC" class="portability">
This flag indicates that the benchmark is being built on an EBCDIC system.
Good luck with that.
</flag>

<flag name="DEFF_ONLY_OK" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DEMULATE_POLL_WITH_SELECT" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="reentrant_fptr_flags" class="forbidden" regexp="[-/]D(?:(?:END|GET|SET)(?:PW|GR)ENT|GET(?:GR|PW)NAM|GET(?:PWUID|GRGID))_R_HAS_FPTR\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DENDPWENT_R_HAS_FPTR,
-DENDGRENT_R_HAS_FPTR,
-DGETPWENT_R_HAS_FPTR,
-DGETGRENT_R_HAS_FPTR,
-DSETPWENT_R_HAS_FPTR,
-DSETGRENT_R_HAS_FPTR,
-DGETGRNAM_R_HAS_FPTR,
-DGETPWNAM_R_HAS_FPTR,
-DGETPWUID_R_HAS_FPTR,
-DGETGRGID_R_HAS_FPTR
</example>
</flag>

<flag name="reentrant_ptr_buffer_flags" class="forbidden" regexp="[-/]D(?:GET(?:(?:GRGID|PROTOBYNUMBER|PWUID|PWGID|SERVBYPORT)|(?:HOST|NET)BYADDR|(?:SERV|PROTO|NET|HOST)BYNAME|(?:HOST|NET|PROTO|SERV|PW|SP|GR)ENT|(?:PW|GR|SP)NAM)_R_HAS_(?:PTR|BUFFER)|USE_(?:GRENT|HOSTENT|NETENT|PROTOENT|PWENT|SERVENT)_BUFFER)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DGETGRGID_R_HAS_PTR,
-DGETGRGID_R_HAS_BUFFER,
-DGETPROTOBYNUMBER_R_HAS_PTR,
-DGETPROTOBYNUMBER_R_HAS_BUFFER,
-DGETPWUID_R_HAS_PTR,
-DGETPWUID_R_HAS_BUFFER,
-DGETPWGID_R_HAS_PTR,
-DGETPWGID_R_HAS_BUFFER,
-DGETSERVBYPORT_R_HAS_PTR,
-DGETSERVBYPORT_R_HAS_BUFFER,
-DGETHOSTBYADDR_R_HAS_PTR,
-DGETHOSTBYADDR_R_HAS_BUFFER,
-DGETNETBYADDR_R_HAS_PTR,
-DGETNETBYADDR_R_HAS_BUFFER,
-DGETSERVBYNAME_R_HAS_PTR,
-DGETSERVBYNAME_R_HAS_BUFFER,
-DGETPROTOBYNAME_R_HAS_PTR,
-DGETPROTOBYNAME_R_HAS_BUFFER,
-DGETNETBYNAME_R_HAS_PTR,
-DGETNETBYNAME_R_HAS_BUFFER,
-DGETHOSTBYNAME_R_HAS_PTR,
-DGETHOSTBYNAME_R_HAS_BUFFER,
-DGETHOSTENT_R_HAS_PTR,
-DGETHOSTENT_R_HAS_BUFFER,
-DGETNETENT_R_HAS_PTR,
-DGETNETENT_R_HAS_BUFFER,
-DGETPROTOENT_R_HAS_PTR,
-DGETPROTOENT_R_HAS_BUFFER,
-DGETSERVENT_R_HAS_PTR,
-DGETSERVENT_R_HAS_BUFFER,
-DGETPWENT_R_HAS_PTR,
-DGETPWENT_R_HAS_BUFFER,
-DGETSPENT_R_HAS_PTR,
-DGETSPENT_R_HAS_BUFFER,
-DGETGRENT_R_HAS_PTR,
-DGETGRENT_R_HAS_BUFFER,
-DGETPWNAM_R_HAS_PTR,
-DGETPWNAM_R_HAS_BUFFER,
-DGETGRNAM_R_HAS_PTR,
-DGETGRNAM_R_HAS_BUFFER,
-DGETSPNAM_R_HAS_PTR,
-DGETSPNAM_R_HAS_BUFFER,
-DUSE_GRENT_BUFFER,
-DUSE_HOSTENT_BUFFER,
-DUSE_NETENT_BUFFER,
-DUSE_PROTOENT_BUFFER,
-DUSE_PWENT_BUFFER,
-DUSE_SERVENT_BUFFER
</example>
</flag>

<flag name="reentrant_errno_flags" class="forbidden" regexp="[-/]DGET(?:HOST|NET)(?:BYADDR|BYNAME|ENT)_R_HAS_ERRNO\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DGETHOSTBYADDR_R_HAS_ERRNO,
-DGETHOSTBYNAME_R_HAS_ERRNO,
-DGETHOSTENT_R_HAS_ERRNO,
-DGETNETBYADDR_R_HAS_ERRNO,
-DGETNETBYNAME_R_HAS_ERRNO,
-DGETNETENT_R_HAS_ERRNO
</example>
</flag>

<flag name="DENV_IS_CASELESS" class="portability">
This flag indicates that environment variable names are not case-sensitive.
</flag>

<flag name="DEOF" class="portability" regexp="[-/]DEOF(?:=\S*)?\b">
This flag may be used to set the value returned by stdio functions upon
encountering an end-of-file condition.
<example>
-DEOF=XXX
</example>
</flag>

<flag name="DESPIPE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DEXEC_ARGV_CAST" class="portability" regexp="[-/]DEXEC_ARGV_CAST(?:=\S*)?\b">
If the "argv" argument to exec must be cast to a specific type, this flag may
be used to do so.
<example>
-DEXEC_ARGV_CAST=XXX
</example>
</flag>

<flag name="extern_decls" class="forbidden" regexp="[-/]DEXT(?:ERN)?(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DEXTERN=XXX,
-DEXT=XXX
</example>
</flag>

<flag name="DEXTRA_F_IN_SEMUN_BUF" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="fake_things" class="forbidden" regexp="[-/]DFAKE_(?:THREADS|(?:PERSISTENT|DEFAULT)_SIGNAL_HANDLERS)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DFAKE_THREADS,
-DFAKE_PERSISTENT_SIGNAL_HANDLERS,
-DFAKE_DEFAULT_SIGNAL_HANDLERS
</example>
</flag>

<flag name="boolean_values" class="forbidden" regexp="[-/]D(?:FALSE|TRUE)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DFALSE=XXX,
-DTRUE=XXX
</example>
</flag>

<flag name="DFCNTL_CAN_LOCK" class="portability">
This flag should be used if the fcntl() function should be used for file
locking.
</flag>

<flag name="locking_constants" class="forbidden" regexp="[-/]D(?:FCNTL|LOCKF)_EMULATE_FLOCK\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DFCNTL_EMULATE_FLOCK,
-DLOCKF_EMULATE_FLOCK
</example>
</flag>

<flag name="DFCRYPT" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="system_time" class="forbidden" regexp="[-/]DUSE_SYSTEM_(?:GM|LOCAL)TIME\b">
  <example>
    -DUSE_SYSTEM_GMTIME,
    -DUSE_SYSTEM_LOCALTIME
  </example>
  These macros may not be changed from their default values.
</flag>

<flag name="reentr_functions" class="forbidden" regexp="[-/]DHAS_(?:CRYPT|CTERMID|[DS]DRAND48|(?:GET|SET|END)(?:GR|HOST|NET|PROTO|PW|SERV)ENT|GET(?:GR(?:GID|NAM)|(?:HOST|NET)BY(?:NAME|ADDR)|LOGIN|PROTOBY(?:NAME|NUMBER)|PW(?:NAM|UID)|SERVBY(?:NAME|PORT)|SPNAM)|(?:C|ASC|LOCAL|GM)TIME|S?RANDOM|READDIR(?:64)?|SETLOCALE|STRERROR|TMPNAM|TTYNAME)_R\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_CRYPT_R,
-DHAS_CTERMID_R,
-DHAS_DDRAND48_R,
-DHAS_SDRAND48_R,
-DHAS_GETGRENT_R,
-DHAS_GETHOSTENT_R,
-DHAS_GETNETENT_R,
-DHAS_GETPROTOENT_R,
-DHAS_GETPWENT_R,
-DHAS_GETSERVENT_R,
-DHAS_SETGRENT_R,
-DHAS_SETHOSTENT_R,
-DHAS_SETNETENT_R,
-DHAS_SETPROTOENT_R,
-DHAS_SETPWENT_R,
-DHAS_SETSERVENT_R,
-DHAS_ENDGRENT_R,
-DHAS_ENDHOSTENT_R,
-DHAS_ENDNETENT_R,
-DHAS_ENDPROTOENT_R,
-DHAS_ENDPWENT_R,
-DHAS_ENDSERVENT_R,
-DHAS_GETGRGID_R,
-DHAS_GETGRNAM_R,
-DHAS_GETHOSTBYNAME_R,
-DHAS_GETHOSTBYADDR_R,
-DHAS_GETNETBYNAME_R,
-DHAS_GETNETBYADDR_R,
-DHAS_GETLOGIN_R,
-DHAS_GETPROTOBYNAME_R,
-DHAS_GETPROTOBYNUMBER_R,
-DHAS_GETPWNAM_R,
-DHAS_GETPWUID_R,
-DHAS_GETSERVBYNAME_R,
-DHAS_GETSERVBYPORT_R,
-DHAS_GETSPNAM_R,
-DHAS_CTIME_R,
-DHAS_ASCTIME_R,
-DHAS_LOCALTIME_R,
-DHAS_GMTIME_R,
-DHAS_SRANDOM_R,
-DHAS_RANDOM_R,
-DHAS_READDIR64_R,
-DHAS_READDIR_R,
-DHAS_SETLOCALE_R,
-DHAS_STRERROR_R,
-DHAS_TMPNAM_R,
-DHAS_TTYNAME_R
</example>
</flag>

<flag name="DFD_CLOEXEC" class="portability" regexp="[-/]DFD_CLOEXEC=[01]">
If the close-on-exec flag must or must not be set for open file descriptors
before exec()ing, this flag may be used.
<example>
-DFD_CLOEXEC=0,
-DFD_CLOEXEC=1
</example>
</flag>

<flag name="DFFLUSH_ALL" class="portability">
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.
</flag>

<flag name="DFILE" class="forbidden" regexp="[-/]DFILE(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DFILE=XXX
</example>
</flag>

<flag name="DFILE_base" class="portability" regexp="[-/]DFILE_base(?:=\S*)\b">
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.
<example>
-DFILE_base=XXX
</example>
</flag>

<flag name="DFILE_bufsiz" class="portability" regexp="[-/]DFILE_bufsiz(?:=\S*)\b">
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.
<example>
-DFILE_bufsiz=XXX
</example>
</flag>

<flag name="DFILE_cnt" class="portability" regexp="[-/]DFILE_cnt(?:=\S*)\b">
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.
<example>
-DFILE_cnt=XXX
</example>
</flag>

<flag name="DFILE_ptr" class="portability" regexp="[-/]DFILE_ptr(?:=\S*)\b">
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.
<example>
-DFILE_ptr=XXX
</example>
</flag>

<flag name="DFLOCK" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="unsettables" class="forbidden" regexp="[-/]D(?:FORMAT|SPACE|BOOTSTRAP_CHARSET)(?:=\S*)?\b">
Attempting to setting this macro to a value other than its default is forbidden.
<example>
  -DBOOTSTRAP_CHARSET=XXX,
-DFORMAT=XXX,
-DSPACE=XXX
</example>
</flag>

<flag name="unused_fp_values" class="forbidden" regexp="[-/]DFP_(?:INFINITE|(?:POS|PLUS|NEG|MINUS)_(?:DENORM|INF|NORM|ZERO)|[QS]?NAN[SQ]?|(?:SUB)?NORMAL|[NP](?:DE)?NORM|[NP]?(?:INF|ZERO))(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DFP_INFINITE=XXX,
-DFP_POS_DENORM=XXX,
-DFP_POS_INF=XXX,
-DFP_POS_NORM=XXX,
-DFP_POS_ZERO=XXX,
-DFP_PLUS_DENORM=XXX,
-DFP_PLUS_INF=XXX,
-DFP_PLUS_NORM=XXX,
-DFP_PLUS_ZERO=XXX,
-DFP_NEG_DENORM=XXX,
-DFP_NEG_INF=XXX,
-DFP_NEG_NORM=XXX,
-DFP_NEG_ZERO=XXX,
-DFP_MINUS_DENORM=XXX,
-DFP_MINUS_INF=XXX,
-DFP_MINUS_NORM=XXX,
-DFP_MINUS_ZERO=XXX,
-DFP_QNANS=XXX,
-DFP_QNANQ=XXX,
-DFP_QNAN=XXX,
-DFP_SNANS=XXX,
-DFP_SNANQ=XXX,
-DFP_SNAN=XXX,
-DFP_NANS=XXX,
-DFP_NANQ=XXX,
-DFP_NAN=XXX,
-DFP_SUBNORMAL=XXX,
-DFP_NORMAL=XXX,
-DFP_NDENORM=XXX,
-DFP_NNORM=XXX,
-DFP_PDENORM=XXX,
-DFP_PNORM=XXX,
-DFP_NINF=XXX,
-DFP_NZERO=XXX,
-DFP_PINF=XXX,
-DFP_PZERO=XXX,
-DFP_INF=XXX,
-DFP_ZERO=XXX
</example>
</flag>

<flag name="THREAD_KEY_functions" class="forbidden" regexp="[-/]D(ALLOC|FREE)_THREAD_KEY(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DFREE_THREAD_KEY=XXXn
-DALLOC_THREAD_KEY=XXXn
</example>
</flag>

<flag name="DFSEEKSIZE" class="portability" regexp="[-/]DFSEEKSIZE=\d+\b">
This flag can be used to specify the size of the return value of fseek() (or
fseeko()) in bytes.
<example>
-DFSEEKSIZE=XXX
</example>
</flag>

<flag name="DStrerror" class="portability" regexp="[-/]DStrerror(?:=\S*)?\b">
<example>
-DStrerror=XXX
</example>
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.
</flag>

<flag name="DStrtol" class="portability" regexp="[-/]DStrtol(?:=\S*)?\b">
<example>
-DStrtol=XXX
</example>
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.
</flag>

<flag name="DStrtoul" class="portability" regexp="[-/]DStrtoul(?:=\S*)?\b">
<example>
-DStrtoul=XXX
</example>
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.
</flag>

<flag name="DFflush" class="portability" regexp="[-/]DFflush=\S+\b">
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.
<example>
-DFflush=XXX
</example>
</flag>

<flag name="DFpos_t" class="portability" regexp="[-/]DFpos_t=\S+\b">
This flag can be used to set the type used to declare file positions.
<example>
-DFpos_t=XXX
</example>
</flag>

<flag name="DFree_t" class="portability" regexp="[-/]DFree_t=\S+\b">
This flag can be used to set the return type of free().
<example>
-DFree_t=XXX
</example>
</flag>

<flag name="DFstat" class="portability" regexp="[-/]DFstat=\S+\b">
This flag can be used to define the equivalent of the fstat() function.
<example>
-DFstat=XXX
</example>
</flag>

<flag name="DGROK_NUMERIC_RADIX" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DGRPASSWD" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="warning_macros" class="forbidden" regexp="[-/]D(?:G_WARN_(?:ALL_)?(?:OFF|ON|ONCE|MASK)|pWARN_(?:STD|ALL|NONE)|specialWARN|ckWARN|packWARN)(?:=\S*)?\b">
Attempting to change the value of this macro is not allowed.
<example>
-DG_WARN_ALL_OFF=XXX,
-DG_WARN_ALL_ON=XXX,
-DG_WARN_ALL_ONCE=XXX,
-DG_WARN_ALL_MASK=XXX,
-DG_WARN_OFF=XXX,
-DG_WARN_ON=XXX,
-DG_WARN_ONCE=XXX,
-DG_WARN_MASK=XXX,
-DpWARN_STD=XXX,
-DpWARN_ALL=XXX,
-DpWARN_NONE=XXX,
-DspecialWARN=XXX,
-DckWARN=XXX,
-DpackWARN=XXX
</example>
</flag>

<flag name="DGid_t" class="portability" regexp="[-/]DGid_t=\S+\b">
This macro holds the return type of getgid() and the type of the argument to
setrgid() and related functions.
<example>
-DGid_t=XXX
</example>
</flag>

<flag name="DGid_t_size" class="portability" regexp="[-/]DGid_t_size=\d+\b">
Use this flag to set the size of Gid_t in bytes.
<example>
-DGid_t_size=XXX
</example>
</flag>

<flag name="DGpREFCNT_inc" class="forbidden" regexp="[-/]DGpREFCNT_inc(?:=\S*)\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DGpREFCNT_inc=XXX
</example>
</flag>

<flag name="DHAS_ACCESS" class="portability">
This flag lets the benchmark know that the access() system call is available
to check for accessibility using real UID/GID.
</flag>

<flag name="DHAS_ACCESSX" class="portability">
This flag lets the benchmark know that the accessx() call is available
to do extended access checks.
</flag>

<flag name="DHAS_AINTL" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DHAS_ALARM" class="portability">
This flag lets the benchmark know that the alarm() routine is available.
</flag>

<flag name="DHAS_ATOLL" class="portability">
This flag lets the benchmark know that the atoll() routine is available to
convert strings into long longs.
</flag>

<flag name="DHAS_BCMP" class="portability">
This flag lets the benchmark know that the bcmp() routine is available to
compare blocks of memory.
</flag>

<flag name="DHAS_BCOPY" class="portability">
This flag lets the benchmark know that the bcopy() routine is available to
copy blocks of memory.
</flag>

<flag name="DHAS_BOOL" class="portability">
This flag indicates that a bool type is available.
</flag>

<flag name="DHAS_BZERO" class="portability">
This flag lets the benchmark know that the bzero() routine is available to
set a block of memory to 0.
</flag>

<flag name="DHAS_CHSIZE" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DHAS_CLASS" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DHAS_COPYSIGNL" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="has_protos" class="portability" regexp="[-/]DHAS_(DRAND48|FLOCK|GET(?:ENV|HOST|NET|PROTO|SERV)|LSEEK|MODFL|REALLOC|SETRES[UG]ID|SHMAT|SOCKATMARK|SYSCALL|TELLDIR|USLEEP)_PROTO(?:S|TYPE)?\b">
<ex_replacement>a function (like drand48(), flock(), etc; there are a large number of such functions)</ex_replacement>
This flag is used to indicate that a prototype for $1 (this should be in
lower-case) is available.
<example>
-DHAS_DRAND48_PROTOS,
-DHAS_DRAND48_PROTOTYPE,
-DHAS_DRAND48_PROTO,
-DHAS_FLOCK_PROTOS,
-DHAS_FLOCK_PROTOTYPE,
-DHAS_FLOCK_PROTO,
-DHAS_GETENV_PROTOS,
-DHAS_GETENV_PROTOTYPE,
-DHAS_GETENV_PROTO,
-DHAS_GETHOST_PROTOS,
-DHAS_GETHOST_PROTOTYPE,
-DHAS_GETHOST_PROTO,
-DHAS_GETNET_PROTOS,
-DHAS_GETNET_PROTOTYPE,
-DHAS_GETNET_PROTO,
-DHAS_GETPROTO_PROTOS,
-DHAS_GETPROTO_PROTOTYPE,
-DHAS_GETPROTO_PROTO,
-DHAS_GETSERV_PROTOS,
-DHAS_GETSERV_PROTOTYPE,
-DHAS_GETSERV_PROTO,
-DHAS_LSEEK_PROTOS,
-DHAS_LSEEK_PROTOTYPE,
-DHAS_LSEEK_PROTO,
-DHAS_MODFL_PROTOS,
-DHAS_MODFL_PROTOTYPE,
-DHAS_MODFL_PROTO,
-DHAS_REALLOC_PROTOS,
-DHAS_REALLOC_PROTOTYPE,
-DHAS_REALLOC_PROTO,
-DHAS_SETRESUID_PROTO,
-DHAS_SETRESGID_PROTO,
-DHAS_SHMAT_PROTOS,
-DHAS_SHMAT_PROTOTYPE,
-DHAS_SHMAT_PROTO,
-DHAS_SOCKATMARK_PROTOS,
-DHAS_SOCKATMARK_PROTOTYPE,
-DHAS_SOCKATMARK_PROTO,
-DHAS_SYSCALL_PROTOS,
-DHAS_SYSCALL_PROTOTYPE,
-DHAS_SYSCALL_PROTO,
-DHAS_TELLDIR_PROTOS,
-DHAS_TELLDIR_PROTOTYPE,
-DHAS_TELLDIR_PROTO,
-DHAS_USLEEP_PROTOS,
-DHAS_USLEEP_PROTOTYPE,
-DHAS_USLEEP_PROTO
</example>
</flag>

<flag name="DHAS_EACCESS" class="portability">
This flag lets the benchmark know that the eaccess() call is available
to do extended access checks.
</flag>

<flag name="DHAS_ENVGETENV" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="fast_stdio" class="forbidden" regexp="[-/]D(?:HAS|USE)_FAST_STDIO\b">
<example>
-DHAS_FAST_STDIO,
-DUSE_FAST_STDIO
</example>
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DHAS_FLOATINGPOINT_H" class="portability">
This flag indicates that the "floatingpoint.h" header file is available.
</flag>

<flag name="stdio64_types" class="forbidden" regexp="[-/]DHAS_(?:FPOS|OFF)64_T\b">
<example>
-DHAS_FPOS64_T,
-DHAS_OFF64_T
</example>
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DHAS_GETENV_LEN" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DHAS_GNULIBC" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DHAS_GROUP" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DHAS_PASSWD" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DHAS_HASH_KEY_FLAGS" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DHAS_LDBL_SPRINTF_BUG" class="portability">
This enables code that tries to deal with a bug with Irix/NonStop-UX/PowerUX
when calling sprintf with a long double argument.
</flag>

<flag name="DHAS_LDBL_SPRINTF_BUG_LESS1" class="portability">
Setting this macro indicates that the sprintf() bug indicated by the
HAS_LDBL_SPRINTF_BUG macro only affects values between -1L and 1L.
</flag>

<flag name="DHAS_PROCSELFEXE" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DUSE_KERN_PROC_PATHNAME" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DUSE_NSGETEXECUTABLEPATH" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DHAS_RESTRICTED_HASHES" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="pthread_funcs" class="forbidden" regexp="[-/]D(?:NEED_PTHREAD_INIT|OLD_PTHREAD(?:S_API|_CREATE_JOINABLE)|PTHREAD_(?:ATFORK|ATTR_SETDETACHSTATE|CREATE(?:_JOINABLE)?|H_FIRST)|HAS_PTHREAD_(?:ATFORK|YIELD|UNCHECKED_GETSPECIFIC_NP)|HAS_SCHED_YIELD|(?:SET_)?THR|SCHED_YIELD|YIELD)(?:=\S*)?\b">
<example>
-DNEED_PTHREAD_INIT,
-DOLD_PTHREADS_API,
-DOLD_PTHREAD_CREATE_JOINABLE,
-DPTHREAD_ATFORK,
-DPTHREAD_ATTR_SETDETACHSTATE,
-DPTHREAD_CREATE_JOINABLE,
-DPTHREAD_CREATE,
-DPTHREAD_H_FIRST,
-DHAS_PTHREAD_ATFORK,
-DHAS_PTHREAD_YIELD,
-DHAS_PTHREAD_UNCHECKED_GETSPECIFIC_NP,
-DHAS_SCHED_YIELD,
-DSCHED_YIELD=XXX,
-DYIELD=XXX,
-DSET_THR,
-DTHR
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DHAS_SAFE_BCOPY" class="portability">
This flag indicates that bcopy() can copy overlapping blocks of memory.
Normally memcpy() should be used.
</flag>

<flag name="DHAS_SAFE_MEMCPY" class="portability">
This flag indicates that memcpy() can copy overlapping blocks of memory.
</flag>

<flag name="DHAS_SCALBNL" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DHAS_SEM" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DHAS_UNION_SEMUN" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>


<flag name="DHAS_SHM" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DHAS_STDIO_STREAM_ARRAY" class="forbidden">
This flag tells that there is an array holding the stdio streams.  It is
always enabled.
</flag>

<flag name="DHAS_SYS_ERRLIST" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="tm_struct_members" class="forbidden" regexp="[-/]DHAS_TM_TM_(?:GMTOFF|ZONE)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_TM_TM_GMTOFF,
-DHAS_TM_TM_ZONE
</example>
</flag>

<flag name="utf8_stuff" class="forbidden" regexp="[-/]DHAS_UTF8_(?:ALL|HASHES|SCALARS)\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DHAS_UTF8_ALL,
-DHAS_UTF8_HASHES,
-DHAS_UTF8_SCALARS
</example>
</flag>

<flag name="DHAS_W32API_WINDOWS_H" class="portability">
<include flag="DCYGWIN_WITH_W32API" />
This macro should be set to indicate the presence of "w32api/windows.h"
under Cygwin on Windows.
</flag>

<flag name="DHAS_WAITPID_RUNTIME" class="portability">
This flag indicates that the benchmark code should emulate the behavior
of waitpid.
</flag>

<flag name="pw_gr_funcs" class="forbidden" regexp="[-/]DHAS_(?:(?:GET|SET|END)(?:GR|PW)ENT|[GS]ETGROUPS)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_GETGRENT,
-DHAS_GETPWENT,
-DHAS_SETGRENT,
-DHAS_SETPWENT,
-DHAS_ENDGRENT,
-DHAS_ENDPWENT,
-DHAS_GETGROUPS,
-DHAS_SETGROUPS
</example>
</flag>

<flag name="netinfo_funcs" class="forbidden" regexp="[-/]DHAS_(?:(?:GET|SET|END)(?:HOST|NET|PROTO|SERV)ENT|GET(?:HOST|NET)BY(?:ADDR|NAME)|GETPROTOBY(?:NAME|NUMBER)|GETSERVBY(?:NAME|PORT)|GETSPNAM|SOCK(?:ATMARK|ET|ETPAIR|S5_INIT))\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_GETHOSTENT,
-DHAS_GETNETENT,
-DHAS_GETPROTOENT,
-DHAS_GETSERVENT,
-DHAS_SETHOSTENT,
-DHAS_SETNETENT,
-DHAS_SETPROTOENT,
-DHAS_SETSERVENT,
-DHAS_ENDHOSTENT,
-DHAS_ENDNETENT,
-DHAS_ENDPROTOENT,
-DHAS_ENDSERVENT,
-DHAS_GETHOSTBYADDR,
-DHAS_GETHOSTBYNAME,
-DHAS_GETNETBYADDR,
-DHAS_GETNETBYNAME,
-DHAS_GETPROTOBYNAME,
-DHAS_GETPROTOBYNUMBER,
-DHAS_GETSERVBYNAME,
-DHAS_GETSERVBYPORT,
-DHAS_GETSPNAM,
-DHAS_SOCKATMARK,
-DHAS_SOCKET,
-DHAS_SOCKETPAIR,
-DHAS_SOCKS5_INIT
</example>
</flag>

<flag name="stat_funcs" class="forbidden" regexp="[-/]DHAS_(?:MNT(?:ENT)?|FSTAT(?:FS|VFS)?|HASMNTOPT|USTAT)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_MNTENT,
-DHAS_MNT,
-DHAS_FSTATFS,
-DHAS_FSTATVFS,
-DHAS_FSTAT,
-DHAS_HASMNTOPT,
-DHAS_USTAT
</example>
</flag>

<flag name="endian_conversion" class="portability" regexp="[-/]DHAS_([HVN]TO[NVH][LS])\b">
<ex_replacement>a function (like htonl(), ntohs(), etc; there are a large number of such functions)</ex_replacement>
This flag is used to indicate that the $1 (this should be in
lower-case) routine is available.
<example>
-DHAS_HTONL,
-DHAS_HTONS,
-DHAS_HTOVL,
-DHAS_HTOVS,
-DHAS_HTOHL,
-DHAS_HTOHS,
-DHAS_VTONL,
-DHAS_VTONS,
-DHAS_VTOVL,
-DHAS_VTOVS,
-DHAS_VTOHL,
-DHAS_VTOHS,
-DHAS_NTONL,
-DHAS_NTONS,
-DHAS_NTOVL,
-DHAS_NTOVS,
-DHAS_NTOHL,
-DHAS_NTOHS
</example>
</flag>

<flag name="DHAS_FCHOWN" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="file_info_ops" class="portability" regexp="[-/]DHAS_(FCHDIR|FCHMOD|F[SG]ETPOS|FSEEKO|FTELLO)\b">
<ex_replacement>a function (like fchdir(), fgetpos(), etc; there are a large number of such functions)</ex_replacement>
This flag is used to indicate that the $1 (this should be in
lower-case) routine is available.
<example>
-DHAS_FCHDIR,
-DHAS_FCHMOD,
-DHAS_FSETPOS,
-DHAS_FGETPOS,
-DHAS_FSEEKO,
-DHAS_FTELLO
</example>
</flag>

<flag name="fp_ops" class="forbidden" regexp="[-/]DHAS_(?:FINITE|FINITEL|FPCLASS|FPCLASSIFY|FPCLASSL|FPSETMASK|FP_CLASS|FREXPL|ISFINITE|ISNANL|MODFL|SQRTL|UNORDERED)\b">
<example>
-DHAS_FINITE,
-DHAS_FINITEL,
-DHAS_FPCLASS,
-DHAS_FPCLASSIFY,
-DHAS_FPCLASSL,
-DHAS_FPSETMASK,
-DHAS_FP_CLASS,
-DHAS_FREXPL,
-DHAS_ISFINITE,
-DHAS_ISNANL,
-DHAS_MODFL,
-DHAS_SQRTL,
-DHAS_UNORDERED
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="file_locking_etc" class="forbidden" regexp="[-/]DHAS_(?:FLOCK|FSYNC|LOCKF)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_FLOCK,
-DHAS_FSYNC,
-DHAS_LOCKF
</example>
</flag>

<flag name="dir_reading_funcs" class="forbidden" regexp="[-/]DHAS_(?:READ|REWIND|SEEK|TELL)DIR\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_READDIR,
-DHAS_REWINDDIR,
-DHAS_SEEKDIR,
-DHAS_TELLDIR
</example>
</flag>

<flag name="proc_grp_funcs" class="forbidden" regexp="[-/]DHAS_(?:[GS]ET(?:PGID|PGRP2?|PRIORITY)|GETPPID)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_GETPGID,
-DHAS_GETPGRP2,
-DHAS_GETPGRP,
-DHAS_GETPRIORITY,
-DHAS_SETPGID,
-DHAS_SETPGRP2,
-DHAS_SETPGRP,
-DHAS_SETPRIORITY,
-DHAS_GETPPID
</example>
</flag>

<flag name="setid_funcs" class="forbidden" regexp="[-/]DHAS_SET(?:E|RE|RES|R)[GU]ID\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAS_SETEGID,
-DHAS_SETEUID,
-DHAS_SETREGID,
-DHAS_SETREUID,
-DHAS_SETRESGID,
-DHAS_SETRESUID,
-DHAS_SETRGID,
-DHAS_SETRUID
</example>
</flag>

<flag name="string_funcs" class="portability" regexp="[-/]DHAS_(STR(?:ERROR|FTIME|LCAT|LCPY|TOLL|TOQ|TOUL|TOULL|TOUQ)|INDEX)\b">
<ex_replacement>a function (like strerror(), strftime(), etc; there are a large number of such functions)</ex_replacement>
This flag is used to indicate that the $1 (this should be in
lower-case) routine is available.
<example>
-DHAS_STRERROR,
-DHAS_STRFTIME,
-DHAS_STRLCAT,
-DHAS_STRLCPY,
-DHAS_STRTOLL,
-DHAS_STRTOQ,
-DHAS_STRTOUL,
-DHAS_STRTOULL,
-DHAS_STRTOUQ,
-DHAS_INDEX
</example>
</flag>

<flag name="time_funcs" class="forbidden" regexp="[-/]DHAS_(?:[SG]ETITIMER|UALARM|USLEEP|TIMES|MKTIME|UTIME)\b">
<example>
-DHAS_SETITIMER,
-DHAS_GETITIMER,
-DHAS_UALARM,
-DHAS_USLEEP,
-DHAS_TIMES,
-DHAS_MKTIME,
-DHAS_UTIME
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="unused_stuff" class="forbidden" regexp="[-/]D(?:CPERLscope|HAS_(?:UMASK|SETVBUF|GETLOGIN|GETPAGESIZE|ILOGBL|ISASCII|ISBLANK))(?:=\S*)?\b">
<example>
-DCPERLscope=XXX,
-DHAS_UMASK,
-DHAS_SETVBUF,
-DHAS_GETLOGIN,
-DHAS_GETPAGESIZE,
-DHAS_ILOGBL,
-DHAS_ISASCII,
-DHAS_ISBLANK
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="has_signal_stuff" class="forbidden" regexp="[-/]DHAS_(?:KILL|KILL(?:PG)?|SIGACTION|SIGPROCMASK)\b">
<example>
-DHAS_KILL,
-DHAS_KILLPG,
-DHAS_SIGACTION,
-DHAS_SIGPROCMASK
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="more_unused_stuff" class="forbidden" regexp="[-/]DHAS_(?:LINK|PIPE|READLINK|LSTAT|RENAME|MKSTEMP|MMAP|PAUSE|POLL|PRCTL_SET_NAME|SETLINEBUF|SETPROCTITLE|SYMLINK|SYSCALL|SYSCONF|UNAME|_FWALK)\b">
<example>
-DHAS_LINK,
-DHAS_PIPE,
-DHAS_READLINK,
-DHAS_LSTAT,
-DHAS_RENAME,
-DHAS_MKSTEMP,
-DHAS_MMAP,
-DHAS_PAUSE,
-DHAS_POLL,
-DHAS_PRCTL_SET_NAME,
-DHAS_SETLINEBUF,
-DHAS_SETPROCTITLE,
-DHAS_SYMLINK,
-DHAS_SYSCALL,
-DHAS_SYSCONF,
-DHAS_UNAME,
-DHAS__FWALK
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="locale_stuff" class="portability" regexp="[-/]DHAS_(LOCALECONV|MBTOWC|MSG|NL_LANGINFO|SETLOCALE)\b">
<example>
-DHAS_LOCALECONV,
-DHAS_MBTOWC,
-DHAS_MSG,
-DHAS_NL_LANGINFO,
-DHAS_SETLOCALE
</example>
<ex_replacement>localeconv(), msg(), etc</ex_replacement>
This flag is used to indicate that the $1 (this should be in
lower-case) routine is available.
</flag>

<flag name="locale_enable" class="forbidden" regexp="[-/]DUSE_LOCALE_(MESSAGES|MONETARY|TIME)\b">
<example>
-DUSE_LOCALE_MESSAGES,
-DUSE_LOCALE_MONETARY,
-DUSE_LOCALE_TIME
</example>
<ex_replacement>MESSAGES, LC_MONETARY, LC_TIME</ex_replacement>
This flag is used to indicate that the setting of the LC_$1 variable should be honored.  This will
cause the benchmark to fail to validate, and may not be set.
</flag>

<flag name="locale_disable" class="forbidden" regexp="[-/]DNO_LOCALE_(MESSAGES|MONETARY)\b">
<example>
-DNO_LOCALE_MESSAGES,
-DNO_LOCALE_MONETARY
</example>
<ex_replacement>MESSAGES, LC_MONETARY</ex_replacement>
This flag is used to indicate that the setting of the LC_$1 variable should not be honored.  This is the
default and may not be changed.
</flag>

<flag name="threadvar_stuff" class="forbidden" regexp="[-/]DHAVE_(?:INTERP|THREAD)_INTERN\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DHAVE_INTERP_INTERN,
-DHAVE_THREAD_INTERN
</example>
</flag>

<flag name="DHOST_NOT_FOUND" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DHV_ITERNEXT_WANTPLACEHOLDERS" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="HZ" class="portability" regexp="[-/]DHZ=\d+\b">
<example>
-DHZ=100
</example>
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.
</flag>

<flag name="header_guard" class="forbidden" regexp="[-/]D(?:H_PERL|_INC_PERL_XSUB_H|__Inc__IPerl___|__PATCHLEVEL_H_INCLUDED__|__perlapi_h__|___PerlHost_H___|_PERLIOL?_H|POLL_H|_P_P_PORTABILITY_H_|REENTR(?:INC|_H)|_config_h_|___VDir_H___|___VMEM_H_INC___|_INC_WIN32_PERL5|WIN32IOP_H|_WIN32THREAD_H|_INC_(?:DIRENT|NETDB|SYS_SOCKET)|_specconfig_h_|_STDINT_H|H_REGCHARCLASS|H_UNICODE_CONSTANTS|H_UTF8|PERL_SEEN_HV_FUNC_H|TIME64_CONFIG_H|TIME64_H|HANDY_H)\b">
<example>
-DH_PERL,
-D_INC_PERL_XSUB_H,
-D__Inc__IPerl___,
-D__PATCHLEVEL_H_INCLUDED__,
-D__perlapi_h__,
-D___PerlHost_H___,
-D_PERLIO_H,
-D_PERLIOL_H,
-DPOLL_H,
-D_P_P_PORTABILITY_H_,
-DREENTR_H,
-DREENTRINC,
-D_config_h_,
-D___VDir_H___,
-D___VMEM_H_INC___,
-D_INC_WIN32_PERL5,
-DWIN32IOP_H,
-D_WIN32THREAD_H,
-D_INC_DIRENT,
-D_INC_NETDB,
-D_INC_SYS_SOCKET,
-D_specconfig_h,
-D_STDINT_H,
-DH_REGCHARCLASS,
-DH_UNICODE_CONSTANTS,
-DH_UTF8,
-DPERL_SEEN_HV_FUNC_H,
-DTIME64_CONFIG_H,
-DTIME64_H,
-DHANDY_H
</example>
These macros are used to prevent multiple header inclusion; setting them
explicitly is forbidden.
</flag>

<flag name="DHeKUTF8" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DINCLUDE_PROTOTYPES" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DINIT_THREADS" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="intX_max" class="portability" regexp="[-/]DINT(16|32|64)_MAX=[0-9Ll]+\b">
<example>
-DINT16_MAX=32767,
-DINT32_MAX=2147483647,
-DINT64_MAX=9223372036854775807
</example>
<ex_replacement>16 (or 32 or 64) </ex_replacement>
This flag can be used to set the largest positive number that can fit in an
$1-bit integer.  Its value is not used in all cases.
</flag>

<flag name="intX_min" class="portability" regexp="[-/]DINT(16|32|64)_MIN=[-0-9Ll]+\b">
<example>
-DINT16_MIN=-32768,
-DINT32_MIN=-2147483648,
-DINT64_MIN=-9223372036854775808
</example>
<ex_replacement>16 (or 32 or 64) </ex_replacement>
This flag can be used to set the smallest negative number that can fit in an
$1-bit integer.  Its value is not used in all cases.
</flag>

<flag name="uintX_max" class="portability" regexp="[-/]DUINT(8|16|32|64)_MAX=[0-9Ll]+\b">
<example>
-DUINT8_MAX=256,
-DUINT16_MAX=65536,
-DUINT32_MAX=4294967296,
-DUINT64_MAX=18446744073709551616LL
</example>
<ex_replacement>8 (or 16 or 32 or 64) </ex_replacement>
This flag can be used to set the largest positive number that can fit in an
unsigned $1-bit integer.  Its value is not used in all cases.
</flag>

<flag name="uintX_min" class="portability" regexp="[-/]DUINT(32|64)_MIN=[-0-9Ll]+\b">
<example>
-DUINT32_MIN=0,
-DUINT64_MIN=0
</example>
<ex_replacement>32 (or 64) </ex_replacement>
This flag can be used to set the smallest number that can fit in an
unsigned $1-bit integer.  Its value is not used in all cases.
</flag>

<flag name="uchar_max" class="portability" regexp="[-/]D(?:UCHAR_MAX|MAXUCHAR)=[0-9lL]*\b">
<example>
-DUCHAR_MAX=256,
-DMAXUCHAR=256
</example>
This flag can be used to indicate to the benchmark the largest value that
can be stored in an unsigned char.
</flag>

<flag name="ushort_max" class="portability" regexp="[-/]D(?:USHO?RT_MAX|MAXUSHORT)=[0-9lL]*\b">
<example>
-DUSHORT_MAX=65536,
-DMAXUSHORT=65536,
-DUSHRT_MAX=65536
</example>
This flag can be used to indicate to the benchmark the largest value that
can be stored in an unsigned short integer.
</flag>

<flag name="uint_max" class="portability" regexp="[-/]D(?:UINT_MAX|MAXUINT)=[0-9lL]*\b">
<example>
-DUINT_MAX=4294967296,
-DMAXUINT=4294967296
</example>
This flag can be used to indicate to the benchmark the largest value that
can be stored in an unsigned integer.
</flag>

<flag name="ulong_max" class="portability" regexp="[-/]D(?:ULONG_MAX|MAXULONG)=[0-9lL]*\b">
<example>
-DULONG_MAX=4294967296,
-DMAXULONG=4294967296
</example>
This flag can be used to indicate to the benchmark the largest value that
can be stored in an unsigned long integer.
</flag>

<flag name="ulonglong_max" class="portability" regexp="[-/]D(?:ULLONG_MAX|ULONG_LONG_MAX|ULONGLONG_MAX|MAXULONGLONG)=[0-9lL]*\b">
<example>
-DULLONG_MAX=18446744073709551616LL,
-DULONG_LONG_MAX=18446744073709551616LL,
-DULONGLONG_MAX=18446744073709551616LL,
-DMAXULONGLONG=18446744073709551616LL
</example>
This flag can be used to indicate to the benchmark the largest value that
can be stored in an unsigned long long integer.
</flag>

<flag name="DMAXDOUBLE" class="portability" regexp="[-/]DMAXDOUBLE=(?i:[-0-9efgl]+)\b">
<example>
-DMAXDOUBLE=23482749729348729384
</example>
This flag can be use to indicate to the benchmark the largest value that
is representable by a double.
</flag>

<flag name="DMINDOUBLE" class="portability" regexp="[-/]DMINDOUBLE=(?i:[-0-9efgl]+)\b">
<example>
-DMINDOUBLE=-23482749729348729384
</example>
This flag can be use to indicate to the benchmark the smallest value that
is representable by a double.
</flag>

<flag name="short_max" class="portability" regexp="[-/]D(?:SHO?RT_MAX|MAXSHORT)=[-0-9lL]+\b">
<example>
-DMAXSHORT=32767,
-DSHORT_MAX=32767,
-DSHRT_MAX=32767
</example>
This flag can be used to indicate to the benchmark the largest value that
can be stored in a short integer.
</flag>

<flag name="int_max" class="portability" regexp="[-/]D(?:INT_MAX|MAX_INT|MAXINT)=[0-9lL]+\b">
<example>
-DINT_MAX=2147483647,
-DMAXINT=2147483647
</example>
This flag can be used to indicate to the benchmark the largest value that
can be stored in an integer.
</flag>

<flag name="long_max" class="portability" regexp="[-/]D(?:LONG_MAX|MAXLONG)=[0-9Ll]+\b">
<example>
-DLONG_MAX=2147483647,
-DMAXLONG=2147483647
</example>
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.
</flag>

<flag name="longlong_max" class="portability" regexp="[-/]D(?:LONGLONG_MAX|MAXLONGLONG)=[0-9Ll]+\b">
<example>
-DLONGLONG_MAX=9223372036854775807,
-DMAXLONGLONG=9223372036854775807
</example>
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.
</flag>

<flag name="short_min" class="portability" regexp="[-/]D(?:SHO?RT_MIN|MINSHORT)=[-0-9lL]+\b">
<example>
-DMINSHORT=-32768,
-DSHORT_MIN=-32768,
-DSHRT_MIN=-32768
</example>
This flag can be used to indicate to the benchmark the smallest value that
can be stored in a short integer.
</flag>

<flag name="int_min" class="portability" regexp="[-/]D(?:INT_MIN|MININT)=[-0-9lL]+\b">
<example>
-DINT_MIN=-2147483648,
-DMININT=-2147483648
</example>
This flag can be used to indicate to the benchmark the smallest value that
can be stored in an integer.
</flag>

<flag name="long_min" class="portability" regexp="[-/]D(?:LONG_MIN|MINLONG)=[-0-9lL]+\b">
<example>
-DMINLONG=-2147483648,
-DLONG_MIN=-2147483648
</example>
This flag can be used to indicate to the benchmark the smallest value that
can be stored in a long integer.
</flag>

<flag name="longlong_min" class="portability" regexp="[-/]D(?:LONGLONG_MIN|MINLONGLONG)=[-0-9lL]+\b">
<example>
-DMINLONGLONG=-9223372036854775808LL,
-DLONGLONG_MIN=-9223372036854775808LL
</example>
This flag can be used to indicate to the benchmark the smallest value that
can be stored in a long long integer.
</flag>

<flag name="perl_type_minmax" class="forbidden" regexp="[-/]DPERL_U?(?:INT|LONG|QUAD|SHORT|CHAR)_(?:MAX|MIN)(?:=[-0-9lL]*)?\b">
The values for these macros may not be set directly.
<example>
-DPERL_INT_MAX=0,
-DPERL_INT_MIN=0,
-DPERL_LONG_MAX=0,
-DPERL_LONG_MIN=0,
-DPERL_QUAD_MAX=0,
-DPERL_QUAD_MIN=0,
-DPERL_SHORT_MAX=0,
-DPERL_SHORT_MIN=0,
-DPERL_UCHAR_MAX=0,
-DPERL_UCHAR_MIN=0,
-DPERL_UINT_MAX=0,
-DPERL_UINT_MIN=0,
-DPERL_ULONG_MAX=0,
-DPERL_ULONG_MIN=0,
-DPERL_UQUAD_MAX=0,
-DPERL_UQUAD_MIN=0,
-DPERL_USHORT_MAX=0,
-DPERL_USHORT_MIN=0,
</example>
</flag>

<flag name="int_min_broken" class="portability" regexp="[-/]D(U?INT(?:32|64)_(?:MIN|MAX))_BROKEN\b">
<example>
-DINT32_MIN_BROKEN,
-DINT32_MAX_BROKEN,
-DINT64_MIN_BROKEN,
-DINT64_MAX_BROKEN,
-DUINT32_MAX_BROKEN
</example>
<ex_replacement>INT32_MAX (or INT32_MIN, or INT64_MAX, or INT64_MIN, or UINT32_MAX)</ex_replacement>
If the macro $1 is set incorrectly by default, this flag may be used to
indicate that that macro's value should not be used.
</flag>

<flag name="ptr_conversion" class="forbidden" regexp="[-/]D(?:INT2PTR|NUM2PTR|PTR2INT)(?:=\S*)?\b">
<example>
-DINT2PTR=XXX,
-DNUM2PTR=XXX,
-DPTR2INT=XXX
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="in_misc" class="forbidden" regexp="[-/]DIN_(?:LOCALE_(?:COMPILETIME|RUNTIME)?|PERL_COMPILETIME)(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DIN_LOCALE=XXX,
-DIN_LOCALE_COMPILETIME=XXX,
-DIN_LOCALE_RUNTIME=XXX,
-DIN_PERL_COMPILETIME=XXX
</example>
</flag>

<flag name="socket_stuff" class="forbidden" regexp="[-/]D(?:_SOCKADDR_LEN|PIPESOCK_MODE|PIPE_OPEN_MODE|SOCKET_OPEN_MODE|SOCKS5_VERSION_NAME|Sock_size_t|SOCK_DGRAM|PERL_SOCKS_NEED_PROTOTYPES|PERL_SOCK_SYSREAD_IS_RECV|PERL_SOCK_SYSWRITE_IS_SEND|USE_SOCKETS_AS_HANDLES|USE_SOCKS|VMS_DO_SOCKETS|DECCRTL_SOCKETS|EMULATE_SOCKETPAIR_UDP|HAS_SOCKET__bad_code_maybe)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-D_SOCKADDR_LEN=XXX,
-DPIPESOCK_MODE=XXX,
-DPIPE_OPEN_MODE=XXX,
-DSOCKET_OPEN_MODE=XXX,
-DSOCKS5_VERSION_NAME=XXX,
-DSock_size_t=XXX,
-DSOCK_DGRAM,
-DPERL_SOCKS_NEED_PROTOTYPES,
-DPERL_SOCK_SYSREAD_IS_RECV,
-DPERL_SOCK_SYSWRITE_IS_SEND,
-DUSE_SOCKETS_AS_HANDLES,
-DUSE_SOCKS,
-DVMS_DO_SOCKETS,
-DDECCRTL_SOCKETS,
-DEMULATE_SOCKETPAIR_UDP,
-DHAS_SOCKET__bad_code_maybe
</example>
</flag>

<flag name="iocparms" class="forbidden" regexp="[-/]DIOCPARM_(?:LEN|MASK)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DIOCPARM_LEN=XXX,
-DIOCPARM_MASK=XXX
</example>
</flag>

<flag name="DIOf_UNTAINT" class="forbidden" regexp="[-/]DIOf_UNTAINT(?:=\S*)?\b">
It is forbidden to set this macro to a value other than its default.
<example>
-DIOf_UNTAINT=XXX
</example>
</flag>

<flag name="DIRIX32_SEMUN_BROKEN_BY_GCC" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="is_number" class="forbidden" regexp="[-/]DIS_NUMBER_(?:GREATER_THAN_UV_MAX|INFINITY|IN_UV|NAN|NEG|NOT_INT)(?:=\S*)?\b">
These macros hold Perl internal values, and must not be changed.
<example>
-DIS_NUMBER_GREATER_THAN_UV_MAX=XXX,
-DIS_NUMBER_INFINITY=XXX,
-DIS_NUMBER_IN_UV=XXX,
-DIS_NUMBER_NAN=XXX,
-DIS_NUMBER_NEG=XXX,
-DIS_NUMBER_NOT_INT=XXX
</example>
</flag>

<flag name="itimer" class="forbidden" regexp="[-/]DITIMER_(?:PROF|REAL|REALPROF|VIRTUAL)(?:=\S*)?\b">
It is forbidden to set this macro to a value other than its default.
<example>
-DITIMER_PROF,
-DITIMER_REAL,
-DITIMER_REALPROF,
-DITIMER_VIRTUAL
</example>
</flag>

<flag name="Xv_is_quad" class="forbidden" regexp="[-/]D(IV|UV)_IS_QUAD\b">
<example>
-DIV_IS_QUAD,
-DUV_IS_QUAD
</example>
<ex_replacement>IV (or UV)</ex_replacement>
This flag indicates that the Perl $1 is a quad type.  It is set automatically.
</flag>

<flag name="DI_MACH_CTHREADS" class="forbidden" regexp="[-/]DI_(?:MACH_CTHREADS|NETINET_IN|NET_ERRNO)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DI_MACH_CTHREADS,
-DI_NETINET_IN,
-DI_NET_ERRNO
</example>
</flag>

<flag name="inc_regular" class="portability" regexp="[-/]DI_(CRYPT|FP|FP_CLASS|GRP|IEEEFP|IEEFP|LANGINFO|LIBUTIL|LOCALE|MEMORY|MNTENT|NDBM|NETDB|POLL|PTHREAD|PWD|SFIO|SHADOW|SOCKS|SUNMATH|USTAT|VALUES|VARARGS)\b">
Use of this flag indicates that the "$1.h" (lower-case, of course) should be
used.
<example>
-DI_CRYPT,
-DI_FP,
-DI_FP_CLASS,
-DI_GRP,
-DI_IEEEFP,
-DI_IEEFP,
-DI_LANGINFO,
-DI_LIBUTIL,
-DI_LOCALE,
-DI_MEMORY,
-DI_MNTENT,
-DI_NDBM,
-DI_NETDB,
-DI_POLL,
-DI_PTHREAD,
-DI_PWD,
-DI_SFIO,
-DI_SHADOW,
-DI_SOCKS,
-DI_SUNMATH,
-DI_USTAT,
-DI_VALUES,
-DI_VARARGS
</example>
</flag>

<flag name="inc_sys" class="portability" regexp="[-/]DI_SYS_?(MODE|UTSNAME|ACCESS|DIR|MOUNT|NDIR|RESOURCE|SECURITY|SELECT|SOCKIO|STATFS|STATVFS|TIME_KERNEL|VFS)\b">
Use of this flag indicates that the "sys/$1.h" (lower-case, of course) should be
used.
<example>
-DI_SYSMODE,
-DI_SYSUTSNAME,
-DI_SYS_ACCESS,
-DI_SYS_DIR,
-DI_SYS_MOUNT,
-DI_SYS_NDIR,
-DI_SYS_RESOURCE,
-DI_SYS_SECURITY,
-DI_SYS_SELECT,
-DI_SYS_SOCKIO,
-DI_SYS_STATFS,
-DI_SYS_STATVFS,
-DI_SYS_TIME_KERNEL,
-DI_SYS_VFS
</example>
</flag>

<flag name="locale_settings" class="portability" regexp="[-/]DLC_(?:ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC)(?:=\S*)?\b">
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.
<example>
-DLC_ALL=ja_JP,
-DLC_COLLATE=ja_JP,
-DLC_CTYPE=ja_JP,
-DLC_MESSAGES=ja_JP,
-DLC_MONETARY=ja_JP,
-DLC_NUMERIC=ja_JP
</example>
</flag>

<flag name="DLIBERAL" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DLIBM_LIB_VERSION" class="forbidden">
This flag indicates that libm exports _LIB_VERSION and that math.h defines
the enum to manipulate it.
</flag>

<flag name="DLOCALE_ENVIRON_REQUIRED" class="portability">
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.
</flag>

<flag name="DLOCAL_PATCH_COUNT" class="forbidden" regexp="[-/]DLOCAL_PATCH_COUNT(?:=\S*)?\b">
<example>
-DLOCAL_PATCH_COUNT=1
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="mutex_funcs" class="forbidden" regexp="[-/]D(?:UN)?LOCK_(?:CRED|DOLLARZERO|FDPID|STRTAB|SV_LOCK|SV)_MUTEX(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DLOCK_CRED_MUTEX=XXX,
-DLOCK_DOLLARZERO_MUTEX=XXX,
-DLOCK_FDPID_MUTEX=XXX,
-DLOCK_STRTAB_MUTEX=XXX,
-DLOCK_SV_LOCK_MUTEX=XXX,
-DLOCK_SV_MUTEX=XXX,
-DUNLOCK_CRED_MUTEX=XXX,
-DUNLOCK_DOLLARZERO_MUTEX=XXX,
-DUNLOCK_FDPID_MUTEX=XXX,
-DUNLOCK_STRTAB_MUTEX=XXX,
-DUNLOCK_SV_LOCK_MUTEX=XXX,
-DUNLOCK_SV_MUTEX=XXX
</example>
</flag>

<flag name="lock_consts" class="forbidden" regexp="[-/]DLOCK_(?:EX|NB|SH|UN)(?:=\S*)?\b">
These lock constants should be supplied by your system header files.  They
may not be set directly.
<example>
-DLOCK_EX=XXX,
-DLOCK_NB=XXX,
-DLOCK_SH=XXX,
-DLOCK_UN=XXX
</example>
</flag>

<flag name="unsupp_os" class="forbidden" regexp="[-/]D(?:MACOS_TRADITIONAL|MPE|MSDOS|__LIBCATAMOUNT__|SYMBIAN|WINS)\b">
These macros are used to indicate compilation on a system that is not
supported.  They may not be used.
<example>
-DMACOS_TRADITIONAL,
-DMPE,
-DMSDOS,
-D__LIBCATAMOUNT__,
-DSYMBIAN,
-DWINS
</example>
</flag>

<flag name="DMARKED_SECTION" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DMAXPATHLEN" class="portability" regexp="[-/]D(?:MAXPATHLEN|(?:_POSIX_)?PATH_MAX)(?:=\S*)?\b">
<example>
-DMAXPATHLEN=2048,
-DPATH_MAX=2048,
-D_POSIX_PATH_MAX=2048
</example>
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.
</flag>

<flag name="os_maximums" class="forbidden" regexp="[-/]DMAX(?:HOSTNAMELEN|SYMLINKS|SYSFD)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DMAXHOSTNAMELEN=XXX,
-DMAXSYMLINKS=XXX,
-DMAXSYSFD=XXX
</example>
</flag>

<flag name="DMD5_DEBUG" class="forbidden">
This flag enables debugging output from the Digest::MD5 module.
</flag>

<flag name="DMETHOD" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DMSG_DONTWAIT" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DMULTIARCH" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="multiplicity" class="forbidden" regexp="[-/]DMULTIPLICI?TY\b">
<example>
-DMULTIPLICITY,
-DMULTIPLICTY
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="more_thread_stuff" class="forbidden" regexp="[-/]D(?:MUTEX_(?:DESTROY|INIT|INIT_CALLS_MALLOC|INIT_NEEDS_MUTEX_ZEROED|LOCK|UNLOCK)|MY_CXT_(?:CLONE|KEY)|JOIN|(?:START|USE)_MY_CXT|_REENTRANT)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DMUTEX_DESTROY=XXX,
-DMUTEX_INIT=XXX,
-DMUTEX_INIT_CALLS_MALLOC=XXX,
-DMUTEX_INIT_NEEDS_MUTEX_ZEROED=XXX,
-DMUTEX_LOCK=XXX,
-DMUTEX_UNLOCK=XXX,
-DMY_CXT_CLONE=XXX,
-DMY_CXT_KEY=XXX,
-DSTART_MY_CXT=XXX,
-DUSE_MY_CXT=XXX,
-D_REENTRANT,
-DJOIN=XXX
</example>
</flag>

<flag name="DMYMALLOC" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DMkdir" class="portability" regexp="[-/]DMkdir=\S+\b">
This flag can be used to define the equivalent of the mkdir() function.
<example>
-DMkdir=XXX
</example>
</flag>

<flag name="DStat" class="portability" regexp="[-/]DStat=\S+\b">
This flag can be used to define the equivalent of the stat() function.
<example>
-DStat=XXX
</example>
</flag>

<flag name="api_funcs" class="forbidden" regexp="[-/]DMoveD(?:=\S*)?\b">
<example>
-DMoveD=XXX
</example>
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DNATIVE_HINTS" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DNATIVE_TO_ASCII" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DNBBY" class="forbidden" regexp="[-/]DNBBY(?:=\S*)?\b">
<example>
-DNBBY=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="need_unused_protos" class="forbidden" regexp="[-/]DNEED_(?:GETPID|TELLDIR)_PROTO\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DNEED_GETPID_PROTO,
-DNEED_TELLDIR_PROTO
</example>
</flag>

<flag name="need_api_funcs" class="forbidden" regexp="[-/]DNEED_(?:eval_pv|grok_(?:bin|hex|number|numeric_radix|oct)|new(?:CONSTSUB|RV_noinc)|sv_2pv(?:_nolen|byte)|sv_(?:cat|set)pvf_mg(?:_nocontext)?|vnewSVpvf)(?:_GLOBAL)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DNEED_eval_pv,
-DNEED_eval_pv_GLOBAL,
-DNEED_grok_bin,
-DNEED_grok_bin_GLOBAL,
-DNEED_grok_hex,
-DNEED_grok_hex_GLOBAL,
-DNEED_grok_number,
-DNEED_grok_number_GLOBAL,
-DNEED_grok_numeric_radix,
-DNEED_grok_numeric_radix_GLOBAL,
-DNEED_grok_oct,
-DNEED_grok_oct_GLOBAL,
-DNEED_newCONSTSUB,
-DNEED_newCONSTSUB_GLOBAL,
-DNEED_newRV_noinc,
-DNEED_newRV_noinc_GLOBAL,
-DNEED_sv_2pv_nolen,
-DNEED_sv_2pv_nolen_GLOBAL,
-DNEED_sv_2pvbyte,
-DNEED_sv_2pvbyte_GLOBAL,
-DNEED_sv_catpvf_mg,
-DNEED_sv_catpvf_mg_GLOBAL,
-DNEED_sv_catpvf_mg_nocontext,
-DNEED_sv_catpvf_mg_nocontext_GLOBAL,
-DNEED_sv_setpvf_mg,
-DNEED_sv_setpvf_mg_GLOBAL,
-DNEED_sv_setpvf_mg_nocontext,
-DNEED_sv_setpvf_mg_nocontext_GLOBAL,
-DNEED_vnewSVpvf,
-DNEED_vnewSVpvf_GLOBAL
</example>
</flag>

<flag name="DNETDB_R_OBSOLETE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DNFDBITS" class="forbidden" regexp="[-/]DNFDBITS(?:=\S*)?\b">
<example>
-DNFDBITS=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DNGROUPS" class="forbidden" regexp="[-/]DNGROUPS(?:=\S*)?\b">
<example>
-DNGROUPS=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DNODEFAULT_SHAREKEYS" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DNOFILE" class="forbidden" regexp="[-/]DNOFILE(?:=\S*)?\b">
<example>
-DNOFILE=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DNOOP" class="forbidden" regexp="[-/]DNOOP(?:=\S*)?\b">
<example>
-DNOOP=XXX
</example>
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
</flag>

<flag name="default_settings" class="portability" regexp="[-/]DNO_(?:56_INTERWORK_KLUDGE|64_BIT_RAWIO|64_BIT_STDIO|EFF_ONLY_OK|ENVIRON_ARRAY|HASH_SEED|LOCALE_COLLATE|LOCALE_CTYPE|LOCALE_NUMERIC|PERL_PRESERVE_IVUV|UNARY_PLUS|XSLOCKS)\b">
This flag un-does the effect of its non-NO counterpart.  These are ALL the
defaults, so there's no reason to use one.
<example>
-DNO_56_INTERWORK_KLUDGE,
-DNO_64_BIT_RAWIO,
-DNO_64_BIT_STDIO,
-DNO_EFF_ONLY_OK,
-DNO_ENVIRON_ARRAY,
-DNO_HASH_SEED,
-DNO_LOCALE_COLLATE,
-DNO_LOCALE_CTYPE,
-DNO_LOCALE_NUMERIC,
-DNO_PERL_PRESERVE_IVUV,
-DNO_UNARY_PLUS,
-DNO_XSLOCKS
</example>
</flag>

<flag name="DNX_CURRENT_COMPILER_RELEASE" class="forbidden" regexp="[-/]DNX_CURRENT_COMPILER_RELEASE(?:=\S*)?\b">
<example>
-DNX_CURRENT_COMPILER_RELEASE=XXX
</example>
This constant should be supplied by your system header files.  It
may not be set directly.
</flag>

<flag name="DOPpENTERSUB_HASTARG" class="forbidden" regexp="[-/]DOPpENTERSUB_HASTARG(?:=\S*)?\b">
<example>
-DOPpENTERSUB_HASTARG=XXX
</example>
This macro defines the contents of one of Perl's internal constants.
Setting it to a non-default value is forbidden.
</flag>

<flag name="DOutputStream" class="forbidden" regexp="[-/]DOutputStream(?:=\S*)?\b">
<example>
-DOutputStream=XXX
</example>
This macro defines the contents of one of Perl's internal types.
Setting it to a non-default value is forbidden.
</flag>

<flag name="DPAGESIZE" class="forbidden" regexp="[-/]DPAGESIZE(?:=\S*)?\b">
<example>
-DPAGESIZE=XXX
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DPARAM_NEEDS_TYPES" class="portability">
This flag can be used if sys/types.h should be included before sys/param.h.
</flag>

<flag name="patchlevel" class="forbidden" regexp="[-/]D(?:PERL_PATCHNUM|PATCHLEVEL)(?:=\S*)?\b">
<example>
-DPATCHLEVEL=XXX,
-DPERL_PATCHNUM=XXX
</example>
Setting these macros to values other than default is forbidden.
</flag>

<flag name="open_max" class="portability" regexp="[-/]D(?:(?:PERL_FFLUSH_ALL_FOPEN|FOPEN|OPEN)_MAX|_NFILE)(?:=\d*)?\b">
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.
<example>
-DPERL_FFLUSH_ALL_FOPEN_MAX=XXX,
-DFOPEN_MAX=XXX,
-DOPEN_MAX=XXX,
-D_NFILE=XXX
</example>
</flag>

<flag name="perl_internals" class="forbidden" regexp="[-/]D(?:ALWAYS_NEED_THX|MGf_(?:COPY|DUP|LOCAL)|PERLLIB_MANGLE|PERLIO_(?:IS_BINMODE_FD|IS_STDIO|LAYERS|NOT_STDIO|USING_CRLF)|PERL_(?:ALLOC_CHECK|ANY_COW|ARENA_SIZE|ARGS_ASSERT_(?:CK_WARNER|CROAK_XS_USAGE|_INVLISTEQ)|ASYNC_CHECK|BLOCKSIG_ADD|BLOCKSIG_BLOCK|BLOCKSIG_UNBLOCK|BLOCK_SIGNALS|CALLCONV(?:_NO_RET)?|CAPI|CHECK_INITED|CR_FILTER|DARWIN|DECIMAL_VERSION|DECL_PROT|DISABLE_PMC|EFF_ACCESS|EFF_ACCESS_R_OK|EFF_ACCESS_W_OK|EFF_ACCESS_X_OK|EXT|EXTERNAL_GLOB|EXTMALLOC_DEF|EXT_IO|EXT_POSIX|EXT_RE_BUILD|EXT_RE_DEBUG|FD_SETSIZE|FLEXIBLE_EXCEPTIONS|FLUSHALL_FOR_CHILD|FOR_X2P|FPU_INIT|FPU_PRE_EXEC|FS_VERSION|FS_VER_FMT|USE_GCC_BRACE_GROUPS|GCC_BRACE_GROUPS_FORBIDDEN|GCC_PEDANTIC|GET_CONTEXT|GET_CONTEXT_DEFINED|GET_INTERP|GET_SIG_CONTEXT|GET_THX|GLOBAL_STRUCT(?:_INIT|_PRIVATE)?|GPROF_CONTROL|HASH|HASH_(?:INTERNAL_ACCESS|FUNC|FUNC_(?:DJB2|MURMUR3|ONE_AT_A_TIME(?:|_HARD|_OLD)|SDBM|SIPHASH|SUPERFAST)|RANDOMIZE_KEYS|SEED|SEED_BYTES)|IMPLICIT_CONTEXT|IMPLICIT_SYS|INC_VERSION_LIST|IN_XSUB_RE|IRIX5_SELECT_TIMEVAL_VOID_CAST|MG_UFUNC|MICRO|MSVCRT_READFIX|NOCOMPAT|NO_COW|NO_DEV_RANDOM|NO_FORCE_LINK|NO_GET_CONTEXT|NO_INLINE_FUNCTIONS|NO_SHORT_NAMES|NO_UTF16_FILTER|OBJECT|OTHERLIBDIRS|PACK_CAN_BYTEORDER|PACK_CAN_SHRIEKSIGN|PATCHLEVEL_H_IMPLICIT|POLLUTE|POLLUTE_MALLOC|PRESERVE_IVUV|RANDOM_DEVICE|REVISION|SCAN_ALLOW_UNDERSCORES|SCAN_DISALLOW_PREFIX|SCAN_GREATER_THAN_UV_MAX|SCAN_SILENT_ILLDIGIT|SCO|SCRIPT_MODE|SET_CONTEXT|SET_INTERP|SET_THX|SLAB_SIZE|STACK_OVERFLOW_CHECK|STATIC_SYMS|STRICT_CR|SUBVERSION|SYNC_FORK|SYS_INIT|SYS_INIT3|SYS_TERM|TEXTMODE_SCRIPTS|TRY_UV_DIVIDE|USE_SAFE_PUTENV|USE_THREADS|UTF8_CACHE_ASSERT|VERSION|VERSION_(?:DECIMAL|GE|LE|LT)|WAIT_FOR_CHILDREN|WRITE_MSG_TO_CONSOLE|XSUB_OLDSTYLE|Y2KWARN)|SUBVERSION|MEMBER_TO_FPTR)(?:=\S*)?\b">
This macro is used internally by Perl.  Setting it explicitly is not allowed.
<example>
-DALWAYS_NEED_THX,
-DMGf_COPY,
-DMGf_DUP,
-DMGf_LOCAL,
-DPERL_ALLOC_CHECK,
-DPERL_ANY_COW,
-DPERL_ARGS_ASSERT_CK_WARNER,
-DPERL_ARGS_ASSERT_CROAK_XS_USAGE,
-DPERL_ARGS_ASSERT__INVLISTEQ,
-DPERL_ARENA_SIZE,
-DPERL_ASYNC_CHECK,
-DPERL_BLOCKSIG_ADD,
-DPERL_BLOCKSIG_BLOCK,
-DPERL_BLOCKSIG_UNBLOCK,
-DPERL_BLOCK_SIGNALS,
-DPERL_CALLCONV,
-DPERL_CALLCONV_NO_RET,
-DPERL_CAPI,
-DPERL_CHECK_INITED,
-DPERL_CR_FILTER,
-DPERL_DARWIN,
-DPERL_DECIMAL_VERSION,
-DPERL_DECL_PROT,
-DPERL_DISABLE_PMC,
-DPERL_EFF_ACCESS,
-DPERL_EFF_ACCESS_R_OK,
-DPERL_EFF_ACCESS_W_OK,
-DPERL_EFF_ACCESS_X_OK,
-DPERL_EXT,
-DPERL_EXTERNAL_GLOB,
-DPERL_EXTMALLOC_DEF,
-DPERL_EXT_IO,
-DPERL_EXT_POSIX,
-DPERL_EXT_RE_BUILD,
-DPERL_EXT_RE_DEBUG,
-DPERL_FD_SETSIZE,
-DPERLIO_IS_BINMODE_FD,
-DPERLIO_IS_STDIO,
-DPERLIO_LAYERS,
-DPERLIO_NOT_STDIO,
-DPERLIO_USING_CRLF,
-DPERLLIB_MANGLE,
-DPERL_FLEXIBLE_EXCEPTIONS,
-DPERL_FLUSHALL_FOR_CHILD,
-DPERL_FOR_X2P,
-DPERL_FPU_INIT,
-DPERL_FPU_PRE_EXEC,
-DPERL_FS_VERSION,
-DPERL_FS_VER_FMT,
-DPERL_USE_GCC_BRACE_GROUPS,
-DPERL_GCC_BRACE_GROUPS_FORBIDDEN,
-DPERL_GCC_PEDANTIC,
-DPERL_GET_CONTEXT,
-DPERL_GET_CONTEXT_DEFINED,
-DPERL_GET_INTERP,
-DPERL_GET_SIG_CONTEXT,
-DPERL_GET_THX,
-DPERL_GLOBAL_STRUCT,
-DPERL_GLOBAL_STRUCT_INIT,
-DPERL_GLOBAL_STRUCT_PRIVATE,
-DPERL_GPROF_CONTROL,
-DPERL_HASH,
-DPERL_HASH_INTERNAL_ACCESS,
-DPERL_HASH_FUNC,
-DPERL_HASH_FUNC_DJB2,
-DPERL_HASH_FUNC_MURMUR3,
-DPERL_HASH_FUNC_ONE_AT_A_TIME,
-DPERL_HASH_FUNC_ONE_AT_A_TIME_HARD,
-DPERL_HASH_FUNC_ONE_AT_A_TIME_OLD,
-DPERL_HASH_FUNC_SDBM,
-DPERL_HASH_FUNC_SIPHASH,
-DPERL_HASH_FUNC_SUPERFAST,
-DPERL_HASH_RANDOMIZE_KEYS,
-DPERL_HASH_SEED,
-DPERL_HASH_SEED_BYTES,
-DPERL_IMPLICIT_CONTEXT,
-DPERL_IMPLICIT_SYS,
-DPERL_INC_VERSION_LIST,
-DPERL_IN_XSUB_RE,
-DPERL_IRIX5_SELECT_TIMEVAL_VOID_CAST,
-DPERL_MG_UFUNC,
-DPERL_MICRO,
-DPERL_MSVCRT_READFIX,
-DPERL_NOCOMPAT,
-DPERL_NO_COW,
-DPERL_NO_INLINE_FUNCTIONS,
-DPERL_NO_DEV_RANDOM,
-DPERL_NO_FORCE_LINK,
-DPERL_NO_GET_CONTEXT,
-DPERL_NO_SHORT_NAMES,
-DPERL_NO_UTF16_FILTER,
-DPERL_OBJECT,
-DPERL_OTHERLIBDIRS,
-DPERL_PACK_CAN_BYTEORDER,
-DPERL_PACK_CAN_SHRIEKSIGN,
-DPERL_PATCHLEVEL_H_IMPLICIT,
-DPERL_POLLUTE,
-DPERL_POLLUTE_MALLOC,
-DPERL_PRESERVE_IVUV,
-DPERL_RANDOM_DEVICE,
-DPERL_REVISION,
-DPERL_SCAN_ALLOW_UNDERSCORES,
-DPERL_SCAN_DISALLOW_PREFIX,
-DPERL_SCAN_GREATER_THAN_UV_MAX,
-DPERL_SCAN_SILENT_ILLDIGIT,
-DPERL_SCO,
-DPERL_SCRIPT_MODE,
-DPERL_SET_CONTEXT,
-DPERL_SET_INTERP,
-DPERL_SET_THX,
-DPERL_SLAB_SIZE,
-DPERL_STACK_OVERFLOW_CHECK,
-DPERL_STATIC_SYMS,
-DPERL_STRICT_CR,
-DPERL_SUBVERSION,
-DSUBVERSION,
-DPERL_SYNC_FORK,
-DPERL_SYS_INIT,
-DPERL_SYS_INIT3,
-DPERL_SYS_TERM,
-DPERL_TEXTMODE_SCRIPTS,
-DPERL_TRY_UV_DIVIDE,
-DPERL_USE_SAFE_PUTENV,
-DPERL_USE_THREADS,
-DPERL_UTF8_CACHE_ASSERT,
-DPERL_VERSION,
-DPERL_VERSION_DECIMAL,
-DPERL_VERSION_GE,
-DPERL_VERSION_LE,
-DPERL_VERSION_LT,
-DPERL_WAIT_FOR_CHILDREN,
-DPERL_WRITE_MSG_TO_CONSOLE,
-DPERL_XSUB_OLDSTYLE,
-DPERL_Y2KWARN,
-DMEMBER_TO_FPTR=XXX
</example>
</flag>

<flag name="perl_in_foo" class="forbidden" regexp="[-/]DPERL_IN_(?:XS_APITEST|(?:AV|DEB|DOOP|DOIO|DUMP|GV|HV|LOCALE|MG|MALLOC|NUMERIC|OP|PAD|PERL|PP|PP|PP_HOT|PP_PACK|PP_SYS|REGCOMP|REGEXEC|SCOPE|SV|TOKE|UNIVERSAL|UTIL|MADLY|MRO|PERLY|PP_CTL|PP_SORT|UTF8)_C)\b">
These macros are used to indicate that a particular module is being compiled.
Setting them explicitly is not allowed.
<example>
-DPERL_IN_XS_APITEST,
-DPERL_IN_AV_C,
-DPERL_IN_DEB_C,
-DPERL_IN_DOOP_C,
-DPERL_IN_DOIO_C,
-DPERL_IN_DUMP_C,
-DPERL_IN_GV_C,
-DPERL_IN_HV_C,
-DPERL_IN_LOCALE_C,
-DPERL_IN_MG_C,
-DPERL_IN_MALLOC_C,
-DPERL_IN_NUMERIC_C,
-DPERL_IN_OP_C,
-DPERL_IN_PAD_C,
-DPERL_IN_PERL_C,
-DPERL_IN_PP_C,
-DPERL_IN_PP_CTL_C,
-DPERL_IN_PP_HOT_C,
-DPERL_IN_PP_PACK_C,
-DPERL_IN_PP_SYS_C,
-DPERL_IN_REGCOMP_C,
-DPERL_IN_REGEXEC_C,
-DPERL_IN_SCOPE_C,
-DPERL_IN_SV_C,
-DPERL_IN_TOKE_C,
-DPERL_IN_UNIVERSAL_C,
-DPERL_IN_UTIL_C,
-DPERL_IN_MADLY_C,
-DPERL_IN_MRO_C,
-DPERL_IN_PERLY_C,
-DPERL_IN_PP_CTL_C,
-DPERL_IN_PP_SORT_C,
-DPERL_IN_UTF8_C
</example>
</flag>

<flag name="perl_magic_values" class="forbidden" regexp="[-/]DPERL_MAGIC_(?:arylen|backref|bm|collxfrm|dbfile|dbline|defelem|env|envelem|ext|fm|glob|isa|isaelem|mutex|nkeys|overload|overload_elem|overload_table|pos|qr|regdata|regdatum|regex_global|shared|shared_scalar|sig|sigelem|substr|sv|taint|tied|tiedelem|tiedscalar|utf8|uvar|uvar_elem|vec|vstring)(?:=\S*)?\b">
These macros contain values that are "special" to Perl.  They may not be
changed.
<example>
-DPERL_MAGIC_arylen=XXX,
-DPERL_MAGIC_backref=XXX,
-DPERL_MAGIC_bm=XXX,
-DPERL_MAGIC_collxfrm=XXX,
-DPERL_MAGIC_dbfile=XXX,
-DPERL_MAGIC_dbline=XXX,
-DPERL_MAGIC_defelem=XXX,
-DPERL_MAGIC_env=XXX,
-DPERL_MAGIC_envelem=XXX,
-DPERL_MAGIC_ext=XXX,
-DPERL_MAGIC_fm=XXX,
-DPERL_MAGIC_glob=XXX,
-DPERL_MAGIC_isa=XXX,
-DPERL_MAGIC_isaelem=XXX,
-DPERL_MAGIC_mutex=XXX,
-DPERL_MAGIC_nkeys=XXX,
-DPERL_MAGIC_overload=XXX,
-DPERL_MAGIC_overload_elem=XXX,
-DPERL_MAGIC_overload_table=XXX,
-DPERL_MAGIC_pos=XXX,
-DPERL_MAGIC_qr=XXX,
-DPERL_MAGIC_regdata=XXX,
-DPERL_MAGIC_regdatum=XXX,
-DPERL_MAGIC_regex_global=XXX,
-DPERL_MAGIC_shared=XXX,
-DPERL_MAGIC_shared_scalar=XXX,
-DPERL_MAGIC_sig=XXX,
-DPERL_MAGIC_sigelem=XXX,
-DPERL_MAGIC_substr=XXX,
-DPERL_MAGIC_sv=XXX,
-DPERL_MAGIC_taint=XXX,
-DPERL_MAGIC_tied=XXX,
-DPERL_MAGIC_tiedelem=XXX,
-DPERL_MAGIC_tiedscalar=XXX,
-DPERL_MAGIC_utf8=XXX,
-DPERL_MAGIC_uvar=XXX,
-DPERL_MAGIC_uvar_elem=XXX,
-DPERL_MAGIC_vec=XXX,
-DPERL_MAGIC_vstring=XXX,
</example>
</flag>

<flag name="perl_funcs" class="forbidden" regexp="[-/]D(?:PL_(?:dowarn|hexdigit|numeric_radix_sv|sv_undef)|PerlIO|PerlIO_(?:apply_layers|binmode|canset_cnt|clearerr|eof|error|exportFILE|fast_gets|fdopen|fdupopen|findFILE|get_base|get_bufsiz|get_cnt|get_ptr|getc|getname|getpos|has_base|has_cntptr|importFILE|init|isutf8|modestr|open|openn|printf|putc|puts|read|releaseFILE|rewind|seek|set_cnt|set_ptrcnt|setlinebuf|setpos|sprintf|stderr|stdin|stdout|stdoutf|tell|tmpfile|ungetc|unread|vprintf|vsprintf|write)|Perl_(?:debug_log|error_log|fp_class|fp_class_finite|fp_class_inf|fp_class_nan|isfinite|isinf|isnan))(?:=\S*)?\b">
This macro is used to hold the name of a Perl internal function.  It may not
be set explicitly.
<example>
-DPL_dowarn=XXX,
-DPL_hexdigit=XXX,
-DPL_numeric_radix_sv=XXX,
-DPL_sv_undef=XXX,
-DPerlIO=XXX,
-DPerlIO_apply_layers=XXX,
-DPerlIO_binmode=XXX,
-DPerlIO_canset_cnt=XXX,
-DPerlIO_clearerr=XXX,
-DPerlIO_eof=XXX,
-DPerlIO_error=XXX,
-DPerlIO_exportFILE=XXX,
-DPerlIO_fast_gets=XXX,
-DPerlIO_fdopen=XXX,
-DPerlIO_fdupopen=XXX,
-DPerlIO_findFILE=XXX,
-DPerlIO_get_base=XXX,
-DPerlIO_get_bufsiz=XXX,
-DPerlIO_get_cnt=XXX,
-DPerlIO_get_ptr=XXX,
-DPerlIO_getc=XXX,
-DPerlIO_getname=XXX,
-DPerlIO_getpos=XXX,
-DPerlIO_has_base=XXX,
-DPerlIO_has_cntptr=XXX,
-DPerlIO_importFILE=XXX,
-DPerlIO_init=XXX,
-DPerlIO_isutf8=XXX,
-DPerlIO_modestr=XXX,
-DPerlIO_open=XXX,
-DPerlIO_openn=XXX,
-DPerlIO_printf=XXX,
-DPerlIO_putc=XXX,
-DPerlIO_puts=XXX,
-DPerlIO_read=XXX,
-DPerlIO_releaseFILE=XXX,
-DPerlIO_rewind=XXX,
-DPerlIO_seek=XXX,
-DPerlIO_set_cnt=XXX,
-DPerlIO_set_ptrcnt=XXX,
-DPerlIO_setlinebuf=XXX,
-DPerlIO_setpos=XXX,
-DPerlIO_sprintf=XXX,
-DPerlIO_stderr=XXX,
-DPerlIO_stdin=XXX,
-DPerlIO_stdout=XXX,
-DPerlIO_stdoutf=XXX,
-DPerlIO_tell=XXX,
-DPerlIO_tmpfile=XXX,
-DPerlIO_ungetc=XXX,
-DPerlIO_unread=XXX,
-DPerlIO_vprintf=XXX,
-DPerlIO_vsprintf=XXX,
-DPerlIO_write=XXX,
-DPerl_debug_log=XXX,
-DPerl_error_log=XXX,
-DPerl_fp_class=XXX,
-DPerl_fp_class_finite=XXX,
-DPerl_fp_class_inf=XXX,
-DPerl_fp_class_nan=XXX,
-DPerl_isfinite=XXX,
-DPerl_isinf=XXX,
-DPerl_isnan=XXX
</example>
</flag>

<flag name="io_poll_consts" class="forbidden" regexp="[-/]D(?:POLL(?:ERR|HUP|IN|NORM|NVAL|OUT|PRI|RDBAND|RDNORM|WRBAND|WRNORM)|_IO[FLN]BF)\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DPOLLERR,
-DPOLLHUP,
-DPOLLIN,
-DPOLLNORM,
-DPOLLNVAL,
-DPOLLOUT,
-DPOLLPRI,
-DPOLLRDBAND,
-DPOLLRDNORM,
-DPOLLWRBAND,
-DPOLLWRNORM,
-D_IOFBF,
-D_IOLBF,
-D_IONBF
</example>
</flag>

<flag name="procarch_flags" class="forbidden" regexp="[-/]DPROCESSOR_ARCHITECTURE_(?:ALPHA64|AMD64|ARM|IA32_ON_WIN64|IA64|MSIL|SHX|UNKNOWN)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DPROCESSOR_ARCHITECTURE_ALPHA64,
-DPROCESSOR_ARCHITECTURE_AMD64,
-DPROCESSOR_ARCHITECTURE_ARM,
-DPROCESSOR_ARCHITECTURE_IA32_ON_WIN64,
-DPROCESSOR_ARCHITECTURE_IA64,
-DPROCESSOR_ARCHITECTURE_MSIL,
-DPROCESSOR_ARCHITECTURE_SHX,
-DPROCESSOR_ARCHITECTURE_UNKNOWN
</example>
</flag>

<flag name="DPROCSELFEXE_PATH" class="forbidden" regexp="[-/]DPROCSELFEXE_PATH(?:=\S*)?\b">
<example>
-DPROCSELFEXE_PATH=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DPSHIFT" class="forbidden" regexp="[-/]DPSHIFT(?:=\S*)?\b">
<example>
-DPSHIFT=XXX
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DPSTAT_SETCMD" class="forbidden" regexp="[-/]DPSTAT_SETCMD(?:=\S*)?\b">
<example>
-DPSTAT_SETCMD=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DPURIFY" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="pw_fields" class="forbidden" regexp="[-/]DPW(?:AGE|CHANGE|CLASS|COMMENT|EXPIRE|GECOS|PASSWD|QUOTA)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DPWAGE,
-DPWCHANGE,
-DPWCLASS,
-DPWCOMMENT,
-DPWEXPIRE,
-DPWGECOS,
-DPWPASSWD,
-DPWQUOTA
</example>
</flag>

<flag name="DPerlProc_pause" class="forbidden" regexp="[-/]DPerlProc_pause(?:=\S*)?\b">
<example>
-DPerlProc_pause=XXX
</example>
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
</flag>

<flag name="DPerlSIO_fast_gets" class="forbidden">
This symbol is set automatically and may not be set explicitly.
</flag>

<flag name="DPoison" class="forbidden" regexp="[-/]DPoison(?:Free|New|With|)(?:\([^\)]+\))?(?:=\S*)?\b">
<example>
-DPoison=XXX,
-DPoisonFree=XXX,
-DPoisonNew=XXX,
-DPoisonWith=XXX
</example>
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
</flag>

<flag name="qsort_controls" class="forbidden" regexp="[-/]DQSORT_(?:BREAK_EVEN|DEBUG|MAX_STACK|ORDER_GUESS|PLAY_SAFE)(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DQSORT_BREAK_EVEN,
-DQSORT_DEBUG,
-DQSORT_MAX_STACK,
-DQSORT_ORDER_GUESS,
-DQSORT_PLAY_SAFE
</example>
</flag>

<flag name="DQUAD_IS___INT64" class="portability">
Use this flag if __int64 is the quad data type available.
</flag>

<flag name="DQUAD_IS_INT64_T" class="portability">
Use this flag if int64_t is the quad data type available.
</flag>

<flag name="DQUAD_IS_LONG" class="portability">
Use this flag if long is the quad data type available.
</flag>

<flag name="DQUAD_IS_LONG_LONG" class="portability">
Use this flag if long long is the quad data type available.
</flag>

<flag name="DSPEC_CHARBITS" class="portability">
  This macro may be used to change the default value of CHARBITS on systems that need it.
</flag>

<flag name="DRANDBITS" class="forbidden" regexp="[-/]DRANDBITS=\S+\b">
<example>
-DRANDBITS=32
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DRD_NODATA" class="portability" regexp="[-/]DRD_NODATA=\S+\b">
This flag can be used to indicate the return code from read() when no data is
present on the non-blocking file descriptor.
<example>
-DRD_NODATA=XXX
</example>
</flag>

<flag name="reentrant_protos" class="forbidden" regexp="[-/]DREENTRANT_PROTO_(?:B_(?:B|BI|BW|CCD|CCS|IBI|IBW|SB|SBI)|I_(?:BI|BW|CCSBWR|CCSD|CII|CIISD|CSBI|CSBIR|CSBWR|CSBWRE|CSD|CWISBWRE|CWISD|D|H|IBI|IBW|ICBI|ICSBWR|ICSD|ID|IISD|ISBWR|ISD|LISBI|LISD|LS|SB|SBI|SBIE|SBIH|SBIR|SBWR|SBWRE|SD|ST|St|TISD|TS|TSBI|TSBIR|TSBWR|TSR|TsISBWRE|UISBWRE|iS|lS|uISBWRE)|S_(?:CBI|CCSBI|CIISBIE|CSBI|CSBIE|CWISBIE|CWISBWIE|ICSBI|ISBI|LISBI|SBI|SBIE|SBW|TISBI|TS|TSBI|TSBIE|TWISBIE)|V_(?:D|H|ID))(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DREENTRANT_PROTO_B_B=XXX,
-DREENTRANT_PROTO_B_BI=XXX,
-DREENTRANT_PROTO_B_BW=XXX,
-DREENTRANT_PROTO_B_CCD=XXX,
-DREENTRANT_PROTO_B_CCS=XXX,
-DREENTRANT_PROTO_B_IBI=XXX,
-DREENTRANT_PROTO_B_IBW=XXX,
-DREENTRANT_PROTO_B_SB=XXX,
-DREENTRANT_PROTO_B_SBI=XXX,
-DREENTRANT_PROTO_I_BI=XXX,
-DREENTRANT_PROTO_I_BW=XXX,
-DREENTRANT_PROTO_I_CCSBWR=XXX,
-DREENTRANT_PROTO_I_CCSD=XXX,
-DREENTRANT_PROTO_I_CII=XXX,
-DREENTRANT_PROTO_I_CIISD=XXX,
-DREENTRANT_PROTO_I_CSBI=XXX,
-DREENTRANT_PROTO_I_CSBIR=XXX,
-DREENTRANT_PROTO_I_CSBWR=XXX,
-DREENTRANT_PROTO_I_CSBWRE=XXX,
-DREENTRANT_PROTO_I_CSD=XXX,
-DREENTRANT_PROTO_I_CWISBWRE=XXX,
-DREENTRANT_PROTO_I_CWISD=XXX,
-DREENTRANT_PROTO_I_D=XXX,
-DREENTRANT_PROTO_I_H=XXX,
-DREENTRANT_PROTO_I_IBI=XXX,
-DREENTRANT_PROTO_I_IBW=XXX,
-DREENTRANT_PROTO_I_ICBI=XXX,
-DREENTRANT_PROTO_I_ICSBWR=XXX,
-DREENTRANT_PROTO_I_ICSD=XXX,
-DREENTRANT_PROTO_I_ID=XXX,
-DREENTRANT_PROTO_I_IISD=XXX,
-DREENTRANT_PROTO_I_ISBWR=XXX,
-DREENTRANT_PROTO_I_ISD=XXX,
-DREENTRANT_PROTO_I_LISBI=XXX,
-DREENTRANT_PROTO_I_LISD=XXX,
-DREENTRANT_PROTO_I_LS=XXX,
-DREENTRANT_PROTO_I_SB=XXX,
-DREENTRANT_PROTO_I_SBI=XXX,
-DREENTRANT_PROTO_I_SBIE=XXX,
-DREENTRANT_PROTO_I_SBIH=XXX,
-DREENTRANT_PROTO_I_SBIR=XXX,
-DREENTRANT_PROTO_I_SBWR=XXX,
-DREENTRANT_PROTO_I_SBWRE=XXX,
-DREENTRANT_PROTO_I_SD=XXX,
-DREENTRANT_PROTO_I_ST=XXX,
-DREENTRANT_PROTO_I_St=XXX,
-DREENTRANT_PROTO_I_TISD=XXX,
-DREENTRANT_PROTO_I_TS=XXX,
-DREENTRANT_PROTO_I_TSBI=XXX,
-DREENTRANT_PROTO_I_TSBIR=XXX,
-DREENTRANT_PROTO_I_TSBWR=XXX,
-DREENTRANT_PROTO_I_TSR=XXX,
-DREENTRANT_PROTO_I_TsISBWRE=XXX,
-DREENTRANT_PROTO_I_UISBWRE=XXX,
-DREENTRANT_PROTO_I_iS=XXX,
-DREENTRANT_PROTO_I_lS=XXX,
-DREENTRANT_PROTO_I_uISBWRE=XXX,
-DREENTRANT_PROTO_S_CBI=XXX,
-DREENTRANT_PROTO_S_CCSBI=XXX,
-DREENTRANT_PROTO_S_CIISBIE=XXX,
-DREENTRANT_PROTO_S_CSBI=XXX,
-DREENTRANT_PROTO_S_CSBIE=XXX,
-DREENTRANT_PROTO_S_CWISBIE=XXX,
-DREENTRANT_PROTO_S_CWISBWIE=XXX,
-DREENTRANT_PROTO_S_ICSBI=XXX,
-DREENTRANT_PROTO_S_ISBI=XXX,
-DREENTRANT_PROTO_S_LISBI=XXX,
-DREENTRANT_PROTO_S_SBI=XXX,
-DREENTRANT_PROTO_S_SBIE=XXX,
-DREENTRANT_PROTO_S_SBW=XXX,
-DREENTRANT_PROTO_S_TISBI=XXX,
-DREENTRANT_PROTO_S_TS=XXX,
-DREENTRANT_PROTO_S_TSBI=XXX,
-DREENTRANT_PROTO_S_TSBIE=XXX,
-DREENTRANT_PROTO_S_TWISBIE=XXX,
-DREENTRANT_PROTO_V_D=XXX,
-DREENTRANT_PROTO_V_H=XXX,
-DREENTRANT_PROTO_V_ID=XXX
</example>
</flag>

<flag name="DREG_COMP_C" class="forbidden">
This symbol is set automatically and may not be set explicitly.
</flag>

<flag name="DREG_INFTY" class="forbidden" regexp="[-/]DREG_INFTY(?:=\S*)?\b">
<example>
-DREG_INFTY=XXX
</example>
This macro defines a limit on various pattern matching operations to limit
stack growth and to avoid "infinite" recursions.  It may not be changed.
</flag>

<flag name="DRTL_USES_UTC" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="defsv_stuff" class="forbidden" regexp="[-/]D(?:SAVE_DEFSV|DEFSV_set)(?:=\S*)?\b">
<example>
-DDEFSV_set=XXX,
-DSAVE_DEFSV=XXX
</example>
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
</flag>

<flag name="signal_stuff" class="forbidden" regexp="[-/]D(?:SA_(?:NOCLDWAIT|RESTART|SIGINFO)|SCOPE_SAVES_SIGNAL_MASK|SIG_PENDING_DIE_COUNT)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DSA_NOCLDWAIT=XXX,
-DSA_RESTART=XXX,
-DSA_SIGINFO=XXX,
-DSIG_PENDING_DIE_COUNT=XXX,
-DSCOPE_SAVES_SIGNAL_MASK
</example>
</flag>

<flag name="DSEARCH_EXTS" class="forbidden" regexp="[-/]DSEARCH_EXTS(?:=\S*)?\b">
<example>
-DSEARCH_EXTS=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DSECURE_INTERNAL_GETENV" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="seek_consts" class="portability" regexp="[-/]DSEEK_(?:CUR|END|SET)(?:=\S*)?\b">
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.
<example>
-DSEEK_CUR=0,
-DSEEK_END=1,
-DSEEK_SET=2
</example>
</flag>

<flag name="DSELECT_IS_BROKEN" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="errno_funcs" class="forbidden" regexp="[-/]D(?:dSAVEDERRNO|SETERRNO)(?:=\S*)?\b">
<example>
-DdSAVEDERRNO=XXX,
-DSETERRNO=XXX
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DSETUID_SCRIPTS_ARE_SECURE_NOW" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DSFIO_VERSION" class="forbidden" regexp="[-/]DSFIO_VERSION(?:=\S*)?\b">
<example>
-DSFIO_VERSION=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DSIG_SIZE" class="forbidden" regexp="[-/]DSIG_SIZE(?:=\S*)?\b">
<example>
-DSIG_SIZE=XXX
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DSIOCATMARK" class="forbidden" regexp="[-/]DSIOCATMARK(?:=\S*)?\b">
<example>
-DSIOCATMARK=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DSIZE16" class="forbidden" regexp="[-/]DSIZE(?:16|32)(?:=\S*)?\b">
<example>
-DSIZE16=XXX,
-DSIZE32=XXX
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DSKIP_DEBUGGING" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DSLOPPYDIVIDE" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DSMALLSORT" class="forbidden" regexp="[-/]DSMALLSORT(?:=\S*)?\b">
<example>
-DSMALLSORT=XXX
</example>
This flag sets the size for the stack in the sort routines.
</flag>

<flag name="DSPEC_NEED_TIME_H" class="portability">
This flag should be used to indicate that the "time.h" header file should
be included.
</flag>

<flag name="DSTANDARD_C" class="forbidden">
The benchmark MUST be built with an ANSI C compiler which will define
this constant by default.
</flag>

<flag name="DSTART_EXTERN_C" class="portability" regexp="[-/]DSTART_EXTERN_C(?:=\S*)?\b">
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.
<example>
-DSTART_EXTERN_C=XXX
</example>
</flag>

<flag name="DEND_EXTERN_C" class="portability" regexp="[-/]DEND_EXTERN_C(?:=\S*)?\b">
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.
<example>
-DEND_EXTERN_C=XXX
</example>
</flag>

<flag name="DEXTERN_C" class="portability" regexp="[-/]DEXTERN_C(?:=\S*)?\b">
This flag can be used to define the text necessary to mark a function
prototype as "extern C" when building with a C++ compiler.
<example>
-DEXTERN_C=XXX
</example>
</flag>

<flag name="DSTDIO_BUFFER_WRITABLE" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DSTDIO_CNT_LVALUE" class="portability">
Use this flag if the FILE_cnt macro can be used as an lvalue.
</flag>

<flag name="DSTDIO_PTR_LVALUE" class="portability">
Use this flag if the FILE_ptr macro can be used as an lvalue.
</flag>

<flag name="DSTDIO_PTR_LVAL_NOCHANGE_CNT" class="portability">
This symbol is defined if using the FILE_ptr macro as an lvalue leaves
File_cnt(fp) unchanged.
</flag>

<flag name="DSTDIO_PTR_LVAL_SETS_CNT" class="portability">
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.
</flag>

<flag name="stmt_markers" class="forbidden" regexp="[-/]DSTMT_(?:START|END)(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DSTMT_END=XXX,
-DSTMT_START=XXX
</example>
</flag>

<flag name="DSTRESS_REALLOC" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DSTRUCT_TM_HASZONE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="sv_cwd_stuff" class="forbidden" regexp="[-/]DSV_CWD_(?:ISDOT|RETURN_UNDEF)(?:=\S*)\b">
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
<example>
-DSV_CWD_ISDOT=XXX,
-DSV_CWD_RETURN_UNDEF=XXX
</example>
</flag>

<flag name="format_flags" class="forbidden" regexp="[-/]D(?:HEK|SV|UV|VD)f(?:32|256)?(?:=\S*)?\b">
<example>
  -DHEKf=XXX,
  -DHEKf256=XXX,
  -DSVf256=XXX,
  -DSVf32=XXX,
  -DSVf=XXX,
  -DUVf=XXX,
  -DVDf=XXX
</example>
This macro defines a format string for a Perl internal data type.
Setting it to a non-default value is forbidden.
</flag>

<flag name="sv_flags" class="forbidden" regexp="[-/]DSVf(?:_IVisUV|_precision)(?:=\S*)?\b">
This macro defines a Perl internal data flag.
Setting it to a non-default value is forbidden.
<example>
-DSVf_IVisUV=XXX,
-DSVf_precision=XXX
</example>
</flag>

<flag name="DSYS_NMLN" class="portability" regexp="[-/]DSYS_NMLN=\d+\b">
<example>
-DSYS_NMLN=2048
</example>
This flag can be used to set the buffer size for some name length fields on
Windows.  These fields are probably never used.
</flag>

<flag name="sys_consts" class="forbidden" regexp="[-/]D(?:_?S_I(?:EXEC|FBLK|FIFO|FLNK|FMT|FSOCK|READ|RGRP|ROTH|RUSR|RWXG|RWXO|RWXU|SBLK|SCHR|SDIR|SFIFO|SGID|SLNK|SREG|SSOCK|SUID|SVTX|WRITE)|O_(?:ACCMODE|APPEND|BINARY|EXCL|LARGEFILE|NDELAY|NOCTTY|NONBLOCK|RDONLY|WRONLY|TEXT|TRUNC)|_?SIG(?:ARRAYSIZE|ABRT|ALRM|BUS|CHLD|CLD|CONT|DANGER|EMT|FPE|GRANT|HUP|ILL|INT|IO|IOT|KILL|LOST|LWP|MAX|MSG|PHONE|PIPE|POLL|PROF|PWR|QUIT|RETRACT|SAK|SEGV|SOUND|STOP|SYS|TERM|TRAP|TSTP|TTIN|TTOU|URG|USR1|USR2|VTALRM|WAITING|WINCH|WIND|XCPU|XFSZ|_ERR|_IGN|_MAX))(?:=\S*)?\b">
This constant, if defined, must be defined by a system header file.  Setting
it explicitly is not allowed.
<example>
-DS_IEXEC=XXX,
-DS_IFBLK=XXX,
-DS_IFIFO=XXX,
-DS_IFLNK=XXX,
-DS_IFMT=XXX,
-DS_IFSOCK=XXX,
-DS_IREAD=XXX,
-DS_IRGRP=XXX,
-DS_IROTH=XXX,
-DS_IRUSR=XXX,
-DS_IRWXG=XXX,
-DS_IRWXO=XXX,
-DS_IRWXU=XXX,
-DS_ISBLK=XXX,
-DS_ISCHR=XXX,
-DS_ISDIR=XXX,
-DS_ISFIFO=XXX,
-DS_ISGID=XXX,
-DS_ISLNK=XXX,
-DS_ISREG=XXX,
-DS_ISSOCK=XXX,
-DS_ISUID=XXX,
-DS_ISVTX=XXX,
-DS_IWRITE=XXX,
-D_S_IFLNK=XXX,
-D_S_IFMT=XXX,
-D_S_IFSOCK=XXX,
-D_S_ISLNK=XXX,
-D_S_ISSOCK=XXX,
-DO_ACCMODE=XXX,
-DO_APPEND=XXX,
-DO_BINARY=XXX,
-DO_EXCL=XXX,
-DO_LARGEFILE=XXX,
-DO_NDELAY=XXX,
-DO_NOCTTY=XXX,
-DO_NONBLOCK=XXX,
-DO_RDONLY=XXX,
-DO_WRONLY=XXX,
-DO_TEXT=XXX,
-DO_TRUNC=XXX,
-DSIGARRAYSIZE=XXX,
-D_SIG_MAX=XXX,
-DSIGABRT=XXX,
-DSIGALRM=XXX,
-DSIGBUS=XXX,
-DSIGCHLD=XXX,
-DSIGCLD=XXX,
-DSIGCONT=XXX,
-DSIGDANGER=XXX,
-DSIGEMT=XXX,
-DSIGFPE=XXX,
-DSIGGRANT=XXX,
-DSIGHUP=XXX,
-DSIGILL=XXX,
-DSIGINT=XXX,
-DSIGIO=XXX,
-DSIGIOT=XXX,
-DSIGKILL=XXX,
-DSIGLOST=XXX,
-DSIGLWP=XXX,
-DSIGMAX=XXX,
-DSIGMSG=XXX,
-DSIGPHONE=XXX,
-DSIGPIPE=XXX,
-DSIGPOLL=XXX,
-DSIGPROF=XXX,
-DSIGPWR=XXX,
-DSIGQUIT=XXX,
-DSIGRETRACT=XXX,
-DSIGSAK=XXX,
-DSIGSEGV=XXX,
-DSIGSOUND=XXX,
-DSIGSTOP=XXX,
-DSIGSYS=XXX,
-DSIGTERM=XXX,
-DSIGTRAP=XXX,
-DSIGTSTP=XXX,
-DSIGTTIN=XXX,
-DSIGTTOU=XXX,
-DSIGURG=XXX,
-DSIGUSR1=XXX,
-DSIGUSR2=XXX,
-DSIGVTALRM=XXX,
-DSIGWAITING=XXX,
-DSIGWINCH=XXX,
-DSIGWIND=XXX,
-DSIGXCPU=XXX,
-DSIGXFSZ=XXX,
-DSIG_ERR=XXX,
-DSIG_IGN=XXX,
-DSIG_MAX=XXX
</example>
</flag>

<flag name="DSemctl" class="forbidden" regexp="[-/]DSemctl(?:=\S*)?\b">
<example>
-DSemctl=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DTHREAD_RET_TYPE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DTIME_HIRES_NANOSLEEP" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DTLS_OUT_OF_INDEXES" class="forbidden" regexp="[-/]DTLS_OUT_OF_INDEXES(?:=\S*)?\b">
<example>
-DTLS_OUT_OF_INDEXES=XXX
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DTOP_CLONE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DTRUNCATE_U32" class="portability">
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.)
</flag>

<flag name="constdefs" regexp="[-/]DU?INT64_C(?:=\S*)?\b" class="forbidden">
  <example>
    -DINT64_C=XXX,
    -DUINT64_C=XXX
  </example>
  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.
</flag>

<flag name="DUNDERBAR" class="forbidden" regexp="[-/]DUNDERBAR(?:=\S*)?\b">
<example>
-DUNDERBAR=XXX
</example>
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DUNDER_CE" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DUNEXEC" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DUNICODE_HTML_PARSER" class="forbidden">
This symbol is set automatically and may not be set explicitly.
</flag>

<flag name="DUNION_ANY_DEFINITION" class="forbidden" regexp="[-/]DUNION_ANY_DEFINITION(?:=\S*)?\b">
<example>
-DUNION_ANY_DEFINITION=XXX
</example>
This symbol is set automatically and may not be set explicitly.
</flag>

<flag name="DUNLINK_ALL_VERSIONS" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DUV" class="forbidden" regexp="[-/]DUV(?:=\S*)?\b">
<example>
-DUV=XXX
</example>
This symbol is set automatically and may not be set explicitly.
</flag>

<flag name="Uid_t_size" class="portability" regexp="-DUid_t_size=\d+">
This symbol holds the number of bytes used by the type specified by Uid_t.
<example>
-DUid_t_size=XXX
</example>
</flag>

<flag name="retvals" class="forbidden" regexp="[-/]DVAL_(?:EAGAIN|O_NONBLOCK)(?:=\S*)?\b">
It is forbidden to set this macro to a value other than its default.
<example>
-DVAL_EAGAIN=XXX,
-DVAL_O_NONBLOCK=XXX
</example>
</flag>

<flag name="vms_flags" class="forbidden" regexp="[-/]D(?:VMS(?:ISH_STATUS|ISH_TIME|_SHORTEN_LONG_SYMBOLS|_WE_ARE_CASE_SENSITIVE)?|KILL_BY_SIGPRC)(?:=\S*)?\b">
These macros are for use on VMS systems.  CPU2017 is not ported to VMS.
<example>
-DVMS,
-DVMSISH_STATUS,
-DVMSISH_TIME,
-DVMS_SHORTEN_LONG_SYMBOLS,
-DVMS_WE_ARE_CASE_SENSITIVE,
-DKILL_BY_SIGPRC
</example>
</flag>

<flag name="DVOID_CLOSEDIR" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DWIN32IO_IS_STDIO" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DWIN32SCK_IS_STDSCK" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DWIN32_LEAN_AND_MEAN" class="forbidden">
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DWNOHANG" class="portability" regexp="[-/]DWNOHANG(?:=\S*)?\b">
<example>
-DWNOHANG=1
</example>
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.
</flag>

<flag name="winsock_consts" class="forbidden" regexp="[-/]D(?:MSG_WAITALL|SIO_GET_INTERFACE_LIST_EX|WSAE(?:AFNOSUPPORT|CANCELLED|CONNABORTED|CONNRESET))(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-DMSG_WAITALL=XXX,
-DSIO_GET_INTERFACE_LIST_EX=XXX,
-DWSAEAFNOSUPPORT=XXX,
-DWSAECANCELLED=XXX,
-DWSAECONNABORTED=XXX,
-DWSAECONNRESET=XXX
</example>
</flag>

<flag name="access_mode_bits" class="forbidden" regexp="[-/]D[RWXF]_OK(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DR_OK=X,
-DW_OK=X,
-DX_OK=X,
-DF_OK=X
</example>
</flag>

<flag name="yacc_barf" class="forbidden" regexp="[-/]D(?:yyparse|YYDEBUG|YYMAXDEPTH|YYMAXLEVEL|YY_?NULL|YYSTACKSIZE|YYERROR_VERBOSE|YYPRINT|YYSTYPE|YYSTYPE_IS_DECLARED|YYTOKENTYPE|YYTOKEN_TABLE)(?:=\S*)?\b">
This symbol is set automatically and may not be set explicitly.
<example>
-Dyyparse=XXX,
-DYYDEBUG=XXX,
-DYYMAXDEPTH=XXX,
-DYYMAXLEVEL=XXX,
-DYYNULL=XXX,
-DYYSTACKSIZE=XXX,
-DYYERROR_VERBOSE=XXX,
-DYYPRINT=XXX,
-DYYSTYPE=XXX,
-DYYSTYPE_IS_DECLARED=XXX,
-DYYTOKENTYPE=XXX,
-DYYTOKEN_TABLE=XXX
</example>
</flag>

<flag name="DZeroD" class="forbidden" regexp="[-/]DZeroD(?:=\S*)?\b">
<example>
-DZeroD=XXX
</example>
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
</flag>

<flag name="D_ANONYMOUS_UNION" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="windebug" class="forbidden" regexp="[-/]D(?:_DEBUG(?:_MEM)?|_WRITE_ABORT_MSG)(?:=\S*)\b">
<example>
-D_DEBUG,
-D_DEBUG_MEM,
-D_WRITE_ABORT_MSG
</example>
This flag enables some debugging output on Windows platforms.  Its use is
prohibited.
</flag>

<flag name="D_FASTMATH" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="D_INTPTR_T_DEFINED" class="portability">
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.
</flag>

<flag name="D_IOCTL_" class="forbidden">
This constant should be supplied by your system header files.  They
may not be set directly.
</flag>

<flag name="D_IOSTRG" class="forbidden" regexp="[-/]D_IOSTRG(?:=\S*)?\b">
<example>
-D_IOSTRG=XXX
</example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="mingw_consts" class="forbidden" regexp="[-/]D_(?:NO_OLDNAMES|O_NOINHERIT)(?:=\S*)?\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-D_NO_OLDNAMES,
-D_O_NOINHERIT=XXX,
</example>
</flag>

<flag name="sysconf_stuff" class="forbidden" regexp="[-/]D_SC_(?:CLK_TCK|OPEN_MAX|PAGESIZE|PAGE_SIZE|GETGR_R_SIZE_MAX|GETPW_R_SIZE_MAX|MMAP_PAGE_SIZE|NGROUPS_MAX)(?:=\S*)\b">
This macro has no function in the benchmark version of the source; its use is
forbidden.
<example>
-D_SC_CLK_TCK=XXX,
-D_SC_OPEN_MAX=XXX,
-D_SC_PAGESIZE=XXX,
-D_SC_PAGE_SIZE=XXX
_SC_GETGR_R_SIZE_MAX 
_SC_GETPW_R_SIZE_MAX 
_SC_MMAP_PAGE_SIZE 
</example>
</flag>

<flag name="system_include_guards" class="forbidden" regexp="[-/]D(_STDIO_(?:INCLUDED|H)|_INCLUDE_(?:HMAC|SHA)_H_)(?:=\S*)?\b">
This constant should be supplied by your system header files.  They
may not be set directly.
</flag>

<flag name="D_THREAD_SAFE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="D_UINTPTR_T_DEFINED" class="portability">
This flag may be used to indicate that there is a type definition for
uintptr_t.
</flag>

<flag name="windows_default_flags" class="forbidden" regexp="[-/]D_USE_(?:LINKED_LIST|MSVCRT_MEM_ALLOC|BUDDY_BLOCKS)\b">
This symbol is set automatically and may not be set explicitly.
<example>
-D_USE_LINKED_LIST,
-D_USE_MSVCRT_MEM_ALLOC
</example>
</flag>

<flag name="D_WIN32_WINNT" class="forbidden" regexp="[-/]D_WIN32_WINNT(?:=\S*)?\b">
This constant should be supplied by your system header files.  They
may not be set directly.
<example>
-D_WIN32_WINNT=XXX
</example>
</flag>

<flag name="D__THROW" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="sv_funcs" class="forbidden" regexp="[-/]D(?:sv_(?:catpvf_mg_nocontext|catpvs|setpvf_mg_nocontext|setpvs|vcatpvf|vcatpvf_mg|vsetpvf|vsetpvf_mg|2pv_nolen|2pvbyte|2pvbyte_nolen|2uv|catpv_mg|catpvf_mg|catpvn_mg|catpvn_nomg|catsv_mg|catsv_nomg|dup|flags|magicext|pvn|pvn_force|pvn_nomg|setiv_mg|setnv_mg|setpv_mg|setpvf_mg|setpvn_mg|setsv_mg|setsv_nomg|setuv|setuv_mg|usepvn_mg|uv)|Sv(?:GETMAGIC|IV_nomg|PV_force_nomg|PV_nolen|PVx_nolen_const|PV_nomg|PV_nomg_nolen|PV_renew|PVbyte|UTF8_on|UV|UVX|UVXx|UV_nomg|UVx)|new(?:CONSTSUB|RV_inc|RV_noinc|SVpv[ns]|SVuv))(?:=\S*)\b">
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
<example>
-Dsv_2pv_nolen=XXX,
-Dsv_2pvbyte=XXX,
-Dsv_2pvbyte_nolen=XXX,
-Dsv_2uv=XXX,
-Dsv_catpv_mg=XXX,
-Dsv_catpvf_mg=XXX,
-Dsv_catpvn_mg=XXX,
-Dsv_catpvn_nomg=XXX,
-Dsv_catsv_mg=XXX,
-Dsv_catsv_nomg=XXX,
-Dsv_dup=XXX,
-Dsv_flags=XXX,
-Dsv_magicext=XXX,
-Dsv_pvn=XXX,
-Dsv_pvn_force=XXX,
-Dsv_pvn_nomg=XXX,
-Dsv_setiv_mg=XXX,
-Dsv_setnv_mg=XXX,
-Dsv_setpv_mg=XXX,
-Dsv_setpvf_mg=XXX,
-Dsv_setpvn_mg=XXX,
-Dsv_setsv_mg=XXX,
-Dsv_setsv_nomg=XXX,
-Dsv_setuv=XXX,
-Dsv_setuv_mg=XXX,
-Dsv_usepvn_mg=XXX,
-Dsv_uv=XXX,
-DSvGETMAGIC=XXX,
-DSvIV_nomg=XXX,
-DSvPV_force_nomg=XXX,
-DSvPV_nolen=XXX,
-DSvPVx_nolen_const=XXX,
-DSvPV_nomg=XXX,
-DSvPV_nomg_nolen=XXX,
-DSvPV_renew=XXX,
-DSvPVbyte=XXX,
-DSvUTF8_on=XXX,
-DSvUV=XXX,
-DSvUVX=XXX,
-DSvUVXx=XXX,
-DSvUV_nomg=XXX,
-DSvUVx=XXX,
-DnewCONSTSUB=XXX,
-DnewRV_inc=XXX,
-DnewRV_noinc=XXX,
-DnewSVpvn=XXX,
-DnewSVpvs=XXX,
-DnewSVuv=XXX,
-Dsv_setpvs=XXX,
-Dsv_vcatpvf=XXX,
-Dsv_vcatpvf_mg=XXX,
-Dsv_vsetpvf=XXX,
-Dsv_vsetpvf_mg=XXX,
-Dsv_catpvf_mg_nocontext=XXX,
-Dsv_catpvs=XXX,
-Dsv_setpvf_mg_nocontext=XXX,
</example>
</flag>

<flag name="DSPEC_NO_STAT64" class="portability">
SPEC_NO_STAT64 may be set for Windows64 systems where there is no _stat64 structure.
</flag>

<flag name="comp_implicit" class="forbidden" regexp="[-/]D(?:__ANDROID__|_ALL_SOURCE|_AIX|_AIX43|_ALPHA_|__ARMCC_VERSION|_CRAYMPP|_CRTIMP|_GNU_SOURCE|_MSC_(?:VER|EXTENSIONS)|_UNICOS|__ALPHA|__BEOS__|__BIG_ENDIAN__|__BORLANDC__|__BORLAND__|__CRTL_VER|__CYGWIN__|__DECC|__DECC_VER|__DGUX|__DYNAMIC__|__EMX__|__FreeBSD__|__FreeBSD_version|__GLIBC__|__GLIBC_MINOR__|__GNUC_MINOR__|__GNUC__|__GNUG__|__GNU_LIBRARY__|__HAIKU__|__?IEEE_FP|__INTEL_COMPILER|__LITTLE_ENDIAN__|__Lynx__|__MINGW32_MAJOR_VERSION|__MINGW32__|__MINGW64__|__MINGW_EXTENSION|__MINT__|__NeXT|__NeXT__|__NetBSD__|__OPEN_VM|__OpenBSD__|__POSIX_SOURCE|__QNXNTO__|__QNX__|__SCO_VERSION__|__SC__|__STDC__|__STRICT_ANSI__|__SVR4|__TURBOC__|__UCLIBC__|__VAX|__VMS|__VMS_VER|__VOS__|__WATCOMC__|__alpha|__attribute__|__attribute__(?:deprecated|format|malloc|nonnull|noreturn|pure|unused|warn_unused_result)__|__bsdi__|__clang|__clang__|__cplusplus|__hpux|__hpux__|__i386__|__ia64|__int64|__osf__|__sgi|__sparc64__|__stdc__|__sun|__sun__|__svr4__|__ux_version|_cplusplus|apollo|atarist|convex|cray|i860|lint|S_SPLINT_S|m88k|mc300|mc500|mc6000|mc700|mips|sun|ultrix|uts|_SVID3|hp9000s500|PLAN9|pyr|vax11c|gould|hcx|UTS|NeXT|OEMVS|OS2|NETWARE|POSIX_BC|__riscos__|__irix__|__VC32__|__PGI|__SUNPRO_C|__SUNPRO_CC|__STDC_VERSION__|__STDIO_LOADED|__SYMBIAN32__|WINVER|_WINSOCKAPI_|ERRNO_HAS_POSIX_SUPPLEMENT|HAS_C99|_SAFECRT_IMPL|STAP_PROBE_ADDR)(?:=\S*)?\b">
These flags are set implicitly by the compilation system and may not be
set explicitly.
<example>
-DERRNO_HAS_POSIX_SUPPLEMENT=XXX,
-DHAS_C99,
-DNETWARE=XXX,
-DNeXT=XXX,
-DOEMVS=XXX,
-DOS2=XXX,
-DPLAN9=XXX,
-DPOSIX_BC,
-DS_SPLINT_S=XXX,
-DSTAP_PROBE_ADDR=XXX,
-DUTS=XXX,
-DWINVER=XXX
-D_ALL_SOURCE=XXX,
-D_AIX43=XXX,
-D_AIX=XXX,
-D_ALPHA_=XXX,
-D_CRAYMPP=XXX,
-D_CRTIMP=XXX,
-D_GNU_SOURCE=XXX,
-D_IEEE_FP=XXX,
-D_MSC_EXTENSIONS=XXX,
-D_MSC_VER=XXX,
-D_SVID3=XXX,
-D_SAFECRT_IMPL=XXX,
-D_UNICOS=XXX,
-D__ALPHA=XXX,
-D__ANDROID__=XXX,
-D__ARMCC_VERSION=XXX,
-D__BEOS__=XXX,
-D__BIG_ENDIAN__=XXX,
-D__BORLANDC__=XXX,
-D__BORLAND__=XXX,
-D__CRTL_VER=XXX,
-D__CYGWIN__=XXX,
-D__DECC=XXX,
-D__DECC_VER=XXX,
-D__DGUX=XXX,
-D__DYNAMIC__=XXX,
-D__EMX__=XXX,
-D__FreeBSD__=XXX,
-D__FreeBSD_version=XXX,
-D__GLIBC_MINOR__=XXX,
-D__GLIBC__=XXX,
-D__GNUC_MINOR__=XXX,
-D__GNUC__=XXX,
-D__GNUG__=XXX,
-D__GNU_LIBRARY__=XXX,
-D__HAIKU__=XXX,
-D__IEEE_FP=XXX,
-D__INTEL_COMPILER=XXX,
-D__LITTLE_ENDIAN__=XXX,
-D__Lynx__=XXX,
-D__MINGW32_MAJOR_VERSION=XXX,
-D__MINGW32__=XXX,
-D__MINGW64__=XXX,
-D__MINGW_EXTENSION=XXX,
-D__MINT__=XXX,
-D__NeXT=XXX,
-D__NeXT__=XXX,
-D__NetBSD__=XXX,
-D__OPEN_VM=XXX,
-D__OpenBSD__=XXX,
-D__PGI=XXX,
-D__POSIX_SOURCE=XXX,
-D__QNXNTO__=XXX,
-D__QNX__=XXX,
-D__SCO_VERSION__=XXX,
-D__SC__=XXX,
-D__STDC__=XXX,
-D__STRICT_ANSI__=XXX,
-D__SUNPRO_C=XXX,
-D__SUNPRO_CC=XXX,
-D__SVR4=XXX,
-D__SYMBIAN32__=XXX,
-D__TURBOC__=XXX,
-D__UCLIBC__=XXX,
-D__VAX=XXX,
-D__VMS=XXX,
-D__VMS_VER=XXX,
-D__VOS__=XXX,
-D__WATCOMC__=XXX,
-D_WINSOCKAPI_=XXX,
-D__alpha=XXX,
-D__attribute__=XXX,
-D__attribute__deprecated__=XXX,
-D__attribute__format__=XXX,
-D__attribute__malloc__=XXX,
-D__attribute__nonnull__=XXX,
-D__attribute__noreturn__=XXX,
-D__attribute__pure__=XXX,
-D__attribute__unused__=XXX,
-D__attribute__warn_unused_result__=XXX,
-D__bsdi__=XXX,
-D__clang=XXX,
-D__clang__=XXX,
-D__cplusplus=XXX,
-D__hpux=XXX,
-D__hpux__=XXX,
-D__i386__=XXX,
-D__ia64=XXX,
-D__int64=XXX,
-D__osf__=XXX,
-D__sgi=XXX,
-D__sparc64__=XXX,
-D__stdc__=XXX,
-D__sun=XXX,
-D__sun__=XXX,
-D__svr4__=XXX,
-D__ux_version=XXX,
-D_cplusplus=XXX,
-Dapollo=XXX,
-Datarist=XXX,
-Dconvex=XXX,
-Dcray=XXX,
-Dgould=XXX,
-Dhcx=XXX,
-Dhp9000s500=XXX,
-Di860=XXX,
-Dlint=XXX,
-Dm88k=XXX,
-Dmc300=XXX,
-Dmc500=XXX,
-Dmc6000=XXX,
-Dmc700=XXX,
-Dmips=XXX,
-Dpyr=XXX,
-Dsun=XXX,
-Dultrix=XXX,
-Duts=XXX,
-Dvax11c=XXX,
</example>
</flag>

<flag name="perl_thread_stuff" class="forbidden" regexp="[-/]D(?:pTHX|pTHX_|pTHXo|pTHXx|dAX(?:MARK)?|dITEMS|dJMPENV|dNOOP|dTHR|dTHX|dTHXa|dTHXoa|dUNDERBAR|dXSTARG|aTHX|aTHX_|dVAR)(?:=\S*)?\b">
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
<example>
-DpTHX=XXX,
-DpTHX_=XXX,
-DpTHXo=XXX,
-DpTHXx=XXX,
-DdAX=XXX,
-DdAXMARK=XXX,
-DdITEMS=XXX,
-DdJMPENV=XXX,
-DdNOOP=XXX,
-DdTHR=XXX,
-DdTHX=XXX,
-DdTHXa=XXX,
-DdTHXoa=XXX,
-DdUNDERBAR=XXX,
-DdXSTARG=XXX,
-DaTHX=XXX,
-DaTHX_=XXX,
-DdVAR=XXX
</example>
</flag>

<flag name="xs_stuff" class="forbidden" regexp="[-/]DX(?:PUSHmortal|SRETURN_UV|ST_mUV|S_VERSION|SprePUSH|SubPPtmpAAA[A-Z]|S(?:|PROTO|_APIVERSION(?:_BOOTCHECK)?|_EXTERNAL|_INTERNAL))(?:=\S*)?\b">
Setting this macro to a value other than its default is forbidden.
<example>
-DXS=XXX,
-DXSPROTO=XXX,
-DXS_APIVERSION=XXX,
-DXS_APIVERSION_BOOTCHECK=XXX,
-DXS_EXTERNAL=XXX,
-DXS_INTERNAL=XXX,
-DXPUSHmortal=XXX,
-DXSRETURN_UV=XXX,
-DXST_mUV=XXX,
-DXS_VERSION=XXX,
-DXSprePUSH=XXX,
-DXSubPPtmpAAAA=XXX,
...
-DXSubPPtmpAAAZ=XXX,
</example>
</flag>

<flag name="more_perl_funcs" class="forbidden" regexp="[-/]D(?:call_(?:argv|method|pv|sv)|eval_[ps]v|get_[achs]v[ns]?(?:_flags)?|grok_(?:bin|hex|number|numeric_radix|oct)|gv_stashpvn|m?X?PUSH[inpsu]|vnewSVpvf)(?:=\S*)?\b">
This macro is used to hold the name of a Perl internal function.  It may not
be set explicitly.
<example>
-Dcall_argv=XXX,
-Dcall_method=XXX,
-Dcall_pv=XXX,
-Dcall_sv=XXX,
-Deval_pv=XXX,
-Deval_sv=XXX,
-Dget_av=XXX,
-Dget_cv=XXX,
-Dget_cvn_flags=XXX,
-Dget_cvs=XXX,
-Dget_hv=XXX,
-Dget_sv=XXX,
-Dgrok_bin=XXX,
-Dgrok_hex=XXX,
-Dgrok_number=XXX,
-Dgrok_numeric_radix=XXX,
-Dgrok_oct=XXX,
-Dgv_stashpvn=XXX,
-DmPUSHi=XXX,
-DmPUSHn=XXX,
-DmPUSHp=XXX,
-DmPUSHs=XXX,
-DmPUSHu=XXX,
-DmXPUSHi=XXX,
-DmXPUSHn=XXX,
-DmXPUSHp=XXX,
-DmXPUSHs=XXX,
-DmXPUSHu=XXX,
-DvnewSVpvf=XXX,
-DPUSHi=XXX,
-DPUSHn=XXX,
-DPUSHp=XXX,
-DPUSHu=XXX
</example>
</flag>

<flag name="perl_tests" class="forbidden" regexp="[-/]D(?:__va_copy|_environ|asctime|assert|atan2|atof|bcmp|cos|crypt|ctermid|ctime|drand48|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|errno|exp|ff_next|fputs|fputc|fwrite1|getcwd_sv|getenv|GetEnvironmentStringsA|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getspnam|ghs|gmtime|h_addr|h_errno|htonl|htons|htovl|htovs|isXDIGIT|isascii|isALNUMC|isASCII|isBLANK|isCNTRL|isGRAPH|isGV_with_GP|isPRINT|isPSXSPC|isPUNCT|isWORDCHAR|is_LAX_VERSION|is_STRICT_VERSION|is_utf8_string|isnan|jmp_buf|localtime|log|major|memEQs?|memNEs?|memchr|memcmp|memcpy|memmove|memset|memzero|my_betohn|my_chsize|my_getpwent|my_htoben|my_htolen|my_letohn|ntohl|ntohs|poll|pow|random|readdir|readdir64|register|rewinddir|seekdir|setgrent|sethostent|setlocale|setnetent|setprotoent|setpwent|setservent|sin|sqrt|srand48|srandom|strchr|strerror|telldir|tmpnam|ttyname|va_copy|vtohl|vtohs)(?:=\S*)?\b">
This macro, if defined, may not be defined explicitly.
<example>
-D__va_copy=XXX,
-D_environ=XXX,
-Dasctime=XXX,
-Dassert=XXX,
-Datan2=XXX,
-Datof=XXX,
-Dbcmp=XXX,
-Dcos=XXX,
-Dcrypt=XXX,
-Dctermid=XXX,
-Dctime=XXX,
-Ddrand48=XXX,
-Dendgrent=XXX,
-Dendhostent=XXX,
-Dendnetent=XXX,
-Dendprotoent=XXX,
-Dendpwent=XXX,
-Dendservent=XXX,
-Derrno=XXX,
-Dexp=XXX,
-Dff_next=XXX,
-Dfputc=XXX,
-Dfputs=XXX,
-Dfwrite1=XXX,
-Dgetcwd_sv=XXX,
-Dgetenv=XXX,
-DGetEnvironmentStringsA=XXX,
-Dgetgrent=XXX,
-Dgetgrgid=XXX,
-Dgetgrnam=XXX,
-Dgethostbyaddr=XXX,
-Dgethostbyname=XXX,
-Dgethostent=XXX,
-Dgetlogin=XXX,
-Dgetnetbyaddr=XXX,
-Dgetnetbyname=XXX,
-Dgetnetent=XXX,
-Dgetprotobyname=XXX,
-Dgetprotobynumber=XXX,
-Dgetprotoent=XXX,
-Dgetpwent=XXX,
-Dgetpwnam=XXX,
-Dgetpwuid=XXX,
-Dgetservbyname=XXX,
-Dgetservbyport=XXX,
-Dgetservent=XXX,
-Dgetspnam=XXX,
-Dghs=XXX,
-Dgmtime=XXX,
-Dh_addr=XXX,
-Dh_errno=XXX,
-Dhtonl=XXX,
-Dhtons=XXX,
-Dhtovl=XXX,
-Dhtovs=XXX,
-DisXDIGIT=XXX,
-Disascii=XXX,
-Djmp_buf=XXX,
-Dlocaltime=XXX,
-Dlog=XXX,
-Dmajor=XXX,
-DmemEQ=XXX,
-DmemEQs=XXX,
-DmemNE=XXX,
-DmemNEs=XXX,
-Dmemchr=XXX,
-Dmemcmp=XXX,
-Dmemcpy=XXX,
-Dmemmove=XXX,
-Dmemset=XXX,
-Dmemzero=XXX,
-Dmy_betohn=XXX,
-Dmy_chsize=XXX,
-Dmy_getpwent=XXX,
-Dmy_htoben=XXX,
-Dmy_htolen=XXX,
-Dmy_letohn=XXX,
-Dntohl=XXX,
-Dntohs=XXX,
-Dpoll=XXX,
-Dpow=XXX,
-Drandom=XXX,
-Dreaddir=XXX,
-Dreaddir64=XXX,
-Dregister=XXX,
-Drewinddir=XXX,
-Dseekdir=XXX,
-Dsetgrent=XXX,
-Dsethostent=XXX,
-Dsetlocale=XXX,
-Dsetnetent=XXX,
-Dsetprotoent=XXX,
-Dsetpwent=XXX,
-Dsetservent=XXX,
-Dsin=XXX,
-Dsqrt=XXX,
-Dsrand48=XXX,
-Dsrandom=XXX,
-Dstrchr=XXX,
-Dstrerror=XXX,
-Dtelldir=XXX,
-Dtmpnam=XXX,
-Dttyname=XXX,
-Dva_copy=XXX,
-Dvtohl=XXX,
-Dvtohs=XXX,
-DisALNUMC=XXX,
-DisASCII=XXX,
-DisBLANK=XXX,
-DisCNTRL=XXX,
-DisGRAPH=XXX,
-DisGV_with_GP=XXX,
-DisPRINT=XXX,
-DisPSXSPC=XXX,
-DisPUNCT=XXX,
-DisWORDCHAR=XXX,
-Dis_LAX_VERSION=XXX,
-Dis_STRICT_VERSION=XXX,
-Dis_utf8_string=XXX,
-Disnan=XXX
</example>
</flag>

<flag name="various_minmax" class="forbidden" regexp="[-/]D(?:IV_MAX|IV_MIN|NV_INF|NV_MAX_10_EXP|NV_NAN|UV_MAX|UV_MIN)(?:=\S*)\b">
This symbol is set automatically and may not be set explicitly.
<example>
-DIV_MAX=XXX,
-DIV_MIN=XXX,
-DNV_INF=XXX,
-DNV_MAX_10_EXP=XXX,
-DNV_NAN=XXX,
-DUV_MAX=XXX,
-DUV_MIN=XXX
</example>
</flag>

<flag name="DStat_t" class="portability" regexp="[-/]DStat_t(?:=\S*)?\b">
<example>
-DStat_t=XXX
</example>
This macro contains the type that should be used when a 'struct stat' would be called for.
</flag>

<flag name="type_flags" class="portability" regexp="[-/]D((?:Uid|Time|Size|Mode)_t)(?:=\S*)?\b">
<example>
-DUid_t=uid_t,
-DTime_t=time_t,
-DSize_t=size_t,
-DMode_t=mode_t
</example>
This flag can be used to define what type should be used in place of the
standard $1 (this should be in lower case).
<ex_replacement>uid_t (or time_t, size_t, or mode_t)</ex_replacement>
</flag>

<flag name="DSighandler_t" class="forbidden" regexp="[-/]DSighandler_t(?:=\S*)?\b">
<example>
-DSighandler_t=XXX
</example>
It is forbidden to set this macro to a value other than its default.
</flag>

<flag name="DSignal_t" class="portability" regexp="[-/]DSignal_t=\S+\b">
This macro holds the return type of a signal handler.
<example>
-DSignal_t=XXX
</example>
</flag>

<flag name="DMalloc_t" class="portability" regexp="[-/]DMalloc_t=\S+\b">
This macro holds the return type of malloc() and the type of the argument to
free().
<example>
-DMalloc_t=XXX
</example>
</flag>

<flag name="use_forbidden" class="forbidden" regexp="[-/]D(?:PERL_REENTR_API|USE_?(?:5005THREADS|56_INTERWORK_KLUDGE|64_BIT_ALL|64_BIT_RAWIO|ATTRIBUTES_FOR_PERLIO|BIGBLOCK_ALLOC|BROKEN_PAD_RESET|BSDPGRP|BSD_GETPGRP|BSD_SETPGRP|CHAR_VSPRINTF|CROSS_COMPILE|DECLSPEC_THREAD|ENVIRON_ARRAY|FIXED_OSFHANDLE|GETHOSTENT_ERRNO|GETNETENT_ERRNO|GRENT_FPTR|GRENT_PTR|HASH_SEED|HASH_SEED_EXPLICIT|HOSTENT_ERRNO|HOSTENT_PTR|ITHREADS|LOCKF64|HEAPINSTEADOFSTACK|IMPORTLIB|MYBINMODE|NETENT_ERRNO|NETENT_PTR|NEXT_CTYPE|PERLIO|PERL_ATOF|PERL_SBRK|PFUNC|PROTOENT_ERRNO|PROTOENT_PTR|PURE_BISON|PWENT_FPTR|PWENT_PTR|REENTRANT|REENTRANT_API|RTL_POPEN|RTL_SPAWNVP|RTL_THREAD_API|SEMCTL_SEMID_DS|SEMCTL_SEMUN|SERVENT_ERRNO|SERVENT_PTR|SFIO|SPENT_FPTR|SPENT_PTR|STAT_BLOCKS|STDIO|THREADS|UTF8_SCRIPTS))(?:=\S*)?\b">
This flag either has no function in the benchmark version of the source,
or must not be changed from its default value.
<example>
-DUSE_5005THREADS,
-DUSE_56_INTERWORK_KLUDGE,
-DUSE_64_BIT_ALL,
-DUSE_64_BIT_RAWIO,
-DUSE_ATTRIBUTES_FOR_PERLIO,
-DUSE_BIGBLOCK_ALLOC,
-DUSE_BROKEN_PAD_RESET,
-DUSE_BSDPGRP,
-DUSE_BSD_GETPGRP,
-DUSE_BSD_SETPGRP,
-DUSE_CHAR_VSPRINTF,
-DUSE_CROSS_COMPILE,
-DUSE_DECLSPEC_THREAD,
-DUSE_ENVIRON_ARRAY,
-DUSE_FIXED_OSFHANDLE,
-DUSE_GETHOSTENT_ERRNO,
-DUSE_GETNETENT_ERRNO,
-DUSE_GRENT_FPTR,
-DUSE_GRENT_PTR,
-DUSE_HASH_SEED,
-DUSE_HASH_SEED_EXPLICIT,
-DUSE_HOSTENT_ERRNO,
-DUSE_HOSTENT_PTR,
-DUSE_ITHREADS,
-DUSE_LOCKF64,
-DUSEHEAPINSTEADOFSTACK,
-DUSEIMPORTLIB,
-DUSEMYBINMODE,
-DUSE_NETENT_ERRNO,
-DUSE_NETENT_PTR,
-DUSE_NEXT_CTYPE,
-DUSE_PERLIO,
-DUSE_PERL_ATOF,
-DUSE_PERL_SBRK,
-DUSE_PFUNC,
-DUSE_PROTOENT_ERRNO,
-DUSE_PROTOENT_PTR,
-DUSE_PURE_BISON,
-DUSE_PWENT_FPTR,
-DUSE_PWENT_PTR,
-DPERL_REENTR_API=XXX,
-DUSE_REENTRANT,
-DUSE_REENTRANT_API,
-DUSE_RTL_POPEN,
-DUSE_RTL_SPAWNVP,
-DUSE_RTL_THREAD_API,
-DUSE_SEMCTL_SEMID_DS,
-DUSE_SEMCTL_SEMUN,
-DUSE_SERVENT_ERRNO,
-DUSE_SERVENT_PTR,
-DUSE_SFIO,
-DUSE_SPENT_FPTR,
-DUSE_SPENT_PTR,
-DUSE_STAT_BLOCKS,
-DUSE_STDIO,
-DUSE_THREADS,
-DUSE_UTF8_SCRIPTS
</example>
</flag>

<flag name="DNO_ENV_ARRAY_IN_MAIN" class="portability">
This indicates that the invocation of main() on the target system does not include a pointer to the environment array.
</flag>

<flag name="use_more_bits" class="portability" regexp="[-/]DUSE_(?:64_BIT_STDIO|FCNTL64|FGETPOS64|FLOCK64|FOPEN64|FREOPEN64|FSEEK64|FSETPOS64|FSTAT64|FTELL64|FTRUNCATE64|LARGE_FILES|LLSEEK|LSEEK64|LSTAT64|MORE_BITS|OPEN64|STAT64|TMPFILE64|TRUNCATE64|LONG_DOUBLE)\b">
The benchmark does not use large files or highly precise floating point
numbers, but you may use these flags to try it out anyway.
<example>
-DUSE_64_BIT_STDIO,
-DUSE_FCNTL64,
-DUSE_FGETPOS64,
-DUSE_FLOCK64,
-DUSE_FOPEN64,
-DUSE_FREOPEN64,
-DUSE_FSEEK64,
-DUSE_FSETPOS64,
-DUSE_FSTAT64,
-DUSE_FTELL64,
-DUSE_FTRUNCATE64,
-DUSE_LARGE_FILES,
-DUSE_LLSEEK,
-DUSE_LSEEK64,
-DUSE_LSTAT64,
-DUSE_OPEN64,
-DUSE_STAT64,
-DUSE_TMPFILE64,
-DUSE_TRUNCATE64,
-DUSE_MORE_BITS,
-DUSE_LONG_DOUBLE
</example>
</flag>

<flag name="use_locale" class="portability" regexp="[-/]DUSE_LOCALE(?:_COLLATE|_CTYPE|_NUMERIC)?\b">
Using a locale other than "C" will most likely cause the benchmark to
miscompare, but you're still welcome to try.
<example>
-DUSE_LOCALE,
-DUSE_LOCALE_COLLATE,
-DUSE_LOCALE_CTYPE,
-DUSE_LOCALE_NUMERIC
</example>
</flag>

<flag name="DSPEC_CONST64_LL" class="portability">
If your compiler requires 64-bit integer constants to be noted with an "LL"
suffix instead of "i64", use this flag.
</flag>

<flag name="DSPEC_NEED_POSIX_IDS" class="portability">
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.
</flag>

<flag name="DPERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS" class="forbidden">
<include flag="DEXPERIMENTAL_INPLACESCAN" />
This flag enables experimental optimizations in the Perl regular expression parser and may not be set manually.
</flag>

<flag name="DCHAR_BIT" class="portability">
This macro defines the number of bits in a byte on the target system.
</flag>

<flag name="DCLOCKS_PER_SEC" class="forbidden">
This macro is used internally by code in Time::HiRes.  It is not used in the benchmark and may not be set manually.
</flag>

<flag name="DCLOCK_HIGHRES" class="forbidden">
This macro is used internally by code in Time::HiRes.  It is not used in the benchmark and may not be set manually.
</flag>

<flag name="DCLOCK_MONOTONIC" class="forbidden">
This macro is used internally by code in Time::HiRes.  It is not used in the benchmark and may not be set manually.
</flag>

<flag name="DCLOCK_PROCESS_CPUTIME_ID" class="forbidden">
This macro is used internally by code in Time::HiRes.  It is not used in the benchmark and may not be set manually.
</flag>

<flag name="DCLOCK_REALTIME" class="forbidden">
This macro is used internally by code in Time::HiRes.  It is not used in the benchmark and may not be set manually.
</flag>

<flag name="DCLOCK_SOFTTIME" class="forbidden">
This macro is used internally by code in Time::HiRes.  It is not used in the benchmark and may not be set manually.
</flag>

<flag name="DCLOCK_THREAD_CPUTIME_ID" class="forbidden">
This macro is used internally by code in Time::HiRes.  It is not used in the benchmark and may not be set manually.
</flag>

<flag name="DCLOCK_TIMEOFDAY" class="forbidden">
This macro is used internally by code in Time::HiRes.  It is not used in the benchmark and may not be set manually.
</flag>

<flag name="DConst64" class="portability">
This macro defines a concatenation that can be used to create a 64-bit constant.
</flag>

<flag name="DDD_USE_OLD_ID_FORMAT" class="forbidden">
This macro is used internally by Data::Dumper and may not be set explicitly.
</flag>

<flag name="DDEBUG_DUMPUNTIL" class="forbidden">
Enable debugging output from the regexp parser.  Use of this flag
is forbidden for reportable runs.
</flag>

<flag name="scalar_debug" class="forbidden" regexp="[-/]DDEBUG_LEAKING_SCALARS_(?:FORK_DUMP|ABORT)(?:\s|$)">
  <example>
    -DDEBUG_LEAKING_SCALARS_FORK_DUMP,
    -DDEBUG_LEAKING_SCALARS_ABORT
  </example>
Enables debugging output for SVs that are potentially being leaked.  Use of this flag is forbidden for reportable runs.
</flag>

<flag name="DEXPERIMENTAL_INPLACESCAN" class="forbidden">
This flag enables an experimental optimization in the Perl regular expression parser and may not be set.
</flag>

<flag name="DFAKE_BIT_BUCKET" class="forbidden">
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.
</flag>

<flag name="DPERL_ENABLE_POSITIVE_ASSERTION_STUDY" class="forbidden">
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.
</flag>

<flag name="DPERL_ENABLE_EXTENDED_TRIE_OPTIMISATION" class="forbidden">
<include flag="DTRIE_STUDY_OPT" />
<include flag="DFULL_TRIE_STUDY" />
<include flag="DTRIE_STCLASS" />
This macro enables some experimental regular expression engine optimizations, and may not be used for reportable runs.
</flag>

<flag name="DTRIE_STCLASS" class="forbidden">
This macro enables some experimental regular expression engine optimizations, and may not be used for reportable runs.
</flag>

<flag name="DTRIE_STUDY_OPT" class="forbidden">
This macro enables some experimental regular expression engine optimizations, and may not be used for reportable runs.
</flag>

<flag name="DFULL_TRIE_STUDY" class="forbidden">
This macro enables some experimental regular expression engine optimizations, and may not be used for reportable runs.
</flag>

<flag name="DNOJUMPTRIE" class="forbidden">
This macro disables a regular expression engine optimization, and may not be used for reportable runs.
</flag>

<flag name="HASATTRIBUTE" regexp="[-/]DHASATTRIBUTE(?:_(?:FORMAT|MALLOC|NONNULL|NORETURN|PURE|UNUSED|WARN_UNUSED_RESULT))?" class="forbidden">
<example>-DHASATTRIBUTE_FORMAT, -DHASATTRIBUTE_MALLOC, -DHASATTRIBUTE_NONNULL, -DHASATTRIBUTE_NORETURN, -DHASATTRIBUTE_PURE, -DHASATTRIBUTE_UNUSED, -DHASATTRIBUTE_WARN_UNUSED_RESULT</example>
These macros indicate the presence of attribute flags that the compiler supports.  They may not be set for a reportable run.
</flag>

<flag name="DNORETURN_FUNCTION_END" class="forbidden">
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.
</flag>

<flag name="DHAS_AIX_POWL_NEG_BASE_BUG" class="portability">
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.
</flag>

<flag name="DHAS_BUILTIN_CHOOSE_EXPR" class="forbidden">
This macro has no function and may not be set for reportable runs.
</flag>

<flag name="DHAS_BUILTIN_EXPECT" class="forbidden">
This macro indicates the presence of the _builtin_expect compiler intrinsic and may not be set for reportable runs.
</flag>

<flag name="DHAS_C99_VARIADIC_MACROS" class="portability">
This macro indicates that the compiler supports C99-style variadic macros.
</flag>

<flag name="DHAS_CLEARENV" class="portability">
This macro indicates that a clearenv() function is available to clear out all environment variables.
</flag>

<flag name="DHAS_DIRFD" class="portability">
This macro indicates that a dirfd() function is available for getting the file descriptor of an open directory handle.
</flag>

<flag name="DHAS_DIR_DD_FD" class="portability">
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.
</flag>

<flag name="DPERL_DRAND48_QUAD" class="forbidden">
  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.
</flag>

<flag name="DHAS_FUTIMES" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DHAS_GETHOSTNAME" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DHAS_MKTEMP" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="malloc_size" regexp="[-/]D(?:I_MALLOCMALLOC|HAS_MALLOC_(?:GOOD_)?SIZE|Perl_safesysmalloc_size)(?:=\S*)?\b" class="forbidden">
  <example>
    -DI_MALLOCMALLOC,
    -DHAS_MALLOC_SIZE,
    -DHAS_MALLOC_GOOD_SIZE,
    -DPerl_safesysmalloc_size=XXX
  </example>
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DHAS_SNPRINTF" class="portability">
This macro indicates the presence of an snprintf() function.
</flag>

<flag name="DHAS_UNSETENV" class="portability">
This macro indicates the presence of an unsetenv() function.
</flag>

<flag name="DHAS_VSNPRINTF" class="portability">
This macro indicates the presence of a vsnprintf() function.
</flag>

<flag name="DHWND_MESSAGE" class="portability">
This macro indicates that HWND_MESSAGE windows are available.  It has no effect on non-Win32 platforms.
</flag>

<flag name="HvAccess" regexp="[-/]DHv(?:EITER|NAME|RITER)_[sg]et(?:=\S+)?" class="forbidden">
<example>-DHvEITER_get=XXX,
         -DHvEITER_set=XXX,
         -DHvNAME_get=XXX,
         -DHvNAME_set=XXX,
         -DHvRITER_get=XXX,
         -DHvRITER_set=XXX
</example>
These macros are set and used internally by Perl and may not be set explicitliy.
</flag>

<flag name="DPRINTF_FORMAT_NULL_OK" class="forbidden">
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.
</flag>

<flag name="DCLONEf_JOIN_IN" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DC_FAC_POSIX" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="infinity" regexp="[-/]DINF(?:INITY)?\b" class="portability">
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.
</flag>

<flag name="DIN_LOCALE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="unused_includes" regexp="[-/]DI_(?:ASSERT|SYSUIO)\b" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DLOCALTIME_R_NEEDS_TZSET" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="mad_ness" regexp="[-/]D(?:PERL_)?MAD" class="forbidden">
These macros have no function in the benchmark version of the source; their use is
forbidden.
</flag>

<flag name="maxsignals" regexp="[-/]D(?:_?NSIG|MAX_?SIG|_sys_nsig)(?:=\S*)?\b" class="forbidden">
<example>
  -DMAX_SIG=NNN,
  -DMAXSIG=NNN,
  -DNSIG=NNN,
  -D_NSIG=NNN,
  -D_sys_nsig=NNN
</example>
These macros have no function in the benchmark version of the source; their use is
forbidden.
</flag>

<flag name="DMAX_RECURSE_EVAL_NOCHANGE_DEPTH" class="forbidden">
This macro is used internally by Perl.  Setting it explicitly is not allowed.
</flag>

<flag name="mem_log" regexp="[-/]D(?:PERL_)?MEM_LOG(?:_(?:ALLOC|FREE|REALLOC|ENV|ENV_FD|FD|NOIMPL|STDERR|TIMESTAMP))?(?:=\S*)?\b" class="forbidden">
<example>-DPERL_MEM_LOG,
         -DPERL_MEM_LOG_ENV,
         -DPERL_MEM_LOG_ENV_FD=XXX,
         -DPERL_MEM_LOG_FD=XXX,
         -DPERL_MEM_LOG_NOIMPL,
         -DPERL_MEM_LOG_STDERR,
         -DPERL_MEM_LOG_TIMESTAMP,
         -DMEM_LOG_ALLOC=XXX,
         -DMEM_LOG_FREE=XXX,
         -DMEM_LOG_REALLOC=XXX
</example>
These flags enable and specify behavior of debug logging of Perl's memory allocation activities.  They may not be set for a reportable run.
</flag>

<flag name="DNAN_COMPARE_BROKEN" class="portability">
This macro indicates that direct comparison of NaN values doesn't return correct answers.
</flag>

<flag name="hires_junk" regexp="[-/]D(?:ARGSproto|(?:NEED_|DPPP_)?(?:PL_signals|PL_parser|v?load_module|my_sn?printf|my_strlcat|my_strlcpy|newSV_type|newSVpv[ns]_(?:flags|share|utf8)|newXS_flags|pv_(?:display|escape|pretty)|sv_2pv_flags|sv_pvn_force_flags|v?warner)(?:_GLOBAL|_NO_DUMMY|_NO_DUMMY_WARNING)?)(?:=\S*)?\b" class="forbidden">
<example>
  -DARGSproto=XXX,
  -DNEED_PL_parser,
  -DNEED_PL_parser_GLOBAL,
  -DNEED_PL_signals,
  -DNEED_PL_signals_GLOBAL,
  -DNEED_load_module,
  -DNEED_load_module_GLOBAL,
  -DNEED_my_snprintf,
  -DNEED_my_snprintf_GLOBAL,
  -DNEED_my_sprintf,
  -DNEED_my_sprintf_GLOBAL,
  -DNEED_my_strlcat,
  -DNEED_my_strlcat_GLOBAL,
  -DNEED_my_strlcpy,
  -DNEED_my_strlcpy_GLOBAL,
  -DNEED_newSV_type,
  -DNEED_newSV_type_GLOBAL,
  -DNEED_newSVpvn_flags,
  -DNEED_newSVpvn_flags_GLOBAL,
  -DNEED_newSVpvn_share,
  -DNEED_newSVpvn_share_GLOBAL,
  -DNEED_pv_display,
  -DNEED_pv_display_GLOBAL,
  -DNEED_pv_escape,
  -DNEED_pv_escape_GLOBAL,
  -DNEED_pv_pretty,
  -DNEED_pv_pretty_GLOBAL,
  -DNEED_sv_2pv_flags,
  -DNEED_sv_2pv_flags_GLOBAL,
  -DNEED_sv_pvn_force_flags,
  -DNEED_sv_pvn_force_flags_GLOBAL,
  -DNEED_vload_module,
  -DNEED_vload_module_GLOBAL,
  -DNEED_warner,
  -DNEED_warner_GLOBAL,
  -DPPP_PL_parser_NO_DUMMY,
  -DPPP_PL_parser_NO_DUMMY_WARNING,
  -Dload_module,
  -Dmy_snprintf,
  -Dmy_sprintf,
  -Dmy_strlcat,
  -Dmy_strlcpy,
  -DnewSVpvn_flags,
  -DnewSVpvn_share,
  -DnewSVpvn_utf8,
  -DnewSVpvs_flags,
  -DnewSVpvs_share,
  -DnewXS_flags,
  -Dpv_display=XXX,
  -Dpv_escape=XXX,
  -Dpv_pretty=XXX,
  -Dsv_2pv_flags,
  -Dsv_pvn_force_flags,
  -Dvload_module,
  -Dvwarner,
  -Dwarner
</example>
These macros have no function in the benchmark version of the source; their use is
forbidden.
</flag>

<flag name="sha_stuff" regexp="[-/]D(?:NO_SHA_384_512|SHA32_MAX|SHA32_SCHED|SHA64|SHA64_SCHED|SHA_384_512|SHA_PERL_MODULE|SHA_STO_CLASS|SHA_THREAD_SAFE|SHA_ULL_EXISTS)" class="forbidden">
<example>
-DNO_SHA_384_512,
-DSHA32_MAX,
-DSHA32_SCHED,
-DSHA64,
-DSHA64_SCHED,
-DSHA_384_512,
-DSHA_PERL_MODULE,
-DSHA_STO_CLASS,
-DSHA_THREAD_SAFE,
-DSHA_ULL_EXISTS
</example>
These macros have no function in the benchmark version of the source; their use is
forbidden.
</flag>

<flag name="DNV_ZERO_IS_ALLBITS_ZERO" class="portability">
This macro indicates that the in-memory representation of 0 for whatever type is the native NV type is 0 in memory.
</flag>

<flag name="news" regexp="[-/]DNewx(?:c|z)?(?:=\S*)?\b" class="forbidden">
<example>
-DNewx=XXX,
-DNewxc=XXX,
-DNewxz=XXX
</example>
These macros are used internally by Perl.  Setting them explicitly is not allowed.
</flag>

<flag name="static_inline" regexp="[-/]D(?:HAS|PERL)_STATIC_INLINE(?:=\S*)?\b" class="portability">
  <example>
    -DPERL_STATIC_INLINE="static inline"
    -DHAS_STATIC_INLINE,
  </example>
  <![CDATA[
  <p>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".</p>
  <p>If PERL_STATIC_INLINE is defined, the definition (or not) of
    HAS_STATIC_INLINE is ignored.</p>
  ]]>
</flag>

<flag name="statics" regexp="[-/]D(?:STATIC\d*|PERL_STATIC_(?:INLINE_)?NO_RET)(?:=\S*)?\b" class="forbidden">
  <example>
    -DSTATIC=static,
    -DPERL_STATIC_NO_RET=STATIC,
    -DPERL_STATIC_INLINE_NO_RET=PERL_STATIC_INLINE,
  </example>
This macro cannot be set to a value other than its default of "static".
</flag>

<flag name="xopen_source" regexp="[-/]D_XOPEN_SOURCE(?:_EXTENDED)?" class="portability">
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.
<example>
-D_XOPEN_SOURCE=XXX,
-D_XOPEN_SOURCE_EXTENDED=XXX
</example>
</flag>

<flag name="warnings" regexp="[-/]DWARN_(?:ALL|AMBIGUOUS|ASSERTIONS|BAREWORD|CLOSED|CLOSURE|DEBUGGING|DEPRECATED|DIGIT|EXEC|EXITING|GLOB|INPLACE|INTERNAL|IO|LAYER|MALLOC|MISC|NEWLINE|NUMERIC|ONCE|OVERFLOW|PACK|PARENTHESIS|PIPE|PORTABLE|PRECEDENCE|PRINTF|PROTOTYPE|QW|RECURSION|REDEFINE|REGEXP|RESERVED|SEMICOLON|SEVERE|SIGNAL|SUBSTR|SYNTAX|TAINT|THREADS|UNINITIALIZED|UNOPENED|UNPACK|UNTIE|UTF8|VOID)(?:=\S*)\b" class="forbidden">
<example>
-DWARN_ALL=NNN,
-DWARN_AMBIGUOUS=NNN,
-DWARN_ASSERTIONS=NNN,
-DWARN_BAREWORD=NNN,
-DWARN_CLOSED=NNN,
-DWARN_CLOSURE=NNN,
-DWARN_DEBUGGING=NNN,
-DWARN_DEPRECATED=NNN,
-DWARN_DIGIT=NNN,
-DWARN_EXEC=NNN,
-DWARN_EXITING=NNN,
-DWARN_GLOB=NNN,
-DWARN_INPLACE=NNN,
-DWARN_INTERNAL=NNN,
-DWARN_IO=NNN,
-DWARN_LAYER=NNN,
-DWARN_MALLOC=NNN,
-DWARN_MISC=NNN,
-DWARN_NEWLINE=NNN,
-DWARN_NUMERIC=NNN,
-DWARN_ONCE=NNN,
-DWARN_OVERFLOW=NNN,
-DWARN_PACK=NNN,
-DWARN_PARENTHESIS=NNN,
-DWARN_PIPE=NNN,
-DWARN_PORTABLE=NNN,
-DWARN_PRECEDENCE=NNN,
-DWARN_PRINTF=NNN,
-DWARN_PROTOTYPE=NNN,
-DWARN_QW=NNN,
-DWARN_RECURSION=NNN,
-DWARN_REDEFINE=NNN,
-DWARN_REGEXP=NNN,
-DWARN_RESERVED=NNN,
-DWARN_SEMICOLON=NNN,
-DWARN_SEVERE=NNN,
-DWARN_SIGNAL=NNN,
-DWARN_SUBSTR=NNN,
-DWARN_SYNTAX=NNN,
-DWARN_TAINT=NNN,
-DWARN_THREADS=NNN,
-DWARN_UNINITIALIZED=NNN,
-DWARN_UNOPENED=NNN,
-DWARN_UNPACK=NNN,
-DWARN_UNTIE=NNN,
-DWARN_UTF8=NNN,
-DWARN_VOID=NNN
</example>
These macros are used to define the internal values for some Perl flags, and may not be set explicitly.
</flag>

<flag name="timer_junk" regexp="[-/]D(?:TIMER_ABSTIME|TIME_HIRES_(?:CLOCK|CLOCK_GETRES|CLOCK_GETRES_SYSCALL|CLOCK_GETTIME|CLOCK_GETTIME_SYSCALL|CLOCK_NANOSLEEP|STAT)|_STRUCT_ITIMERSPEC)(?:=\S*)?\b" class="forbidden">
<example>
-DTIMER_ABSTIME=XXX,
-DTIME_HIRES_CLOCK=XXX,
-DTIME_HIRES_CLOCK_GETRES=XXX,
-DTIME_HIRES_CLOCK_GETRES_SYSCALL=XXX,
-DTIME_HIRES_CLOCK_GETTIME=XXX,
-DTIME_HIRES_CLOCK_GETTIME_SYSCALL=XXX,
-DTIME_HIRES_CLOCK_NANOSLEEP=XXX,
-DTIME_HIRES_STAT=XXX,
-D_STRUCT_ITIMERSPEC=XXX
</example>
These macros have no function in the benchmark version of the source; their use is
forbidden.
</flag>

<flag name="DNO_MATHOMS" class="forbidden">
Defining this macro causes the binary compatibility stubs to be omitted from
compilation.  It may not be used for a reportable run.
</flag>

<flag name="DUSE_PPPORT_H" class="forbidden">
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.
</flag>

<flag name="DPERLIO_FUNCS_DECL" class="forbidden">
  This macro controls how PerlIO functions are declared.  It may not be set for
  a reportable run.
</flag>

<flag name="DPERLIO_FUNCS_CONST" class="forbidden">
This macro controls whether or not functions in the PerlIO layer are declared
const.  It may not be set for a reportable run.
</flag>

<flag name="DPERLIO_STD_SPECIAL" class="forbidden">
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.
</flag>

<flag name="DPERL_ABS" class="forbidden">
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.
</flag>

<flag name="DPERL_BCDVERSION" class="forbidden">
This macro encodes the version of Perl in BCD.  Changing its value is not
allowed for reportable runs.
</flag>

<flag name="DPERL_DEBUG_COW" class="forbidden">
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.
</flag>

<flag name="DPERL_DEBUG_READONLY_OPS" class="forbidden">
This macro controls debugging checks and output for read-only conversions in
the slab allocator.  It may not be set for reportable runs.
</flag>

<flag name="DPERL_CREATE_GVSV" class="forbidden">
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.
</flag>

<flag name="DPERL_DONT_CREATE_GVSV" class="forbidden">
This is the default setting for Perl and so doesn't need to be set explicitly.
</flag>

<flag name="DPERL_DEFAULT_DO_EXEC3_IMPLEMENTATION" class="forbidden">
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.
</flag>

<flag name="export_macro" class="forbidden" regexp="[-/]DPERL_(?:XS_)?EXPORT_C(?:=\S*)?\b">
<example>
-DPERL_EXPORT_C=export,
-DPERL_XS_EXPORT_C=export
</example>
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.
</flag>

<flag name="perl_var_ops" class="forbidden" regexp="[-/]DPERL_(?:UNSET|SET|GET)_VARS(?:=\S*)?\b">
<example>
-DPERL_GET_VARS=XXX,
-DPERL_SET_VARS=XXX,
-DPERL_UNSET_VARS=XXX
</example>
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.
</flag>

<flag name="loadmod_flags" class="forbidden" regexp="[-/]DPERL_LOADMOD_(?:DENY|IMPORT_OPS|NOIMPORT)(?:=\S*)?\b">
<example>
-DPERL_LOADMOD_DENY=0x1,
-DPERL_LOADMOD_IMPORT_OPS=0x2,
-DPERL_LOADMOD_NOIMPORT=0x4
</example>
Setting these macros to a value other than default is forbidden.
</flag>

<flag name="hv_funcs" class="forbidden" regexp="[-/]Dhv_(?:fetch|fetchs|store|stores)(?:=\S*)?\b">
<example>
-Dhv_fetch=XXX,
-Dhv_fetchs=XXX,
-Dhv_store=XXX,
-Dhv_stores=XXX
</example>
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
</flag>

<flag name="gv_funcs" class="forbidden" regexp="[-/]Dgv_(?:fetch|stash)(?:pvn_flags|pvs|sv)(?:=\S*)?\b">
<example>
-Dgv_fetchpvn_flags=XXX,
-Dgv_fetchpvs=XXX,
-Dgv_fetchsv=XXX,
-Dgv_stashpvs=XXX
</example>
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
</flag>

<flag name="DPERL_NEED_APPCTX" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DPERL_NEED_TIMESBASE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="DPERL_OLD_COPY_ON_WRITE" class="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.
</flag>

<flag name="DPERL_NEW_COPY_ON_WRITE" class="forbidden">
  This is the default, and setting it wouldn't change that.
</flag>

<flag name="DPERL_POISON" class="forbidden">
This macro enables some memory-allocation checking.  It may not be set for a
reportable run.
</flag>

<flag name="DPERL_PPADDR_INITED" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DPERL_REENTRANT_MAXSIZE" class="forbidden" regexp="[-/]DPERL_REENTRANT_MAXSIZE(?:=\S*)?\b">
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.
</flag>

<flag name="inc_flags" regexp="[-/]DPERL_RELOCATABLE_INC(?:PUSH)?(?:=\S*)?\b" class="forbidden">
This macro has no function in the benchmark and may not be set for reportable runs.
</flag>

<flag name="DPERL_SIGNALS_UNSAFE_FLAG" class="forbidden">
Setting this macro to a value other than its default is forbidden.
</flag>

<flag name="DPERL_STRLEN_ROUNDUP_QUANTUM" class="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.
</flag>

<flag name="perl_start_n_stop" class="forbidden" regexp="[-/]DPERL_SYS_(?:INIT3|INIT|TERM)_BODY(?:=\S*)\b">
<example>
-DPERL_SYS_INIT3_BODY=XXX,
-DPERL_SYS_INIT_BODY=XXX,
-DPERL_SYS_TERM_BODY=XXX
</example>
These macros contain the functions used for startup and shutdown of the Perl
interpreter.  They may not be changed from their default values.
</flag>

<flag name="DPERL_TRACK_MEMPOOL" class="forbidden">
This macro enables internal debugging information for memory allocations.  It
may not be set for reportable runs.
</flag>

<flag name="DPERL_UNUSED_ARG" class="forbidden">
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.
</flag>

<flag name="DPERL_UNUSED_CONTEXT" class="forbidden">
This macro has no function in the benchmark source, and may not be explicitly
set for reportable runs.
</flag>

<flag name="DPERL_UNUSED_DECL" class="forbidden">
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.
</flag>

<flag name="DPERL_UNUSED_VAR" class="forbidden">
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.
</flag>

<flag name="DPERL_USES_PL_PIDSTATUS" class="forbidden">
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.
</flag>

<flag name="DPERL_USE_LARGE_HV_ALLOC" class="forbidden">
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.
</flag>

<flag name="DPLUGGABLE_RE_EXTENSION" class="forbidden">
This macro indicates that pluggable regular expression extensions are to be
accomodated.  Defining it will cause the benchmark build to break.
</flag>

<flag name="pointer_casting" class="portability" regexp="[-/]DPTR2(?:ul|IV|NV|UV|nat)(?:\([^\)]+\))?(?:=\S*)?\b">
  These parameterized macros define the method to cast a pointer type to various other Perl internal and natural types.
</flag>

<flag name="DPUSHmortal" class="forbidden">
This macro is the function used to push a mortal SV onto the stack.  Its
default value may not be changed.
</flag>

<flag name="DRE_TRACK_PATTERN_OFFSETS" class="forbidden">
This macro enables extra debug state storage and output in the regular
expression engine.  It may not be used for reportable runs.
</flag>

<flag name="DSET_INVALID_PARAMETER_HANDLER" class="forbidden">
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.
</flag>

<flag name="DSIABUFSIZ" class="forbidden">
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.
</flag>

<flag name="fcntl_ops" class="forbidden" regexp="[-/]DF_(?:DUPFD|FREESP|LOCK|[TU]LOCK|SETFD|TEST)(?:=\S*)?\b">
These lock constants should be supplied by your system header files.  They
may not be set directly.
<example>
-DF_DUPFD=XXX,
-DF_FREESP=XXX,
-DF_LOCK=XXX,
-DF_TLOCK=XXX,
-DF_ULOCK=XXX,
-DF_SETFD=XXX,
-DF_TEST=XXX
</example>
</flag>

<flag name="DHAS_MKDIR" class="portability">
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.
</flag>

<flag name="DSPEC_NO_HAS_MKDIR" class="portability">
This macro prevents HAS_MKDIR from being defined.
</flag>

<flag name="DSPRINTF_RETURNS_STRLEN" class="portability">
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.
</flag>

<flag name="DSPEC_NO_SPRINTF_RETURNS_STRLEN" class="portability">
This macro prevents SPRINTF_RETURNS_STRLEN from being defined.
</flag>

<flag name="sv_stuff" class="forbidden" regexp="[-/]D(?:SV_(?:CHECK_THINKFIRST|CONST_RETURN|COW_DROP_PV|COW(?:BUF)?_(?:(?:MAX_)?WASTE_(?:FACTOR_)?)?THRESHOLD|COW_SHARED_HASH_KEYS|DO_COW_SVSETSV|GMAGIC|HAS_TRAILING_NUL|IMMEDIATE_UNREF|MUTABLE_RETURN|NOSTEAL|SMAGIC|UTF8_NO_ENCODING)|SVf(?:ARG|_|_IsCOW|_UTF8)|Sv(?:IOK_UV|IsCOW|MAGIC_set|PVX_const|PVX_mutable|PV_const|PV_flags|PV_flags_const|PV_flags_const_nolen|PV_flags_mutable|PV_force|PV_force_flags|PV_force_flags_mutable|PV_force_flags_nolen|PV_force_mutable|PV_force_nolen|PV_force_nomg_nolen|PV_mutable|PV_nolen_const|PV_nomg_const|PV_nomg_const_nolen|REFCNT_inc|REFCNT_inc_NN|REFCNT_inc_simple|REFCNT_inc_simple_NN|REFCNT_inc_simple_void|REFCNT_inc_simple_void_NN|REFCNT_inc_void|REFCNT_inc_void_NN|RV_set|SHARED_HASH|STASH_set|UOK|UTF8|UV_set|VOK|VSTRING_mg|WEAKREF))(?:=\S*)?\b">
These macros define properties and functions for use with Perl's internal
scalar representation.  They may not be changed from the default.
<example>
-DSV_CHECK_THINKFIRST=XXX,
-DSV_CONST_RETURN=XXX,
-DSV_COWBUF_THRESHOLD=XXX,
-DSV_COWBUF_WASTE_FACTOR_THRESHOLD=XXX,
-DSV_COWBUF_WASTE_THRESHOLD=XXX,
-DSV_COW_MAX_WASTE_FACTOR_THRESHOLD=XXX,
-DSV_COW_MAX_WASTE_THRESHOLD=XXX,
-DSV_COW_THRESHOLD=XXX,
-DSV_COW_DROP_PV=XXX,
-DSV_COW_SHARED_HASH_KEYS=XXX,
-DSV_DO_COW_SVSETSV=XXX,
-DSV_GMAGIC=XXX,
-DSV_HAS_TRAILING_NUL=XXX,
-DSV_IMMEDIATE_UNREF=XXX,
-DSV_MUTABLE_RETURN=XXX,
-DSV_NOSTEAL=XXX,
-DSV_SMAGIC=XXX,
-DSV_UTF8_NO_ENCODING=XXX,
-DSVf_IsCOW=XXX,
-DSVf_UTF8=XXX,
-DSVf_=XXX,
-DSvIOK_UV=XXX,
-DSvIsCOW=XXX,
-DSvMAGIC_set=XXX,
-DSvPVX_const=XXX,
-DSvPVX_mutable=XXX,
-DSvPV_const=XXX,
-DSvPV_flags=XXX,
-DSvPV_flags_const=XXX,
-DSvPV_flags_const_nolen=XXX,
-DSvPV_flags_mutable=XXX,
-DSvPV_force=XXX,
-DSvPV_force_flags=XXX,
-DSvPV_force_flags_mutable=XXX,
-DSvPV_force_flags_nolen=XXX,
-DSvPV_force_mutable=XXX,
-DSvPV_force_nolen=XXX,
-DSvPV_force_nomg_nolen=XXX,
-DSvPV_mutable=XXX,
-DSvPV_nolen_const=XXX,
-DSvPV_nomg_const=XXX,
-DSvPV_nomg_const_nolen=XXX,
-DSvREFCNT_inc=XXX,
-DSvREFCNT_inc_NN=XXX,
-DSvREFCNT_inc_simple=XXX,
-DSvREFCNT_inc_simple_NN=XXX,
-DSvREFCNT_inc_simple_void=XXX,
-DSvREFCNT_inc_simple_void_NN=XXX,
-DSvREFCNT_inc_void=XXX,
-DSvREFCNT_inc_void_NN=XXX,
-DSvRV_set=XXX,
-DSvSHARED_HASH=XXX,
-DSvSTASH_set=XXX,
-DSvUOK=XXX,
-DSvUTF8=XXX,
-DSvUV_set=XXX,
-DSvVOK=XXX,
-DSvVSTRING_mg=XXX,
-DSvWEAKREF=XXX
</example>
</flag>

<flag name="DSTR_WITH_LEN" class="forbidden" regexp="[-/]DSTR_WITH_LEN(?:=\S*)?\b">
<example>
-DSTR_WITH_LEN=XXX
</example>
This macro defines the contents of one of Perl's internal functions.
Setting it to a non-default value is forbidden.
</flag>

<flag name="DTYPE_IS_SHRIEKING" class="forbidden">
This macro is used and set internally by Perl and may not be set explicitly.
</flag>

<flag name="DUSE_HEAP_INSTEAD_OF_STACK" class="forbidden">
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.
</flag>

<flag name="DUSE_IEEE" class="forbidden">
This macro has no function in the benchmark version of the source and may not
be set for reportable runs.
</flag>

<flag name="Dptr_table_new" class="forbidden">
This macro causes USE_PTR_TABLE to be defined in the Storable extension.  It
may not be used for a reportable run.
<include flag="DUSE_PTR_TABLE" />
</flag>

<flag name="DUSE_PTR_TABLE" class="forbidden">
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.
</flag>

<flag name="DWCOREDUMP" class="portability" regexp="[-/]DWCOREDUMP(?:\([^)]+\))(?:=\S*)?\b">
<example>
-DWCOREDUMP(x)=((x)&amp;0200)
</example>
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.
</flag>

<flag name="DWIFEXITED" class="portability" regexp="[-/]DWIFEXITED(?:\([^)]+\))(?:=\S*)?\b">
<example>
-DWIFEXITED(x)=(((x)&amp;0177)==0)
</example>
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.
</flag>

<flag name="DWC_NO_BEST_FIT_CHARS" class="forbidden">
This macro has no function in the benchmark version of the source, and may not
be set for a reportable run.
</flag>

<flag name="DUTF8_MAXBYTES" class="forbidden">
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.
</flag>

<flag name="D_IOC_SIZE" class="portability" regexp="[-/]D_IOC_SIZE(?:=\S*)?\b">
<example>
-D_IOC_SIZE=256
</example>
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.
</flag>

<flag name="D__FD_SETSIZE" class="forbidden">
This macro has no function in the benchmark version of the source; its use is
forbidden.
</flag>

<flag name="ipv6_constants" class="forbidden" regexp="[-/]DIPV6_(?:ADD_MEMBERSHIP|DROP_MEMBERSHIP|HDRINCL|HOPLIMIT|JOIN_GROUP|LEAVE_GROUP|MULTICAST_HOPS|MULTICAST_IF|MULTICAST_LOOP|PKTINFO|PROTECTION_LEVEL|UNICAST_HOPS)(?:=\S*)?\b">
<example>
-DIPV6_ADD_MEMBERSHIP=XXX,
-DIPV6_DROP_MEMBERSHIP=XXX,
-DIPV6_HDRINCL=XXX,
-DIPV6_HOPLIMIT=XXX,
-DIPV6_JOIN_GROUP=XXX,
-DIPV6_LEAVE_GROUP=XXX,
-DIPV6_MULTICAST_HOPS=XXX,
-DIPV6_MULTICAST_IF=XXX,
-DIPV6_MULTICAST_LOOP=XXX,
-DIPV6_PKTINFO=XXX,
-DIPV6_PROTECTION_LEVEL=XXX,
-DIPV6_UNICAST_HOPS=XXX
</example>
These IPv6 constants are not used in the benchmark and may not be set explicitly.
</flag>

<flag name="winsock_stuff" class="forbidden" regexp="[-/]DNI_(?:DGRAM|NAMEREQD|NOFQDN|NUMERICHOST|NUMERICSERV)(?:=\S*)?\b">
<example>
-DNI_DGRAM=XXX,
-DNI_NAMEREQD=XXX,
-DNI_NOFQDN=XXX,
-DNI_NUMERICHOST=XXX,
-DNI_NUMERICSERV=XXX
</example>
These constants are not used in the benchmark and may not be set explicitly.
</flag>

<flag name="pv_display_flags" class="forbidden" regexp="[-/]DPERL_PV_(?:ESCAPE_ALL|ESCAPE_FIRSTCHAR|ESCAPE_NOBACKSLASH|ESCAPE_NOCLEAR|ESCAPE_QUOTE|ESCAPE_RE|ESCAPE_UNI|ESCAPE_UNI_DETECT|PRETTY_DUMP|PRETTY_ELLIPSES|PRETTY_LTGT|PRETTY_NOCLEAR|PRETTY_QUOTE|PRETTY_REGPROP)(?:=\S*)?\b">
<example>
-DPERL_PV_ESCAPE_ALL=XXX,
-DPERL_PV_ESCAPE_FIRSTCHAR=XXX,
-DPERL_PV_ESCAPE_NOBACKSLASH=XXX,
-DPERL_PV_ESCAPE_NOCLEAR=XXX,
-DPERL_PV_ESCAPE_QUOTE=XXX,
-DPERL_PV_ESCAPE_RE=XXX,
-DPERL_PV_ESCAPE_UNI=XXX,
-DPERL_PV_ESCAPE_UNI_DETECT=XXX,
-DPERL_PV_PRETTY_DUMP=XXX,
-DPERL_PV_PRETTY_ELLIPSES=XXX,
-DPERL_PV_PRETTY_LTGT=XXX,
-DPERL_PV_PRETTY_NOCLEAR=XXX,
-DPERL_PV_PRETTY_QUOTE=XXX,
-DPERL_PV_PRETTY_REGPROP=XXX,
</example>
These macros are used and set internally by Perl and may not be set explicitly.
</flag>

<flag name="regexp_internals" class="forbidden" regexp="[-/]D(?:PMf|RXf|_?RXf_PMf)_(?:BASE_SHIFT|CHARSET|COMPILETIME|EXTENDED|FOLD|KEEPCOPY|MULTILINE|SHIFT_COMPILETIME|SINGLELINE|SPLIT|STD_PMMOD_SHIFT)(?:=\S*)?\b">
  <example>
-DPMf_BASE_SHIFT=XXX,
-DPMf_CHARSET=XXX,
-DPMf_EXTENDED=XXX,
-DPMf_FOLD=XXX,
-DPMf_KEEPCOPY=XXX,
-DPMf_MULTILINE=XXX,
-DPMf_SINGLELINE=XXX,
-DPMf_SPLIT=XXX,
-DRXf_BASE_SHIFT=XXX,
-DRXf_PMf_CHARSET=XXX,
-DRXf_PMf_COMPILETIME=XXX,
-DRXf_PMf_EXTENDED=XXX,
-DRXf_PMf_FOLD=XXX,
-DRXf_PMf_KEEPCOPY=XXX,
-DRXf_PMf_MULTILINE=XXX,
-D_RXf_PMf_SHIFT_COMPILETIME=XXX,
-DRXf_PMf_SINGLELINE=XXX,
-DRXf_PMf_SPLIT=XXX,
-DRXf_PMf_STD_PMMOD_SHIFT=XXX,
-DRXf_SPLIT=XXX
</example>
These macros define values used internally by the regular expression engine, and may not be changed.
</flag>

<flag name="charclass_constants" class="forbidden" regexp="[-/]D(?:_HIGHEST_REGCOMP_DOT_H_SYNC|_CC_(?:ALPHANUMERIC|ASCII|BLANK|CASED|CNTRL|GRAPH|PRINT|PSXSPC|PUNCT|SPACE|UPPER|VERTSPACE|WORDCHAR|XDIGIT)|ANYOF_(?:INVERT|POSIXL_MAX))(?:=\S*)?\b">
These macros define the contents of some of Perl's internal constants.
Setting any of them to a non-default value is forbidden.
  <example>
-D_HIGHEST_REGCOMP_DOT_H_SYNC=XXX,
-D_CC_ALPHANUMERIC=XXX,
-D_CC_ASCII=XXX,
-D_CC_BLANK=XXX,
-D_CC_CASED=XXX,
-D_CC_CNTRL=XXX,
-D_CC_GRAPH=XXX,
-D_CC_PRINT=XXX,
-D_CC_PSXSPC=XXX,
-D_CC_PUNCT=XXX,
-D_CC_SPACE=XXX,
-D_CC_UPPER=XXX,
-D_CC_VERTSPACE=XXX,
-D_CC_WORDCHAR=XXX,
-D_CC_XDIGIT=XXX,
-DANYOF_INVERT=XXX,
-DANYOF_POSIXL_MAX=XXX
  </example>
</flag>

<flag name="notaint" class="forbidden" regexp="[-/]D(?:SILENT_)?NO_TAINT_SUPPORT(?:\s|$)">
  <example>
    -DNO_TAINT_SUPPORT,
    -DSILENT_NO_TAINT_SUPPORT
  </example>
  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.
</flag>

<flag name="gv_stuff" class="forbidden" regexp="[-/]D(?:Gv(?:NAMEUTF8|SVn))(?:=\S*)?\b">
  This macro defines a Perl-internal function and may not be explicitly set.
<example>
-DGvNAMEUTF8=XXX,
-DGvSVn=XXX
</example>
</flag>

<flag name="bitfield_types" class="forbidden" regexp="[-/]DPERL_BITFIELD(?:8|16|32)(?:=\S*)?\b">
  This macro defines the type used for bitfields in Perl internal structures.  It may not be changed from the default.
<example>
-DPERL_BITFIELD16=XXX,
-DPERL_BITFIELD32=XXX,
-DPERL_BITFIELD8=XXX
</example>
</flag>

<flag name="DUSE_DTRACE" class="forbidden">
  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.
</flag>

<flag name="unicode_stuff" class="forbidden" regexp="[-/]D(?:NATIVE_IS_INVARIANT|U8TO16_LE|UNICODE|UTF8_QUAD_MAX|UTF8f|UVCHR_IS_INVARIANT|utf8_to_uvchr|utf8_to_uvchr_buf)(?:=\S*)?\b">
<example>
-DNATIVE_IS_INVARIANT=XXX,
-DU8TO16_LE=XXX,
-DUNICODE=XXX
-DUTF8_QUAD_MAX=XXX,
-DUTF8f=XXX,
-DUVCHR_IS_INVARIANT=XXX,
-Dutf8_to_uvchr=XXX,
-Dutf8_to_uvchr_buf=XXX,
</example>
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.
</flag>

<flag name="DPERL_SUB_DEPTH_WARN" class="forbidden">
  <example>-DPERL_SUB_DEPTH_WARN=10</example>
  This macro defines the maximum recursion level allowable.  The default value
  of 100 may not be changed for a reportable run.
</flag>

<flag name="key_perturbation" class="forbidden" regexp="[-/]D(?:USE_)?PERL_PERTURB_KEYS(?:_DETERMINISTIC|_DISABLED|_RANDOM)?(?=\s|$)">
  <example>
  -DPERL_PERTURB_KEYS_DETERMINISTIC,
  -DPERL_PERTURB_KEYS_DISABLED,
  -DPERL_PERTURB_KEYS_RANDOM,
  -DUSE_PERL_PERTURB_KEYS
  </example>
  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.
</flag>

<flag name="DPERL_GIT_UNCOMMITTED_CHANGES" class="forbidden">
  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.
</flag>

<flag name="DPERL_EUPXS_ALWAYS_EXPORT" class="forbidden">
  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.
</flag>

<flag name="DPERL_IS_MINIPERL" class="forbidden">
  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.
</flag>

<flag name="sawampersand" class="forbidden" regexp="[-/]D(?:PERL_SAWAMPERSAND|PL_sawampersand)(?:=\S*)?\b">
  <example>
    -DPERL_SAWAMPERSAND,
    -DPL_sawampersand=0
  </example>
  <![CDATA[
  <p>These macros control whether or not Perl supports the <tt>$`</tt>,
    <tt>$&amp;</tt>, and <tt>$'</tt> special variables.  They are set
    automatically and may not be changed for a reportable run.</p>
  ]]>
</flag>

<flag name="DWIN32_DYN_IOINFO_SIZE" class="portability">
  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.
</flag>

<flag name="DUSING_MSVC6" class="forbidden">
  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.
</flag>

<flag name="st_ino_info" class="forbidden" regexp="[-/]DST_INO_(?:SIGN|SIZE)(?:=\S*)?\b">
  <example>
    -DST_INO_SIZE=4,
    -DST_INO_SIGN=-1
  </example>
  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.
</flag>

<flag name="DUNALIGNED_SAFE" class="forbidden">
  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.
</flag>

<flag name="DG_METHOD" class="forbidden">
  This is a Perl internal macro with a set value that cannot be changed.
</flag>

<flag name="DMB_CUR_MAX" class="forbidden">
  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.
</flag>

<flag name="DMUTABLE_PTR" class="forbidden">
  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.
</flag>

<flag name="DPERL_MAX_SLAB_SIZE" class="forbidden">
  The value of this macro defines the maximum size of a slab in the optree.
  Its value may not be changed from the default.
</flag>

<flag name="compiler_builtins" class="forbidden" regexp="[-/]D__(?:has_builtin|builtin_unreachable)(?:=\S*)?\b">
  These macros define tests for various compiler built-in features.  They are
  not used in the benchmark source and may not be set explicitly.
</flag>

<flag name="DUSE_TM64" class="forbidden">
  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.
</flag>

<flag name="DPERL_USE_DEVEL" class="forbidden">
  This macro is not used in the benchmark sources and may not be set.
</flag>

<flag name="DPERL_SET_PHASE" class="forbidden">
  This macro defines the steps necessary to change the current interpreter
  phase.  It may not be set to a value other than its default.
</flag>

<flag name="DPERL_STRLEN_EXPAND_SHIFT" class="forbidden">
  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.
</flag>

<flag name="DPL_vtbl_vstring" class="forbidden">
  This macro is not used in the benchmark sources and may not be set.
</flag>

<flag name="DVUTIL_REPLACE_CORE" class="forbidden">
  This macro is not used in the benchmark sources and may not be set.
</flag>

<flag name="DVXS_XSUB_DETAILS" class="forbidden">
  This macro is used internally by the "version" module, and it may not be
  set explicitly.
</flag>

</flagsdescription>
