authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-08-17 12:14:30-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2023-08-17 12:14:30-07:00
log5ae5dc507b10116f90f1e1491d70566f99ac0981
tree013f2a9106ac57c0be4d9c698e201e5f619e5bbf
parentf3f554b9b89cc39cf00b4df68bd3455e8ef34984
parente288c546996d202e87168f25d689a2f21fe03b60
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #16824 from mikdusan/bsd

de-bitrot the BSDs

5 files changed, 85 insertions(+), 4 deletions(-)

lib/std/c/dragonfly.zig+54
......@@ -34,6 +34,10 @@ pub const pthread_attr_t = extern struct { // copied from freebsd
3434 __align: c_long,
3535};
3636
37pub const pthread_rwlock_t = extern struct {
38 ptr: ?*anyopaque = null,
39};
40
3741pub const sem_t = ?*opaque {};
3842
3943pub extern "c" fn pthread_setname_np(thread: std.c.pthread_t, name: [*:0]const u8) E;
......@@ -55,6 +59,56 @@ pub const gid_t = u32;
5559pub const time_t = isize;
5660pub const suseconds_t = c_long;
5761
62pub const ucontext_t = extern struct {
63 sigmask: sigset_t,
64 mcontext: mcontext_t,
65 link: ?*ucontext_t,
66 stack: stack_t,
67 cofunc: ?*fn (?*ucontext_t, ?*anyopaque) void,
68 arg: ?*void,
69 _spare: [4]c_int,
70};
71
72pub const mcontext_t = extern struct {
73 onstack: register_t, // XXX - sigcontext compat.
74 rdi: register_t,
75 rsi: register_t,
76 rdx: register_t,
77 rcx: register_t,
78 r8: register_t,
79 r9: register_t,
80 rax: register_t,
81 rbx: register_t,
82 rbp: register_t,
83 r10: register_t,
84 r11: register_t,
85 r12: register_t,
86 r13: register_t,
87 r14: register_t,
88 r15: register_t,
89 xflags: register_t,
90 trapno: register_t,
91 addr: register_t,
92 flags: register_t,
93 err: register_t,
94 rip: register_t,
95 cs: register_t,
96 rflags: register_t,
97 rsp: register_t, // machine state
98 ss: register_t,
99
100 len: c_uint, // sizeof(mcontext_t)
101 fpformat: c_uint,
102 ownedfp: c_uint,
103 reserved: c_uint,
104 unused: [8]c_uint,
105
106 // NOTE! 64-byte aligned as of here. Also must match savefpu structure.
107 fpregs: [256]c_int align(64),
108};
109
110pub const register_t = isize;
111
58112pub const E = enum(u16) {
59113 /// No error occurred.
60114 SUCCESS = 0,
lib/std/c/netbsd.zig+24-1
......@@ -93,7 +93,7 @@ pub const pthread_rwlock_t = extern struct {
9393 wblocked_first: ?*u8 = null,
9494 wblocked_last: ?*u8 = null,
9595 nreaders: c_uint = 0,
96 owner: std.c.pthread_t = null,
96 owner: ?std.c.pthread_t = null,
9797 private: ?*anyopaque = null,
9898};
9999
......@@ -1227,9 +1227,32 @@ pub const REG = switch (builtin.cpu.arch) {
12271227 pub const PC = 15;
12281228 },
12291229 .x86_64 => struct {
1230 pub const RDI = 0;
1231 pub const RSI = 1;
1232 pub const RDX = 2;
1233 pub const RCX = 3;
1234 pub const R8 = 4;
1235 pub const R9 = 5;
1236 pub const R10 = 6;
1237 pub const R11 = 7;
1238 pub const R12 = 8;
1239 pub const R13 = 9;
1240 pub const R14 = 10;
1241 pub const R15 = 11;
12301242 pub const RBP = 12;
1243 pub const RBX = 13;
1244 pub const RAX = 14;
1245 pub const GS = 15;
1246 pub const FS = 16;
1247 pub const ES = 17;
1248 pub const DS = 18;
1249 pub const TRAPNO = 19;
1250 pub const ERR = 20;
12311251 pub const RIP = 21;
1252 pub const CS = 22;
1253 pub const RFLAGS = 23;
12321254 pub const RSP = 24;
1255 pub const SS = 25;
12331256 },
12341257 else => struct {},
12351258};
lib/std/debug.zig+2-1
......@@ -168,6 +168,7 @@ pub fn relocateContext(context: *ThreadContext) void {
168168}
169169
170170pub const have_getcontext = @hasDecl(os.system, "getcontext") and
171 builtin.os.tag != .openbsd and
171172 (builtin.os.tag != .linux or switch (builtin.cpu.arch) {
172173 .x86,
173174 .x86_64,
......@@ -1228,7 +1229,7 @@ pub fn readElfDebugInfo(
12281229 }
12291230
12301231 var cwd_buf: [fs.MAX_PATH_BYTES]u8 = undefined;
1231 const cwd_path = fs.cwd().realpath("", &cwd_buf) catch break :blk;
1232 const cwd_path = os.realpath(".", &cwd_buf) catch break :blk;
12321233
12331234 // <global debug directory>/<absolute folder of current binary>/<gnu_debuglink>
12341235 for (global_debug_directories) |global_directory| {
lib/std/dwarf/abi.zig+1-1
......@@ -229,7 +229,7 @@ pub fn regBytes(
229229 else => error.UnimplementedOs,
230230 },
231231 .x86_64 => switch (builtin.os.tag) {
232 .linux, .netbsd, .solaris => switch (reg_number) {
232 .linux, .solaris => switch (reg_number) {
233233 0 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RAX]),
234234 1 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RDX]),
235235 2 => mem.asBytes(&ucontext_ptr.mcontext.gregs[os.REG.RCX]),
lib/std/fs/test.zig+4-1
......@@ -102,7 +102,10 @@ test "openDir cwd parent .." {
102102}
103103
104104test "openDir non-cwd parent .." {
105 if (builtin.os.tag == .wasi) return error.SkipZigTest;
105 switch (builtin.os.tag) {
106 .wasi, .netbsd, .openbsd => return error.SkipZigTest,
107 else => {},
108 }
106109
107110 var tmp = tmpDir(.{});
108111 defer tmp.cleanup();