I've built this project from source. I have a setup that hits this codepath:
if (err != std::errc::no_such_file_or_directory) {
Ctx.Diags.diagnose(moduleID.second, diag::sema_opening_import,
moduleID.first, err.message());
}
On my system (Debian Jessie), this condition evaluates to false. Therefore we do not call Ctx.Diags.diagnose.
However, I took the binary I built and gave it to a friend who runs Ubuntu. Under the exact same conditions on his system, the if statement evaluates to true, and err.message() is No such file or directory.
How is that possible? I thought std::errc is supposed to be portable? ENOENT is 2 on both systems, as required by POSIX.
I assume this has something to do with libstd on his system at runtime being different than it is on my system at buildtime, but I don't understand why, or how to build a portable version.
Aucun commentaire:
Enregistrer un commentaire