aboutsummaryrefslogtreecommitdiff
path: root/src/link.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2023-03-17 14:51:08 +0100
committerJakub Konka <kubkon@jakubkonka.com>2023-03-18 21:53:46 +0100
commit0aab3bda126b0221f81533b335c7a6a01749344b (patch)
tree22bad73b7fcf2f13eccf083428728b36c8556c94 /src/link.zig
parent37192bcdcb38be2266133f6d46dce5a842984c06 (diff)
downloadzig-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.zig23
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,
}
}