mirror of
https://github.com/ziglang/zig.git
synced 2025-12-29 17:43:17 +00:00
macho: format parse error for fat libs to include CPU archs only
This commit is contained in:
parent
7e167537c0
commit
ea9f2513a3
@ -716,6 +716,7 @@ fn resolveLib(
|
||||
const ParseError = error{
|
||||
UnknownFileType,
|
||||
InvalidTarget,
|
||||
InvalidTargetFatLibrary,
|
||||
DylibAlreadyExists,
|
||||
IncompatibleDylibVersion,
|
||||
OutOfMemory,
|
||||
@ -856,7 +857,7 @@ pub fn parseFatLibrary(
|
||||
for (fat_archs) |arch| {
|
||||
ctx.detected_targets.appendAssumeCapacity(try ctx.arena.dupe(u8, @tagName(arch.tag)));
|
||||
}
|
||||
return error.InvalidTarget;
|
||||
return error.InvalidTargetFatLibrary;
|
||||
};
|
||||
return offset;
|
||||
}
|
||||
@ -4871,7 +4872,7 @@ pub fn handleAndReportParseError(
|
||||
switch (err) {
|
||||
error.DylibAlreadyExists => {},
|
||||
error.UnknownFileType => try self.reportParseError(path, "unknown file type", .{}),
|
||||
error.InvalidTarget => {
|
||||
error.InvalidTarget, error.InvalidTargetFatLibrary => {
|
||||
var targets_string = std.ArrayList(u8).init(self.base.allocator);
|
||||
defer targets_string.deinit();
|
||||
try targets_string.writer().writeAll("(");
|
||||
@ -4880,10 +4881,20 @@ pub fn handleAndReportParseError(
|
||||
}
|
||||
try targets_string.resize(targets_string.items.len - 2);
|
||||
try targets_string.writer().writeAll(")");
|
||||
try self.reportParseError(path, "invalid target: expected '{}', but found '{s}'", .{
|
||||
Platform.fromTarget(self.base.options.target).fmtTarget(cpu_arch),
|
||||
targets_string.items,
|
||||
});
|
||||
|
||||
switch (err) {
|
||||
error.InvalidTarget => try self.reportParseError(
|
||||
path,
|
||||
"invalid target: expected '{}', but found '{s}'",
|
||||
.{ Platform.fromTarget(self.base.options.target).fmtTarget(cpu_arch), targets_string.items },
|
||||
),
|
||||
error.InvalidTargetFatLibrary => try self.reportParseError(
|
||||
path,
|
||||
"invalid architecture in univeral library: expected '{s}', but found '{s}'",
|
||||
.{ @tagName(cpu_arch), targets_string.items },
|
||||
),
|
||||
else => unreachable,
|
||||
}
|
||||
},
|
||||
else => |e| try self.reportParseError(path, "{s}: parsing object failed", .{@errorName(e)}),
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user