46 {
47 std::string Msg;
48 llvm::raw_string_ostream OS(Msg);
49 std::visit(
50 [&OS](auto &&Err) {
51 using ErrT = std::decay_t<decltype(Err)>;
52 if constexpr (std::is_same_v<UnsupportedBinaryReason, ErrT>) {
53 OS << "error while reading binary: " << Err.Msg;
54 } else if constexpr (std::is_same_v<ObjectFormatTypeMismatchReason,
55 ErrT>) {
56 OS << "invalid object format type: expected " << Err.Constraint
57 << ", got " << Err.Found;
58 } else if constexpr (std::is_same_v<MachOUniversalBinaryReason, ErrT>) {
59 OS << "fat Mach-O error: " << Err.Msg;
60 } else {
61 __builtin_unreachable();
62 }
63 },
64 Reason);
65 return Msg;
66}