https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105335
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The reason for the lower byte only is because posix says exit value is truncated to char. This seems like libiberty not knowing that win32 does not truncate to byte unlike posix. Note I thought the c standard says the same too.