From fba81cd6062df8a49f1ec7559bdaf8d9081fcd43 Mon Sep 17 00:00:00 2001 From: kcbanner Date: Sun, 27 Aug 2023 11:12:31 -0400 Subject: [PATCH] linux: instead of export elf_aux_maybe, export getauxval itself --- lib/std/os/linux.zig | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig index a959e195ea..6c96347ac5 100644 --- a/lib/std/os/linux.zig +++ b/lib/std/os/linux.zig @@ -153,13 +153,11 @@ pub usingnamespace @import("linux/io_uring.zig"); /// Set by startup code, used by `getauxval`. pub var elf_aux_maybe: ?[*]std.elf.Auxv = null; -pub extern var _elf_aux_maybe: ?[*]std.elf.Auxv; -comptime { - @export(elf_aux_maybe, .{ .name = "_elf_aux_maybe", .linkage = .Weak }); -} /// See `std.elf` for the constants. -pub fn getauxval(index: usize) usize { +/// This matches the libc getauxval function. +pub extern fn getauxval(index: usize) usize; +fn getauxvalImpl(index: usize) callconv(.C) usize { const auxv = elf_aux_maybe orelse return 0; var i: usize = 0; while (auxv[i].a_type != std.elf.AT_NULL) : (i += 1) { @@ -168,6 +166,9 @@ pub fn getauxval(index: usize) usize { } return 0; } +comptime { + @export(getauxvalImpl, .{ .name = "getauxval", .linkage = .Weak }); +} // Some architectures (and some syscalls) require 64bit parameters to be passed // in a even-aligned register pair.