| author | |
| committer | |
| log | 7f635ae7bdf63da19d09763c7fdbdc61fa035282 |
| tree | 02bdc2a4af9b840364b15b3eb1fd89913e45d3d4 |
| parent | 38eebf3c4d68239e1d29118234a3165355a3a5fc |
What isn't disabled for test-std mostly passes, except for the copysign
and signbit tests for f16. Seemingly related to #14366.3 files changed, 93 insertions(+), 51 deletions(-)
lib/std/c/freebsd.zig+89-51| ... | @@ -155,6 +155,8 @@ pub const EAI = enum(c_int) { | ... | @@ -155,6 +155,8 @@ pub const EAI = enum(c_int) { |
| 155 | 155 | ||
| 156 | pub const EAI_MAX = 15; | 156 | pub const EAI_MAX = 15; |
| 157 | 157 | ||
| 158 | pub const IFNAMESIZE = 16; | ||
| 159 | |||
| 158 | pub const AI = struct { | 160 | pub const AI = struct { |
| 159 | /// get address to use bind() | 161 | /// get address to use bind() |
| 160 | pub const PASSIVE = 0x00000001; | 162 | pub const PASSIVE = 0x00000001; |
| ... | @@ -1271,62 +1273,98 @@ pub const siginfo_t = extern struct { | ... | @@ -1271,62 +1273,98 @@ pub const siginfo_t = extern struct { |
| 1271 | }, | 1273 | }, |
| 1272 | }; | 1274 | }; |
| 1273 | 1275 | ||
| 1274 | pub usingnamespace switch (builtin.cpu.arch) { | 1276 | pub const mcontext_t = switch (builtin.cpu.arch) { |
| 1275 | .x86_64 => struct { | 1277 | .x86_64 => extern struct { |
| 1276 | pub const ucontext_t = extern struct { | 1278 | onstack: u64, |
| 1277 | sigmask: sigset_t, | 1279 | rdi: u64, |
| 1278 | mcontext: mcontext_t, | 1280 | rsi: u64, |
| 1279 | link: ?*ucontext_t, | 1281 | rdx: u64, |
| 1280 | stack: stack_t, | 1282 | rcx: u64, |
| 1281 | flags: c_int, | 1283 | r8: u64, |
| 1282 | __spare__: [4]c_int, | 1284 | r9: u64, |
| 1283 | }; | 1285 | rax: u64, |
| 1284 | 1286 | rbx: u64, | |
| 1285 | /// XXX x86_64 specific | 1287 | rbp: u64, |
| 1286 | pub const mcontext_t = extern struct { | 1288 | r10: u64, |
| 1287 | onstack: u64, | 1289 | r11: u64, |
| 1288 | rdi: u64, | 1290 | r12: u64, |
| 1289 | rsi: u64, | 1291 | r13: u64, |
| 1290 | rdx: u64, | 1292 | r14: u64, |
| 1291 | rcx: u64, | 1293 | r15: u64, |
| 1292 | r8: u64, | 1294 | trapno: u32, |
| 1293 | r9: u64, | 1295 | fs: u16, |
| 1294 | rax: u64, | 1296 | gs: u16, |
| 1295 | rbx: u64, | 1297 | addr: u64, |
| 1296 | rbp: u64, | 1298 | flags: u32, |
| 1297 | r10: u64, | 1299 | es: u16, |
| 1298 | r11: u64, | 1300 | ds: u16, |
| 1299 | r12: u64, | 1301 | err: u64, |
| 1300 | r13: u64, | 1302 | rip: u64, |
| 1301 | r14: u64, | 1303 | cs: u64, |
| 1302 | r15: u64, | 1304 | rflags: u64, |
| 1303 | trapno: u32, | 1305 | rsp: u64, |
| 1304 | fs: u16, | 1306 | ss: u64, |
| 1305 | gs: u16, | 1307 | len: u64, |
| 1306 | addr: u64, | 1308 | fpformat: u64, |
| 1309 | ownedfp: u64, | ||
| 1310 | fpstate: [64]u64 align(16), | ||
| 1311 | fsbase: u64, | ||
| 1312 | gsbase: u64, | ||
| 1313 | xfpustate: u64, | ||
| 1314 | xfpustate_len: u64, | ||
| 1315 | spare: [4]u64, | ||
| 1316 | }, | ||
| 1317 | .aarch64 => extern struct { | ||
| 1318 | gpregs: extern struct { | ||
| 1319 | x: [30]u64, | ||
| 1320 | lr: u64, | ||
| 1321 | sp: u64, | ||
| 1322 | elr: u64, | ||
| 1323 | spsr: u32, | ||
| 1324 | _pad: u32, | ||
| 1325 | }, | ||
| 1326 | fpregs: extern struct { | ||
| 1327 | q: [32]u128, | ||
| 1328 | sr: u32, | ||
| 1329 | cr: u32, | ||
| 1307 | flags: u32, | 1330 | flags: u32, |
| 1308 | es: u16, | 1331 | _pad: u32, |
| 1309 | ds: u16, | 1332 | }, |
| 1310 | err: u64, | 1333 | flags: u32, |
| 1311 | rip: u64, | 1334 | _pad: u32, |
| 1312 | cs: u64, | 1335 | _spare: [8]u64, |
| 1313 | rflags: u64, | 1336 | }, |
| 1314 | rsp: u64, | 1337 | else => struct {}, |
| 1315 | ss: u64, | 1338 | }; |
| 1316 | len: u64, | 1339 | |
| 1317 | fpformat: u64, | 1340 | pub const REG = switch (builtin.cpu.arch) { |
| 1318 | ownedfp: u64, | 1341 | .aarch64 => struct { |
| 1319 | fpstate: [64]u64 align(16), | 1342 | pub const FP = 29; |
| 1320 | fsbase: u64, | 1343 | pub const SP = 31; |
| 1321 | gsbase: u64, | 1344 | pub const PC = 32; |
| 1322 | xfpustate: u64, | 1345 | }, |
| 1323 | xfpustate_len: u64, | 1346 | .arm => struct { |
| 1324 | spare: [4]u64, | 1347 | pub const FP = 11; |
| 1325 | }; | 1348 | pub const SP = 13; |
| 1349 | pub const PC = 15; | ||
| 1350 | }, | ||
| 1351 | .x86_64 => struct { | ||
| 1352 | pub const RBP = 12; | ||
| 1353 | pub const RIP = 21; | ||
| 1354 | pub const RSP = 24; | ||
| 1326 | }, | 1355 | }, |
| 1327 | else => struct {}, | 1356 | else => struct {}, |
| 1328 | }; | 1357 | }; |
| 1329 | 1358 | ||
| 1359 | pub const ucontext_t = extern struct { | ||
| 1360 | sigmask: sigset_t, | ||
| 1361 | mcontext: mcontext_t, | ||
| 1362 | link: ?*ucontext_t, | ||
| 1363 | stack: stack_t, | ||
| 1364 | flags: c_int, | ||
| 1365 | __spare__: [4]c_int, | ||
| 1366 | }; | ||
| 1367 | |||
| 1330 | pub const E = enum(u16) { | 1368 | pub const E = enum(u16) { |
| 1331 | /// No error occurred. | 1369 | /// No error occurred. |
| 1332 | SUCCESS = 0, | 1370 | SUCCESS = 0, |
lib/std/debug.zig+2| ... | @@ -1986,12 +1986,14 @@ fn handleSegfaultPosix(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const any | ... | @@ -1986,12 +1986,14 @@ fn handleSegfaultPosix(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const any |
| 1986 | const ip = switch (native_os) { | 1986 | const ip = switch (native_os) { |
| 1987 | .macos => @intCast(usize, ctx.mcontext.ss.pc), | 1987 | .macos => @intCast(usize, ctx.mcontext.ss.pc), |
| 1988 | .netbsd => @intCast(usize, ctx.mcontext.gregs[os.REG.PC]), | 1988 | .netbsd => @intCast(usize, ctx.mcontext.gregs[os.REG.PC]), |
| 1989 | .freebsd => @intCast(usize, ctx.mcontext.gpregs.elr), | ||
| 1989 | else => @intCast(usize, ctx.mcontext.pc), | 1990 | else => @intCast(usize, ctx.mcontext.pc), |
| 1990 | }; | 1991 | }; |
| 1991 | // x29 is the ABI-designated frame pointer | 1992 | // x29 is the ABI-designated frame pointer |
| 1992 | const bp = switch (native_os) { | 1993 | const bp = switch (native_os) { |
| 1993 | .macos => @intCast(usize, ctx.mcontext.ss.fp), | 1994 | .macos => @intCast(usize, ctx.mcontext.ss.fp), |
| 1994 | .netbsd => @intCast(usize, ctx.mcontext.gregs[os.REG.FP]), | 1995 | .netbsd => @intCast(usize, ctx.mcontext.gregs[os.REG.FP]), |
| 1996 | .freebsd => @intCast(usize, ctx.mcontext.gpregs.x[os.REG.FP]), | ||
| 1995 | else => @intCast(usize, ctx.mcontext.regs[29]), | 1997 | else => @intCast(usize, ctx.mcontext.regs[29]), |
| 1996 | }; | 1998 | }; |
| 1997 | dumpStackTraceFromBase(bp, ip); | 1999 | dumpStackTraceFromBase(bp, ip); |
src/crash_report.zig+2| ... | @@ -238,12 +238,14 @@ fn handleSegfaultPosix(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const any | ... | @@ -238,12 +238,14 @@ fn handleSegfaultPosix(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const any |
| 238 | const ip = switch (native_os) { | 238 | const ip = switch (native_os) { |
| 239 | .macos => @intCast(usize, ctx.mcontext.ss.pc), | 239 | .macos => @intCast(usize, ctx.mcontext.ss.pc), |
| 240 | .netbsd => @intCast(usize, ctx.mcontext.gregs[os.REG.PC]), | 240 | .netbsd => @intCast(usize, ctx.mcontext.gregs[os.REG.PC]), |
| 241 | .freebsd => @intCast(usize, ctx.mcontext.gpregs.elr), | ||
| 241 | else => @intCast(usize, ctx.mcontext.pc), | 242 | else => @intCast(usize, ctx.mcontext.pc), |
| 242 | }; | 243 | }; |
| 243 | // x29 is the ABI-designated frame pointer | 244 | // x29 is the ABI-designated frame pointer |
| 244 | const bp = switch (native_os) { | 245 | const bp = switch (native_os) { |
| 245 | .macos => @intCast(usize, ctx.mcontext.ss.fp), | 246 | .macos => @intCast(usize, ctx.mcontext.ss.fp), |
| 246 | .netbsd => @intCast(usize, ctx.mcontext.gregs[os.REG.FP]), | 247 | .netbsd => @intCast(usize, ctx.mcontext.gregs[os.REG.FP]), |
| 248 | .freebsd => @intCast(usize, ctx.mcontext.gpregs.x[os.REG.FP]), | ||
| 247 | else => @intCast(usize, ctx.mcontext.regs[29]), | 249 | else => @intCast(usize, ctx.mcontext.regs[29]), |
| 248 | }; | 250 | }; |
| 249 | break :ctx StackContext{ .exception = .{ .bp = bp, .ip = ip } }; | 251 | break :ctx StackContext{ .exception = .{ .bp = bp, .ip = ip } }; |