| ... | ... | @@ -388,20 +388,21 @@ pub usingnamespace @import("linux/io_uring.zig"); |
| 388 | 388 | /// Set by startup code, used by `getauxval`. |
| 389 | 389 | pub var elf_aux_maybe: ?[*]std.elf.Auxv = null; |
| 390 | 390 | |
| 391 | | pub usingnamespace if (switch (builtin.zig_backend) { |
| 391 | const extern_getauxval = switch (builtin.zig_backend) { |
| 392 | 392 | // Calling extern functions is not yet supported with these backends |
| 393 | 393 | .stage2_aarch64, .stage2_arm, .stage2_riscv64, .stage2_sparc64 => false, |
| 394 | 394 | else => !builtin.link_libc, |
| 395 | | }) struct { |
| 396 | | /// See `std.elf` for the constants. |
| 397 | | /// This matches the libc getauxval function. |
| 398 | | pub extern fn getauxval(index: usize) usize; |
| 399 | | comptime { |
| 395 | }; |
| 396 | |
| 397 | comptime { |
| 398 | if (extern_getauxval) { |
| 400 | 399 | @export(getauxvalImpl, .{ .name = "getauxval", .linkage = .Weak }); |
| 401 | 400 | } |
| 402 | | } else struct { |
| 403 | | pub const getauxval = getauxvalImpl; |
| 404 | | }; |
| 401 | } |
| 402 | |
| 403 | pub const getauxval = if (extern_getauxval) struct { |
| 404 | extern fn getauxval(index: usize) usize; |
| 405 | }.getauxval else getauxvalImpl; |
| 405 | 406 | |
| 406 | 407 | fn getauxvalImpl(index: usize) callconv(.C) usize { |
| 407 | 408 | const auxv = elf_aux_maybe orelse return 0; |