/* Generated by ./xlat/gen.sh from ./xlat/mmap_flags.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(MAP_SHARED) || (defined(HAVE_DECL_MAP_SHARED) && HAVE_DECL_MAP_SHARED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_SHARED) == (0x1), "MAP_SHARED != 0x1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_SHARED 0x1
#endif
#if defined(MAP_PRIVATE) || (defined(HAVE_DECL_MAP_PRIVATE) && HAVE_DECL_MAP_PRIVATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_PRIVATE) == (0x2), "MAP_PRIVATE != 0x2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_PRIVATE 0x2
#endif
#if defined(MAP_SHARED_VALIDATE) || (defined(HAVE_DECL_MAP_SHARED_VALIDATE) && HAVE_DECL_MAP_SHARED_VALIDATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_SHARED_VALIDATE) == (0x3), "MAP_SHARED_VALIDATE != 0x3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_SHARED_VALIDATE 0x3
#endif
#if defined __hppa__
#if defined(MAP_FIXED) || (defined(HAVE_DECL_MAP_FIXED) && HAVE_DECL_MAP_FIXED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_FIXED) == (0x4), "MAP_FIXED != 0x4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_FIXED 0x4
#endif
#elif defined __alpha__
#if defined(MAP_FIXED) || (defined(HAVE_DECL_MAP_FIXED) && HAVE_DECL_MAP_FIXED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_FIXED) == (0x100), "MAP_FIXED != 0x100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_FIXED 0x100
#endif
#else
#if defined(MAP_FIXED) || (defined(HAVE_DECL_MAP_FIXED) && HAVE_DECL_MAP_FIXED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_FIXED) == (0x10), "MAP_FIXED != 0x10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_FIXED 0x10
#endif
#endif
#if defined __alpha__ || defined __hppa__
#if defined(MAP_ANONYMOUS) || (defined(HAVE_DECL_MAP_ANONYMOUS) && HAVE_DECL_MAP_ANONYMOUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_ANONYMOUS) == (0x10), "MAP_ANONYMOUS != 0x10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_ANONYMOUS 0x10
#endif
#elif defined __mips__ || defined __xtensa__
#if defined(MAP_ANONYMOUS) || (defined(HAVE_DECL_MAP_ANONYMOUS) && HAVE_DECL_MAP_ANONYMOUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_ANONYMOUS) == (0x800), "MAP_ANONYMOUS != 0x800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_ANONYMOUS 0x800
#endif
#else
#if defined(MAP_ANONYMOUS) || (defined(HAVE_DECL_MAP_ANONYMOUS) && HAVE_DECL_MAP_ANONYMOUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_ANONYMOUS) == (0x20), "MAP_ANONYMOUS != 0x20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_ANONYMOUS 0x20
#endif
#endif
#if defined __x86_64__ || defined __i386__
#if defined(MAP_32BIT) || (defined(HAVE_DECL_MAP_32BIT) && HAVE_DECL_MAP_32BIT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_32BIT) == (0x40), "MAP_32BIT != 0x40");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_32BIT 0x40
#endif
#else
#endif
#if defined MAP_RENAME && MAP_RENAME == MAP_ANONYMOUS
# ifndef STRACE_WORKAROUND_FOR_MAP_RENAME
# define STRACE_WORKAROUND_FOR_MAP_RENAME
# undef MAP_RENAME
# endif
#endif
#if defined __mips__ || defined __xtensa__
#if defined(MAP_RENAME) || (defined(HAVE_DECL_MAP_RENAME) && HAVE_DECL_MAP_RENAME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_RENAME) == (0x20), "MAP_RENAME != 0x20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_RENAME 0x20
#endif
#else
#endif
#if defined __powerpc__ || defined __sparc__
#if defined(MAP_NORESERVE) || (defined(HAVE_DECL_MAP_NORESERVE) && HAVE_DECL_MAP_NORESERVE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_NORESERVE) == (0x40), "MAP_NORESERVE != 0x40");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_NORESERVE 0x40
#endif
#elif defined __mips__ || defined __xtensa__
#if defined(MAP_NORESERVE) || (defined(HAVE_DECL_MAP_NORESERVE) && HAVE_DECL_MAP_NORESERVE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_NORESERVE) == (0x400), "MAP_NORESERVE != 0x400");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_NORESERVE 0x400
#endif
#elif defined __alpha__
#if defined(MAP_NORESERVE) || (defined(HAVE_DECL_MAP_NORESERVE) && HAVE_DECL_MAP_NORESERVE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_NORESERVE) == (0x10000), "MAP_NORESERVE != 0x10000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_NORESERVE 0x10000
#endif
#else
#if defined(MAP_NORESERVE) || (defined(HAVE_DECL_MAP_NORESERVE) && HAVE_DECL_MAP_NORESERVE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_NORESERVE) == (0x4000), "MAP_NORESERVE != 0x4000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_NORESERVE 0x4000
#endif
#endif
#if defined __hppa__ || defined __mips__ || defined __xtensa__
#if defined(MAP_POPULATE) || (defined(HAVE_DECL_MAP_POPULATE) && HAVE_DECL_MAP_POPULATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_POPULATE) == (0x10000), "MAP_POPULATE != 0x10000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_POPULATE 0x10000
#endif
#elif defined __alpha__
#if defined(MAP_POPULATE) || (defined(HAVE_DECL_MAP_POPULATE) && HAVE_DECL_MAP_POPULATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_POPULATE) == (0x20000), "MAP_POPULATE != 0x20000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_POPULATE 0x20000
#endif
#else
#if defined(MAP_POPULATE) || (defined(HAVE_DECL_MAP_POPULATE) && HAVE_DECL_MAP_POPULATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_POPULATE) == (0x8000), "MAP_POPULATE != 0x8000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_POPULATE 0x8000
#endif
#endif
#if defined __hppa__ || defined __mips__ || defined __xtensa__
#if defined(MAP_NONBLOCK) || (defined(HAVE_DECL_MAP_NONBLOCK) && HAVE_DECL_MAP_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_NONBLOCK) == (0x20000), "MAP_NONBLOCK != 0x20000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_NONBLOCK 0x20000
#endif
#elif defined __alpha__
#if defined(MAP_NONBLOCK) || (defined(HAVE_DECL_MAP_NONBLOCK) && HAVE_DECL_MAP_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_NONBLOCK) == (0x40000), "MAP_NONBLOCK != 0x40000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_NONBLOCK 0x40000
#endif
#else
#if defined(MAP_NONBLOCK) || (defined(HAVE_DECL_MAP_NONBLOCK) && HAVE_DECL_MAP_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_NONBLOCK) == (0x10000), "MAP_NONBLOCK != 0x10000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_NONBLOCK 0x10000
#endif
#endif
#if defined __sparc__
#if defined(_MAP_NEW) || (defined(HAVE_DECL__MAP_NEW) && HAVE_DECL__MAP_NEW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((_MAP_NEW) == (0x80000000), "_MAP_NEW != 0x80000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define _MAP_NEW 0x80000000
#endif
#else
#endif
#if defined __sparc__
#if defined(MAP_GROWSDOWN) || (defined(HAVE_DECL_MAP_GROWSDOWN) && HAVE_DECL_MAP_GROWSDOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_GROWSDOWN) == (0x200), "MAP_GROWSDOWN != 0x200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_GROWSDOWN 0x200
#endif
#elif defined __alpha__ || defined __mips__ || defined __xtensa__
#if defined(MAP_GROWSDOWN) || (defined(HAVE_DECL_MAP_GROWSDOWN) && HAVE_DECL_MAP_GROWSDOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_GROWSDOWN) == (0x1000), "MAP_GROWSDOWN != 0x1000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_GROWSDOWN 0x1000
#endif
#elif defined __hppa__
#if defined(MAP_GROWSDOWN) || (defined(HAVE_DECL_MAP_GROWSDOWN) && HAVE_DECL_MAP_GROWSDOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_GROWSDOWN) == (0x8000), "MAP_GROWSDOWN != 0x8000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_GROWSDOWN 0x8000
#endif
#else
#if defined(MAP_GROWSDOWN) || (defined(HAVE_DECL_MAP_GROWSDOWN) && HAVE_DECL_MAP_GROWSDOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_GROWSDOWN) == (0x100), "MAP_GROWSDOWN != 0x100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_GROWSDOWN 0x100
#endif
#endif
#if defined __ia64__
#if defined(MAP_GROWSUP) || (defined(HAVE_DECL_MAP_GROWSUP) && HAVE_DECL_MAP_GROWSUP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_GROWSUP) == (0x200), "MAP_GROWSUP != 0x200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_GROWSUP 0x200
#endif
#else
#endif
#if defined __alpha__ || defined __mips__ || defined __xtensa__
#if defined(MAP_DENYWRITE) || (defined(HAVE_DECL_MAP_DENYWRITE) && HAVE_DECL_MAP_DENYWRITE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_DENYWRITE) == (0x2000), "MAP_DENYWRITE != 0x2000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_DENYWRITE 0x2000
#endif
#else
#if defined(MAP_DENYWRITE) || (defined(HAVE_DECL_MAP_DENYWRITE) && HAVE_DECL_MAP_DENYWRITE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_DENYWRITE) == (0x800), "MAP_DENYWRITE != 0x800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_DENYWRITE 0x800
#endif
#endif
#if defined __alpha__ || defined __mips__ || defined __xtensa__
#if defined(MAP_EXECUTABLE) || (defined(HAVE_DECL_MAP_EXECUTABLE) && HAVE_DECL_MAP_EXECUTABLE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_EXECUTABLE) == (0x4000), "MAP_EXECUTABLE != 0x4000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_EXECUTABLE 0x4000
#endif
#else
#if defined(MAP_EXECUTABLE) || (defined(HAVE_DECL_MAP_EXECUTABLE) && HAVE_DECL_MAP_EXECUTABLE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_EXECUTABLE) == (0x1000), "MAP_EXECUTABLE != 0x1000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_EXECUTABLE 0x1000
#endif
#endif
#if defined __sparc__
#if defined(MAP_INHERIT) || (defined(HAVE_DECL_MAP_INHERIT) && HAVE_DECL_MAP_INHERIT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_INHERIT) == (0x80), "MAP_INHERIT != 0x80");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_INHERIT 0x80
#endif
#else
#endif
#if defined __alpha__
#if defined(_MAP_INHERIT) || (defined(HAVE_DECL__MAP_INHERIT) && HAVE_DECL__MAP_INHERIT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((_MAP_INHERIT) == (0x400), "_MAP_INHERIT != 0x400");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define _MAP_INHERIT 0x400
#endif
#else
#endif
#if defined(MAP_FILE) || (defined(HAVE_DECL_MAP_FILE) && HAVE_DECL_MAP_FILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_FILE) == (0), "MAP_FILE != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_FILE 0
#endif
#if defined __powerpc__
#if defined(MAP_LOCKED) || (defined(HAVE_DECL_MAP_LOCKED) && HAVE_DECL_MAP_LOCKED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_LOCKED) == (0x80), "MAP_LOCKED != 0x80");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_LOCKED 0x80
#endif
#elif defined __sparc__
#if defined(MAP_LOCKED) || (defined(HAVE_DECL_MAP_LOCKED) && HAVE_DECL_MAP_LOCKED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_LOCKED) == (0x100), "MAP_LOCKED != 0x100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_LOCKED 0x100
#endif
#elif defined __alpha__ || defined __mips__ || defined __xtensa__
#if defined(MAP_LOCKED) || (defined(HAVE_DECL_MAP_LOCKED) && HAVE_DECL_MAP_LOCKED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_LOCKED) == (0x8000), "MAP_LOCKED != 0x8000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_LOCKED 0x8000
#endif
#else
#if defined(MAP_LOCKED) || (defined(HAVE_DECL_MAP_LOCKED) && HAVE_DECL_MAP_LOCKED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_LOCKED) == (0x2000), "MAP_LOCKED != 0x2000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_LOCKED 0x2000
#endif
#endif
#if defined __alpha__
#if defined(_MAP_HASSEMAPHORE) || (defined(HAVE_DECL__MAP_HASSEMAPHORE) && HAVE_DECL__MAP_HASSEMAPHORE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((_MAP_HASSEMAPHORE) == (0x200), "_MAP_HASSEMAPHORE != 0x200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define _MAP_HASSEMAPHORE 0x200
#endif
#else
#endif
#if defined __hppa__ || defined __mips__ || defined __xtensa__
#if defined(MAP_STACK) || (defined(HAVE_DECL_MAP_STACK) && HAVE_DECL_MAP_STACK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_STACK) == (0x40000), "MAP_STACK != 0x40000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_STACK 0x40000
#endif
#elif defined __alpha__
#if defined(MAP_STACK) || (defined(HAVE_DECL_MAP_STACK) && HAVE_DECL_MAP_STACK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_STACK) == (0x80000), "MAP_STACK != 0x80000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_STACK 0x80000
#endif
#else
#if defined(MAP_STACK) || (defined(HAVE_DECL_MAP_STACK) && HAVE_DECL_MAP_STACK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_STACK) == (0x20000), "MAP_STACK != 0x20000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_STACK 0x20000
#endif
#endif
#if defined __hppa__ || defined __mips__ || defined __xtensa__
#if defined(MAP_HUGETLB) || (defined(HAVE_DECL_MAP_HUGETLB) && HAVE_DECL_MAP_HUGETLB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_HUGETLB) == (0x80000), "MAP_HUGETLB != 0x80000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_HUGETLB 0x80000
#endif
#elif defined __alpha__
#if defined(MAP_HUGETLB) || (defined(HAVE_DECL_MAP_HUGETLB) && HAVE_DECL_MAP_HUGETLB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_HUGETLB) == (0x100000), "MAP_HUGETLB != 0x100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_HUGETLB 0x100000
#endif
#else
#if defined(MAP_HUGETLB) || (defined(HAVE_DECL_MAP_HUGETLB) && HAVE_DECL_MAP_HUGETLB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_HUGETLB) == (0x40000), "MAP_HUGETLB != 0x40000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_HUGETLB 0x40000
#endif
#endif
#if defined(MAP_SYNC) || (defined(HAVE_DECL_MAP_SYNC) && HAVE_DECL_MAP_SYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_SYNC) == (0x80000), "MAP_SYNC != 0x80000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_SYNC 0x80000
#endif
# if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
# endif
#if defined __alpha__
#if defined(MAP_FIXED_NOREPLACE) || (defined(HAVE_DECL_MAP_FIXED_NOREPLACE) && HAVE_DECL_MAP_FIXED_NOREPLACE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_FIXED_NOREPLACE) == (0x200000), "MAP_FIXED_NOREPLACE != 0x200000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_FIXED_NOREPLACE 0x200000
#endif
#else
#if defined(MAP_FIXED_NOREPLACE) || (defined(HAVE_DECL_MAP_FIXED_NOREPLACE) && HAVE_DECL_MAP_FIXED_NOREPLACE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_FIXED_NOREPLACE) == (0x100000), "MAP_FIXED_NOREPLACE != 0x100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_FIXED_NOREPLACE 0x100000
#endif
#endif
#if defined __mips__ || defined __xtensa__
#if defined(MAP_AUTOGROW) || (defined(HAVE_DECL_MAP_AUTOGROW) && HAVE_DECL_MAP_AUTOGROW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_AUTOGROW) == (0x40), "MAP_AUTOGROW != 0x40");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_AUTOGROW 0x40
#endif
#else
#endif
#if defined __mips__ || defined __xtensa__
#if defined(MAP_AUTORSRV) || (defined(HAVE_DECL_MAP_AUTORSRV) && HAVE_DECL_MAP_AUTORSRV)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_AUTORSRV) == (0x100), "MAP_AUTORSRV != 0x100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_AUTORSRV 0x100
#endif
#else
#endif
#if defined __mips__ || defined __xtensa__
#if defined(MAP_LOCAL) || (defined(HAVE_DECL_MAP_LOCAL) && HAVE_DECL_MAP_LOCAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MAP_LOCAL) == (0x80), "MAP_LOCAL != 0x80");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MAP_LOCAL 0x80
#endif
#else
#endif
#if defined __alpha__
#if defined(_MAP_UNALIGNED) || (defined(HAVE_DECL__MAP_UNALIGNED) && HAVE_DECL__MAP_UNALIGNED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((_MAP_UNALIGNED) == (0x800), "_MAP_UNALIGNED != 0x800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define _MAP_UNALIGNED 0x800
#endif
#else
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat mmap_flags in mpers mode

# else

static
const struct xlat mmap_flags[] = {


 XLAT(MAP_SHARED),

 XLAT(MAP_PRIVATE),

 XLAT(MAP_SHARED_VALIDATE),

#if defined __hppa__
 XLAT(MAP_FIXED),
#elif defined __alpha__
 XLAT(MAP_FIXED),
#else
 XLAT(MAP_FIXED),
#endif

#if defined __alpha__ || defined __hppa__
 XLAT(MAP_ANONYMOUS),
#elif defined __mips__ || defined __xtensa__
 XLAT(MAP_ANONYMOUS),
#else
 XLAT(MAP_ANONYMOUS),
#endif

#if defined __x86_64__ || defined __i386__
 XLAT(MAP_32BIT),
#else
#if defined(MAP_32BIT) || (defined(HAVE_DECL_MAP_32BIT) && HAVE_DECL_MAP_32BIT)
  XLAT(MAP_32BIT),
#endif
#endif

#if defined MAP_RENAME && MAP_RENAME == MAP_ANONYMOUS
# ifndef STRACE_WORKAROUND_FOR_MAP_RENAME
# define STRACE_WORKAROUND_FOR_MAP_RENAME


# undef MAP_RENAME
# endif
#endif

#if defined __mips__ || defined __xtensa__
 XLAT(MAP_RENAME),
#else
#if defined(MAP_RENAME) || (defined(HAVE_DECL_MAP_RENAME) && HAVE_DECL_MAP_RENAME)
  XLAT(MAP_RENAME),
#endif
#endif

#if defined __powerpc__ || defined __sparc__
 XLAT(MAP_NORESERVE),
#elif defined __mips__ || defined __xtensa__
 XLAT(MAP_NORESERVE),
#elif defined __alpha__
 XLAT(MAP_NORESERVE),
#else
 XLAT(MAP_NORESERVE),
#endif

#if defined __hppa__ || defined __mips__ || defined __xtensa__
 XLAT(MAP_POPULATE),
#elif defined __alpha__
 XLAT(MAP_POPULATE),
#else
 XLAT(MAP_POPULATE),
#endif

#if defined __hppa__ || defined __mips__ || defined __xtensa__
 XLAT(MAP_NONBLOCK),
#elif defined __alpha__
 XLAT(MAP_NONBLOCK),
#else
 XLAT(MAP_NONBLOCK),
#endif

#if defined __sparc__
 XLAT(_MAP_NEW),
#else
#if defined(_MAP_NEW) || (defined(HAVE_DECL__MAP_NEW) && HAVE_DECL__MAP_NEW)
  XLAT(_MAP_NEW),
#endif
#endif

#if defined __sparc__
 XLAT(MAP_GROWSDOWN),
#elif defined __alpha__ || defined __mips__ || defined __xtensa__
 XLAT(MAP_GROWSDOWN),
#elif defined __hppa__
 XLAT(MAP_GROWSDOWN),
#else
 XLAT(MAP_GROWSDOWN),
#endif

#if defined __ia64__
 XLAT(MAP_GROWSUP),
#else
#if defined(MAP_GROWSUP) || (defined(HAVE_DECL_MAP_GROWSUP) && HAVE_DECL_MAP_GROWSUP)
  XLAT(MAP_GROWSUP),
#endif
#endif

#if defined __alpha__ || defined __mips__ || defined __xtensa__
 XLAT(MAP_DENYWRITE),
#else
 XLAT(MAP_DENYWRITE),
#endif

#if defined __alpha__ || defined __mips__ || defined __xtensa__
 XLAT(MAP_EXECUTABLE),
#else
 XLAT(MAP_EXECUTABLE),
#endif

#if defined __sparc__
 XLAT(MAP_INHERIT),
#else
#if defined(MAP_INHERIT) || (defined(HAVE_DECL_MAP_INHERIT) && HAVE_DECL_MAP_INHERIT)
  XLAT(MAP_INHERIT),
#endif
#endif

#if defined __alpha__
 XLAT(_MAP_INHERIT),
#else
#if defined(_MAP_INHERIT) || (defined(HAVE_DECL__MAP_INHERIT) && HAVE_DECL__MAP_INHERIT)
  XLAT(_MAP_INHERIT),
#endif
#endif

 XLAT(MAP_FILE),

#if defined __powerpc__
 XLAT(MAP_LOCKED),
#elif defined __sparc__
 XLAT(MAP_LOCKED),
#elif defined __alpha__ || defined __mips__ || defined __xtensa__
 XLAT(MAP_LOCKED),
#else
 XLAT(MAP_LOCKED),
#endif

#if defined __alpha__
 XLAT(_MAP_HASSEMAPHORE),
#else
#if defined(_MAP_HASSEMAPHORE) || (defined(HAVE_DECL__MAP_HASSEMAPHORE) && HAVE_DECL__MAP_HASSEMAPHORE)
  XLAT(_MAP_HASSEMAPHORE),
#endif
#endif

#if defined __hppa__ || defined __mips__ || defined __xtensa__
 XLAT(MAP_STACK),
#elif defined __alpha__
 XLAT(MAP_STACK),
#else
 XLAT(MAP_STACK),
#endif

#if defined __hppa__ || defined __mips__ || defined __xtensa__
 XLAT(MAP_HUGETLB),
#elif defined __alpha__
 XLAT(MAP_HUGETLB),
#else
 XLAT(MAP_HUGETLB),
#endif

 XLAT(MAP_SYNC),

# if defined MAP_UNINITIALIZED && MAP_UNINITIALIZED > 0
#if defined(MAP_UNINITIALIZED) || (defined(HAVE_DECL_MAP_UNINITIALIZED) && HAVE_DECL_MAP_UNINITIALIZED)
  XLAT(MAP_UNINITIALIZED),
#endif
# endif

#if defined __alpha__
 XLAT(MAP_FIXED_NOREPLACE),
#else
 XLAT(MAP_FIXED_NOREPLACE),
#endif

#if defined __mips__ || defined __xtensa__
 XLAT(MAP_AUTOGROW),
#else
#if defined(MAP_AUTOGROW) || (defined(HAVE_DECL_MAP_AUTOGROW) && HAVE_DECL_MAP_AUTOGROW)
  XLAT(MAP_AUTOGROW),
#endif
#endif

#if defined __mips__ || defined __xtensa__
 XLAT(MAP_AUTORSRV),
#else
#if defined(MAP_AUTORSRV) || (defined(HAVE_DECL_MAP_AUTORSRV) && HAVE_DECL_MAP_AUTORSRV)
  XLAT(MAP_AUTORSRV),
#endif
#endif

#if defined __mips__ || defined __xtensa__
 XLAT(MAP_LOCAL),
#else
#if defined(MAP_LOCAL) || (defined(HAVE_DECL_MAP_LOCAL) && HAVE_DECL_MAP_LOCAL)
  XLAT(MAP_LOCAL),
#endif
#endif

#if defined __alpha__
 XLAT(_MAP_UNALIGNED),
#else
#if defined(_MAP_UNALIGNED) || (defined(HAVE_DECL__MAP_UNALIGNED) && HAVE_DECL__MAP_UNALIGNED)
  XLAT(_MAP_UNALIGNED),
#endif
#endif
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
