authorgravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2023-08-27 11:12:31-04:00
committergravatar for kcbanner@gmail.comCasey Banner <kcbanner@gmail.com> 2023-08-27 11:12:31-04:00
logfba81cd6062df8a49f1ec7559bdaf8d9081fcd43
treef2373ea4bcbc3edd1a0a2c699075311d2f426487
parent731c6d3fbbd935233513f4779e19b4ca18c2006e

linux: instead of export elf_aux_maybe, export getauxval itself


1 files changed, 6 insertions(+), 5 deletions(-)

lib/std/os/linux.zig+6-5
......@@ -153,13 +153,11 @@ pub usingnamespace @import("linux/io_uring.zig");
153153
154154/// Set by startup code, used by `getauxval`.
155155pub var elf_aux_maybe: ?[*]std.elf.Auxv = null;
156pub extern var _elf_aux_maybe: ?[*]std.elf.Auxv;
157comptime {
158 @export(elf_aux_maybe, .{ .name = "_elf_aux_maybe", .linkage = .Weak });
159}
160156
161157/// See `std.elf` for the constants.
162pub fn getauxval(index: usize) usize {
158/// This matches the libc getauxval function.
159pub extern fn getauxval(index: usize) usize;
160fn getauxvalImpl(index: usize) callconv(.C) usize {
163161 const auxv = elf_aux_maybe orelse return 0;
164162 var i: usize = 0;
165163 while (auxv[i].a_type != std.elf.AT_NULL) : (i += 1) {
......@@ -168,6 +166,9 @@ pub fn getauxval(index: usize) usize {
168166 }
169167 return 0;
170168}
169comptime {
170 @export(getauxvalImpl, .{ .name = "getauxval", .linkage = .Weak });
171}
171172
172173// Some architectures (and some syscalls) require 64bit parameters to be passed
173174// in a even-aligned register pair.