commit 7c42517151cf06b67268aec3be715b3e303e014a (tree)
parent 9f27d770a1832cf3017a8b2f7281b6faf0347a51
Author: Nameless <truemedian@gmail.com>
Date: Fri, 2 Aug 2024 15:59:13 -0500
os: fix missing and incorrect msghdr definitions
Macos uses the BSD definition of msghdr
All linux architectures share a single msghdr definition. Many
architectures had manually inserted padding fields that were endian
specific and some had fields with different integers. This unifies all
architectures to use a single correct msghdr definition.
Diffstat:
12 files changed, 21 insertions(+), 238 deletions(-)
diff --git a/lib/std/os/linux.zig b/lib/std/os/linux.zig
@@ -103,8 +103,6 @@ pub const dev_t = arch_bits.dev_t;
pub const ino_t = arch_bits.ino_t;
pub const mcontext_t = arch_bits.mcontext_t;
pub const mode_t = arch_bits.mode_t;
-pub const msghdr = arch_bits.msghdr;
-pub const msghdr_const = arch_bits.msghdr_const;
pub const nlink_t = arch_bits.nlink_t;
pub const off_t = arch_bits.off_t;
pub const time_t = arch_bits.time_t;
@@ -9403,3 +9401,23 @@ pub const SHADOW_STACK = struct {
/// Set up a restore token in the shadow stack.
pub const SET_TOKEN: u64 = 1 << 0;
};
+
+pub const msghdr = extern struct {
+ name: ?*sockaddr,
+ namelen: socklen_t,
+ iov: [*]iovec,
+ iovlen: usize,
+ control: ?*anyopaque,
+ controllen: usize,
+ flags: u32,
+};
+
+pub const msghdr_const = extern struct {
+ name: ?*const sockaddr,
+ namelen: socklen_t,
+ iov: [*]const iovec_const,
+ iovlen: usize,
+ control: ?*const anyopaque,
+ controllen: usize,
+ flags: u32,
+};
+\ No newline at end of file
diff --git a/lib/std/os/linux/aarch64.zig b/lib/std/os/linux/aarch64.zig
@@ -199,30 +199,6 @@ pub const Flock = extern struct {
__unused: [4]u8,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: i32,
- __pad1: i32 = 0,
- control: ?*anyopaque,
- controllen: socklen_t,
- __pad2: socklen_t = 0,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: i32,
- __pad1: i32 = 0,
- control: ?*const anyopaque,
- controllen: socklen_t,
- __pad2: socklen_t = 0,
- flags: i32,
-};
-
pub const blksize_t = i32;
pub const nlink_t = u32;
pub const time_t = isize;
diff --git a/lib/std/os/linux/arm.zig b/lib/std/os/linux/arm.zig
@@ -237,26 +237,6 @@ pub const Flock = extern struct {
__unused: [4]u8,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: i32,
- control: ?*anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: i32,
- control: ?*const anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
pub const blksize_t = i32;
pub const nlink_t = u32;
pub const time_t = isize;
diff --git a/lib/std/os/linux/mips.zig b/lib/std/os/linux/mips.zig
@@ -309,26 +309,6 @@ pub const Flock = extern struct {
__unused: [4]u8,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: i32,
- control: ?*anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: i32,
- control: ?*const anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
pub const blksize_t = u32;
pub const nlink_t = u32;
pub const time_t = i32;
diff --git a/lib/std/os/linux/mips64.zig b/lib/std/os/linux/mips64.zig
@@ -288,26 +288,6 @@ pub const Flock = extern struct {
__unused: [4]u8,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: i32,
- control: ?*anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: i32,
- control: ?*const anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
pub const blksize_t = u32;
pub const nlink_t = u32;
pub const time_t = i32;
diff --git a/lib/std/os/linux/powerpc.zig b/lib/std/os/linux/powerpc.zig
@@ -247,26 +247,6 @@ pub const Flock = extern struct {
pid: pid_t,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: usize,
- control: ?*anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: usize,
- control: ?*const anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
pub const blksize_t = i32;
pub const nlink_t = u32;
pub const time_t = isize;
diff --git a/lib/std/os/linux/powerpc64.zig b/lib/std/os/linux/powerpc64.zig
@@ -233,26 +233,6 @@ pub const Flock = extern struct {
__unused: [4]u8,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: usize,
- control: ?*anyopaque,
- controllen: usize,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: usize,
- control: ?*const anyopaque,
- controllen: usize,
- flags: i32,
-};
-
pub const blksize_t = i64;
pub const nlink_t = u64;
pub const time_t = i64;
diff --git a/lib/std/os/linux/riscv32.zig b/lib/std/os/linux/riscv32.zig
@@ -200,30 +200,6 @@ pub const Flock = extern struct {
__unused: [4]u8,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: i32,
- __pad1: i32 = 0,
- control: ?*anyopaque,
- controllen: socklen_t,
- __pad2: socklen_t = 0,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: i32,
- __pad1: i32 = 0,
- control: ?*const anyopaque,
- controllen: socklen_t,
- __pad2: socklen_t = 0,
- flags: i32,
-};
-
// The `stat` definition used by the Linux kernel.
pub const Stat = extern struct {
dev: dev_t,
diff --git a/lib/std/os/linux/riscv64.zig b/lib/std/os/linux/riscv64.zig
@@ -200,30 +200,6 @@ pub const Flock = extern struct {
__unused: [4]u8,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: i32,
- __pad1: i32 = 0,
- control: ?*anyopaque,
- controllen: socklen_t,
- __pad2: socklen_t = 0,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: i32,
- __pad1: i32 = 0,
- control: ?*const anyopaque,
- controllen: socklen_t,
- __pad2: socklen_t = 0,
- flags: i32,
-};
-
// The `stat` definition used by the Linux kernel.
pub const Stat = extern struct {
dev: dev_t,
diff --git a/lib/std/os/linux/sparc64.zig b/lib/std/os/linux/sparc64.zig
@@ -282,26 +282,6 @@ pub const Flock = extern struct {
pid: pid_t,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: u64,
- control: ?*anyopaque,
- controllen: u64,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: u64,
- control: ?*const anyopaque,
- controllen: u64,
- flags: i32,
-};
-
pub const off_t = i64;
pub const ino_t = u64;
pub const time_t = isize;
diff --git a/lib/std/os/linux/x86.zig b/lib/std/os/linux/x86.zig
@@ -245,26 +245,6 @@ pub const Flock = extern struct {
pid: pid_t,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: i32,
- control: ?*anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: i32,
- control: ?*const anyopaque,
- controllen: socklen_t,
- flags: i32,
-};
-
pub const blksize_t = i32;
pub const nlink_t = u32;
pub const time_t = isize;
diff --git a/lib/std/os/linux/x86_64.zig b/lib/std/os/linux/x86_64.zig
@@ -233,30 +233,6 @@ pub const Flock = extern struct {
pid: pid_t,
};
-pub const msghdr = extern struct {
- name: ?*sockaddr,
- namelen: socklen_t,
- iov: [*]iovec,
- iovlen: i32,
- __pad1: i32 = 0,
- control: ?*anyopaque,
- controllen: socklen_t,
- __pad2: socklen_t = 0,
- flags: i32,
-};
-
-pub const msghdr_const = extern struct {
- name: ?*const sockaddr,
- namelen: socklen_t,
- iov: [*]const iovec_const,
- iovlen: i32,
- __pad1: i32 = 0,
- control: ?*const anyopaque,
- controllen: socklen_t,
- __pad2: socklen_t = 0,
- flags: i32,
-};
-
pub const off_t = i64;
pub const ino_t = u64;
pub const dev_t = u64;