diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-03-17 14:51:08 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2023-03-18 21:53:46 +0100 |
| commit | 0aab3bda126b0221f81533b335c7a6a01749344b (patch) | |
| tree | 22bad73b7fcf2f13eccf083428728b36c8556c94 /src/link.zig | |
| parent | 37192bcdcb38be2266133f6d46dce5a842984c06 (diff) | |
| download | zig-0aab3bda126b0221f81533b335c7a6a01749344b.tar.gz zig-0aab3bda126b0221f81533b335c7a6a01749344b.zip | |
macho: add wrappers for attaching/detaching from HCS process
Diffstat (limited to 'src/link.zig')
| -rw-r--r-- | src/link.zig | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/src/link.zig b/src/link.zig index c87d5b5dd5..ae6c02c08b 100644 --- a/src/link.zig +++ b/src/link.zig @@ -392,19 +392,8 @@ pub const File = struct { .linux => std.os.ptrace(std.os.linux.PTRACE.ATTACH, pid, 0, 0) catch |err| { log.warn("ptrace failure: {s}", .{@errorName(err)}); }, - .macos => { - const macho = base.cast(MachO).?; - if (macho.mach_task == null) { - if (std.os.darwin.machTaskForPid(pid)) |task| { - macho.mach_task = task; - // TODO enable ones we register for exceptions - // std.os.ptrace(std.os.darwin.PT.ATTACHEXC, pid, 0, 0) catch |err| { - // log.warn("ptrace failure: {s}", .{@errorName(err)}); - // }; - } else |err| { - log.warn("failed to acquire Mach task for child process: {s}", .{@errorName(err)}); - } - } + .macos => base.cast(MachO).?.ptraceAttach(pid) catch |err| { + log.warn("attaching failed with error: {s}", .{@errorName(err)}); }, else => return error.HotSwapUnavailableOnHostOperatingSystem, } @@ -444,11 +433,9 @@ pub const File = struct { .linux => std.os.ptrace(std.os.linux.PTRACE.DETACH, pid, 0, 0) catch |err| { log.warn("ptrace failure: {s}", .{@errorName(err)}); }, - .macos => {}, - // TODO see comment above in makeWritable - // .macos => std.os.ptrace(std.os.darwin.PT.DETACH, pid, 0, 0) catch |err| { - // log.warn("ptrace failure: {s}", .{@errorName(err)}); - // }, + .macos => base.cast(MachO).?.ptraceDetach(pid) catch |err| { + log.warn("detaching failed with error: {s}", .{@errorName(err)}); + }, else => return error.HotSwapUnavailableOnHostOperatingSystem, } } |
