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

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

#if defined __hppa__ || defined __mips__
#if defined(O_CREAT) || (defined(HAVE_DECL_O_CREAT) && HAVE_DECL_O_CREAT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_CREAT) == (0400), "O_CREAT != 0400");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_CREAT 0400
#endif
#elif defined __alpha__ || defined __sparc__
#if defined(O_CREAT) || (defined(HAVE_DECL_O_CREAT) && HAVE_DECL_O_CREAT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_CREAT) == (01000), "O_CREAT != 01000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_CREAT 01000
#endif
#else
#if defined(O_CREAT) || (defined(HAVE_DECL_O_CREAT) && HAVE_DECL_O_CREAT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_CREAT) == (0100), "O_CREAT != 0100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_CREAT 0100
#endif
#endif
#if defined __hppa__ || defined __mips__
#if defined(O_EXCL) || (defined(HAVE_DECL_O_EXCL) && HAVE_DECL_O_EXCL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_EXCL) == (02000), "O_EXCL != 02000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_EXCL 02000
#endif
#elif defined __alpha__ || defined __sparc__
#if defined(O_EXCL) || (defined(HAVE_DECL_O_EXCL) && HAVE_DECL_O_EXCL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_EXCL) == (04000), "O_EXCL != 04000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_EXCL 04000
#endif
#else
#if defined(O_EXCL) || (defined(HAVE_DECL_O_EXCL) && HAVE_DECL_O_EXCL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_EXCL) == (0200), "O_EXCL != 0200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_EXCL 0200
#endif
#endif
#if defined __mips__
#if defined(O_NOCTTY) || (defined(HAVE_DECL_O_NOCTTY) && HAVE_DECL_O_NOCTTY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOCTTY) == (04000), "O_NOCTTY != 04000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOCTTY 04000
#endif
#elif defined __alpha__
#if defined(O_NOCTTY) || (defined(HAVE_DECL_O_NOCTTY) && HAVE_DECL_O_NOCTTY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOCTTY) == (010000), "O_NOCTTY != 010000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOCTTY 010000
#endif
#elif defined __sparc__
#if defined(O_NOCTTY) || (defined(HAVE_DECL_O_NOCTTY) && HAVE_DECL_O_NOCTTY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOCTTY) == (0100000), "O_NOCTTY != 0100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOCTTY 0100000
#endif
#elif defined __hppa__
#if defined(O_NOCTTY) || (defined(HAVE_DECL_O_NOCTTY) && HAVE_DECL_O_NOCTTY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOCTTY) == (0400000), "O_NOCTTY != 0400000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOCTTY 0400000
#endif
#else
#if defined(O_NOCTTY) || (defined(HAVE_DECL_O_NOCTTY) && HAVE_DECL_O_NOCTTY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOCTTY) == (0400), "O_NOCTTY != 0400");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOCTTY 0400
#endif
#endif
#if defined __alpha__ || defined __sparc__
#if defined(O_TRUNC) || (defined(HAVE_DECL_O_TRUNC) && HAVE_DECL_O_TRUNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_TRUNC) == (02000), "O_TRUNC != 02000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_TRUNC 02000
#endif
#else
#if defined(O_TRUNC) || (defined(HAVE_DECL_O_TRUNC) && HAVE_DECL_O_TRUNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_TRUNC) == (01000), "O_TRUNC != 01000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_TRUNC 01000
#endif
#endif
#if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
#if defined(O_APPEND) || (defined(HAVE_DECL_O_APPEND) && HAVE_DECL_O_APPEND)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_APPEND) == (010), "O_APPEND != 010");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_APPEND 010
#endif
#else
#if defined(O_APPEND) || (defined(HAVE_DECL_O_APPEND) && HAVE_DECL_O_APPEND)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_APPEND) == (02000), "O_APPEND != 02000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_APPEND 02000
#endif
#endif
#if defined __alpha__
#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NONBLOCK) == (04), "O_NONBLOCK != 04");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NONBLOCK 04
#endif
#elif defined __mips__
#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NONBLOCK) == (0200), "O_NONBLOCK != 0200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NONBLOCK 0200
#endif
#elif defined __sparc__
#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NONBLOCK) == (040000), "O_NONBLOCK != 040000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NONBLOCK 040000
#endif
#elif defined __hppa__
#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NONBLOCK) == (0200004), "O_NONBLOCK != 0200004");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NONBLOCK 0200004
#endif
#else
#if defined(O_NONBLOCK) || (defined(HAVE_DECL_O_NONBLOCK) && HAVE_DECL_O_NONBLOCK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NONBLOCK) == (04000), "O_NONBLOCK != 04000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NONBLOCK 04000
#endif
#endif
#if defined __mips__
#if defined(__O_SYNC) || (defined(HAVE_DECL___O_SYNC) && HAVE_DECL___O_SYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_SYNC) == (040000), "__O_SYNC != 040000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_SYNC 040000
#endif
#elif defined __hppa__
#if defined(__O_SYNC) || (defined(HAVE_DECL___O_SYNC) && HAVE_DECL___O_SYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_SYNC) == (0100000), "__O_SYNC != 0100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_SYNC 0100000
#endif
#elif defined __alpha__
#if defined(__O_SYNC) || (defined(HAVE_DECL___O_SYNC) && HAVE_DECL___O_SYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_SYNC) == (020000000), "__O_SYNC != 020000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_SYNC 020000000
#endif
#elif defined __sparc__
#if defined(__O_SYNC) || (defined(HAVE_DECL___O_SYNC) && HAVE_DECL___O_SYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_SYNC) == (040000000), "__O_SYNC != 040000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_SYNC 040000000
#endif
#else
#if defined(__O_SYNC) || (defined(HAVE_DECL___O_SYNC) && HAVE_DECL___O_SYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_SYNC) == (04000000), "__O_SYNC != 04000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_SYNC 04000000
#endif
#endif
#if defined __mips__
#if defined(O_DSYNC) || (defined(HAVE_DECL_O_DSYNC) && HAVE_DECL_O_DSYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DSYNC) == (020), "O_DSYNC != 020");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DSYNC 020
#endif
#elif defined __sparc__
#if defined(O_DSYNC) || (defined(HAVE_DECL_O_DSYNC) && HAVE_DECL_O_DSYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DSYNC) == (020000), "O_DSYNC != 020000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DSYNC 020000
#endif
#elif defined __alpha__
#if defined(O_DSYNC) || (defined(HAVE_DECL_O_DSYNC) && HAVE_DECL_O_DSYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DSYNC) == (040000), "O_DSYNC != 040000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DSYNC 040000
#endif
#elif defined __hppa__
#if defined(O_DSYNC) || (defined(HAVE_DECL_O_DSYNC) && HAVE_DECL_O_DSYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DSYNC) == (01000000), "O_DSYNC != 01000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DSYNC 01000000
#endif
#else
#if defined(O_DSYNC) || (defined(HAVE_DECL_O_DSYNC) && HAVE_DECL_O_DSYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DSYNC) == (010000), "O_DSYNC != 010000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DSYNC 010000
#endif
#endif
#if defined __hppa__
#if defined(O_RSYNC) || (defined(HAVE_DECL_O_RSYNC) && HAVE_DECL_O_RSYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_RSYNC) == (02000000), "O_RSYNC != 02000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_RSYNC 02000000
#endif
#else
#endif
#if defined O_NDELAY && O_NDELAY & O_NONBLOCK
# ifndef STRACE_WORKAROUND_FOR_O_NDELAY
# define STRACE_WORKAROUND_FOR_O_NDELAY
# undef O_NDELAY
# endif
#endif
#if defined __sparc__
#if defined(O_NDELAY) || (defined(HAVE_DECL_O_NDELAY) && HAVE_DECL_O_NDELAY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NDELAY) == (04), "O_NDELAY != 04");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NDELAY 04
#endif
#else
#endif
#if defined __sparc__
#if defined(O_DIRECT) || (defined(HAVE_DECL_O_DIRECT) && HAVE_DECL_O_DIRECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECT) == (04000000), "O_DIRECT != 04000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECT 04000000
#endif
#elif defined __mips__
#if defined(O_DIRECT) || (defined(HAVE_DECL_O_DIRECT) && HAVE_DECL_O_DIRECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECT) == (0100000), "O_DIRECT != 0100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECT 0100000
#endif
#elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__
#if defined(O_DIRECT) || (defined(HAVE_DECL_O_DIRECT) && HAVE_DECL_O_DIRECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECT) == (0200000), "O_DIRECT != 0200000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECT 0200000
#endif
#elif defined __powerpc__
#if defined(O_DIRECT) || (defined(HAVE_DECL_O_DIRECT) && HAVE_DECL_O_DIRECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECT) == (0400000), "O_DIRECT != 0400000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECT 0400000
#endif
#elif defined __alpha__
#if defined(O_DIRECT) || (defined(HAVE_DECL_O_DIRECT) && HAVE_DECL_O_DIRECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECT) == (02000000), "O_DIRECT != 02000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECT 02000000
#endif
#else
#if defined(O_DIRECT) || (defined(HAVE_DECL_O_DIRECT) && HAVE_DECL_O_DIRECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECT) == (040000), "O_DIRECT != 040000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECT 040000
#endif
#endif
#if defined __hppa__
#if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_LARGEFILE) == (04000), "O_LARGEFILE != 04000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_LARGEFILE 04000
#endif
#elif defined __mips__
#if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_LARGEFILE) == (020000), "O_LARGEFILE != 020000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_LARGEFILE 020000
#endif
#elif defined __powerpc__
#if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_LARGEFILE) == (0200000), "O_LARGEFILE != 0200000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_LARGEFILE 0200000
#endif
#elif defined __alpha__ || defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__
#if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_LARGEFILE) == (0400000), "O_LARGEFILE != 0400000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_LARGEFILE 0400000
#endif
#elif defined __sparc__
#if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_LARGEFILE) == (01000000), "O_LARGEFILE != 01000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_LARGEFILE 01000000
#endif
#else
#if defined(O_LARGEFILE) || (defined(HAVE_DECL_O_LARGEFILE) && HAVE_DECL_O_LARGEFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_LARGEFILE) == (0100000), "O_LARGEFILE != 0100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_LARGEFILE 0100000
#endif
#endif
#if defined __hppa__
#if defined(O_NOFOLLOW) || (defined(HAVE_DECL_O_NOFOLLOW) && HAVE_DECL_O_NOFOLLOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOFOLLOW) == (0200), "O_NOFOLLOW != 0200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOFOLLOW 0200
#endif
#elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__ || defined __powerpc__
#if defined(O_NOFOLLOW) || (defined(HAVE_DECL_O_NOFOLLOW) && HAVE_DECL_O_NOFOLLOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOFOLLOW) == (0100000), "O_NOFOLLOW != 0100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOFOLLOW 0100000
#endif
#elif defined __alpha__
#if defined(O_NOFOLLOW) || (defined(HAVE_DECL_O_NOFOLLOW) && HAVE_DECL_O_NOFOLLOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOFOLLOW) == (0200000), "O_NOFOLLOW != 0200000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOFOLLOW 0200000
#endif
#else
#if defined(O_NOFOLLOW) || (defined(HAVE_DECL_O_NOFOLLOW) && HAVE_DECL_O_NOFOLLOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOFOLLOW) == (0400000), "O_NOFOLLOW != 0400000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOFOLLOW 0400000
#endif
#endif
#if defined __alpha__ || defined __hppa__
#if defined(O_NOATIME) || (defined(HAVE_DECL_O_NOATIME) && HAVE_DECL_O_NOATIME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOATIME) == (04000000), "O_NOATIME != 04000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOATIME 04000000
#endif
#elif defined __sparc__
#if defined(O_NOATIME) || (defined(HAVE_DECL_O_NOATIME) && HAVE_DECL_O_NOATIME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOATIME) == (010000000), "O_NOATIME != 010000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOATIME 010000000
#endif
#else
#if defined(O_NOATIME) || (defined(HAVE_DECL_O_NOATIME) && HAVE_DECL_O_NOATIME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_NOATIME) == (01000000), "O_NOATIME != 01000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_NOATIME 01000000
#endif
#endif
#if defined __alpha__ || defined __hppa__
#if defined(O_CLOEXEC) || (defined(HAVE_DECL_O_CLOEXEC) && HAVE_DECL_O_CLOEXEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_CLOEXEC) == (010000000), "O_CLOEXEC != 010000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_CLOEXEC 010000000
#endif
#elif defined __sparc__
#if defined(O_CLOEXEC) || (defined(HAVE_DECL_O_CLOEXEC) && HAVE_DECL_O_CLOEXEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_CLOEXEC) == (020000000), "O_CLOEXEC != 020000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_CLOEXEC 020000000
#endif
#else
#if defined(O_CLOEXEC) || (defined(HAVE_DECL_O_CLOEXEC) && HAVE_DECL_O_CLOEXEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_CLOEXEC) == (02000000), "O_CLOEXEC != 02000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_CLOEXEC 02000000
#endif
#endif
#if defined __hppa__
#if defined(O_PATH) || (defined(HAVE_DECL_O_PATH) && HAVE_DECL_O_PATH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_PATH) == (020000000), "O_PATH != 020000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_PATH 020000000
#endif
#elif defined __alpha__
#if defined(O_PATH) || (defined(HAVE_DECL_O_PATH) && HAVE_DECL_O_PATH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_PATH) == (040000000), "O_PATH != 040000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_PATH 040000000
#endif
#elif defined __sparc__
#if defined(O_PATH) || (defined(HAVE_DECL_O_PATH) && HAVE_DECL_O_PATH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_PATH) == (0100000000), "O_PATH != 0100000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_PATH 0100000000
#endif
#else
#if defined(O_PATH) || (defined(HAVE_DECL_O_PATH) && HAVE_DECL_O_PATH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_PATH) == (010000000), "O_PATH != 010000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_PATH 010000000
#endif
#endif
#if defined __hppa__
#if defined(__O_TMPFILE) || (defined(HAVE_DECL___O_TMPFILE) && HAVE_DECL___O_TMPFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_TMPFILE) == (040000000), "__O_TMPFILE != 040000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_TMPFILE 040000000
#endif
#elif defined __alpha__
#if defined(__O_TMPFILE) || (defined(HAVE_DECL___O_TMPFILE) && HAVE_DECL___O_TMPFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_TMPFILE) == (0100000000), "__O_TMPFILE != 0100000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_TMPFILE 0100000000
#endif
#elif defined __sparc__
#if defined(__O_TMPFILE) || (defined(HAVE_DECL___O_TMPFILE) && HAVE_DECL___O_TMPFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_TMPFILE) == (0200000000), "__O_TMPFILE != 0200000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_TMPFILE 0200000000
#endif
#else
#if defined(__O_TMPFILE) || (defined(HAVE_DECL___O_TMPFILE) && HAVE_DECL___O_TMPFILE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((__O_TMPFILE) == (020000000), "__O_TMPFILE != 020000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define __O_TMPFILE 020000000
#endif
#endif
#if defined __hppa__
#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECTORY) == (010000), "O_DIRECTORY != 010000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECTORY 010000
#endif
#elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__ || defined __powerpc__
#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECTORY) == (040000), "O_DIRECTORY != 040000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECTORY 040000
#endif
#elif defined __alpha__
#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECTORY) == (0100000), "O_DIRECTORY != 0100000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECTORY 0100000
#endif
#else
#if defined(O_DIRECTORY) || (defined(HAVE_DECL_O_DIRECTORY) && HAVE_DECL_O_DIRECTORY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((O_DIRECTORY) == (0200000), "O_DIRECTORY != 0200000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define O_DIRECTORY 0200000
#endif
#endif
#if defined __sparc__
#if defined(FASYNC) || (defined(HAVE_DECL_FASYNC) && HAVE_DECL_FASYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((FASYNC) == (0100), "FASYNC != 0100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define FASYNC 0100
#endif
#elif defined __mips__
#if defined(FASYNC) || (defined(HAVE_DECL_FASYNC) && HAVE_DECL_FASYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((FASYNC) == (010000), "FASYNC != 010000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define FASYNC 010000
#endif
#else
#if defined(FASYNC) || (defined(HAVE_DECL_FASYNC) && HAVE_DECL_FASYNC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((FASYNC) == (020000), "FASYNC != 020000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define FASYNC 020000
#endif
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat open_mode_flags[] = {


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

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

#if defined __mips__
 XLAT(O_NOCTTY),
#elif defined __alpha__
 XLAT(O_NOCTTY),
#elif defined __sparc__
 XLAT(O_NOCTTY),
#elif defined __hppa__
 XLAT(O_NOCTTY),
#else
 XLAT(O_NOCTTY),
#endif

#if defined __alpha__ || defined __sparc__
 XLAT(O_TRUNC),
#else
 XLAT(O_TRUNC),
#endif

#if defined __alpha__ || defined __hppa__ || defined __mips__ || defined __sparc__
 XLAT(O_APPEND),
#else
 XLAT(O_APPEND),
#endif

#if defined __alpha__
 XLAT(O_NONBLOCK),
#elif defined __mips__
 XLAT(O_NONBLOCK),
#elif defined __sparc__
 XLAT(O_NONBLOCK),
#elif defined __hppa__
 XLAT(O_NONBLOCK),
#else
 XLAT(O_NONBLOCK),
#endif


#if defined(O_SYNC) || (defined(HAVE_DECL_O_SYNC) && HAVE_DECL_O_SYNC)
  XLAT(O_SYNC),
#endif

#if defined __mips__
 XLAT(__O_SYNC),
#elif defined __hppa__
 XLAT(__O_SYNC),
#elif defined __alpha__
 XLAT(__O_SYNC),
#elif defined __sparc__
 XLAT(__O_SYNC),
#else
 XLAT(__O_SYNC),
#endif

#if defined(O_ASYNC) || (defined(HAVE_DECL_O_ASYNC) && HAVE_DECL_O_ASYNC)
  XLAT(O_ASYNC),
#endif

#if defined __mips__
 XLAT(O_DSYNC),
#elif defined __sparc__
 XLAT(O_DSYNC),
#elif defined __alpha__
 XLAT(O_DSYNC),
#elif defined __hppa__
 XLAT(O_DSYNC),
#else
 XLAT(O_DSYNC),
#endif

#if defined __hppa__
 XLAT(O_RSYNC),
#else
#if defined(O_RSYNC) || (defined(HAVE_DECL_O_RSYNC) && HAVE_DECL_O_RSYNC)
  XLAT(O_RSYNC),
#endif
#endif

#if defined O_NDELAY && O_NDELAY & O_NONBLOCK
# ifndef STRACE_WORKAROUND_FOR_O_NDELAY
# define STRACE_WORKAROUND_FOR_O_NDELAY



# undef O_NDELAY
# endif
#endif

#if defined __sparc__
 XLAT(O_NDELAY),
#else
#if defined(O_NDELAY) || (defined(HAVE_DECL_O_NDELAY) && HAVE_DECL_O_NDELAY)
  XLAT(O_NDELAY),
#endif
#endif

#if defined __sparc__
 XLAT(O_DIRECT),
#elif defined __mips__
 XLAT(O_DIRECT),
#elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__
 XLAT(O_DIRECT),
#elif defined __powerpc__
 XLAT(O_DIRECT),
#elif defined __alpha__
 XLAT(O_DIRECT),
#else
 XLAT(O_DIRECT),
#endif

#if defined __hppa__
 XLAT(O_LARGEFILE),
#elif defined __mips__
 XLAT(O_LARGEFILE),
#elif defined __powerpc__
 XLAT(O_LARGEFILE),
#elif defined __alpha__ || defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__
 XLAT(O_LARGEFILE),
#elif defined __sparc__
 XLAT(O_LARGEFILE),
#else
 XLAT(O_LARGEFILE),
#endif

#if defined __hppa__
 XLAT(O_NOFOLLOW),
#elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__ || defined __powerpc__
 XLAT(O_NOFOLLOW),
#elif defined __alpha__
 XLAT(O_NOFOLLOW),
#else
 XLAT(O_NOFOLLOW),
#endif

#if defined __alpha__ || defined __hppa__
 XLAT(O_NOATIME),
#elif defined __sparc__
 XLAT(O_NOATIME),
#else
 XLAT(O_NOATIME),
#endif

#if defined __alpha__ || defined __hppa__
 XLAT(O_CLOEXEC),
#elif defined __sparc__
 XLAT(O_CLOEXEC),
#else
 XLAT(O_CLOEXEC),
#endif

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


#if defined(O_TMPFILE) || (defined(HAVE_DECL_O_TMPFILE) && HAVE_DECL_O_TMPFILE)
  XLAT(O_TMPFILE),
#endif

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

#if defined __hppa__
 XLAT(O_DIRECTORY),
#elif defined __arm__ || defined __arm64__ || defined __aarch64__ || defined __m68k__ || defined __powerpc__
 XLAT(O_DIRECTORY),
#elif defined __alpha__
 XLAT(O_DIRECTORY),
#else
 XLAT(O_DIRECTORY),
#endif

#if defined __sparc__
 XLAT(FASYNC),
#elif defined __mips__
 XLAT(FASYNC),
#else
 XLAT(FASYNC),
#endif
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
