Commit 229800482d

mlugg <mlugg@mlugg.co.uk>
2024-03-07 16:28:26
std.os.linux: do not use `usingnamespace` to define getauxval
This usage of `usingnamespace` was removed fairly trivially - the resulting code is, IMO, more clear. Eliminates one more usage of `usingnamespace` from the standard library.
1 parent 14ab9fb
Changed files (1)
lib
std
lib/std/os/linux.zig
@@ -388,20 +388,21 @@ pub usingnamespace @import("linux/io_uring.zig");
 /// Set by startup code, used by `getauxval`.
 pub var elf_aux_maybe: ?[*]std.elf.Auxv = null;
 
-pub usingnamespace if (switch (builtin.zig_backend) {
+const extern_getauxval = switch (builtin.zig_backend) {
     // Calling extern functions is not yet supported with these backends
     .stage2_aarch64, .stage2_arm, .stage2_riscv64, .stage2_sparc64 => false,
     else => !builtin.link_libc,
-}) struct {
-    /// See `std.elf` for the constants.
-    /// This matches the libc getauxval function.
-    pub extern fn getauxval(index: usize) usize;
-    comptime {
+};
+
+comptime {
+    if (extern_getauxval) {
         @export(getauxvalImpl, .{ .name = "getauxval", .linkage = .Weak });
     }
-} else struct {
-    pub const getauxval = getauxvalImpl;
-};
+}
+
+pub const getauxval = if (extern_getauxval) struct {
+    extern fn getauxval(index: usize) usize;
+}.getauxval else getauxvalImpl;
 
 fn getauxvalImpl(index: usize) callconv(.C) usize {
     const auxv = elf_aux_maybe orelse return 0;