std.process: Fix getBaseAddress() for linux + libc.

In this case we should use the getauxval() from libc, not our own.
This commit is contained in:
Alex Rønne Petersen 2025-03-26 18:26:48 +01:00
parent b84db311d9
commit 0cf5f0d0b0
No known key found for this signature in database

View file

@ -1652,11 +1652,12 @@ pub fn posixGetUserInfo(name: []const u8) !UserInfo {
pub fn getBaseAddress() usize {
switch (native_os) {
.linux => {
const base = std.os.linux.getauxval(std.elf.AT_BASE);
const getauxval = if (builtin.link_libc) std.c.getauxval else std.os.linux.getauxval;
const base = getauxval(std.elf.AT_BASE);
if (base != 0) {
return base;
}
const phdr = std.os.linux.getauxval(std.elf.AT_PHDR);
const phdr = getauxval(std.elf.AT_PHDR);
return phdr - @sizeOf(std.elf.Ehdr);
},
.macos, .freebsd, .netbsd => {