macho: fix parsing versions from TBDs if parsed as floats
This commit is contained in:
parent
b8490c05c1
commit
f63f4508d2
|
@ -803,7 +803,7 @@ pub const Id = struct {
|
|||
},
|
||||
.float => |float| {
|
||||
var buf: [256]u8 = undefined;
|
||||
break :blk try fmt.bufPrint(&buf, "{d:.2}", .{float});
|
||||
break :blk try fmt.bufPrint(&buf, "{d}", .{float});
|
||||
},
|
||||
.string => |string| {
|
||||
break :blk string;
|
||||
|
|
|
@ -54,6 +54,7 @@ pub fn testAll(b: *Build, build_opts: BuildOptions) *Step {
|
|||
macho_step.dependOn(testEntryPointArchive(b, .{ .target = default_target }));
|
||||
macho_step.dependOn(testEntryPointDylib(b, .{ .target = default_target }));
|
||||
macho_step.dependOn(testDylib(b, .{ .target = default_target }));
|
||||
macho_step.dependOn(testDylibVersionTbd(b, .{ .target = default_target }));
|
||||
macho_step.dependOn(testNeededLibrary(b, .{ .target = default_target }));
|
||||
macho_step.dependOn(testSearchStrategy(b, .{ .target = default_target }));
|
||||
macho_step.dependOn(testTbdv3(b, .{ .target = default_target }));
|
||||
|
@ -243,6 +244,42 @@ fn testDylib(b: *Build, opts: Options) *Step {
|
|||
return test_step;
|
||||
}
|
||||
|
||||
fn testDylibVersionTbd(b: *Build, opts: Options) *Step {
|
||||
const test_step = addTestStep(b, "macho-dylib-version-tbd", opts);
|
||||
|
||||
const tbd = tbd: {
|
||||
const wf = WriteFile.create(b);
|
||||
break :tbd wf.add("liba.tbd",
|
||||
\\--- !tapi-tbd
|
||||
\\tbd-version: 4
|
||||
\\targets: [ x86_64-macos, arm64-macos ]
|
||||
\\uuids:
|
||||
\\ - target: x86_64-macos
|
||||
\\ value: DEADBEEF
|
||||
\\ - target: arm64-macos
|
||||
\\ value: BEEFDEAD
|
||||
\\install-name: '@rpath/liba.dylib'
|
||||
\\current-version: 1.2
|
||||
\\exports:
|
||||
\\ - targets: [ x86_64-macos, arm64-macos ]
|
||||
\\ symbols: [ _foo ]
|
||||
);
|
||||
};
|
||||
|
||||
const exe = addExecutable(b, opts, .{ .name = "main", .c_source_bytes = "int main() {}" });
|
||||
exe.root_module.linkSystemLibrary("a", .{});
|
||||
exe.root_module.addLibraryPath(tbd.dirname());
|
||||
|
||||
const check = exe.checkObject();
|
||||
check.checkInHeaders();
|
||||
check.checkExact("cmd LOAD_DYLIB");
|
||||
check.checkExact("name @rpath/liba.dylib");
|
||||
check.checkExact("current version 10200");
|
||||
test_step.dependOn(&check.step);
|
||||
|
||||
return test_step;
|
||||
}
|
||||
|
||||
fn testEmptyObject(b: *Build, opts: Options) *Step {
|
||||
const test_step = addTestStep(b, "macho-empty-object", opts);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user