mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
Fix some libc version checks for Bionic
This commit is contained in:
parent
242102f9d1
commit
2cf15bee03
2 changed files with 6 additions and 6 deletions
|
|
@ -1940,7 +1940,7 @@ pub const Writer = struct {
|
|||
|
||||
const copy_file_range = switch (native_os) {
|
||||
.freebsd => std.os.freebsd.copy_file_range,
|
||||
.linux => if (std.c.versionCheck(.{ .major = 2, .minor = 27, .patch = 0 })) std.os.linux.wrapped.copy_file_range else {},
|
||||
.linux => if (std.c.versionCheck(if (builtin.abi.isAndroid()) .{ .major = 34, .minor = 0, .patch = 0 } else .{ .major = 2, .minor = 27, .patch = 0 })) std.os.linux.wrapped.copy_file_range else {},
|
||||
else => {},
|
||||
};
|
||||
if (@TypeOf(copy_file_range) != void) cfr: {
|
||||
|
|
|
|||
|
|
@ -375,7 +375,7 @@ pub inline fn fchmodat(dirfd: fd_t, path: []const u8, mode: mode_t, flags: u32)
|
|||
// No special handling for linux is needed if we can use the libc fallback
|
||||
// or `flags` is empty. Glibc only added the fallback in 2.32.
|
||||
const skip_fchmodat_fallback = native_os != .linux or
|
||||
std.c.versionCheck(.{ .major = 2, .minor = 32, .patch = 0 }) or
|
||||
(!builtin.abi.isAndroid() and std.c.versionCheck(.{ .major = 2, .minor = 32, .patch = 0 })) or
|
||||
flags == 0;
|
||||
|
||||
// This function is marked inline so that when flags is comptime-known,
|
||||
|
|
@ -628,7 +628,7 @@ pub fn getrandom(buffer: []u8) GetRandomError!void {
|
|||
if (@TypeOf(system.getrandom) != void) {
|
||||
var buf = buffer;
|
||||
const use_c = native_os != .linux or
|
||||
std.c.versionCheck(std.SemanticVersion{ .major = 2, .minor = 25, .patch = 0 });
|
||||
std.c.versionCheck(if (builtin.abi.isAndroid()) .{ .major = 28, .minor = 0, .patch = 0 } else .{ .major = 2, .minor = 25, .patch = 0 });
|
||||
|
||||
while (buf.len != 0) {
|
||||
const num_read: usize, const err = if (use_c) res: {
|
||||
|
|
@ -6390,7 +6390,7 @@ pub const CopyFileRangeError = error{
|
|||
/// Maximum offsets on Linux and FreeBSD are `maxInt(i64)`.
|
||||
pub fn copy_file_range(fd_in: fd_t, off_in: u64, fd_out: fd_t, off_out: u64, len: usize, flags: u32) CopyFileRangeError!usize {
|
||||
if (builtin.os.tag == .freebsd or
|
||||
(comptime builtin.os.tag == .linux and std.c.versionCheck(.{ .major = 2, .minor = 27, .patch = 0 })))
|
||||
(comptime builtin.os.tag == .linux and std.c.versionCheck(if (builtin.abi.isAndroid()) .{ .major = 34, .minor = 0, .patch = 0 } else .{ .major = 2, .minor = 27, .patch = 0 })))
|
||||
{
|
||||
var off_in_copy: i64 = @bitCast(off_in);
|
||||
var off_out_copy: i64 = @bitCast(off_out);
|
||||
|
|
@ -6699,8 +6699,8 @@ pub const MemFdCreateError = error{
|
|||
pub fn memfd_createZ(name: [*:0]const u8, flags: u32) MemFdCreateError!fd_t {
|
||||
switch (native_os) {
|
||||
.linux => {
|
||||
// memfd_create is available only in glibc versions starting with 2.27.
|
||||
const use_c = std.c.versionCheck(.{ .major = 2, .minor = 27, .patch = 0 });
|
||||
// memfd_create is available only in glibc versions starting with 2.27 and bionic versions starting with 30.
|
||||
const use_c = std.c.versionCheck(if (builtin.abi.isAndroid()) .{ .major = 30, .minor = 0, .patch = 0 } else .{ .major = 2, .minor = 27, .patch = 0 });
|
||||
const sys = if (use_c) std.c else linux;
|
||||
const rc = sys.memfd_create(name, flags);
|
||||
switch (errno(rc)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue