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

static const struct xlat sigchld_codes[] = {
#if defined(CLD_EXITED) || (defined(HAVE_DECL_CLD_EXITED) && HAVE_DECL_CLD_EXITED)
	XLAT(CLD_EXITED),
#endif
#if defined(CLD_KILLED) || (defined(HAVE_DECL_CLD_KILLED) && HAVE_DECL_CLD_KILLED)
	XLAT(CLD_KILLED),
#endif
#if defined(CLD_DUMPED) || (defined(HAVE_DECL_CLD_DUMPED) && HAVE_DECL_CLD_DUMPED)
	XLAT(CLD_DUMPED),
#endif
#if defined(CLD_TRAPPED) || (defined(HAVE_DECL_CLD_TRAPPED) && HAVE_DECL_CLD_TRAPPED)
	XLAT(CLD_TRAPPED),
#endif
#if defined(CLD_STOPPED) || (defined(HAVE_DECL_CLD_STOPPED) && HAVE_DECL_CLD_STOPPED)
	XLAT(CLD_STOPPED),
#endif
#if defined(CLD_CONTINUED) || (defined(HAVE_DECL_CLD_CONTINUED) && HAVE_DECL_CLD_CONTINUED)
	XLAT(CLD_CONTINUED),
#endif
	XLAT_END
};
