Commit 9f9f215305

Isaac Freund <mail@isaacfreund.com>
2021-12-19 06:24:45
stage1, stage2: rename c_void to anyopaque (#10316)
zig fmt now replaces c_void with anyopaque to make updating code easy.
1 parent 8468b54
doc/docgen.zig
@@ -853,10 +853,10 @@ fn termColor(allocator: Allocator, input: []const u8) ![]u8 {
 }
 
 const builtin_types = [_][]const u8{
-    "f16",         "f32",      "f64",    "f128",     "c_longdouble", "c_short",
-    "c_ushort",    "c_int",    "c_uint", "c_long",   "c_ulong",      "c_longlong",
-    "c_ulonglong", "c_char",   "c_void", "void",     "bool",         "isize",
-    "usize",       "noreturn", "type",   "anyerror", "comptime_int", "comptime_float",
+    "f16",         "f32",      "f64",       "f128",     "c_longdouble", "c_short",
+    "c_ushort",    "c_int",    "c_uint",    "c_long",   "c_ulong",      "c_longlong",
+    "c_ulonglong", "c_char",   "anyopaque", "void",     "bool",         "isize",
+    "usize",       "noreturn", "type",      "anyerror", "comptime_int", "comptime_float",
 };
 
 fn isType(name: []const u8) bool {
doc/langref.html.in
@@ -720,11 +720,6 @@ pub fn main() void {
           <td><code class="c">long double</code></td>
           <td>for ABI compatibility with C</td>
         </tr>
-        <tr>
-            <th scope="row">{#syntax#}c_void{#endsyntax#}</th>
-          <td><code class="c">void</code></td>
-          <td>for ABI compatibility with C</td>
-        </tr>
 
         <tr>
             <th scope="row">{#syntax#}f16{#endsyntax#}</th>
@@ -751,6 +746,11 @@ pub fn main() void {
           <td><code class="c">bool</code></td>
           <td>{#syntax#}true{#endsyntax#} or {#syntax#}false{#endsyntax#}</td>
         </tr>
+        <tr>
+            <th scope="row">{#syntax#}anyopaque{#endsyntax#}</th>
+          <td><code class="c">void</code></td>
+          <td>Used for type-erased pointers.</td>
+        </tr>
         <tr>
             <th scope="row">{#syntax#}void{#endsyntax#}</th>
           <td>(none)</td>
lib/std/c/darwin.zig
@@ -46,8 +46,8 @@ pub const fstatat = if (native_arch == .aarch64) private.fstatat else private.@"
 pub extern "c" fn mach_absolute_time() u64;
 pub extern "c" fn mach_timebase_info(tinfo: ?*mach_timebase_info_data) void;
 
-pub extern "c" fn malloc_size(?*const c_void) usize;
-pub extern "c" fn posix_memalign(memptr: *?*c_void, alignment: usize, size: usize) c_int;
+pub extern "c" fn malloc_size(?*const anyopaque) usize;
+pub extern "c" fn posix_memalign(memptr: *?*anyopaque, alignment: usize, size: usize) c_int;
 
 pub extern "c" fn kevent64(
     kq: c_int,
@@ -196,7 +196,7 @@ pub extern "c" fn pthread_getname_np(thread: std.c.pthread_t, name: [*:0]u8, len
 pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void;
 
 // Grand Central Dispatch is exposed by libSystem.
-pub extern "c" fn dispatch_release(object: *c_void) void;
+pub extern "c" fn dispatch_release(object: *anyopaque) void;
 
 pub const dispatch_semaphore_t = *opaque {};
 pub extern "c" fn dispatch_semaphore_create(value: isize) ?dispatch_semaphore_t;
@@ -209,10 +209,10 @@ pub const DISPATCH_TIME_FOREVER = ~@as(dispatch_time_t, 0);
 pub extern "c" fn dispatch_time(when: dispatch_time_t, delta: i64) dispatch_time_t;
 
 const dispatch_once_t = usize;
-const dispatch_function_t = fn (?*c_void) callconv(.C) void;
+const dispatch_function_t = fn (?*anyopaque) callconv(.C) void;
 pub extern fn dispatch_once_f(
     predicate: *dispatch_once_t,
-    context: ?*c_void,
+    context: ?*anyopaque,
     function: dispatch_function_t,
 ) void;
 
@@ -243,9 +243,9 @@ pub const UL_COMPARE_AND_WAIT64 = 5;
 pub const UL_COMPARE_AND_WAIT64_SHARED = 6;
 pub const ULF_WAIT_ADAPTIVE_SPIN = 0x40000;
 
-pub extern "c" fn __ulock_wait2(op: u32, addr: ?*const c_void, val: u64, timeout_ns: u64, val2: u64) c_int;
-pub extern "c" fn __ulock_wait(op: u32, addr: ?*const c_void, val: u64, timeout_us: u32) c_int;
-pub extern "c" fn __ulock_wake(op: u32, addr: ?*const c_void, val: u64) c_int;
+pub extern "c" fn __ulock_wait2(op: u32, addr: ?*const anyopaque, val: u64, timeout_ns: u64, val2: u64) c_int;
+pub extern "c" fn __ulock_wait(op: u32, addr: ?*const anyopaque, val: u64, timeout_us: u32) c_int;
+pub extern "c" fn __ulock_wake(op: u32, addr: ?*const anyopaque, val: u64) c_int;
 
 pub const OS_UNFAIR_LOCK_INIT = os_unfair_lock{};
 pub const os_unfair_lock_t = *os_unfair_lock;
@@ -483,10 +483,10 @@ pub const siginfo_t = extern struct {
     pid: pid_t,
     uid: uid_t,
     status: c_int,
-    addr: *c_void,
+    addr: *anyopaque,
     value: extern union {
         int: c_int,
-        ptr: *c_void,
+        ptr: *anyopaque,
     },
     si_band: c_long,
     _pad: [7]c_ulong,
@@ -495,7 +495,7 @@ pub const siginfo_t = extern struct {
 /// Renamed from `sigaction` to `Sigaction` to avoid conflict with function name.
 pub const Sigaction = extern struct {
     pub const handler_fn = fn (c_int) callconv(.C) void;
-    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const c_void) callconv(.C) void;
+    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
 
     handler: extern union {
         handler: ?handler_fn,
@@ -611,7 +611,7 @@ pub const MAP = struct {
     pub const NOCACHE = 0x0400;
     /// don't reserve needed swap area
     pub const NORESERVE = 0x0040;
-    pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
 };
 
 pub const SA = struct {
@@ -1537,10 +1537,10 @@ pub const RTLD = struct {
     pub const NODELETE = 0x80;
     pub const FIRST = 0x100;
 
-    pub const NEXT = @intToPtr(*c_void, @bitCast(usize, @as(isize, -1)));
-    pub const DEFAULT = @intToPtr(*c_void, @bitCast(usize, @as(isize, -2)));
-    pub const SELF = @intToPtr(*c_void, @bitCast(usize, @as(isize, -3)));
-    pub const MAIN_ONLY = @intToPtr(*c_void, @bitCast(usize, @as(isize, -5)));
+    pub const NEXT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1)));
+    pub const DEFAULT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -2)));
+    pub const SELF = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -3)));
+    pub const MAIN_ONLY = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -5)));
 };
 
 pub const F = struct {
lib/std/c/dragonfly.zig
@@ -12,18 +12,18 @@ pub extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int;
 pub extern "c" fn getrandom(buf_ptr: [*]u8, buf_len: usize, flags: c_uint) isize;
 pub extern "c" fn pipe2(fds: *[2]fd_t, flags: u32) c_int;
 
-pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*c_void) callconv(.C) c_int;
-pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*c_void) c_int;
+pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
+pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
 
 pub extern "c" fn lwp_gettid() c_int;
 
-pub extern "c" fn posix_memalign(memptr: *?*c_void, alignment: usize, size: usize) c_int;
+pub extern "c" fn posix_memalign(memptr: *?*anyopaque, alignment: usize, size: usize) c_int;
 
 pub const pthread_mutex_t = extern struct {
-    inner: ?*c_void = null,
+    inner: ?*anyopaque = null,
 };
 pub const pthread_cond_t = extern struct {
-    inner: ?*c_void = null,
+    inner: ?*anyopaque = null,
 };
 
 pub const pthread_attr_t = extern struct { // copied from freebsd
@@ -165,7 +165,7 @@ pub const PROT = struct {
 
 pub const MAP = struct {
     pub const FILE = 0;
-    pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
     pub const ANONYMOUS = ANON;
     pub const COPY = PRIVATE;
     pub const SHARED = 1;
@@ -648,7 +648,7 @@ pub const siginfo_t = extern struct {
     pid: c_int,
     uid: uid_t,
     status: c_int,
-    addr: ?*c_void,
+    addr: ?*anyopaque,
     value: sigval,
     band: c_long,
     __spare__: [7]c_int,
@@ -656,7 +656,7 @@ pub const siginfo_t = extern struct {
 
 pub const sigval = extern union {
     sival_int: c_int,
-    sival_ptr: ?*c_void,
+    sival_ptr: ?*anyopaque,
 };
 
 pub const _SIG_WORDS = 4;
@@ -671,7 +671,7 @@ pub const sig_atomic_t = c_int;
 
 pub const Sigaction = extern struct {
     pub const handler_fn = fn (c_int) callconv(.C) void;
-    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const c_void) callconv(.C) void;
+    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
 
     /// signal handler
     handler: extern union {
@@ -847,10 +847,10 @@ pub const RTLD = struct {
     pub const NODELETE = 0x01000;
     pub const NOLOAD = 0x02000;
 
-    pub const NEXT = @intToPtr(*c_void, @bitCast(usize, @as(isize, -1)));
-    pub const DEFAULT = @intToPtr(*c_void, @bitCast(usize, @as(isize, -2)));
-    pub const SELF = @intToPtr(*c_void, @bitCast(usize, @as(isize, -3)));
-    pub const ALL = @intToPtr(*c_void, @bitCast(usize, @as(isize, -4)));
+    pub const NEXT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1)));
+    pub const DEFAULT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -2)));
+    pub const SELF = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -3)));
+    pub const ALL = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -4)));
 };
 
 pub const dl_phdr_info = extern struct {
@@ -865,11 +865,11 @@ pub const cmsghdr = extern struct {
     cmsg_type: c_int,
 };
 pub const msghdr = extern struct {
-    msg_name: ?*c_void,
+    msg_name: ?*anyopaque,
     msg_namelen: socklen_t,
     msg_iov: [*c]iovec,
     msg_iovlen: c_int,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: socklen_t,
     msg_flags: c_int,
 };
lib/std/c/freebsd.zig
@@ -16,8 +16,8 @@ pub extern "c" fn pthread_set_name_np(thread: std.c.pthread_t, name: [*:0]const
 pub extern "c" fn pthread_get_name_np(thread: std.c.pthread_t, name: [*:0]u8, len: usize) void;
 pub extern "c" fn pipe2(fds: *[2]fd_t, flags: u32) c_int;
 
-pub extern "c" fn posix_memalign(memptr: *?*c_void, alignment: usize, size: usize) c_int;
-pub extern "c" fn malloc_usable_size(?*const c_void) usize;
+pub extern "c" fn posix_memalign(memptr: *?*anyopaque, alignment: usize, size: usize) c_int;
+pub extern "c" fn malloc_usable_size(?*const anyopaque) usize;
 
 pub const sf_hdtr = extern struct {
     headers: [*]const iovec_const,
@@ -35,17 +35,17 @@ pub extern "c" fn sendfile(
     flags: u32,
 ) c_int;
 
-pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*c_void) callconv(.C) c_int;
-pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*c_void) c_int;
+pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
+pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
 
 pub const pthread_mutex_t = extern struct {
-    inner: ?*c_void = null,
+    inner: ?*anyopaque = null,
 };
 pub const pthread_cond_t = extern struct {
-    inner: ?*c_void = null,
+    inner: ?*anyopaque = null,
 };
 pub const pthread_rwlock_t = extern struct {
-    ptr: ?*c_void = null,
+    ptr: ?*anyopaque = null,
 };
 
 pub const pthread_attr_t = extern struct {
@@ -216,7 +216,7 @@ pub const msghdr = extern struct {
     msg_iovlen: i32,
 
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
 
     /// ancillary data buffer len
     msg_controllen: socklen_t,
@@ -239,7 +239,7 @@ pub const msghdr_const = extern struct {
     msg_iovlen: i32,
 
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
 
     /// ancillary data buffer len
     msg_controllen: socklen_t,
@@ -393,7 +393,7 @@ pub const CLOCK = struct {
 };
 
 pub const MAP = struct {
-    pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
     pub const SHARED = 0x0001;
     pub const PRIVATE = 0x0002;
     pub const FIXED = 0x0010;
@@ -515,7 +515,7 @@ pub const SIG = struct {
 };
 pub const sigval = extern union {
     int: c_int,
-    ptr: ?*c_void,
+    ptr: ?*anyopaque,
 };
 
 pub const sigset_t = extern struct {
@@ -949,7 +949,7 @@ const NSIG = 32;
 /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
 pub const Sigaction = extern struct {
     pub const handler_fn = fn (c_int) callconv(.C) void;
-    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const c_void) callconv(.C) void;
+    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
 
     /// signal handler
     handler: extern union {
@@ -971,7 +971,7 @@ pub const siginfo_t = extern struct {
     pid: pid_t,
     uid: uid_t,
     status: c_int,
-    addr: ?*c_void,
+    addr: ?*anyopaque,
     value: sigval,
     reason: extern union {
         fault: extern struct {
lib/std/c/haiku.zig
@@ -10,7 +10,7 @@ pub const _errno = _errnop;
 
 pub extern "c" fn find_directory(which: c_int, volume: i32, createIt: bool, path_ptr: [*]u8, length: i32) u64;
 
-pub extern "c" fn find_thread(thread_name: ?*c_void) i32;
+pub extern "c" fn find_thread(thread_name: ?*anyopaque) i32;
 
 pub extern "c" fn get_system_info(system_info: *system_info) usize;
 
@@ -41,7 +41,7 @@ pub const pthread_attr_t = extern struct {
     __sched_priority: i32,
     __stack_size: i32,
     __guard_size: i32,
-    __stack_address: ?*c_void,
+    __stack_address: ?*anyopaque,
 };
 
 pub const pthread_mutex_t = extern struct {
@@ -55,7 +55,7 @@ pub const pthread_mutex_t = extern struct {
 pub const pthread_cond_t = extern struct {
     flags: u32 = 0,
     unused: i32 = -42,
-    mutex: ?*c_void = null,
+    mutex: ?*anyopaque = null,
     waiter_count: i32 = 0,
     lock: i32 = 0,
 };
@@ -180,7 +180,7 @@ pub const msghdr = extern struct {
     msg_iovlen: i32,
 
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
 
     /// ancillary data buffer len
     msg_controllen: socklen_t,
@@ -262,7 +262,7 @@ pub const area_info = extern struct {
     copy_count: u32,
     in_count: u32,
     out_count: u32,
-    address: *c_void,
+    address: *anyopaque,
 };
 
 pub const MAXPATHLEN = PATH_MAX;
@@ -272,13 +272,13 @@ pub const image_info = extern struct {
     image_type: u32,
     sequence: i32,
     init_order: i32,
-    init_routine: *c_void,
-    term_routine: *c_void,
+    init_routine: *anyopaque,
+    term_routine: *anyopaque,
     device: i32,
     node: i64,
     name: [MAXPATHLEN]u8,
-    text: *c_void,
-    data: *c_void,
+    text: *anyopaque,
+    data: *anyopaque,
     text_size: i32,
     data_size: i32,
     api_version: i32,
@@ -396,7 +396,7 @@ pub const CLOCK = struct {
 
 pub const MAP = struct {
     /// mmap() error return code
-    pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
     /// changes are seen by others
     pub const SHARED = 0x01;
     /// changes are only seen by caller
lib/std/c/linux.zig
@@ -28,7 +28,7 @@ pub const MADV = linux.MADV;
 pub const MAP = struct {
     pub usingnamespace linux.MAP;
     /// Only used by libc to communicate failure.
-    pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
 };
 pub const MMAP2_UNIT = linux.MMAP2_UNIT;
 pub const MSG = linux.MSG;
@@ -228,7 +228,7 @@ pub extern "c" fn fstatat64(dirfd: fd_t, path: [*:0]const u8, stat_buf: *Stat, f
 pub extern "c" fn ftruncate64(fd: c_int, length: off_t) c_int;
 pub extern "c" fn getrlimit64(resource: rlimit_resource, rlim: *rlimit) c_int;
 pub extern "c" fn lseek64(fd: fd_t, offset: i64, whence: c_int) i64;
-pub extern "c" fn mmap64(addr: ?*align(std.mem.page_size) c_void, len: usize, prot: c_uint, flags: c_uint, fd: fd_t, offset: i64) *c_void;
+pub extern "c" fn mmap64(addr: ?*align(std.mem.page_size) anyopaque, len: usize, prot: c_uint, flags: c_uint, fd: fd_t, offset: i64) *anyopaque;
 pub extern "c" fn open64(path: [*:0]const u8, oflag: c_uint, ...) c_int;
 pub extern "c" fn openat64(fd: c_int, path: [*:0]const u8, oflag: c_uint, ...) c_int;
 pub extern "c" fn pread64(fd: fd_t, buf: [*]u8, nbyte: usize, offset: i64) isize;
@@ -258,8 +258,8 @@ pub extern "c" fn inotify_rm_watch(fd: fd_t, wd: c_int) c_int;
 /// See std.elf for constants for this
 pub extern "c" fn getauxval(__type: c_ulong) c_ulong;
 
-pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*c_void) callconv(.C) c_int;
-pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*c_void) c_int;
+pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
+pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
 
 pub extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int;
 
@@ -280,11 +280,11 @@ pub extern "c" fn copy_file_range(fd_in: fd_t, off_in: ?*i64, fd_out: fd_t, off_
 pub extern "c" fn signalfd(fd: fd_t, mask: *const sigset_t, flags: c_uint) c_int;
 
 pub extern "c" fn prlimit(pid: pid_t, resource: rlimit_resource, new_limit: *const rlimit, old_limit: *rlimit) c_int;
-pub extern "c" fn posix_memalign(memptr: *?*c_void, alignment: usize, size: usize) c_int;
-pub extern "c" fn malloc_usable_size(?*const c_void) usize;
+pub extern "c" fn posix_memalign(memptr: *?*anyopaque, alignment: usize, size: usize) c_int;
+pub extern "c" fn malloc_usable_size(?*const anyopaque) usize;
 
 pub extern "c" fn madvise(
-    addr: *align(std.mem.page_size) c_void,
+    addr: *align(std.mem.page_size) anyopaque,
     length: usize,
     advice: c_uint,
 ) c_int;
lib/std/c/netbsd.zig
@@ -9,8 +9,8 @@ const rusage = std.c.rusage;
 extern "c" fn __errno() *c_int;
 pub const _errno = __errno;
 
-pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*c_void) callconv(.C) c_int;
-pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*c_void) c_int;
+pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
+pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
 
 pub extern "c" fn _lwp_self() lwpid_t;
 
@@ -56,7 +56,7 @@ pub const getrusage = __getrusage50;
 pub extern "c" fn __libc_thr_yield() c_int;
 pub const sched_yield = __libc_thr_yield;
 
-pub extern "c" fn posix_memalign(memptr: *?*c_void, alignment: usize, size: usize) c_int;
+pub extern "c" fn posix_memalign(memptr: *?*anyopaque, alignment: usize, size: usize) c_int;
 
 pub const pthread_mutex_t = extern struct {
     magic: u32 = 0x33330003,
@@ -65,7 +65,7 @@ pub const pthread_mutex_t = extern struct {
     owner: usize = 0,
     waiters: ?*u8 = null,
     recursed: u32 = 0,
-    spare2: ?*c_void = null,
+    spare2: ?*anyopaque = null,
 };
 
 pub const pthread_cond_t = extern struct {
@@ -74,7 +74,7 @@ pub const pthread_cond_t = extern struct {
     waiters_first: ?*u8 = null,
     waiters_last: ?*u8 = null,
     mutex: ?*pthread_mutex_t = null,
-    private: ?*c_void = null,
+    private: ?*anyopaque = null,
 };
 
 pub const pthread_rwlock_t = extern struct {
@@ -90,7 +90,7 @@ pub const pthread_rwlock_t = extern struct {
     wblocked_last: ?*u8 = null,
     nreaders: c_uint = 0,
     owner: std.c.pthread_t = null,
-    private: ?*c_void = null,
+    private: ?*anyopaque = null,
 };
 
 const pthread_spin_t = switch (builtin.cpu.arch) {
@@ -113,12 +113,12 @@ const padded_pthread_spin_t = switch (builtin.cpu.arch) {
 pub const pthread_attr_t = extern struct {
     pta_magic: u32,
     pta_flags: i32,
-    pta_private: ?*c_void,
+    pta_private: ?*anyopaque,
 };
 
 pub const sem_t = ?*opaque {};
 
-pub extern "c" fn pthread_setname_np(thread: std.c.pthread_t, name: [*:0]const u8, arg: ?*c_void) E;
+pub extern "c" fn pthread_setname_np(thread: std.c.pthread_t, name: [*:0]const u8, arg: ?*anyopaque) E;
 pub extern "c" fn pthread_getname_np(thread: std.c.pthread_t, name: [*:0]u8, len: usize) E;
 
 pub const blkcnt_t = i64;
@@ -156,9 +156,9 @@ pub const RTLD = struct {
     pub const NODELETE = 0x01000;
     pub const NOLOAD = 0x02000;
 
-    pub const NEXT = @intToPtr(*c_void, @bitCast(usize, @as(isize, -1)));
-    pub const DEFAULT = @intToPtr(*c_void, @bitCast(usize, @as(isize, -2)));
-    pub const SELF = @intToPtr(*c_void, @bitCast(usize, @as(isize, -3)));
+    pub const NEXT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1)));
+    pub const DEFAULT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -2)));
+    pub const SELF = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -3)));
 };
 
 pub const dl_phdr_info = extern struct {
@@ -249,7 +249,7 @@ pub const msghdr = extern struct {
     msg_iovlen: i32,
 
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
 
     /// ancillary data buffer len
     msg_controllen: socklen_t,
@@ -272,7 +272,7 @@ pub const msghdr_const = extern struct {
     msg_iovlen: i32,
 
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
 
     /// ancillary data buffer len
     msg_controllen: socklen_t,
@@ -556,7 +556,7 @@ pub const CLOCK = struct {
 };
 
 pub const MAP = struct {
-    pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
     pub const SHARED = 0x0001;
     pub const PRIVATE = 0x0002;
     pub const REMAPDUP = 0x0004;
@@ -962,7 +962,7 @@ pub const SIG = struct {
 /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
 pub const Sigaction = extern struct {
     pub const handler_fn = fn (c_int) callconv(.C) void;
-    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const c_void) callconv(.C) void;
+    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
 
     /// signal handler
     handler: extern union {
@@ -977,7 +977,7 @@ pub const Sigaction = extern struct {
 
 pub const sigval_t = extern union {
     int: i32,
-    ptr: ?*c_void,
+    ptr: ?*anyopaque,
 };
 
 pub const siginfo_t = extern union {
@@ -1005,7 +1005,7 @@ pub const _ksiginfo = extern struct {
             stime: clock_t,
         },
         fault: extern struct {
-            addr: ?*c_void,
+            addr: ?*anyopaque,
             trap: i32,
             trap2: i32,
             trap3: i32,
lib/std/c/openbsd.zig
@@ -7,8 +7,8 @@ const iovec_const = std.os.iovec_const;
 extern "c" fn __errno() *c_int;
 pub const _errno = __errno;
 
-pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*c_void) callconv(.C) c_int;
-pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*c_void) c_int;
+pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
+pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
 
 pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void;
 
@@ -19,25 +19,25 @@ pub extern "c" fn getdents(fd: c_int, buf_ptr: [*]u8, nbytes: usize) usize;
 pub extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int;
 
 pub const pthread_mutex_t = extern struct {
-    inner: ?*c_void = null,
+    inner: ?*anyopaque = null,
 };
 pub const pthread_cond_t = extern struct {
-    inner: ?*c_void = null,
+    inner: ?*anyopaque = null,
 };
 pub const pthread_rwlock_t = extern struct {
-    ptr: ?*c_void = null,
+    ptr: ?*anyopaque = null,
 };
 pub const pthread_spinlock_t = extern struct {
-    inner: ?*c_void = null,
+    inner: ?*anyopaque = null,
 };
 pub const pthread_attr_t = extern struct {
-    inner: ?*c_void = null,
+    inner: ?*anyopaque = null,
 };
 pub const pthread_key_t = c_int;
 
 pub const sem_t = ?*opaque {};
 
-pub extern "c" fn posix_memalign(memptr: *?*c_void, alignment: usize, size: usize) c_int;
+pub extern "c" fn posix_memalign(memptr: *?*anyopaque, alignment: usize, size: usize) c_int;
 
 pub extern "c" fn pledge(promises: ?[*:0]const u8, execpromises: ?[*:0]const u8) c_int;
 pub extern "c" fn unveil(path: ?[*:0]const u8, permissions: ?[*:0]const u8) c_int;
@@ -174,7 +174,7 @@ pub const msghdr = extern struct {
     msg_iovlen: c_uint,
 
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
 
     /// ancillary data buffer len
     msg_controllen: socklen_t,
@@ -197,7 +197,7 @@ pub const msghdr_const = extern struct {
     msg_iovlen: c_uint,
 
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
 
     /// ancillary data buffer len
     msg_controllen: socklen_t,
@@ -346,7 +346,7 @@ pub const CLOCK = struct {
 };
 
 pub const MAP = struct {
-    pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
     pub const SHARED = 0x0001;
     pub const PRIVATE = 0x0002;
     pub const FIXED = 0x0010;
@@ -889,7 +889,7 @@ pub const SIG = struct {
 /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
 pub const Sigaction = extern struct {
     pub const handler_fn = fn (c_int) callconv(.C) void;
-    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const c_void) callconv(.C) void;
+    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
 
     /// signal handler
     handler: extern union {
@@ -904,7 +904,7 @@ pub const Sigaction = extern struct {
 
 pub const sigval = extern union {
     int: c_int,
-    ptr: ?*c_void,
+    ptr: ?*anyopaque,
 };
 
 pub const siginfo_t = extern struct {
@@ -927,7 +927,7 @@ pub const siginfo_t = extern struct {
             },
         },
         fault: extern struct {
-            addr: ?*c_void,
+            addr: ?*anyopaque,
             trapno: c_int,
         },
         __pad: [128 - 3 * @sizeOf(c_int)]u8,
lib/std/c/solaris.zig
@@ -8,14 +8,14 @@ const timezone = std.c.timezone;
 extern "c" fn ___errno() *c_int;
 pub const _errno = ___errno;
 
-pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*c_void) callconv(.C) c_int;
-pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*c_void) c_int;
+pub const dl_iterate_phdr_callback = fn (info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int;
+pub extern "c" fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*anyopaque) c_int;
 
 pub extern "c" fn getdents(fd: c_int, buf_ptr: [*]u8, nbytes: usize) usize;
 pub extern "c" fn sigaltstack(ss: ?*stack_t, old_ss: ?*stack_t) c_int;
 pub extern "c" fn pipe2(fds: *[2]fd_t, flags: u32) c_int;
 pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void;
-pub extern "c" fn posix_memalign(memptr: *?*c_void, alignment: usize, size: usize) c_int;
+pub extern "c" fn posix_memalign(memptr: *?*anyopaque, alignment: usize, size: usize) c_int;
 pub extern "c" fn sysconf(sc: c_int) i64;
 pub extern "c" fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) c_int;
 pub extern "c" fn madvise(address: [*]u8, len: usize, advise: u32) c_int;
@@ -44,7 +44,7 @@ pub const pthread_rwlock_t = extern struct {
     writercv: pthread_cond_t = .{},
 };
 pub const pthread_attr_t = extern struct {
-    mutexattr: ?*c_void = null,
+    mutexattr: ?*anyopaque = null,
 };
 pub const pthread_key_t = c_int;
 
@@ -56,7 +56,7 @@ pub const sem_t = extern struct {
     __pad2: [2]u64 = [_]u64{0} ** 2,
 };
 
-pub extern "c" fn pthread_setname_np(thread: std.c.pthread_t, name: [*:0]const u8, arg: ?*c_void) E;
+pub extern "c" fn pthread_setname_np(thread: std.c.pthread_t, name: [*:0]const u8, arg: ?*anyopaque) E;
 pub extern "c" fn pthread_getname_np(thread: std.c.pthread_t, name: [*:0]u8, len: usize) E;
 
 pub const blkcnt_t = i64;
@@ -109,10 +109,10 @@ pub const RTLD = struct {
     pub const FIRST = 0x02000;
     pub const CONFGEN = 0x10000;
 
-    pub const NEXT = @intToPtr(*c_void, @bitCast(usize, @as(isize, -1)));
-    pub const DEFAULT = @intToPtr(*c_void, @bitCast(usize, @as(isize, -2)));
-    pub const SELF = @intToPtr(*c_void, @bitCast(usize, @as(isize, -3)));
-    pub const PROBE = @intToPtr(*c_void, @bitCast(usize, @as(isize, -4)));
+    pub const NEXT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1)));
+    pub const DEFAULT = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -2)));
+    pub const SELF = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -3)));
+    pub const PROBE = @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -4)));
 };
 
 pub const Flock = extern struct {
@@ -189,7 +189,7 @@ pub const msghdr = extern struct {
     /// # elements in msg_iov
     msg_iovlen: i32,
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     /// ancillary data buffer len
     msg_controllen: socklen_t,
     /// flags on received message
@@ -206,7 +206,7 @@ pub const msghdr_const = extern struct {
     /// # elements in msg_iov
     msg_iovlen: i32,
     /// ancillary data
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     /// ancillary data buffer len
     msg_controllen: socklen_t,
     /// flags on received message
@@ -514,7 +514,7 @@ pub const CLOCK = struct {
 };
 
 pub const MAP = struct {
-    pub const FAILED = @intToPtr(*c_void, maxInt(usize));
+    pub const FAILED = @intToPtr(*anyopaque, maxInt(usize));
     pub const SHARED = 0x0001;
     pub const PRIVATE = 0x0002;
     pub const TYPE = 0x000f;
@@ -947,7 +947,7 @@ pub const SIG = struct {
 /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
 pub const Sigaction = extern struct {
     pub const handler_fn = fn (c_int) callconv(.C) void;
-    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const c_void) callconv(.C) void;
+    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
 
     /// signal options
     flags: c_uint,
@@ -962,7 +962,7 @@ pub const Sigaction = extern struct {
 
 pub const sigval_t = extern union {
     int: c_int,
-    ptr: ?*c_void,
+    ptr: ?*anyopaque,
 };
 
 pub const siginfo_t = extern struct {
@@ -989,9 +989,9 @@ pub const siginfo_t = extern struct {
             zone: zoneid_t,
         },
         fault: extern struct {
-            addr: ?*c_void,
+            addr: ?*anyopaque,
             trapno: c_int,
-            pc: ?*c_void,
+            pc: ?*anyopaque,
         },
         file: extern struct {
             // fd not currently available for SIGPOLL.
@@ -999,7 +999,7 @@ pub const siginfo_t = extern struct {
             band: c_long,
         },
         prof: extern struct {
-            addr: ?*c_void,
+            addr: ?*anyopaque,
             timestamp: timespec,
             syscall: c_short,
             sysarg: u8,
@@ -1065,7 +1065,7 @@ pub const ucontext_t = extern struct {
     sigmask: sigset_t,
     stack: stack_t,
     mcontext: mcontext_t,
-    brand_data: [3]?*c_void,
+    brand_data: [3]?*anyopaque,
     filler: [2]i64,
 };
 
@@ -1783,9 +1783,9 @@ pub const port_event = extern struct {
     source: u16,
     __pad: u16,
     /// Source-specific object.
-    object: ?*c_void,
+    object: ?*anyopaque,
     /// User cookie.
-    cookie: ?*c_void,
+    cookie: ?*anyopaque,
 };
 
 pub const port_notify = extern struct {
lib/std/c/windows.zig
@@ -5,7 +5,7 @@ const windows = std.os.windows;
 
 pub extern "c" fn _errno() *c_int;
 
-pub extern "c" fn _msize(memblock: ?*c_void) usize;
+pub extern "c" fn _msize(memblock: ?*anyopaque) usize;
 
 // TODO: copied the else case and removed the socket function (because its in ws2_32)
 //       need to verify which of these is actually supported on windows
lib/std/crypto/tlcsprng.zig
@@ -59,7 +59,7 @@ var install_atfork_handler = std.once(struct {
 
 threadlocal var wipe_mem: []align(mem.page_size) u8 = &[_]u8{};
 
-fn tlsCsprngFill(_: *c_void, buffer: []u8) void {
+fn tlsCsprngFill(_: *anyopaque, buffer: []u8) void {
     if (builtin.link_libc and @hasDecl(std.c, "arc4random_buf")) {
         // arc4random is already a thread-local CSPRNG.
         return std.c.arc4random_buf(buffer.ptr, buffer.len);
lib/std/fs/get_app_data_dir.zig
@@ -23,7 +23,7 @@ pub fn getAppDataDir(allocator: mem.Allocator, appname: []const u8) GetAppDataDi
                 &dir_path_ptr,
             )) {
                 os.windows.S_OK => {
-                    defer os.windows.ole32.CoTaskMemFree(@ptrCast(*c_void, dir_path_ptr));
+                    defer os.windows.ole32.CoTaskMemFree(@ptrCast(*anyopaque, dir_path_ptr));
                     const global_dir = unicode.utf16leToUtf8Alloc(allocator, mem.sliceTo(dir_path_ptr, 0)) catch |err| switch (err) {
                         error.UnexpectedSecondSurrogateHalf => return error.AppDataDirUnavailable,
                         error.ExpectedSecondSurrogateHalf => return error.AppDataDirUnavailable,
lib/std/mem/Allocator.zig
@@ -10,7 +10,7 @@ const builtin = @import("builtin");
 pub const Error = error{OutOfMemory};
 
 // The type erased pointer to the allocator implementation
-ptr: *c_void,
+ptr: *anyopaque,
 vtable: *const VTable,
 
 pub const VTable = struct {
@@ -23,7 +23,7 @@ pub const VTable = struct {
     ///
     /// `ret_addr` is optionally provided as the first return address of the allocation call stack.
     /// If the value is `0` it means no return address has been provided.
-    alloc: fn (ptr: *c_void, len: usize, ptr_align: u29, len_align: u29, ret_addr: usize) Error![]u8,
+    alloc: fn (ptr: *anyopaque, len: usize, ptr_align: u29, len_align: u29, ret_addr: usize) Error![]u8,
 
     /// Attempt to expand or shrink memory in place. `buf.len` must equal the most recent
     /// length returned by `alloc` or `resize`. `buf_align` must equal the same value
@@ -42,14 +42,14 @@ pub const VTable = struct {
     ///
     /// `ret_addr` is optionally provided as the first return address of the allocation call stack.
     /// If the value is `0` it means no return address has been provided.
-    resize: fn (ptr: *c_void, buf: []u8, buf_align: u29, new_len: usize, len_align: u29, ret_addr: usize) ?usize,
+    resize: fn (ptr: *anyopaque, buf: []u8, buf_align: u29, new_len: usize, len_align: u29, ret_addr: usize) ?usize,
 
     /// Free and invalidate a buffer. `buf.len` must equal the most recent length returned by `alloc` or `resize`. 
     /// `buf_align` must equal the same value that was passed as the `ptr_align` parameter to the original `alloc` call.
     ///
     /// `ret_addr` is optionally provided as the first return address of the allocation call stack.
     /// If the value is `0` it means no return address has been provided.
-    free: fn (ptr: *c_void, buf: []u8, buf_align: u29, ret_addr: usize) void,
+    free: fn (ptr: *anyopaque, buf: []u8, buf_align: u29, ret_addr: usize) void,
 };
 
 pub fn init(
@@ -67,16 +67,16 @@ pub fn init(
     const alignment = ptr_info.Pointer.alignment;
 
     const gen = struct {
-        fn allocImpl(ptr: *c_void, len: usize, ptr_align: u29, len_align: u29, ret_addr: usize) Error![]u8 {
+        fn allocImpl(ptr: *anyopaque, len: usize, ptr_align: u29, len_align: u29, ret_addr: usize) Error![]u8 {
             const self = @ptrCast(Ptr, @alignCast(alignment, ptr));
             return @call(.{ .modifier = .always_inline }, allocFn, .{ self, len, ptr_align, len_align, ret_addr });
         }
-        fn resizeImpl(ptr: *c_void, buf: []u8, buf_align: u29, new_len: usize, len_align: u29, ret_addr: usize) ?usize {
+        fn resizeImpl(ptr: *anyopaque, buf: []u8, buf_align: u29, new_len: usize, len_align: u29, ret_addr: usize) ?usize {
             assert(new_len != 0);
             const self = @ptrCast(Ptr, @alignCast(alignment, ptr));
             return @call(.{ .modifier = .always_inline }, resizeFn, .{ self, buf, buf_align, new_len, len_align, ret_addr });
         }
-        fn freeImpl(ptr: *c_void, buf: []u8, buf_align: u29, ret_addr: usize) void {
+        fn freeImpl(ptr: *anyopaque, buf: []u8, buf_align: u29, ret_addr: usize) void {
             const self = @ptrCast(Ptr, @alignCast(alignment, ptr));
             @call(.{ .modifier = .always_inline }, freeFn, .{ self, buf, buf_align, ret_addr });
         }
lib/std/os/linux/bpf/helpers.zig
@@ -11,22 +11,22 @@ const SkFullSock = @compileError("TODO missing os bits: SkFullSock");
 //
 // Note, these function signatures were created from documentation found in
 // '/usr/include/linux/bpf.h'
-pub const map_lookup_elem = @intToPtr(fn (map: *const kern.MapDef, key: ?*const c_void) ?*c_void, 1);
-pub const map_update_elem = @intToPtr(fn (map: *const kern.MapDef, key: ?*const c_void, value: ?*const c_void, flags: u64) c_long, 2);
-pub const map_delete_elem = @intToPtr(fn (map: *const kern.MapDef, key: ?*const c_void) c_long, 3);
-pub const probe_read = @intToPtr(fn (dst: ?*c_void, size: u32, unsafe_ptr: ?*const c_void) c_long, 4);
+pub const map_lookup_elem = @intToPtr(fn (map: *const kern.MapDef, key: ?*const anyopaque) ?*anyopaque, 1);
+pub const map_update_elem = @intToPtr(fn (map: *const kern.MapDef, key: ?*const anyopaque, value: ?*const anyopaque, flags: u64) c_long, 2);
+pub const map_delete_elem = @intToPtr(fn (map: *const kern.MapDef, key: ?*const anyopaque) c_long, 3);
+pub const probe_read = @intToPtr(fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 4);
 pub const ktime_get_ns = @intToPtr(fn () u64, 5);
 pub const trace_printk = @intToPtr(fn (fmt: [*:0]const u8, fmt_size: u32, arg1: u64, arg2: u64, arg3: u64) c_long, 6);
 pub const get_prandom_u32 = @intToPtr(fn () u32, 7);
 pub const get_smp_processor_id = @intToPtr(fn () u32, 8);
-pub const skb_store_bytes = @intToPtr(fn (skb: *kern.SkBuff, offset: u32, from: ?*const c_void, len: u32, flags: u64) c_long, 9);
+pub const skb_store_bytes = @intToPtr(fn (skb: *kern.SkBuff, offset: u32, from: ?*const anyopaque, len: u32, flags: u64) c_long, 9);
 pub const l3_csum_replace = @intToPtr(fn (skb: *kern.SkBuff, offset: u32, from: u64, to: u64, size: u64) c_long, 10);
 pub const l4_csum_replace = @intToPtr(fn (skb: *kern.SkBuff, offset: u32, from: u64, to: u64, flags: u64) c_long, 11);
-pub const tail_call = @intToPtr(fn (ctx: ?*c_void, prog_array_map: *const kern.MapDef, index: u32) c_long, 12);
+pub const tail_call = @intToPtr(fn (ctx: ?*anyopaque, prog_array_map: *const kern.MapDef, index: u32) c_long, 12);
 pub const clone_redirect = @intToPtr(fn (skb: *kern.SkBuff, ifindex: u32, flags: u64) c_long, 13);
 pub const get_current_pid_tgid = @intToPtr(fn () u64, 14);
 pub const get_current_uid_gid = @intToPtr(fn () u64, 15);
-pub const get_current_comm = @intToPtr(fn (buf: ?*c_void, size_of_buf: u32) c_long, 16);
+pub const get_current_comm = @intToPtr(fn (buf: ?*anyopaque, size_of_buf: u32) c_long, 16);
 pub const get_cgroup_classid = @intToPtr(fn (skb: *kern.SkBuff) u32, 17);
 // Note vlan_proto is big endian
 pub const skb_vlan_push = @intToPtr(fn (skb: *kern.SkBuff, vlan_proto: u16, vlan_tci: u16) c_long, 18);
@@ -36,20 +36,20 @@ pub const skb_set_tunnel_key = @intToPtr(fn (skb: *kern.SkBuff, key: *kern.Tunne
 pub const perf_event_read = @intToPtr(fn (map: *const kern.MapDef, flags: u64) u64, 22);
 pub const redirect = @intToPtr(fn (ifindex: u32, flags: u64) c_long, 23);
 pub const get_route_realm = @intToPtr(fn (skb: *kern.SkBuff) u32, 24);
-pub const perf_event_output = @intToPtr(fn (ctx: ?*c_void, map: *const kern.MapDef, flags: u64, data: ?*c_void, size: u64) c_long, 25);
-pub const skb_load_bytes = @intToPtr(fn (skb: ?*c_void, offset: u32, to: ?*c_void, len: u32) c_long, 26);
-pub const get_stackid = @intToPtr(fn (ctx: ?*c_void, map: *const kern.MapDef, flags: u64) c_long, 27);
+pub const perf_event_output = @intToPtr(fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 25);
+pub const skb_load_bytes = @intToPtr(fn (skb: ?*anyopaque, offset: u32, to: ?*anyopaque, len: u32) c_long, 26);
+pub const get_stackid = @intToPtr(fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64) c_long, 27);
 // from and to point to __be32
 pub const csum_diff = @intToPtr(fn (from: *u32, from_size: u32, to: *u32, to_size: u32, seed: u32) i64, 28);
-pub const skb_get_tunnel_opt = @intToPtr(fn (skb: *kern.SkBuff, opt: ?*c_void, size: u32) c_long, 29);
-pub const skb_set_tunnel_opt = @intToPtr(fn (skb: *kern.SkBuff, opt: ?*c_void, size: u32) c_long, 30);
+pub const skb_get_tunnel_opt = @intToPtr(fn (skb: *kern.SkBuff, opt: ?*anyopaque, size: u32) c_long, 29);
+pub const skb_set_tunnel_opt = @intToPtr(fn (skb: *kern.SkBuff, opt: ?*anyopaque, size: u32) c_long, 30);
 // proto is __be16
 pub const skb_change_proto = @intToPtr(fn (skb: *kern.SkBuff, proto: u16, flags: u64) c_long, 31);
 pub const skb_change_type = @intToPtr(fn (skb: *kern.SkBuff, skb_type: u32) c_long, 32);
-pub const skb_under_cgroup = @intToPtr(fn (skb: *kern.SkBuff, map: ?*const c_void, index: u32) c_long, 33);
+pub const skb_under_cgroup = @intToPtr(fn (skb: *kern.SkBuff, map: ?*const anyopaque, index: u32) c_long, 33);
 pub const get_hash_recalc = @intToPtr(fn (skb: *kern.SkBuff) u32, 34);
 pub const get_current_task = @intToPtr(fn () u64, 35);
-pub const probe_write_user = @intToPtr(fn (dst: ?*c_void, src: ?*const c_void, len: u32) c_long, 36);
+pub const probe_write_user = @intToPtr(fn (dst: ?*anyopaque, src: ?*const anyopaque, len: u32) c_long, 36);
 pub const current_task_under_cgroup = @intToPtr(fn (map: *const kern.MapDef, index: u32) c_long, 37);
 pub const skb_change_tail = @intToPtr(fn (skb: *kern.SkBuff, len: u32, flags: u64) c_long, 38);
 pub const skb_pull_data = @intToPtr(fn (skb: *kern.SkBuff, len: u32) c_long, 39);
@@ -58,19 +58,19 @@ pub const set_hash_invalid = @intToPtr(fn (skb: *kern.SkBuff) void, 41);
 pub const get_numa_node_id = @intToPtr(fn () c_long, 42);
 pub const skb_change_head = @intToPtr(fn (skb: *kern.SkBuff, len: u32, flags: u64) c_long, 43);
 pub const xdp_adjust_head = @intToPtr(fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 44);
-pub const probe_read_str = @intToPtr(fn (dst: ?*c_void, size: u32, unsafe_ptr: ?*const c_void) c_long, 45);
-pub const get_socket_cookie = @intToPtr(fn (ctx: ?*c_void) u64, 46);
+pub const probe_read_str = @intToPtr(fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 45);
+pub const get_socket_cookie = @intToPtr(fn (ctx: ?*anyopaque) u64, 46);
 pub const get_socket_uid = @intToPtr(fn (skb: *kern.SkBuff) u32, 47);
 pub const set_hash = @intToPtr(fn (skb: *kern.SkBuff, hash: u32) c_long, 48);
-pub const setsockopt = @intToPtr(fn (bpf_socket: *kern.SockOps, level: c_int, optname: c_int, optval: ?*c_void, optlen: c_int) c_long, 49);
+pub const setsockopt = @intToPtr(fn (bpf_socket: *kern.SockOps, level: c_int, optname: c_int, optval: ?*anyopaque, optlen: c_int) c_long, 49);
 pub const skb_adjust_room = @intToPtr(fn (skb: *kern.SkBuff, len_diff: i32, mode: u32, flags: u64) c_long, 50);
 pub const redirect_map = @intToPtr(fn (map: *const kern.MapDef, key: u32, flags: u64) c_long, 51);
 pub const sk_redirect_map = @intToPtr(fn (skb: *kern.SkBuff, map: *const kern.MapDef, key: u32, flags: u64) c_long, 52);
-pub const sock_map_update = @intToPtr(fn (skops: *kern.SockOps, map: *const kern.MapDef, key: ?*c_void, flags: u64) c_long, 53);
+pub const sock_map_update = @intToPtr(fn (skops: *kern.SockOps, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 53);
 pub const xdp_adjust_meta = @intToPtr(fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 54);
 pub const perf_event_read_value = @intToPtr(fn (map: *const kern.MapDef, flags: u64, buf: *kern.PerfEventValue, buf_size: u32) c_long, 55);
 pub const perf_prog_read_value = @intToPtr(fn (ctx: *kern.PerfEventData, buf: *kern.PerfEventValue, buf_size: u32) c_long, 56);
-pub const getsockopt = @intToPtr(fn (bpf_socket: ?*c_void, level: c_int, optname: c_int, optval: ?*c_void, optlen: c_int) c_long, 57);
+pub const getsockopt = @intToPtr(fn (bpf_socket: ?*anyopaque, level: c_int, optname: c_int, optval: ?*anyopaque, optlen: c_int) c_long, 57);
 pub const override_return = @intToPtr(fn (regs: *PtRegs, rc: u64) c_long, 58);
 pub const sock_ops_cb_flags_set = @intToPtr(fn (bpf_sock: *kern.SockOps, argval: c_int) c_long, 59);
 pub const msg_redirect_map = @intToPtr(fn (msg: *kern.SkMsgMd, map: *const kern.MapDef, key: u32, flags: u64) c_long, 60);
@@ -80,78 +80,78 @@ pub const msg_pull_data = @intToPtr(fn (msg: *kern.SkMsgMd, start: u32, end: u32
 pub const bind = @intToPtr(fn (ctx: *kern.BpfSockAddr, addr: *kern.SockAddr, addr_len: c_int) c_long, 64);
 pub const xdp_adjust_tail = @intToPtr(fn (xdp_md: *kern.XdpMd, delta: c_int) c_long, 65);
 pub const skb_get_xfrm_state = @intToPtr(fn (skb: *kern.SkBuff, index: u32, xfrm_state: *kern.XfrmState, size: u32, flags: u64) c_long, 66);
-pub const get_stack = @intToPtr(fn (ctx: ?*c_void, buf: ?*c_void, size: u32, flags: u64) c_long, 67);
-pub const skb_load_bytes_relative = @intToPtr(fn (skb: ?*const c_void, offset: u32, to: ?*c_void, len: u32, start_header: u32) c_long, 68);
-pub const fib_lookup = @intToPtr(fn (ctx: ?*c_void, params: *kern.FibLookup, plen: c_int, flags: u32) c_long, 69);
-pub const sock_hash_update = @intToPtr(fn (skops: *kern.SockOps, map: *const kern.MapDef, key: ?*c_void, flags: u64) c_long, 70);
-pub const msg_redirect_hash = @intToPtr(fn (msg: *kern.SkMsgMd, map: *const kern.MapDef, key: ?*c_void, flags: u64) c_long, 71);
-pub const sk_redirect_hash = @intToPtr(fn (skb: *kern.SkBuff, map: *const kern.MapDef, key: ?*c_void, flags: u64) c_long, 72);
-pub const lwt_push_encap = @intToPtr(fn (skb: *kern.SkBuff, typ: u32, hdr: ?*c_void, len: u32) c_long, 73);
-pub const lwt_seg6_store_bytes = @intToPtr(fn (skb: *kern.SkBuff, offset: u32, from: ?*const c_void, len: u32) c_long, 74);
+pub const get_stack = @intToPtr(fn (ctx: ?*anyopaque, buf: ?*anyopaque, size: u32, flags: u64) c_long, 67);
+pub const skb_load_bytes_relative = @intToPtr(fn (skb: ?*const anyopaque, offset: u32, to: ?*anyopaque, len: u32, start_header: u32) c_long, 68);
+pub const fib_lookup = @intToPtr(fn (ctx: ?*anyopaque, params: *kern.FibLookup, plen: c_int, flags: u32) c_long, 69);
+pub const sock_hash_update = @intToPtr(fn (skops: *kern.SockOps, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 70);
+pub const msg_redirect_hash = @intToPtr(fn (msg: *kern.SkMsgMd, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 71);
+pub const sk_redirect_hash = @intToPtr(fn (skb: *kern.SkBuff, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 72);
+pub const lwt_push_encap = @intToPtr(fn (skb: *kern.SkBuff, typ: u32, hdr: ?*anyopaque, len: u32) c_long, 73);
+pub const lwt_seg6_store_bytes = @intToPtr(fn (skb: *kern.SkBuff, offset: u32, from: ?*const anyopaque, len: u32) c_long, 74);
 pub const lwt_seg6_adjust_srh = @intToPtr(fn (skb: *kern.SkBuff, offset: u32, delta: i32) c_long, 75);
-pub const lwt_seg6_action = @intToPtr(fn (skb: *kern.SkBuff, action: u32, param: ?*c_void, param_len: u32) c_long, 76);
-pub const rc_repeat = @intToPtr(fn (ctx: ?*c_void) c_long, 77);
-pub const rc_keydown = @intToPtr(fn (ctx: ?*c_void, protocol: u32, scancode: u64, toggle: u32) c_long, 78);
+pub const lwt_seg6_action = @intToPtr(fn (skb: *kern.SkBuff, action: u32, param: ?*anyopaque, param_len: u32) c_long, 76);
+pub const rc_repeat = @intToPtr(fn (ctx: ?*anyopaque) c_long, 77);
+pub const rc_keydown = @intToPtr(fn (ctx: ?*anyopaque, protocol: u32, scancode: u64, toggle: u32) c_long, 78);
 pub const skb_cgroup_id = @intToPtr(fn (skb: *kern.SkBuff) u64, 79);
 pub const get_current_cgroup_id = @intToPtr(fn () u64, 80);
-pub const get_local_storage = @intToPtr(fn (map: ?*c_void, flags: u64) ?*c_void, 81);
-pub const sk_select_reuseport = @intToPtr(fn (reuse: *kern.SkReusePortMd, map: *const kern.MapDef, key: ?*c_void, flags: u64) c_long, 82);
+pub const get_local_storage = @intToPtr(fn (map: ?*anyopaque, flags: u64) ?*anyopaque, 81);
+pub const sk_select_reuseport = @intToPtr(fn (reuse: *kern.SkReusePortMd, map: *const kern.MapDef, key: ?*anyopaque, flags: u64) c_long, 82);
 pub const skb_ancestor_cgroup_id = @intToPtr(fn (skb: *kern.SkBuff, ancestor_level: c_int) u64, 83);
-pub const sk_lookup_tcp = @intToPtr(fn (ctx: ?*c_void, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 84);
-pub const sk_lookup_udp = @intToPtr(fn (ctx: ?*c_void, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 85);
+pub const sk_lookup_tcp = @intToPtr(fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 84);
+pub const sk_lookup_udp = @intToPtr(fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 85);
 pub const sk_release = @intToPtr(fn (sock: *kern.Sock) c_long, 86);
-pub const map_push_elem = @intToPtr(fn (map: *const kern.MapDef, value: ?*const c_void, flags: u64) c_long, 87);
-pub const map_pop_elem = @intToPtr(fn (map: *const kern.MapDef, value: ?*c_void) c_long, 88);
-pub const map_peek_elem = @intToPtr(fn (map: *const kern.MapDef, value: ?*c_void) c_long, 89);
+pub const map_push_elem = @intToPtr(fn (map: *const kern.MapDef, value: ?*const anyopaque, flags: u64) c_long, 87);
+pub const map_pop_elem = @intToPtr(fn (map: *const kern.MapDef, value: ?*anyopaque) c_long, 88);
+pub const map_peek_elem = @intToPtr(fn (map: *const kern.MapDef, value: ?*anyopaque) c_long, 89);
 pub const msg_push_data = @intToPtr(fn (msg: *kern.SkMsgMd, start: u32, len: u32, flags: u64) c_long, 90);
 pub const msg_pop_data = @intToPtr(fn (msg: *kern.SkMsgMd, start: u32, len: u32, flags: u64) c_long, 91);
-pub const rc_pointer_rel = @intToPtr(fn (ctx: ?*c_void, rel_x: i32, rel_y: i32) c_long, 92);
+pub const rc_pointer_rel = @intToPtr(fn (ctx: ?*anyopaque, rel_x: i32, rel_y: i32) c_long, 92);
 pub const spin_lock = @intToPtr(fn (lock: *kern.SpinLock) c_long, 93);
 pub const spin_unlock = @intToPtr(fn (lock: *kern.SpinLock) c_long, 94);
 pub const sk_fullsock = @intToPtr(fn (sk: *kern.Sock) ?*SkFullSock, 95);
 pub const tcp_sock = @intToPtr(fn (sk: *kern.Sock) ?*kern.TcpSock, 96);
 pub const skb_ecn_set_ce = @intToPtr(fn (skb: *kern.SkBuff) c_long, 97);
 pub const get_listener_sock = @intToPtr(fn (sk: *kern.Sock) ?*kern.Sock, 98);
-pub const skc_lookup_tcp = @intToPtr(fn (ctx: ?*c_void, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 99);
-pub const tcp_check_syncookie = @intToPtr(fn (sk: *kern.Sock, iph: ?*c_void, iph_len: u32, th: *TcpHdr, th_len: u32) c_long, 100);
+pub const skc_lookup_tcp = @intToPtr(fn (ctx: ?*anyopaque, tuple: *kern.SockTuple, tuple_size: u32, netns: u64, flags: u64) ?*kern.Sock, 99);
+pub const tcp_check_syncookie = @intToPtr(fn (sk: *kern.Sock, iph: ?*anyopaque, iph_len: u32, th: *TcpHdr, th_len: u32) c_long, 100);
 pub const sysctl_get_name = @intToPtr(fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong, flags: u64) c_long, 101);
 pub const sysctl_get_current_value = @intToPtr(fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong) c_long, 102);
 pub const sysctl_get_new_value = @intToPtr(fn (ctx: *kern.SysCtl, buf: ?*u8, buf_len: c_ulong) c_long, 103);
 pub const sysctl_set_new_value = @intToPtr(fn (ctx: *kern.SysCtl, buf: ?*const u8, buf_len: c_ulong) c_long, 104);
 pub const strtol = @intToPtr(fn (buf: *const u8, buf_len: c_ulong, flags: u64, res: *c_long) c_long, 105);
 pub const strtoul = @intToPtr(fn (buf: *const u8, buf_len: c_ulong, flags: u64, res: *c_ulong) c_long, 106);
-pub const sk_storage_get = @intToPtr(fn (map: *const kern.MapDef, sk: *kern.Sock, value: ?*c_void, flags: u64) ?*c_void, 107);
+pub const sk_storage_get = @intToPtr(fn (map: *const kern.MapDef, sk: *kern.Sock, value: ?*anyopaque, flags: u64) ?*anyopaque, 107);
 pub const sk_storage_delete = @intToPtr(fn (map: *const kern.MapDef, sk: *kern.Sock) c_long, 108);
 pub const send_signal = @intToPtr(fn (sig: u32) c_long, 109);
-pub const tcp_gen_syncookie = @intToPtr(fn (sk: *kern.Sock, iph: ?*c_void, iph_len: u32, th: *TcpHdr, th_len: u32) i64, 110);
-pub const skb_output = @intToPtr(fn (ctx: ?*c_void, map: *const kern.MapDef, flags: u64, data: ?*c_void, size: u64) c_long, 111);
-pub const probe_read_user = @intToPtr(fn (dst: ?*c_void, size: u32, unsafe_ptr: ?*const c_void) c_long, 112);
-pub const probe_read_kernel = @intToPtr(fn (dst: ?*c_void, size: u32, unsafe_ptr: ?*const c_void) c_long, 113);
-pub const probe_read_user_str = @intToPtr(fn (dst: ?*c_void, size: u32, unsafe_ptr: ?*const c_void) c_long, 114);
-pub const probe_read_kernel_str = @intToPtr(fn (dst: ?*c_void, size: u32, unsafe_ptr: ?*const c_void) c_long, 115);
-pub const tcp_send_ack = @intToPtr(fn (tp: ?*c_void, rcv_nxt: u32) c_long, 116);
+pub const tcp_gen_syncookie = @intToPtr(fn (sk: *kern.Sock, iph: ?*anyopaque, iph_len: u32, th: *TcpHdr, th_len: u32) i64, 110);
+pub const skb_output = @intToPtr(fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 111);
+pub const probe_read_user = @intToPtr(fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 112);
+pub const probe_read_kernel = @intToPtr(fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 113);
+pub const probe_read_user_str = @intToPtr(fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 114);
+pub const probe_read_kernel_str = @intToPtr(fn (dst: ?*anyopaque, size: u32, unsafe_ptr: ?*const anyopaque) c_long, 115);
+pub const tcp_send_ack = @intToPtr(fn (tp: ?*anyopaque, rcv_nxt: u32) c_long, 116);
 pub const send_signal_thread = @intToPtr(fn (sig: u32) c_long, 117);
 pub const jiffies64 = @intToPtr(fn () u64, 118);
-pub const read_branch_records = @intToPtr(fn (ctx: *kern.PerfEventData, buf: ?*c_void, size: u32, flags: u64) c_long, 119);
+pub const read_branch_records = @intToPtr(fn (ctx: *kern.PerfEventData, buf: ?*anyopaque, size: u32, flags: u64) c_long, 119);
 pub const get_ns_current_pid_tgid = @intToPtr(fn (dev: u64, ino: u64, nsdata: *kern.PidNsInfo, size: u32) c_long, 120);
-pub const xdp_output = @intToPtr(fn (ctx: ?*c_void, map: *const kern.MapDef, flags: u64, data: ?*c_void, size: u64) c_long, 121);
-pub const get_netns_cookie = @intToPtr(fn (ctx: ?*c_void) u64, 122);
+pub const xdp_output = @intToPtr(fn (ctx: ?*anyopaque, map: *const kern.MapDef, flags: u64, data: ?*anyopaque, size: u64) c_long, 121);
+pub const get_netns_cookie = @intToPtr(fn (ctx: ?*anyopaque) u64, 122);
 pub const get_current_ancestor_cgroup_id = @intToPtr(fn (ancestor_level: c_int) u64, 123);
 pub const sk_assign = @intToPtr(fn (skb: *kern.SkBuff, sk: *kern.Sock, flags: u64) c_long, 124);
 pub const ktime_get_boot_ns = @intToPtr(fn () u64, 125);
-pub const seq_printf = @intToPtr(fn (m: *kern.SeqFile, fmt: ?*const u8, fmt_size: u32, data: ?*const c_void, data_len: u32) c_long, 126);
+pub const seq_printf = @intToPtr(fn (m: *kern.SeqFile, fmt: ?*const u8, fmt_size: u32, data: ?*const anyopaque, data_len: u32) c_long, 126);
 pub const seq_write = @intToPtr(fn (m: *kern.SeqFile, data: ?*const u8, len: u32) c_long, 127);
 pub const sk_cgroup_id = @intToPtr(fn (sk: *kern.BpfSock) u64, 128);
 pub const sk_ancestor_cgroup_id = @intToPtr(fn (sk: *kern.BpfSock, ancestor_level: c_long) u64, 129);
-pub const ringbuf_output = @intToPtr(fn (ringbuf: ?*c_void, data: ?*c_void, size: u64, flags: u64) ?*c_void, 130);
-pub const ringbuf_reserve = @intToPtr(fn (ringbuf: ?*c_void, size: u64, flags: u64) ?*c_void, 131);
-pub const ringbuf_submit = @intToPtr(fn (data: ?*c_void, flags: u64) void, 132);
-pub const ringbuf_discard = @intToPtr(fn (data: ?*c_void, flags: u64) void, 133);
-pub const ringbuf_query = @intToPtr(fn (ringbuf: ?*c_void, flags: u64) u64, 134);
+pub const ringbuf_output = @intToPtr(fn (ringbuf: ?*anyopaque, data: ?*anyopaque, size: u64, flags: u64) ?*anyopaque, 130);
+pub const ringbuf_reserve = @intToPtr(fn (ringbuf: ?*anyopaque, size: u64, flags: u64) ?*anyopaque, 131);
+pub const ringbuf_submit = @intToPtr(fn (data: ?*anyopaque, flags: u64) void, 132);
+pub const ringbuf_discard = @intToPtr(fn (data: ?*anyopaque, flags: u64) void, 133);
+pub const ringbuf_query = @intToPtr(fn (ringbuf: ?*anyopaque, flags: u64) u64, 134);
 pub const csum_level = @intToPtr(fn (skb: *kern.SkBuff, level: u64) c_long, 135);
-pub const skc_to_tcp6_sock = @intToPtr(fn (sk: ?*c_void) ?*kern.Tcp6Sock, 136);
-pub const skc_to_tcp_sock = @intToPtr(fn (sk: ?*c_void) ?*kern.TcpSock, 137);
-pub const skc_to_tcp_timewait_sock = @intToPtr(fn (sk: ?*c_void) ?*kern.TcpTimewaitSock, 138);
-pub const skc_to_tcp_request_sock = @intToPtr(fn (sk: ?*c_void) ?*kern.TcpRequestSock, 139);
-pub const skc_to_udp6_sock = @intToPtr(fn (sk: ?*c_void) ?*kern.Udp6Sock, 140);
-pub const get_task_stack = @intToPtr(fn (task: ?*c_void, buf: ?*c_void, size: u32, flags: u64) c_long, 141);
+pub const skc_to_tcp6_sock = @intToPtr(fn (sk: ?*anyopaque) ?*kern.Tcp6Sock, 136);
+pub const skc_to_tcp_sock = @intToPtr(fn (sk: ?*anyopaque) ?*kern.TcpSock, 137);
+pub const skc_to_tcp_timewait_sock = @intToPtr(fn (sk: ?*anyopaque) ?*kern.TcpTimewaitSock, 138);
+pub const skc_to_tcp_request_sock = @intToPtr(fn (sk: ?*anyopaque) ?*kern.TcpRequestSock, 139);
+pub const skc_to_udp6_sock = @intToPtr(fn (sk: ?*anyopaque) ?*kern.Udp6Sock, 140);
+pub const get_task_stack = @intToPtr(fn (task: ?*anyopaque, buf: ?*anyopaque, size: u32, flags: u64) c_long, 141);
lib/std/os/linux/arm-eabi.zig
@@ -652,7 +652,7 @@ pub const msghdr = extern struct {
     msg_namelen: socklen_t,
     msg_iov: [*]iovec,
     msg_iovlen: i32,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: socklen_t,
     msg_flags: i32,
 };
@@ -662,7 +662,7 @@ pub const msghdr_const = extern struct {
     msg_namelen: socklen_t,
     msg_iov: [*]iovec_const,
     msg_iovlen: i32,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: socklen_t,
     msg_flags: i32,
 };
lib/std/os/linux/arm64.zig
@@ -504,7 +504,7 @@ pub const msghdr = extern struct {
     msg_iov: [*]iovec,
     msg_iovlen: i32,
     __pad1: i32 = 0,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: socklen_t,
     __pad2: socklen_t = 0,
     msg_flags: i32,
@@ -516,7 +516,7 @@ pub const msghdr_const = extern struct {
     msg_iov: [*]iovec_const,
     msg_iovlen: i32,
     __pad1: i32 = 0,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: socklen_t,
     __pad2: socklen_t = 0,
     msg_flags: i32,
lib/std/os/linux/i386.zig
@@ -660,7 +660,7 @@ pub const msghdr = extern struct {
     namelen: socklen_t,
     iov: [*]iovec,
     iovlen: i32,
-    control: ?*c_void,
+    control: ?*anyopaque,
     controllen: socklen_t,
     flags: i32,
 };
@@ -670,7 +670,7 @@ pub const msghdr_const = extern struct {
     namelen: socklen_t,
     iov: [*]iovec_const,
     iovlen: i32,
-    control: ?*c_void,
+    control: ?*anyopaque,
     controllen: socklen_t,
     flags: i32,
 };
lib/std/os/linux/io_uring.zig
@@ -841,7 +841,7 @@ pub const IO_Uring = struct {
         const res = linux.io_uring_register(
             self.fd,
             .REGISTER_FILES,
-            @ptrCast(*const c_void, fds.ptr),
+            @ptrCast(*const anyopaque, fds.ptr),
             @intCast(u32, fds.len),
         );
         try handle_registration_result(res);
@@ -872,7 +872,7 @@ pub const IO_Uring = struct {
         const res = linux.io_uring_register(
             self.fd,
             .REGISTER_FILES_UPDATE,
-            @ptrCast(*const c_void, &update),
+            @ptrCast(*const anyopaque, &update),
             @intCast(u32, fds.len),
         );
         try handle_registration_result(res);
@@ -886,7 +886,7 @@ pub const IO_Uring = struct {
         const res = linux.io_uring_register(
             self.fd,
             .REGISTER_EVENTFD,
-            @ptrCast(*const c_void, &fd),
+            @ptrCast(*const anyopaque, &fd),
             1,
         );
         try handle_registration_result(res);
@@ -901,7 +901,7 @@ pub const IO_Uring = struct {
         const res = linux.io_uring_register(
             self.fd,
             .REGISTER_EVENTFD_ASYNC,
-            @ptrCast(*const c_void, &fd),
+            @ptrCast(*const anyopaque, &fd),
             1,
         );
         try handle_registration_result(res);
@@ -1307,7 +1307,7 @@ pub fn io_uring_prep_poll_add(
     fd: os.fd_t,
     poll_mask: u32,
 ) void {
-    io_uring_prep_rw(.POLL_ADD, sqe, fd, @ptrToInt(@as(?*c_void, null)), 0, 0);
+    io_uring_prep_rw(.POLL_ADD, sqe, fd, @ptrToInt(@as(?*anyopaque, null)), 0, 0);
     sqe.rw_flags = __io_uring_prep_poll_mask(poll_mask);
 }
 
lib/std/os/linux/powerpc.zig
@@ -655,7 +655,7 @@ pub const msghdr = extern struct {
     msg_namelen: socklen_t,
     msg_iov: [*]iovec,
     msg_iovlen: usize,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: socklen_t,
     msg_flags: i32,
 };
@@ -665,7 +665,7 @@ pub const msghdr_const = extern struct {
     msg_namelen: socklen_t,
     msg_iov: [*]iovec_const,
     msg_iovlen: usize,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: socklen_t,
     msg_flags: i32,
 };
lib/std/os/linux/powerpc64.zig
@@ -630,7 +630,7 @@ pub const msghdr = extern struct {
     msg_namelen: socklen_t,
     msg_iov: [*]iovec,
     msg_iovlen: usize,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: usize,
     msg_flags: i32,
 };
@@ -640,7 +640,7 @@ pub const msghdr_const = extern struct {
     msg_namelen: socklen_t,
     msg_iov: [*]iovec_const,
     msg_iovlen: usize,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: usize,
     msg_flags: i32,
 };
@@ -718,7 +718,7 @@ pub const mcontext_t = extern struct {
     _pad0: i32,
     handler: u64,
     oldmask: u64,
-    regs: ?*c_void,
+    regs: ?*anyopaque,
     gp_regs: gregset_t,
     fp_regs: fpregset_t,
     v_regs: *vrregset_t,
lib/std/os/linux/sparc64.zig
@@ -660,7 +660,7 @@ pub const msghdr = extern struct {
     msg_namelen: socklen_t,
     msg_iov: [*]iovec,
     msg_iovlen: u64,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: u64,
     msg_flags: i32,
 };
@@ -670,7 +670,7 @@ pub const msghdr_const = extern struct {
     msg_namelen: socklen_t,
     msg_iov: [*]iovec_const,
     msg_iovlen: u64,
-    msg_control: ?*c_void,
+    msg_control: ?*anyopaque,
     msg_controllen: u64,
     msg_flags: i32,
 };
lib/std/os/linux/x86_64.zig
@@ -604,7 +604,7 @@ pub const msghdr = extern struct {
     iov: [*]iovec,
     iovlen: i32,
     __pad1: i32 = 0,
-    control: ?*c_void,
+    control: ?*anyopaque,
     controllen: socklen_t,
     __pad2: socklen_t = 0,
     flags: i32,
@@ -616,7 +616,7 @@ pub const msghdr_const = extern struct {
     iov: [*]iovec_const,
     iovlen: i32,
     __pad1: i32 = 0,
-    control: ?*c_void,
+    control: ?*anyopaque,
     controllen: socklen_t,
     __pad2: socklen_t = 0,
     flags: i32,
lib/std/os/uefi/protocols/ip6_config_protocol.zig
@@ -4,16 +4,16 @@ const Event = uefi.Event;
 const Status = uefi.Status;
 
 pub const Ip6ConfigProtocol = extern struct {
-    _set_data: fn (*const Ip6ConfigProtocol, Ip6ConfigDataType, usize, *const c_void) callconv(.C) Status,
-    _get_data: fn (*const Ip6ConfigProtocol, Ip6ConfigDataType, *usize, ?*const c_void) callconv(.C) Status,
+    _set_data: fn (*const Ip6ConfigProtocol, Ip6ConfigDataType, usize, *const anyopaque) callconv(.C) Status,
+    _get_data: fn (*const Ip6ConfigProtocol, Ip6ConfigDataType, *usize, ?*const anyopaque) callconv(.C) Status,
     _register_data_notify: fn (*const Ip6ConfigProtocol, Ip6ConfigDataType, Event) callconv(.C) Status,
     _unregister_data_notify: fn (*const Ip6ConfigProtocol, Ip6ConfigDataType, Event) callconv(.C) Status,
 
-    pub fn setData(self: *const Ip6ConfigProtocol, data_type: Ip6ConfigDataType, data_size: usize, data: *const c_void) Status {
+    pub fn setData(self: *const Ip6ConfigProtocol, data_type: Ip6ConfigDataType, data_size: usize, data: *const anyopaque) Status {
         return self._set_data(self, data_type, data_size, data);
     }
 
-    pub fn getData(self: *const Ip6ConfigProtocol, data_type: Ip6ConfigDataType, data_size: *usize, data: ?*const c_void) Status {
+    pub fn getData(self: *const Ip6ConfigProtocol, data_type: Ip6ConfigDataType, data_size: *usize, data: ?*const anyopaque) Status {
         return self._get_data(self, data_type, data_size, data);
     }
 
lib/std/os/uefi/protocols/ip6_protocol.zig
@@ -140,5 +140,5 @@ pub const Ip6IcmpType = extern struct {
 pub const Ip6CompletionToken = extern struct {
     event: Event,
     status: Status,
-    packet: *c_void, // union TODO
+    packet: *anyopaque, // union TODO
 };
lib/std/os/uefi/protocols/loaded_image_protocol.zig
@@ -12,9 +12,9 @@ pub const LoadedImageProtocol = extern struct {
     system_table: *SystemTable,
     device_handle: ?Handle,
     file_path: *DevicePathProtocol,
-    reserved: *c_void,
+    reserved: *anyopaque,
     load_options_size: u32,
-    load_options: ?*c_void,
+    load_options: ?*anyopaque,
     image_base: [*]u8,
     image_size: u64,
     image_code_type: MemoryType,
lib/std/os/uefi/protocols/managed_network_protocol.zig
@@ -9,7 +9,7 @@ const MacAddress = uefi.protocols.MacAddress;
 pub const ManagedNetworkProtocol = extern struct {
     _get_mode_data: fn (*const ManagedNetworkProtocol, ?*ManagedNetworkConfigData, ?*SimpleNetworkMode) callconv(.C) Status,
     _configure: fn (*const ManagedNetworkProtocol, ?*const ManagedNetworkConfigData) callconv(.C) Status,
-    _mcast_ip_to_mac: fn (*const ManagedNetworkProtocol, bool, *const c_void, *MacAddress) callconv(.C) Status,
+    _mcast_ip_to_mac: fn (*const ManagedNetworkProtocol, bool, *const anyopaque, *MacAddress) callconv(.C) Status,
     _groups: fn (*const ManagedNetworkProtocol, bool, ?*const MacAddress) callconv(.C) Status,
     _transmit: fn (*const ManagedNetworkProtocol, *const ManagedNetworkCompletionToken) callconv(.C) Status,
     _receive: fn (*const ManagedNetworkProtocol, *const ManagedNetworkCompletionToken) callconv(.C) Status,
@@ -29,7 +29,7 @@ pub const ManagedNetworkProtocol = extern struct {
 
     /// Translates an IP multicast address to a hardware (MAC) multicast address.
     /// This function may be unsupported in some MNP implementations.
-    pub fn mcastIpToMac(self: *const ManagedNetworkProtocol, ipv6flag: bool, ipaddress: *const c_void, mac_address: *MacAddress) Status {
+    pub fn mcastIpToMac(self: *const ManagedNetworkProtocol, ipv6flag: bool, ipaddress: *const anyopaque, mac_address: *MacAddress) Status {
         _ = mac_address;
         return self._mcast_ip_to_mac(self, ipv6flag, ipaddress);
     }
lib/std/os/uefi/protocols/simple_network_protocol.zig
@@ -13,7 +13,7 @@ pub const SimpleNetworkProtocol = extern struct {
     _receive_filters: fn (*const SimpleNetworkProtocol, SimpleNetworkReceiveFilter, SimpleNetworkReceiveFilter, bool, usize, ?[*]const MacAddress) callconv(.C) Status,
     _station_address: fn (*const SimpleNetworkProtocol, bool, ?*const MacAddress) callconv(.C) Status,
     _statistics: fn (*const SimpleNetworkProtocol, bool, ?*usize, ?*NetworkStatistics) callconv(.C) Status,
-    _mcast_ip_to_mac: fn (*const SimpleNetworkProtocol, bool, *const c_void, *MacAddress) callconv(.C) Status,
+    _mcast_ip_to_mac: fn (*const SimpleNetworkProtocol, bool, *const anyopaque, *MacAddress) callconv(.C) Status,
     _nvdata: fn (*const SimpleNetworkProtocol, bool, usize, usize, [*]u8) callconv(.C) Status,
     _get_status: fn (*const SimpleNetworkProtocol, *SimpleNetworkInterruptStatus, ?*?[*]u8) callconv(.C) Status,
     _transmit: fn (*const SimpleNetworkProtocol, usize, usize, [*]const u8, ?*const MacAddress, ?*const MacAddress, ?*const u16) callconv(.C) Status,
@@ -62,7 +62,7 @@ pub const SimpleNetworkProtocol = extern struct {
     }
 
     /// Converts a multicast IP address to a multicast HW MAC address.
-    pub fn mcastIpToMac(self: *const SimpleNetworkProtocol, ipv6: bool, ip: *const c_void, mac: *MacAddress) Status {
+    pub fn mcastIpToMac(self: *const SimpleNetworkProtocol, ipv6: bool, ip: *const anyopaque, mac: *MacAddress) Status {
         return self._mcast_ip_to_mac(self, ipv6, ip, mac);
     }
 
lib/std/os/uefi/protocols/simple_text_input_ex_protocol.zig
@@ -9,8 +9,8 @@ pub const SimpleTextInputExProtocol = extern struct {
     _read_key_stroke_ex: fn (*const SimpleTextInputExProtocol, *KeyData) callconv(.C) Status,
     wait_for_key_ex: Event,
     _set_state: fn (*const SimpleTextInputExProtocol, *const u8) callconv(.C) Status,
-    _register_key_notify: fn (*const SimpleTextInputExProtocol, *const KeyData, fn (*const KeyData) callconv(.C) usize, **c_void) callconv(.C) Status,
-    _unregister_key_notify: fn (*const SimpleTextInputExProtocol, *const c_void) callconv(.C) Status,
+    _register_key_notify: fn (*const SimpleTextInputExProtocol, *const KeyData, fn (*const KeyData) callconv(.C) usize, **anyopaque) callconv(.C) Status,
+    _unregister_key_notify: fn (*const SimpleTextInputExProtocol, *const anyopaque) callconv(.C) Status,
 
     /// Resets the input device hardware.
     pub fn reset(self: *const SimpleTextInputExProtocol, verify: bool) Status {
@@ -28,12 +28,12 @@ pub const SimpleTextInputExProtocol = extern struct {
     }
 
     /// Register a notification function for a particular keystroke for the input device.
-    pub fn registerKeyNotify(self: *const SimpleTextInputExProtocol, key_data: *const KeyData, notify: fn (*const KeyData) callconv(.C) usize, handle: **c_void) Status {
+    pub fn registerKeyNotify(self: *const SimpleTextInputExProtocol, key_data: *const KeyData, notify: fn (*const KeyData) callconv(.C) usize, handle: **anyopaque) Status {
         return self._register_key_notify(self, key_data, notify, handle);
     }
 
     /// Remove the notification that was previously registered.
-    pub fn unregisterKeyNotify(self: *const SimpleTextInputExProtocol, handle: *const c_void) Status {
+    pub fn unregisterKeyNotify(self: *const SimpleTextInputExProtocol, handle: *const anyopaque) Status {
         return self._unregister_key_notify(self, handle);
     }
 
lib/std/os/uefi/tables/boot_services.zig
@@ -42,7 +42,7 @@ pub const BootServices = extern struct {
     freePool: fn ([*]align(8) u8) callconv(.C) Status,
 
     /// Creates an event.
-    createEvent: fn (u32, usize, ?fn (Event, ?*c_void) callconv(.C) void, ?*const c_void, *Event) callconv(.C) Status,
+    createEvent: fn (u32, usize, ?fn (Event, ?*anyopaque) callconv(.C) void, ?*const anyopaque, *Event) callconv(.C) Status,
 
     /// Sets the type of timer and the trigger time for a timer event.
     setTimer: fn (Event, TimerDelay, u64) callconv(.C) Status,
@@ -64,14 +64,14 @@ pub const BootServices = extern struct {
     uninstallProtocolInterface: Status, // TODO
 
     /// Queries a handle to determine if it supports a specified protocol.
-    handleProtocol: fn (Handle, *align(8) const Guid, *?*c_void) callconv(.C) Status,
+    handleProtocol: fn (Handle, *align(8) const Guid, *?*anyopaque) callconv(.C) Status,
 
-    reserved: *c_void,
+    reserved: *anyopaque,
 
     registerProtocolNotify: Status, // TODO
 
     /// Returns an array of handles that support a specified protocol.
-    locateHandle: fn (LocateSearchType, ?*align(8) const Guid, ?*const c_void, *usize, [*]Handle) callconv(.C) Status,
+    locateHandle: fn (LocateSearchType, ?*align(8) const Guid, ?*const anyopaque, *usize, [*]Handle) callconv(.C) Status,
 
     /// Locates the handle to a device on the device path that supports the specified protocol
     locateDevicePath: fn (*align(8) const Guid, **const DevicePathProtocol, *?Handle) callconv(.C) Status,
@@ -84,7 +84,7 @@ pub const BootServices = extern struct {
     startImage: fn (Handle, ?*usize, ?*[*]u16) callconv(.C) Status,
 
     /// Terminates a loaded EFI image and returns control to boot services.
-    exit: fn (Handle, Status, usize, ?*const c_void) callconv(.C) Status,
+    exit: fn (Handle, Status, usize, ?*const anyopaque) callconv(.C) Status,
 
     /// Unloads an image.
     unloadImage: fn (Handle) callconv(.C) Status,
@@ -105,7 +105,7 @@ pub const BootServices = extern struct {
     disconnectController: Status, // TODO
 
     /// Queries a handle to determine if it supports a specified protocol.
-    openProtocol: fn (Handle, *align(8) const Guid, *?*c_void, ?Handle, ?Handle, OpenProtocolAttributes) callconv(.C) Status,
+    openProtocol: fn (Handle, *align(8) const Guid, *?*anyopaque, ?Handle, ?Handle, OpenProtocolAttributes) callconv(.C) Status,
 
     /// Closes a protocol on a handle that was opened using openProtocol().
     closeProtocol: fn (Handle, *align(8) const Guid, Handle, ?Handle) callconv(.C) Status,
@@ -117,10 +117,10 @@ pub const BootServices = extern struct {
     protocolsPerHandle: fn (Handle, *[*]*align(8) const Guid, *usize) callconv(.C) Status,
 
     /// Returns an array of handles that support the requested protocol in a buffer allocated from pool.
-    locateHandleBuffer: fn (LocateSearchType, ?*align(8) const Guid, ?*const c_void, *usize, *[*]Handle) callconv(.C) Status,
+    locateHandleBuffer: fn (LocateSearchType, ?*align(8) const Guid, ?*const anyopaque, *usize, *[*]Handle) callconv(.C) Status,
 
     /// Returns the first protocol instance that matches the given protocol.
-    locateProtocol: fn (*align(8) const Guid, ?*const c_void, *?*c_void) callconv(.C) Status,
+    locateProtocol: fn (*align(8) const Guid, ?*const anyopaque, *?*anyopaque) callconv(.C) Status,
 
     installMultipleProtocolInterfaces: Status, // TODO
     uninstallMultipleProtocolInterfaces: Status, // TODO
lib/std/os/uefi/tables/configuration_table.zig
@@ -3,7 +3,7 @@ const Guid = uefi.Guid;
 
 pub const ConfigurationTable = extern struct {
     vendor_guid: Guid,
-    vendor_table: *c_void,
+    vendor_table: *anyopaque,
 
     pub const acpi_20_table_guid align(8) = Guid{
         .time_low = 0x8868e871,
lib/std/os/uefi/tables/runtime_services.zig
@@ -28,21 +28,21 @@ pub const RuntimeServices = extern struct {
     setVirtualAddressMap: fn (usize, usize, u32, [*]MemoryDescriptor) callconv(.C) Status,
 
     /// Determines the new virtual address that is to be used on subsequent memory accesses.
-    convertPointer: fn (usize, **c_void) callconv(.C) Status,
+    convertPointer: fn (usize, **anyopaque) callconv(.C) Status,
 
     /// Returns the value of a variable.
-    getVariable: fn ([*:0]const u16, *align(8) const Guid, ?*u32, *usize, ?*c_void) callconv(.C) Status,
+    getVariable: fn ([*:0]const u16, *align(8) const Guid, ?*u32, *usize, ?*anyopaque) callconv(.C) Status,
 
     /// Enumerates the current variable names.
     getNextVariableName: fn (*usize, [*:0]u16, *align(8) Guid) callconv(.C) Status,
 
     /// Sets the value of a variable.
-    setVariable: fn ([*:0]const u16, *align(8) const Guid, u32, usize, *c_void) callconv(.C) Status,
+    setVariable: fn ([*:0]const u16, *align(8) const Guid, u32, usize, *anyopaque) callconv(.C) Status,
 
     getNextHighMonotonicCount: Status, // TODO
 
     /// Resets the entire platform.
-    resetSystem: fn (ResetType, Status, usize, ?*const c_void) callconv(.C) noreturn,
+    resetSystem: fn (ResetType, Status, usize, ?*const anyopaque) callconv(.C) noreturn,
 
     updateCapsule: Status, // TODO
     queryCapsuleCapabilities: Status, // TODO
lib/std/os/windows/kernel32.zig
@@ -57,7 +57,7 @@ const UCHAR = windows.UCHAR;
 const FARPROC = windows.FARPROC;
 const INIT_ONCE_FN = windows.INIT_ONCE_FN;
 
-pub extern "kernel32" fn AddVectoredExceptionHandler(First: c_ulong, Handler: ?VECTORED_EXCEPTION_HANDLER) callconv(WINAPI) ?*c_void;
+pub extern "kernel32" fn AddVectoredExceptionHandler(First: c_ulong, Handler: ?VECTORED_EXCEPTION_HANDLER) callconv(WINAPI) ?*anyopaque;
 pub extern "kernel32" fn RemoveVectoredExceptionHandler(Handle: HANDLE) callconv(WINAPI) c_ulong;
 
 pub extern "kernel32" fn CancelIo(hFile: HANDLE) callconv(WINAPI) BOOL;
@@ -110,7 +110,7 @@ pub extern "kernel32" fn CreateProcessW(
     lpThreadAttributes: ?*SECURITY_ATTRIBUTES,
     bInheritHandles: BOOL,
     dwCreationFlags: DWORD,
-    lpEnvironment: ?*c_void,
+    lpEnvironment: ?*anyopaque,
     lpCurrentDirectory: ?LPWSTR,
     lpStartupInfo: *STARTUPINFOW,
     lpProcessInformation: *PROCESS_INFORMATION,
@@ -125,7 +125,7 @@ pub extern "kernel32" fn CreateThread(lpThreadAttributes: ?*SECURITY_ATTRIBUTES,
 pub extern "kernel32" fn DeviceIoControl(
     h: HANDLE,
     dwIoControlCode: DWORD,
-    lpInBuffer: ?*const c_void,
+    lpInBuffer: ?*const anyopaque,
     nInBufferSize: DWORD,
     lpOutBuffer: ?LPVOID,
     nOutBufferSize: DWORD,
@@ -194,7 +194,7 @@ pub extern "kernel32" fn GetFileInformationByHandle(
 pub extern "kernel32" fn GetFileInformationByHandleEx(
     in_hFile: HANDLE,
     in_FileInformationClass: FILE_INFO_BY_HANDLE_CLASS,
-    out_lpFileInformation: *c_void,
+    out_lpFileInformation: *anyopaque,
     in_dwBufferSize: DWORD,
 ) callconv(WINAPI) BOOL;
 
@@ -230,18 +230,18 @@ pub extern "kernel32" fn GetSystemTimeAsFileTime(*FILETIME) callconv(WINAPI) voi
 
 pub extern "kernel32" fn HeapCreate(flOptions: DWORD, dwInitialSize: SIZE_T, dwMaximumSize: SIZE_T) callconv(WINAPI) ?HANDLE;
 pub extern "kernel32" fn HeapDestroy(hHeap: HANDLE) callconv(WINAPI) BOOL;
-pub extern "kernel32" fn HeapReAlloc(hHeap: HANDLE, dwFlags: DWORD, lpMem: *c_void, dwBytes: SIZE_T) callconv(WINAPI) ?*c_void;
-pub extern "kernel32" fn HeapSize(hHeap: HANDLE, dwFlags: DWORD, lpMem: *const c_void) callconv(WINAPI) SIZE_T;
+pub extern "kernel32" fn HeapReAlloc(hHeap: HANDLE, dwFlags: DWORD, lpMem: *anyopaque, dwBytes: SIZE_T) callconv(WINAPI) ?*anyopaque;
+pub extern "kernel32" fn HeapSize(hHeap: HANDLE, dwFlags: DWORD, lpMem: *const anyopaque) callconv(WINAPI) SIZE_T;
 pub extern "kernel32" fn HeapCompact(hHeap: HANDLE, dwFlags: DWORD) callconv(WINAPI) SIZE_T;
 pub extern "kernel32" fn HeapSummary(hHeap: HANDLE, dwFlags: DWORD, lpSummary: LPHEAP_SUMMARY) callconv(WINAPI) BOOL;
 
 pub extern "kernel32" fn GetStdHandle(in_nStdHandle: DWORD) callconv(WINAPI) ?HANDLE;
 
-pub extern "kernel32" fn HeapAlloc(hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T) callconv(WINAPI) ?*c_void;
+pub extern "kernel32" fn HeapAlloc(hHeap: HANDLE, dwFlags: DWORD, dwBytes: SIZE_T) callconv(WINAPI) ?*anyopaque;
 
-pub extern "kernel32" fn HeapFree(hHeap: HANDLE, dwFlags: DWORD, lpMem: *c_void) callconv(WINAPI) BOOL;
+pub extern "kernel32" fn HeapFree(hHeap: HANDLE, dwFlags: DWORD, lpMem: *anyopaque) callconv(WINAPI) BOOL;
 
-pub extern "kernel32" fn HeapValidate(hHeap: HANDLE, dwFlags: DWORD, lpMem: ?*const c_void) callconv(WINAPI) BOOL;
+pub extern "kernel32" fn HeapValidate(hHeap: HANDLE, dwFlags: DWORD, lpMem: ?*const anyopaque) callconv(WINAPI) BOOL;
 
 pub extern "kernel32" fn VirtualAlloc(lpAddress: ?LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD) callconv(WINAPI) ?LPVOID;
 pub extern "kernel32" fn VirtualFree(lpAddress: ?LPVOID, dwSize: SIZE_T, dwFreeType: DWORD) callconv(WINAPI) BOOL;
@@ -356,7 +356,7 @@ pub extern "kernel32" fn EnterCriticalSection(lpCriticalSection: *CRITICAL_SECTI
 pub extern "kernel32" fn LeaveCriticalSection(lpCriticalSection: *CRITICAL_SECTION) callconv(WINAPI) void;
 pub extern "kernel32" fn DeleteCriticalSection(lpCriticalSection: *CRITICAL_SECTION) callconv(WINAPI) void;
 
-pub extern "kernel32" fn InitOnceExecuteOnce(InitOnce: *INIT_ONCE, InitFn: INIT_ONCE_FN, Parameter: ?*c_void, Context: ?*c_void) callconv(WINAPI) BOOL;
+pub extern "kernel32" fn InitOnceExecuteOnce(InitOnce: *INIT_ONCE, InitFn: INIT_ONCE_FN, Parameter: ?*anyopaque, Context: ?*anyopaque) callconv(WINAPI) BOOL;
 
 pub extern "kernel32" fn K32EmptyWorkingSet(hProcess: HANDLE) callconv(WINAPI) BOOL;
 pub extern "kernel32" fn K32EnumDeviceDrivers(lpImageBase: [*]LPVOID, cb: DWORD, lpcbNeeded: *DWORD) callconv(WINAPI) BOOL;
lib/std/os/windows/ntdll.zig
@@ -29,13 +29,13 @@ pub extern "NtDll" fn RtlGetVersion(
 pub extern "NtDll" fn RtlCaptureStackBackTrace(
     FramesToSkip: DWORD,
     FramesToCapture: DWORD,
-    BackTrace: **c_void,
+    BackTrace: **anyopaque,
     BackTraceHash: ?*DWORD,
 ) callconv(WINAPI) WORD;
 pub extern "NtDll" fn NtQueryInformationFile(
     FileHandle: HANDLE,
     IoStatusBlock: *IO_STATUS_BLOCK,
-    FileInformation: *c_void,
+    FileInformation: *anyopaque,
     Length: ULONG,
     FileInformationClass: FILE_INFORMATION_CLASS,
 ) callconv(WINAPI) NTSTATUS;
@@ -62,17 +62,17 @@ pub extern "NtDll" fn NtCreateFile(
     ShareAccess: ULONG,
     CreateDisposition: ULONG,
     CreateOptions: ULONG,
-    EaBuffer: ?*c_void,
+    EaBuffer: ?*anyopaque,
     EaLength: ULONG,
 ) callconv(WINAPI) NTSTATUS;
 pub extern "NtDll" fn NtDeviceIoControlFile(
     FileHandle: HANDLE,
     Event: ?HANDLE,
     ApcRoutine: ?IO_APC_ROUTINE,
-    ApcContext: ?*c_void,
+    ApcContext: ?*anyopaque,
     IoStatusBlock: *IO_STATUS_BLOCK,
     IoControlCode: ULONG,
-    InputBuffer: ?*const c_void,
+    InputBuffer: ?*const anyopaque,
     InputBufferLength: ULONG,
     OutputBuffer: ?PVOID,
     OutputBufferLength: ULONG,
@@ -81,10 +81,10 @@ pub extern "NtDll" fn NtFsControlFile(
     FileHandle: HANDLE,
     Event: ?HANDLE,
     ApcRoutine: ?IO_APC_ROUTINE,
-    ApcContext: ?*c_void,
+    ApcContext: ?*anyopaque,
     IoStatusBlock: *IO_STATUS_BLOCK,
     FsControlCode: ULONG,
-    InputBuffer: ?*const c_void,
+    InputBuffer: ?*const anyopaque,
     InputBufferLength: ULONG,
     OutputBuffer: ?PVOID,
     OutputBufferLength: ULONG,
@@ -102,9 +102,9 @@ pub extern "NtDll" fn NtQueryDirectoryFile(
     FileHandle: HANDLE,
     Event: ?HANDLE,
     ApcRoutine: ?IO_APC_ROUTINE,
-    ApcContext: ?*c_void,
+    ApcContext: ?*anyopaque,
     IoStatusBlock: *IO_STATUS_BLOCK,
-    FileInformation: *c_void,
+    FileInformation: *anyopaque,
     Length: ULONG,
     FileInformationClass: FILE_INFORMATION_CLASS,
     ReturnSingleEntry: BOOLEAN,
@@ -121,14 +121,14 @@ pub extern "NtDll" fn NtCreateKeyedEvent(
 
 pub extern "NtDll" fn NtReleaseKeyedEvent(
     EventHandle: ?HANDLE,
-    Key: ?*const c_void,
+    Key: ?*const anyopaque,
     Alertable: BOOLEAN,
     Timeout: ?*const LARGE_INTEGER,
 ) callconv(WINAPI) NTSTATUS;
 
 pub extern "NtDll" fn NtWaitForKeyedEvent(
     EventHandle: ?HANDLE,
-    Key: ?*const c_void,
+    Key: ?*const anyopaque,
     Alertable: BOOLEAN,
     Timeout: ?*const LARGE_INTEGER,
 ) callconv(WINAPI) NTSTATUS;
@@ -144,16 +144,16 @@ pub extern "NtDll" fn NtQueryObject(
 ) callconv(WINAPI) NTSTATUS;
 
 pub extern "NtDll" fn RtlWakeAddressAll(
-    Address: ?*const c_void,
+    Address: ?*const anyopaque,
 ) callconv(WINAPI) void;
 
 pub extern "NtDll" fn RtlWakeAddressSingle(
-    Address: ?*const c_void,
+    Address: ?*const anyopaque,
 ) callconv(WINAPI) void;
 
 pub extern "NtDll" fn RtlWaitOnAddress(
-    Address: ?*const c_void,
-    CompareAddress: ?*const c_void,
+    Address: ?*const anyopaque,
+    CompareAddress: ?*const anyopaque,
     AddressSize: SIZE_T,
     Timeout: ?*const LARGE_INTEGER,
 ) callconv(WINAPI) NTSTATUS;
@@ -162,7 +162,7 @@ pub extern "NtDll" fn NtLockFile(
     FileHandle: HANDLE,
     Event: ?HANDLE,
     ApcRoutine: ?*IO_APC_ROUTINE,
-    ApcContext: ?*c_void,
+    ApcContext: ?*anyopaque,
     IoStatusBlock: *IO_STATUS_BLOCK,
     ByteOffset: *const LARGE_INTEGER,
     Length: *const LARGE_INTEGER,
lib/std/os/windows/user32.zig
@@ -1280,7 +1280,7 @@ pub const WS_EX_PALETTEWINDOW = WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPM
 pub const CW_USEDEFAULT = @bitCast(i32, @as(u32, 0x80000000));
 
 pub extern "user32" fn CreateWindowExA(dwExStyle: DWORD, lpClassName: [*:0]const u8, lpWindowName: [*:0]const u8, dwStyle: DWORD, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?LPVOID) callconv(WINAPI) ?HWND;
-pub fn createWindowExA(dwExStyle: u32, lpClassName: [*:0]const u8, lpWindowName: [*:0]const u8, dwStyle: u32, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?*c_void) !HWND {
+pub fn createWindowExA(dwExStyle: u32, lpClassName: [*:0]const u8, lpWindowName: [*:0]const u8, dwStyle: u32, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?*anyopaque) !HWND {
     const window = CreateWindowExA(dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWindParent, hMenu, hInstance, lpParam);
     if (window) |win| return win;
 
@@ -1293,7 +1293,7 @@ pub fn createWindowExA(dwExStyle: u32, lpClassName: [*:0]const u8, lpWindowName:
 
 pub extern "user32" fn CreateWindowExW(dwExStyle: DWORD, lpClassName: [*:0]const u16, lpWindowName: [*:0]const u16, dwStyle: DWORD, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?LPVOID) callconv(WINAPI) ?HWND;
 pub var pfnCreateWindowExW: @TypeOf(CreateWindowExW) = undefined;
-pub fn createWindowExW(dwExStyle: u32, lpClassName: [*:0]const u16, lpWindowName: [*:0]const u16, dwStyle: u32, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?*c_void) !HWND {
+pub fn createWindowExW(dwExStyle: u32, lpClassName: [*:0]const u16, lpWindowName: [*:0]const u16, dwStyle: u32, X: i32, Y: i32, nWidth: i32, nHeight: i32, hWindParent: ?HWND, hMenu: ?HMENU, hInstance: HINSTANCE, lpParam: ?*anyopaque) !HWND {
     const function = selectSymbol(CreateWindowExW, pfnCreateWindowExW, .win2k);
     const window = function(dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWindParent, hMenu, hInstance, lpParam);
     if (window) |win| return win;
lib/std/os/windows/ws2_32.zig
@@ -1095,7 +1095,7 @@ pub const addrinfoexA = extern struct {
     ai_addrlen: usize,
     ai_canonname: [*:0]u8,
     ai_addr: *sockaddr,
-    ai_blob: *c_void,
+    ai_blob: *anyopaque,
     ai_bloblen: usize,
     ai_provider: *GUID,
     ai_next: *addrinfoexA,
@@ -1167,9 +1167,9 @@ pub const pollfd = extern struct {
 };
 
 pub const TRANSMIT_FILE_BUFFERS = extern struct {
-    Head: *c_void,
+    Head: *anyopaque,
     HeadLength: u32,
-    Tail: *c_void,
+    Tail: *anyopaque,
     TailLength: u32,
 };
 
@@ -1186,7 +1186,7 @@ pub const LPFN_TRANSMITFILE = fn (
 pub const LPFN_ACCEPTEX = fn (
     sListenSocket: SOCKET,
     sAcceptSocket: SOCKET,
-    lpOutputBuffer: *c_void,
+    lpOutputBuffer: *anyopaque,
     dwReceiveDataLength: u32,
     dwLocalAddressLength: u32,
     dwRemoteAddressLength: u32,
@@ -1195,7 +1195,7 @@ pub const LPFN_ACCEPTEX = fn (
 ) callconv(WINAPI) BOOL;
 
 pub const LPFN_GETACCEPTEXSOCKADDRS = fn (
-    lpOutputBuffer: *c_void,
+    lpOutputBuffer: *anyopaque,
     dwReceiveDataLength: u32,
     dwLocalAddressLength: u32,
     dwRemoteAddressLength: u32,
@@ -2017,9 +2017,9 @@ pub extern "ws2_32" fn WSAHtons(
 pub extern "ws2_32" fn WSAIoctl(
     s: SOCKET,
     dwIoControlCode: u32,
-    lpvInBuffer: ?*const c_void,
+    lpvInBuffer: ?*const anyopaque,
     cbInBuffer: u32,
-    lpvOutbuffer: ?*c_void,
+    lpvOutbuffer: ?*anyopaque,
     cbOutbuffer: u32,
     lpcbBytesReturned: *u32,
     lpOverlapped: ?*OVERLAPPED,
@@ -2216,7 +2216,7 @@ pub extern "mswsock" fn TransmitFile(
 pub extern "mswsock" fn AcceptEx(
     sListenSocket: SOCKET,
     sAcceptSocket: SOCKET,
-    lpOutputBuffer: *c_void,
+    lpOutputBuffer: *anyopaque,
     dwReceiveDataLength: u32,
     dwLocalAddressLength: u32,
     dwRemoteAddressLength: u32,
@@ -2225,7 +2225,7 @@ pub extern "mswsock" fn AcceptEx(
 ) callconv(WINAPI) BOOL;
 
 pub extern "mswsock" fn GetAcceptExSockaddrs(
-    lpOutputBuffer: *c_void,
+    lpOutputBuffer: *anyopaque,
     dwReceiveDataLength: u32,
     dwLocalAddressLength: u32,
     dwRemoteAddressLength: u32,
@@ -2242,13 +2242,13 @@ pub extern "ws2_32" fn WSAProviderCompleteAsyncCall(
 
 pub extern "mswsock" fn EnumProtocolsA(
     lpiProtocols: ?*i32,
-    lpProtocolBuffer: *c_void,
+    lpProtocolBuffer: *anyopaque,
     lpdwBufferLength: *u32,
 ) callconv(WINAPI) i32;
 
 pub extern "mswsock" fn EnumProtocolsW(
     lpiProtocols: ?*i32,
-    lpProtocolBuffer: *c_void,
+    lpProtocolBuffer: *anyopaque,
     lpdwBufferLength: *u32,
 ) callconv(WINAPI) i32;
 
@@ -2259,7 +2259,7 @@ pub extern "mswsock" fn GetAddressByNameA(
     lpiProtocols: ?*i32,
     dwResolution: u32,
     lpServiceAsyncInfo: ?*SERVICE_ASYNC_INFO,
-    lpCsaddrBuffer: *c_void,
+    lpCsaddrBuffer: *anyopaque,
     lpAliasBuffer: ?[*:0]const u8,
     lpdwAliasBufferLength: *u32,
 ) callconv(WINAPI) i32;
@@ -2271,7 +2271,7 @@ pub extern "mswsock" fn GetAddressByNameW(
     lpiProtocols: ?*i32,
     dwResolution: u32,
     lpServiceAsyncInfo: ?*SERVICE_ASYNC_INFO,
-    lpCsaddrBuffer: *c_void,
+    lpCsaddrBuffer: *anyopaque,
     ldwBufferLEngth: *u32,
     lpAliasBuffer: ?[*:0]u16,
     lpdwAliasBufferLength: *u32,
lib/std/os/linux.zig
@@ -845,14 +845,14 @@ pub fn flock(fd: fd_t, operation: i32) usize {
     return syscall2(.flock, @bitCast(usize, @as(isize, fd)), @bitCast(usize, @as(isize, operation)));
 }
 
-var vdso_clock_gettime = @ptrCast(?*const c_void, init_vdso_clock_gettime);
+var vdso_clock_gettime = @ptrCast(?*const anyopaque, init_vdso_clock_gettime);
 
 // We must follow the C calling convention when we call into the VDSO
 const vdso_clock_gettime_ty = fn (i32, *timespec) callconv(.C) usize;
 
 pub fn clock_gettime(clk_id: i32, tp: *timespec) usize {
     if (@hasDecl(VDSO, "CGT_SYM")) {
-        const ptr = @atomicLoad(?*const c_void, &vdso_clock_gettime, .Unordered);
+        const ptr = @atomicLoad(?*const anyopaque, &vdso_clock_gettime, .Unordered);
         if (ptr) |fn_ptr| {
             const f = @ptrCast(vdso_clock_gettime_ty, fn_ptr);
             const rc = f(clk_id, tp);
@@ -866,10 +866,10 @@ pub fn clock_gettime(clk_id: i32, tp: *timespec) usize {
 }
 
 fn init_vdso_clock_gettime(clk: i32, ts: *timespec) callconv(.C) usize {
-    const ptr = @intToPtr(?*const c_void, vdso.lookup(VDSO.CGT_VER, VDSO.CGT_SYM));
+    const ptr = @intToPtr(?*const anyopaque, vdso.lookup(VDSO.CGT_VER, VDSO.CGT_SYM));
     // Note that we may not have a VDSO at all, update the stub address anyway
     // so that clock_gettime will fall back on the good old (and slow) syscall
-    @atomicStore(?*const c_void, &vdso_clock_gettime, ptr, .Monotonic);
+    @atomicStore(?*const anyopaque, &vdso_clock_gettime, ptr, .Monotonic);
     // Call into the VDSO if available
     if (ptr) |fn_ptr| {
         const f = @ptrCast(vdso_clock_gettime_ty, fn_ptr);
@@ -1180,7 +1180,7 @@ pub fn sendmmsg(fd: i32, msgvec: [*]mmsghdr_const, vlen: u32, flags: u32) usize
     return syscall4(.sendmmsg, @bitCast(usize, @as(isize, fd)), @ptrToInt(msgvec), vlen, flags);
 }
 
-pub fn connect(fd: i32, addr: *const c_void, len: socklen_t) usize {
+pub fn connect(fd: i32, addr: *const anyopaque, len: socklen_t) usize {
     if (native_arch == .i386) {
         return socketcall(SC.connect, &[3]usize{ @bitCast(usize, @as(isize, fd)), @ptrToInt(addr), len });
     }
@@ -1452,7 +1452,7 @@ pub fn io_uring_enter(fd: i32, to_submit: u32, min_complete: u32, flags: u32, si
     return syscall6(.io_uring_enter, @bitCast(usize, @as(isize, fd)), to_submit, min_complete, flags, @ptrToInt(sig), NSIG / 8);
 }
 
-pub fn io_uring_register(fd: i32, opcode: IORING_REGISTER, arg: ?*const c_void, nr_args: u32) usize {
+pub fn io_uring_register(fd: i32, opcode: IORING_REGISTER, arg: ?*const anyopaque, nr_args: u32) usize {
     return syscall4(.io_uring_register, @bitCast(usize, @as(isize, fd)), @enumToInt(opcode), @ptrToInt(arg), nr_args);
 }
 
@@ -3045,7 +3045,7 @@ pub const k_sigaction = switch (native_arch) {
 /// Renamed from `sigaction` to `Sigaction` to avoid conflict with the syscall.
 pub const Sigaction = extern struct {
     pub const handler_fn = fn (c_int) callconv(.C) void;
-    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const c_void) callconv(.C) void;
+    pub const sigaction_fn = fn (c_int, *const siginfo_t, ?*const anyopaque) callconv(.C) void;
 
     handler: extern union {
         handler: ?handler_fn,
@@ -3342,7 +3342,7 @@ else
 
 pub const sigval = extern union {
     int: i32,
-    ptr: *c_void,
+    ptr: *anyopaque,
 };
 
 const siginfo_fields_union = extern union {
@@ -3368,12 +3368,12 @@ const siginfo_fields_union = extern union {
         },
     },
     sigfault: extern struct {
-        addr: *c_void,
+        addr: *anyopaque,
         addr_lsb: i16,
         first: extern union {
             addr_bnd: extern struct {
-                lower: *c_void,
-                upper: *c_void,
+                lower: *anyopaque,
+                upper: *anyopaque,
             },
             pkey: u32,
         },
@@ -3383,7 +3383,7 @@ const siginfo_fields_union = extern union {
         fd: i32,
     },
     sigsys: extern struct {
-        call_addr: *c_void,
+        call_addr: *anyopaque,
         syscall: i32,
         native_arch: u32,
     },
lib/std/os/test.zig
@@ -408,7 +408,7 @@ test "sigaltstack" {
 
 // If the type is not available use void to avoid erroring out when `iter_fn` is
 // analyzed
-const dl_phdr_info = if (@hasDecl(os.system, "dl_phdr_info")) os.dl_phdr_info else c_void;
+const dl_phdr_info = if (@hasDecl(os.system, "dl_phdr_info")) os.dl_phdr_info else anyopaque;
 
 const IterFnError = error{
     MissingPtLoadSegment,
@@ -740,7 +740,7 @@ test "sigaction" {
         return error.SkipZigTest;
 
     const S = struct {
-        fn handler(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const c_void) callconv(.C) void {
+        fn handler(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const anyopaque) callconv(.C) void {
             _ = ctx_ptr;
             // Check that we received the correct signal.
             switch (native_os) {
lib/std/os/windows.zig
@@ -1553,7 +1553,7 @@ pub fn CreateProcessW(
     lpThreadAttributes: ?*SECURITY_ATTRIBUTES,
     bInheritHandles: BOOL,
     dwCreationFlags: DWORD,
-    lpEnvironment: ?*c_void,
+    lpEnvironment: ?*anyopaque,
     lpCurrentDirectory: ?LPWSTR,
     lpStartupInfo: *STARTUPINFOW,
     lpProcessInformation: *PROCESS_INFORMATION,
@@ -1619,11 +1619,11 @@ pub fn QueryPerformanceCounter() u64 {
     return @bitCast(u64, result);
 }
 
-pub fn InitOnceExecuteOnce(InitOnce: *INIT_ONCE, InitFn: INIT_ONCE_FN, Parameter: ?*c_void, Context: ?*c_void) void {
+pub fn InitOnceExecuteOnce(InitOnce: *INIT_ONCE, InitFn: INIT_ONCE_FN, Parameter: ?*anyopaque, Context: ?*anyopaque) void {
     assert(kernel32.InitOnceExecuteOnce(InitOnce, InitFn, Parameter, Context) != 0);
 }
 
-pub fn HeapFree(hHeap: HANDLE, dwFlags: DWORD, lpMem: *c_void) void {
+pub fn HeapFree(hHeap: HANDLE, dwFlags: DWORD, lpMem: *anyopaque) void {
     assert(kernel32.HeapFree(hHeap, dwFlags, lpMem) != 0);
 }
 
@@ -1675,7 +1675,7 @@ pub fn LockFile(
     FileHandle: HANDLE,
     Event: ?HANDLE,
     ApcRoutine: ?*IO_APC_ROUTINE,
-    ApcContext: ?*c_void,
+    ApcContext: ?*anyopaque,
     IoStatusBlock: *IO_STATUS_BLOCK,
     ByteOffset: *const LARGE_INTEGER,
     Length: *const LARGE_INTEGER,
@@ -1954,7 +1954,7 @@ pub fn loadWinsockExtensionFunction(comptime T: type, sock: ws2_32.SOCKET, guid:
     const rc = ws2_32.WSAIoctl(
         sock,
         ws2_32.SIO_GET_EXTENSION_FUNCTION_POINTER,
-        @ptrCast(*const c_void, &guid),
+        @ptrCast(*const anyopaque, &guid),
         @sizeOf(GUID),
         &function,
         @sizeOf(T),
@@ -2055,7 +2055,7 @@ pub const BYTE = u8;
 pub const CHAR = u8;
 pub const UCHAR = u8;
 pub const FLOAT = f32;
-pub const HANDLE = *c_void;
+pub const HANDLE = *anyopaque;
 pub const HCRYPTPROV = ULONG_PTR;
 pub const ATOM = u16;
 pub const HBRUSH = *opaque {};
@@ -2070,12 +2070,12 @@ pub const HGLRC = *opaque {};
 pub const FARPROC = *opaque {};
 pub const INT = c_int;
 pub const LPCSTR = [*:0]const CHAR;
-pub const LPCVOID = *const c_void;
+pub const LPCVOID = *const anyopaque;
 pub const LPSTR = [*:0]CHAR;
-pub const LPVOID = *c_void;
+pub const LPVOID = *anyopaque;
 pub const LPWSTR = [*:0]WCHAR;
 pub const LPCWSTR = [*:0]const WCHAR;
-pub const PVOID = *c_void;
+pub const PVOID = *anyopaque;
 pub const PWSTR = [*:0]WCHAR;
 pub const SIZE_T = usize;
 pub const UINT = c_uint;
@@ -2289,7 +2289,7 @@ pub const IO_STATUS_BLOCK = extern struct {
     // "DUMMYUNIONNAME" expands to "u"
     u: extern union {
         Status: NTSTATUS,
-        Pointer: ?*c_void,
+        Pointer: ?*anyopaque,
     },
     Information: ULONG_PTR,
 };
@@ -2457,7 +2457,7 @@ pub const VOLUME_NAME_NT = 0x2;
 
 pub const SECURITY_ATTRIBUTES = extern struct {
     nLength: DWORD,
-    lpSecurityDescriptor: ?*c_void,
+    lpSecurityDescriptor: ?*anyopaque,
     bInheritHandle: BOOL,
 };
 
@@ -2923,10 +2923,10 @@ pub const RTL_CRITICAL_SECTION = extern struct {
 pub const CRITICAL_SECTION = RTL_CRITICAL_SECTION;
 pub const INIT_ONCE = RTL_RUN_ONCE;
 pub const INIT_ONCE_STATIC_INIT = RTL_RUN_ONCE_INIT;
-pub const INIT_ONCE_FN = fn (InitOnce: *INIT_ONCE, Parameter: ?*c_void, Context: ?*c_void) callconv(.C) BOOL;
+pub const INIT_ONCE_FN = fn (InitOnce: *INIT_ONCE, Parameter: ?*anyopaque, Context: ?*anyopaque) callconv(.C) BOOL;
 
 pub const RTL_RUN_ONCE = extern struct {
-    Ptr: ?*c_void,
+    Ptr: ?*anyopaque,
 };
 
 pub const RTL_RUN_ONCE_INIT = RTL_RUN_ONCE{ .Ptr = null };
@@ -2966,7 +2966,7 @@ pub const EXCEPTION_RECORD = extern struct {
     ExceptionCode: u32,
     ExceptionFlags: u32,
     ExceptionRecord: *EXCEPTION_RECORD,
-    ExceptionAddress: *c_void,
+    ExceptionAddress: *anyopaque,
     NumberParameters: u32,
     ExceptionInformation: [15]usize,
 };
@@ -3202,8 +3202,8 @@ pub const OBJECT_ATTRIBUTES = extern struct {
     RootDirectory: ?HANDLE,
     ObjectName: *UNICODE_STRING,
     Attributes: ULONG,
-    SecurityDescriptor: ?*c_void,
-    SecurityQualityOfService: ?*c_void,
+    SecurityDescriptor: ?*anyopaque,
+    SecurityQualityOfService: ?*anyopaque,
 };
 
 pub const OBJ_INHERIT = 0x00000002;
lib/std/special/compiler_rt/emutls.zig
@@ -20,7 +20,7 @@ comptime {
 }
 
 /// public entrypoint for generated code using EmulatedTLS
-pub fn __emutls_get_address(control: *emutls_control) callconv(.C) *c_void {
+pub fn __emutls_get_address(control: *emutls_control) callconv(.C) *anyopaque {
     return control.getPointer();
 }
 
@@ -47,7 +47,7 @@ const simple_allocator = struct {
     pub fn advancedAlloc(alignment: u29, size: usize) [*]u8 {
         const minimal_alignment = std.math.max(@alignOf(usize), alignment);
 
-        var aligned_ptr: ?*c_void = undefined;
+        var aligned_ptr: ?*anyopaque = undefined;
         if (std.c.posix_memalign(&aligned_ptr, minimal_alignment, size) != 0) {
             abort();
         }
@@ -57,7 +57,7 @@ const simple_allocator = struct {
 
     /// Resize a slice.
     pub fn reallocSlice(comptime T: type, slice: []T, len: usize) []T {
-        var c_ptr: *c_void = @ptrCast(*c_void, slice.ptr);
+        var c_ptr: *anyopaque = @ptrCast(*anyopaque, slice.ptr);
         var new_array: [*]T = @ptrCast([*]T, @alignCast(
             @alignOf(T),
             std.c.realloc(c_ptr, @sizeOf(T) * len) orelse abort(),
@@ -67,14 +67,14 @@ const simple_allocator = struct {
 
     /// Free a memory chunk allocated with simple_allocator.
     pub fn free(ptr: anytype) void {
-        std.c.free(@ptrCast(*c_void, ptr));
+        std.c.free(@ptrCast(*anyopaque, ptr));
     }
 };
 
 /// Simple array of ?ObjectPointer with automatic resizing and
 /// automatic storage allocation.
 const ObjectArray = struct {
-    const ObjectPointer = *c_void;
+    const ObjectPointer = *anyopaque;
 
     // content of the array
     slots: []?ObjectPointer,
@@ -143,7 +143,7 @@ const ObjectArray = struct {
                 @memset(data, 0, size);
             }
 
-            self.slots[index] = @ptrCast(*c_void, data);
+            self.slots[index] = @ptrCast(*anyopaque, data);
         }
 
         return self.slots[index].?;
@@ -189,7 +189,7 @@ const current_thread_storage = struct {
 
     /// Set casted thread specific value.
     fn setspecific(new: ?*ObjectArray) void {
-        if (std.c.pthread_setspecific(current_thread_storage.key, @ptrCast(*c_void, new)) != 0) {
+        if (std.c.pthread_setspecific(current_thread_storage.key, @ptrCast(*anyopaque, new)) != 0) {
             abort();
         }
     }
@@ -202,7 +202,7 @@ const current_thread_storage = struct {
     }
 
     /// Invoked by pthread specific destructor. the passed argument is the ObjectArray pointer.
-    fn deinit(arrayPtr: *c_void) callconv(.C) void {
+    fn deinit(arrayPtr: *anyopaque) callconv(.C) void {
         var array = @ptrCast(
             *ObjectArray,
             @alignCast(@alignOf(ObjectArray), arrayPtr),
@@ -228,11 +228,11 @@ const emutls_control = extern struct {
         index: usize,
 
         // object address, when in single thread env (not used)
-        address: *c_void,
+        address: *anyopaque,
     },
 
     // null or non-zero initial value for the object
-    default_value: ?*c_void,
+    default_value: ?*anyopaque,
 
     // global Mutex used to serialize control.index initialization.
     var mutex: std.c.pthread_mutex_t = std.c.PTHREAD_MUTEX_INITIALIZER;
@@ -292,12 +292,12 @@ const emutls_control = extern struct {
             .size = @sizeOf(T),
             .alignment = @alignOf(T),
             .object = .{ .index = 0 },
-            .default_value = @ptrCast(?*c_void, default_value),
+            .default_value = @ptrCast(?*anyopaque, default_value),
         };
     }
 
     /// Get the pointer on allocated storage for emutls variable.
-    pub fn getPointer(self: *emutls_control) *c_void {
+    pub fn getPointer(self: *emutls_control) *anyopaque {
         // ensure current_thread_storage initialization is done
         current_thread_storage.init_once.call();
 
lib/std/Thread/Futex.zig
@@ -107,8 +107,8 @@ const WindowsFutex = struct {
         }
 
         switch (windows.ntdll.RtlWaitOnAddress(
-            @ptrCast(?*const c_void, ptr),
-            @ptrCast(?*const c_void, &expect),
+            @ptrCast(?*const anyopaque, ptr),
+            @ptrCast(?*const anyopaque, &expect),
             @sizeOf(@TypeOf(expect)),
             timeout_ptr,
         )) {
@@ -119,7 +119,7 @@ const WindowsFutex = struct {
     }
 
     fn wake(ptr: *const Atomic(u32), num_waiters: u32) void {
-        const address = @ptrCast(?*const c_void, ptr);
+        const address = @ptrCast(?*const anyopaque, ptr);
         switch (num_waiters) {
             1 => windows.ntdll.RtlWakeAddressSingle(address),
             else => windows.ntdll.RtlWakeAddressAll(address),
@@ -189,7 +189,7 @@ const DarwinFutex = struct {
             assert(timeout_value != 0);
             timeout_ns = timeout_value;
         }
-        const addr = @ptrCast(*const c_void, ptr);
+        const addr = @ptrCast(*const anyopaque, ptr);
         const flags = darwin.UL_COMPARE_AND_WAIT | darwin.ULF_NO_ERRNO;
         // If we're using `__ulock_wait` and `timeout` is too big to fit inside a `u32` count of
         // micro-seconds (around 70min), we'll request a shorter timeout. This is fine (users
@@ -228,7 +228,7 @@ const DarwinFutex = struct {
         }
 
         while (true) {
-            const addr = @ptrCast(*const c_void, ptr);
+            const addr = @ptrCast(*const anyopaque, ptr);
             const status = darwin.__ulock_wake(flags, addr, 0);
 
             if (status >= 0) return;
lib/std/Thread/StaticResetEvent.zig
@@ -229,7 +229,7 @@ pub const AtomicEvent = struct {
     pub const WindowsFutex = struct {
         pub fn wake(waiters: *u32, wake_count: u32) void {
             const handle = getEventHandle() orelse return SpinFutex.wake(waiters, wake_count);
-            const key = @ptrCast(*const c_void, waiters);
+            const key = @ptrCast(*const anyopaque, waiters);
 
             var waiting = wake_count;
             while (waiting != 0) : (waiting -= 1) {
@@ -240,7 +240,7 @@ pub const AtomicEvent = struct {
 
         pub fn wait(waiters: *u32, timeout: ?u64) !void {
             const handle = getEventHandle() orelse return SpinFutex.wait(waiters, timeout);
-            const key = @ptrCast(*const c_void, waiters);
+            const key = @ptrCast(*const anyopaque, waiters);
 
             // NT uses timeouts in units of 100ns with negative value being relative
             var timeout_ptr: ?*windows.LARGE_INTEGER = null;
lib/std/zig/c_builtins.zig
@@ -129,7 +129,7 @@ pub inline fn __builtin_strcmp(s1: [*c]const u8, s2: [*c]const u8) c_int {
     return @as(c_int, std.cstr.cmp(s1, s2));
 }
 
-pub inline fn __builtin_object_size(ptr: ?*const c_void, ty: c_int) usize {
+pub inline fn __builtin_object_size(ptr: ?*const anyopaque, ty: c_int) usize {
     _ = ptr;
     // clang semantics match gcc's: https://gcc.gnu.org/onlinedocs/gcc/Object-Size-Checking.html
     // If it is not possible to determine which objects ptr points to at compile time,
@@ -141,36 +141,36 @@ pub inline fn __builtin_object_size(ptr: ?*const c_void, ty: c_int) usize {
 }
 
 pub inline fn __builtin___memset_chk(
-    dst: ?*c_void,
+    dst: ?*anyopaque,
     val: c_int,
     len: usize,
     remaining: usize,
-) ?*c_void {
+) ?*anyopaque {
     if (len > remaining) @panic("std.c.builtins.memset_chk called with len > remaining");
     return __builtin_memset(dst, val, len);
 }
 
-pub inline fn __builtin_memset(dst: ?*c_void, val: c_int, len: usize) ?*c_void {
+pub inline fn __builtin_memset(dst: ?*anyopaque, val: c_int, len: usize) ?*anyopaque {
     const dst_cast = @ptrCast([*c]u8, dst);
     @memset(dst_cast, @bitCast(u8, @truncate(i8, val)), len);
     return dst;
 }
 
 pub inline fn __builtin___memcpy_chk(
-    noalias dst: ?*c_void,
-    noalias src: ?*const c_void,
+    noalias dst: ?*anyopaque,
+    noalias src: ?*const anyopaque,
     len: usize,
     remaining: usize,
-) ?*c_void {
+) ?*anyopaque {
     if (len > remaining) @panic("std.c.builtins.memcpy_chk called with len > remaining");
     return __builtin_memcpy(dst, src, len);
 }
 
 pub inline fn __builtin_memcpy(
-    noalias dst: ?*c_void,
-    noalias src: ?*const c_void,
+    noalias dst: ?*anyopaque,
+    noalias src: ?*const anyopaque,
     len: usize,
-) ?*c_void {
+) ?*anyopaque {
     const dst_cast = @ptrCast([*c]u8, dst);
     const src_cast = @ptrCast([*c]const u8, src);
 
@@ -232,4 +232,4 @@ pub inline fn __builtin_isinf_sign(x: anytype) c_int {
 // It is used in a run-translated-c test and a test-translate-c test to ensure that non-implemented
 // builtins are correctly demoted. If you implement __builtin_alloca_with_align, please update the
 // run-translated-c test and the test-translate-c test to use a different non-implemented builtin.
-// pub fn __builtin_alloca_with_align(size: usize, alignment: usize) callconv(.Inline) *c_void {}
+// pub fn __builtin_alloca_with_align(size: usize, alignment: usize) callconv(.Inline) *anyopaque {}
lib/std/zig/c_translation.zig
@@ -110,15 +110,15 @@ test "cast" {
     try testing.expectEqual(@intToPtr(*u8, 2), cast(*u8, @intToPtr(*const u8, 2)));
     try testing.expectEqual(@intToPtr(*u8, 2), cast(*u8, @intToPtr(*volatile u8, 2)));
 
-    try testing.expectEqual(@intToPtr(?*c_void, 2), cast(?*c_void, @intToPtr(*u8, 2)));
+    try testing.expectEqual(@intToPtr(?*anyopaque, 2), cast(?*anyopaque, @intToPtr(*u8, 2)));
 
     var foo: c_int = -1;
-    try testing.expect(cast(*c_void, -1) == @intToPtr(*c_void, @bitCast(usize, @as(isize, -1))));
-    try testing.expect(cast(*c_void, foo) == @intToPtr(*c_void, @bitCast(usize, @as(isize, -1))));
-    try testing.expect(cast(?*c_void, -1) == @intToPtr(?*c_void, @bitCast(usize, @as(isize, -1))));
-    try testing.expect(cast(?*c_void, foo) == @intToPtr(?*c_void, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(*anyopaque, -1) == @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(*anyopaque, foo) == @intToPtr(*anyopaque, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(?*anyopaque, -1) == @intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))));
+    try testing.expect(cast(?*anyopaque, foo) == @intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))));
 
-    const FnPtr = ?fn (*c_void) void;
+    const FnPtr = ?fn (*anyopaque) void;
     try testing.expect(cast(FnPtr, 0) == @intToPtr(FnPtr, @as(usize, 0)));
     try testing.expect(cast(FnPtr, foo) == @intToPtr(FnPtr, @bitCast(usize, @as(isize, -1))));
 }
@@ -133,13 +133,13 @@ pub fn sizeof(target: anytype) usize {
             // We cannot distinguish those types in Zig, so use pointer size.
             return @sizeOf(T);
         },
-        .Null => return @sizeOf(*c_void),
+        .Null => return @sizeOf(*anyopaque),
         .Void => {
             // Note: sizeof(void) is 1 on clang/gcc and 0 on MSVC.
             return 1;
         },
         .Opaque => {
-            if (T == c_void) {
+            if (T == anyopaque) {
                 // Note: sizeof(void) is 1 on clang/gcc and 0 on MSVC.
                 return 1;
             } else {
@@ -175,7 +175,7 @@ pub fn sizeof(target: anytype) usize {
             // When zero sized pointers are removed, this case will no
             // longer be reachable and can be deleted.
             if (@sizeOf(T) == 0) {
-                return @sizeOf(*c_void);
+                return @sizeOf(*anyopaque);
             }
             return @sizeOf(T);
         },
@@ -195,7 +195,7 @@ pub fn sizeof(target: anytype) usize {
 test "sizeof" {
     const S = extern struct { a: u32 };
 
-    const ptr_size = @sizeOf(*c_void);
+    const ptr_size = @sizeOf(*anyopaque);
 
     try testing.expect(sizeof(u32) == 4);
     try testing.expect(sizeof(@as(u32, 2)) == 4);
@@ -215,7 +215,7 @@ test "sizeof" {
     try testing.expect(sizeof([*c]u32) == ptr_size);
     try testing.expect(sizeof(?*u32) == ptr_size);
     try testing.expect(sizeof(?[*]u32) == ptr_size);
-    try testing.expect(sizeof(*c_void) == ptr_size);
+    try testing.expect(sizeof(*anyopaque) == ptr_size);
     try testing.expect(sizeof(*void) == ptr_size);
     try testing.expect(sizeof(null) == ptr_size);
 
@@ -230,7 +230,7 @@ test "sizeof" {
     try testing.expect(sizeof(sizeof) == @sizeOf(@TypeOf(sizeof)));
 
     try testing.expect(sizeof(void) == 1);
-    try testing.expect(sizeof(c_void) == 1);
+    try testing.expect(sizeof(anyopaque) == 1);
 }
 
 pub const CIntLiteralRadix = enum { decimal, octal, hexadecimal };
lib/std/zig/parser_test.zig
@@ -87,6 +87,29 @@ test "zig fmt: rewrite @byteOffsetOf to @offsetOf" {
     );
 }
 
+// TODO Remove this after zig 0.10.0 is released.
+test "zig fmt: rewrite c_void to anyopaque" {
+    try testTransform(
+        \\const Foo = struct {
+        \\    c_void: *c_void,
+        \\};
+        \\
+        \\fn foo(a: ?*c_void) !*c_void {
+        \\    return a orelse unreachable;
+        \\}
+        \\
+    ,
+        \\const Foo = struct {
+        \\    c_void: *anyopaque,
+        \\};
+        \\
+        \\fn foo(a: ?*anyopaque) !*anyopaque {
+        \\    return a orelse unreachable;
+        \\}
+        \\
+    );
+}
+
 test "zig fmt: simple top level comptime block" {
     try testCanonical(
         \\// line comment
lib/std/zig/render.zig
@@ -183,7 +183,21 @@ fn renderExpression(gpa: Allocator, ais: *Ais, tree: Ast, node: Ast.Node.Index,
     const node_tags = tree.nodes.items(.tag);
     const datas = tree.nodes.items(.data);
     switch (node_tags[node]) {
-        .identifier,
+        // TODO remove this c_void -> anyopaque rewrite after the 0.10.0 release.
+        // Also get rid of renderSpace() as it will no longer be necessary.
+        .identifier => {
+            const token_index = main_tokens[node];
+
+            const lexeme = tokenSliceForRender(tree, token_index);
+            if (mem.eql(u8, lexeme, "c_void")) {
+                try ais.writer().writeAll("anyopaque");
+            } else {
+                try ais.writer().writeAll(lexeme);
+            }
+
+            return renderSpace(ais, tree, token_index, lexeme.len, space);
+        },
+
         .integer_literal,
         .float_literal,
         .char_literal,
@@ -2284,13 +2298,16 @@ const Space = enum {
 };
 
 fn renderToken(ais: *Ais, tree: Ast, token_index: Ast.TokenIndex, space: Space) Error!void {
+    const lexeme = tokenSliceForRender(tree, token_index);
+    try ais.writer().writeAll(lexeme);
+    try renderSpace(ais, tree, token_index, lexeme.len, space);
+}
+
+fn renderSpace(ais: *Ais, tree: Ast, token_index: Ast.TokenIndex, lexeme_len: usize, space: Space) Error!void {
     const token_tags = tree.tokens.items(.tag);
     const token_starts = tree.tokens.items(.start);
 
     const token_start = token_starts[token_index];
-    const lexeme = tokenSliceForRender(tree, token_index);
-
-    try ais.writer().writeAll(lexeme);
 
     if (space == .skip) return;
 
@@ -2298,7 +2315,7 @@ fn renderToken(ais: *Ais, tree: Ast, token_index: Ast.TokenIndex, space: Space)
         try ais.writer().writeByte(',');
     }
 
-    const comment = try renderComments(ais, tree, token_start + lexeme.len, token_starts[token_index + 1]);
+    const comment = try renderComments(ais, tree, token_start + lexeme_len, token_starts[token_index + 1]);
     switch (space) {
         .none => {},
         .space => if (!comment) try ais.writer().writeByte(' '),
lib/std/c.zig
@@ -121,9 +121,9 @@ pub extern "c" fn writev(fd: c_int, iov: [*]const iovec_const, iovcnt: c_uint) i
 pub extern "c" fn pwritev(fd: c_int, iov: [*]const iovec_const, iovcnt: c_uint, offset: c.off_t) isize;
 pub extern "c" fn write(fd: c.fd_t, buf: [*]const u8, nbyte: usize) isize;
 pub extern "c" fn pwrite(fd: c.fd_t, buf: [*]const u8, nbyte: usize, offset: c.off_t) isize;
-pub extern "c" fn mmap(addr: ?*align(page_size) c_void, len: usize, prot: c_uint, flags: c_uint, fd: c.fd_t, offset: c.off_t) *c_void;
-pub extern "c" fn munmap(addr: *align(page_size) const c_void, len: usize) c_int;
-pub extern "c" fn mprotect(addr: *align(page_size) c_void, len: usize, prot: c_uint) c_int;
+pub extern "c" fn mmap(addr: ?*align(page_size) anyopaque, len: usize, prot: c_uint, flags: c_uint, fd: c.fd_t, offset: c.off_t) *anyopaque;
+pub extern "c" fn munmap(addr: *align(page_size) const anyopaque, len: usize) c_int;
+pub extern "c" fn mprotect(addr: *align(page_size) anyopaque, len: usize, prot: c_uint) c_int;
 pub extern "c" fn link(oldpath: [*:0]const u8, newpath: [*:0]const u8, flags: c_int) c_int;
 pub extern "c" fn linkat(oldfd: c.fd_t, oldpath: [*:0]const u8, newfd: c.fd_t, newpath: [*:0]const u8, flags: c_int) c_int;
 pub extern "c" fn unlink(path: [*:0]const u8) c_int;
@@ -152,8 +152,8 @@ pub extern "c" fn fchown(fd: c.fd_t, owner: c.uid_t, group: c.gid_t) c_int;
 
 pub extern "c" fn rmdir(path: [*:0]const u8) c_int;
 pub extern "c" fn getenv(name: [*:0]const u8) ?[*:0]u8;
-pub extern "c" fn sysctl(name: [*]const c_int, namelen: c_uint, oldp: ?*c_void, oldlenp: ?*usize, newp: ?*c_void, newlen: usize) c_int;
-pub extern "c" fn sysctlbyname(name: [*:0]const u8, oldp: ?*c_void, oldlenp: ?*usize, newp: ?*c_void, newlen: usize) c_int;
+pub extern "c" fn sysctl(name: [*]const c_int, namelen: c_uint, oldp: ?*anyopaque, oldlenp: ?*usize, newp: ?*anyopaque, newlen: usize) c_int;
+pub extern "c" fn sysctlbyname(name: [*:0]const u8, oldp: ?*anyopaque, oldlenp: ?*usize, newp: ?*anyopaque, newlen: usize) c_int;
 pub extern "c" fn sysctlnametomib(name: [*:0]const u8, mibp: ?*c_int, sizep: ?*usize) c_int;
 pub extern "c" fn tcgetattr(fd: c.fd_t, termios_p: *c.termios) c_int;
 pub extern "c" fn tcsetattr(fd: c.fd_t, optional_action: c.TCSA, termios_p: *const c.termios) c_int;
@@ -172,12 +172,12 @@ pub extern "c" fn getpeername(sockfd: c.fd_t, noalias addr: *c.sockaddr, noalias
 pub extern "c" fn connect(sockfd: c.fd_t, sock_addr: *const c.sockaddr, addrlen: c.socklen_t) c_int;
 pub extern "c" fn accept(sockfd: c.fd_t, noalias addr: ?*c.sockaddr, noalias addrlen: ?*c.socklen_t) c_int;
 pub extern "c" fn accept4(sockfd: c.fd_t, noalias addr: ?*c.sockaddr, noalias addrlen: ?*c.socklen_t, flags: c_uint) c_int;
-pub extern "c" fn getsockopt(sockfd: c.fd_t, level: u32, optname: u32, noalias optval: ?*c_void, noalias optlen: *c.socklen_t) c_int;
-pub extern "c" fn setsockopt(sockfd: c.fd_t, level: u32, optname: u32, optval: ?*const c_void, optlen: c.socklen_t) c_int;
-pub extern "c" fn send(sockfd: c.fd_t, buf: *const c_void, len: usize, flags: u32) isize;
+pub extern "c" fn getsockopt(sockfd: c.fd_t, level: u32, optname: u32, noalias optval: ?*anyopaque, noalias optlen: *c.socklen_t) c_int;
+pub extern "c" fn setsockopt(sockfd: c.fd_t, level: u32, optname: u32, optval: ?*const anyopaque, optlen: c.socklen_t) c_int;
+pub extern "c" fn send(sockfd: c.fd_t, buf: *const anyopaque, len: usize, flags: u32) isize;
 pub extern "c" fn sendto(
     sockfd: c.fd_t,
-    buf: *const c_void,
+    buf: *const anyopaque,
     len: usize,
     flags: u32,
     dest_addr: ?*const c.sockaddr,
@@ -185,10 +185,10 @@ pub extern "c" fn sendto(
 ) isize;
 pub extern "c" fn sendmsg(sockfd: c.fd_t, msg: *const std.x.os.Socket.Message, flags: c_int) isize;
 
-pub extern "c" fn recv(sockfd: c.fd_t, arg1: ?*c_void, arg2: usize, arg3: c_int) isize;
+pub extern "c" fn recv(sockfd: c.fd_t, arg1: ?*anyopaque, arg2: usize, arg3: c_int) isize;
 pub extern "c" fn recvfrom(
     sockfd: c.fd_t,
-    noalias buf: *c_void,
+    noalias buf: *anyopaque,
     len: usize,
     flags: u32,
     noalias src_addr: ?*c.sockaddr,
@@ -208,9 +208,9 @@ pub extern "c" fn setregid(rgid: c.gid_t, egid: c.gid_t) c_int;
 pub extern "c" fn setresuid(ruid: c.uid_t, euid: c.uid_t, suid: c.uid_t) c_int;
 pub extern "c" fn setresgid(rgid: c.gid_t, egid: c.gid_t, sgid: c.gid_t) c_int;
 
-pub extern "c" fn malloc(usize) ?*c_void;
-pub extern "c" fn realloc(?*c_void, usize) ?*c_void;
-pub extern "c" fn free(?*c_void) void;
+pub extern "c" fn malloc(usize) ?*anyopaque;
+pub extern "c" fn realloc(?*anyopaque, usize) ?*anyopaque;
+pub extern "c" fn free(?*anyopaque) void;
 
 pub extern "c" fn futimes(fd: c.fd_t, times: *[2]c.timeval) c_int;
 pub extern "c" fn utimes(path: [*:0]const u8, times: *[2]c.timeval) c_int;
@@ -218,24 +218,24 @@ pub extern "c" fn utimes(path: [*:0]const u8, times: *[2]c.timeval) c_int;
 pub extern "c" fn utimensat(dirfd: c.fd_t, pathname: [*:0]const u8, times: *[2]c.timespec, flags: u32) c_int;
 pub extern "c" fn futimens(fd: c.fd_t, times: *const [2]c.timespec) c_int;
 
-pub extern "c" fn pthread_create(noalias newthread: *pthread_t, noalias attr: ?*const c.pthread_attr_t, start_routine: fn (?*c_void) callconv(.C) ?*c_void, noalias arg: ?*c_void) c.E;
+pub extern "c" fn pthread_create(noalias newthread: *pthread_t, noalias attr: ?*const c.pthread_attr_t, start_routine: fn (?*anyopaque) callconv(.C) ?*anyopaque, noalias arg: ?*anyopaque) c.E;
 pub extern "c" fn pthread_attr_init(attr: *c.pthread_attr_t) c.E;
-pub extern "c" fn pthread_attr_setstack(attr: *c.pthread_attr_t, stackaddr: *c_void, stacksize: usize) c.E;
+pub extern "c" fn pthread_attr_setstack(attr: *c.pthread_attr_t, stackaddr: *anyopaque, stacksize: usize) c.E;
 pub extern "c" fn pthread_attr_setstacksize(attr: *c.pthread_attr_t, stacksize: usize) c.E;
 pub extern "c" fn pthread_attr_setguardsize(attr: *c.pthread_attr_t, guardsize: usize) c.E;
 pub extern "c" fn pthread_attr_destroy(attr: *c.pthread_attr_t) c.E;
 pub extern "c" fn pthread_self() pthread_t;
-pub extern "c" fn pthread_join(thread: pthread_t, arg_return: ?*?*c_void) c.E;
+pub extern "c" fn pthread_join(thread: pthread_t, arg_return: ?*?*anyopaque) c.E;
 pub extern "c" fn pthread_detach(thread: pthread_t) c.E;
 pub extern "c" fn pthread_atfork(
     prepare: ?fn () callconv(.C) void,
     parent: ?fn () callconv(.C) void,
     child: ?fn () callconv(.C) void,
 ) c_int;
-pub extern "c" fn pthread_key_create(key: *c.pthread_key_t, destructor: ?fn (value: *c_void) callconv(.C) void) c.E;
+pub extern "c" fn pthread_key_create(key: *c.pthread_key_t, destructor: ?fn (value: *anyopaque) callconv(.C) void) c.E;
 pub extern "c" fn pthread_key_delete(key: c.pthread_key_t) c.E;
-pub extern "c" fn pthread_getspecific(key: c.pthread_key_t) ?*c_void;
-pub extern "c" fn pthread_setspecific(key: c.pthread_key_t, value: ?*c_void) c_int;
+pub extern "c" fn pthread_getspecific(key: c.pthread_key_t) ?*anyopaque;
+pub extern "c" fn pthread_setspecific(key: c.pthread_key_t, value: ?*anyopaque) c_int;
 pub extern "c" fn sem_init(sem: *c.sem_t, pshared: c_int, value: c_uint) c_int;
 pub extern "c" fn sem_destroy(sem: *c.sem_t) c_int;
 pub extern "c" fn sem_post(sem: *c.sem_t) c_int;
@@ -260,16 +260,16 @@ pub extern "c" fn port_associate(
     source: u32,
     object: usize,
     events: u32,
-    user_var: ?*c_void,
+    user_var: ?*anyopaque,
 ) c_int;
 pub extern "c" fn port_dissociate(port: c.port_t, source: u32, object: usize) c_int;
-pub extern "c" fn port_send(port: c.port_t, events: u32, user_var: ?*c_void) c_int;
+pub extern "c" fn port_send(port: c.port_t, events: u32, user_var: ?*anyopaque) c_int;
 pub extern "c" fn port_sendn(
     ports: [*]c.port_t,
     errors: []u32,
     num_ports: u32,
     events: u32,
-    user_var: ?*c_void,
+    user_var: ?*anyopaque,
 ) c_int;
 pub extern "c" fn port_get(port: c.port_t, event: *c.port_event, timeout: ?*c.timespec) c_int;
 pub extern "c" fn port_getn(
@@ -279,7 +279,7 @@ pub extern "c" fn port_getn(
     events_retrieved: *u32,
     timeout: ?*c.timespec,
 ) c_int;
-pub extern "c" fn port_alert(port: c.port_t, flags: u32, events: u32, user_var: ?*c_void) c_int;
+pub extern "c" fn port_alert(port: c.port_t, flags: u32, events: u32, user_var: ?*anyopaque) c_int;
 
 pub extern "c" fn getaddrinfo(
     noalias node: ?[*:0]const u8,
@@ -336,9 +336,9 @@ pub extern "c" fn pthread_rwlock_unlock(rwl: *c.pthread_rwlock_t) callconv(.C) c
 pub const pthread_t = *opaque {};
 pub const FILE = opaque {};
 
-pub extern "c" fn dlopen(path: [*:0]const u8, mode: c_int) ?*c_void;
-pub extern "c" fn dlclose(handle: *c_void) c_int;
-pub extern "c" fn dlsym(handle: ?*c_void, symbol: [*:0]const u8) ?*c_void;
+pub extern "c" fn dlopen(path: [*:0]const u8, mode: c_int) ?*anyopaque;
+pub extern "c" fn dlclose(handle: *anyopaque) c_int;
+pub extern "c" fn dlsym(handle: ?*anyopaque, symbol: [*:0]const u8) ?*anyopaque;
 
 pub extern "c" fn sync() void;
 pub extern "c" fn syncfs(fd: c_int) c_int;
@@ -350,7 +350,7 @@ pub extern "c" fn prctl(option: c_int, ...) c_int;
 pub extern "c" fn getrlimit(resource: c.rlimit_resource, rlim: *c.rlimit) c_int;
 pub extern "c" fn setrlimit(resource: c.rlimit_resource, rlim: *const c.rlimit) c_int;
 
-pub extern "c" fn fmemopen(noalias buf: ?*c_void, size: usize, noalias mode: [*:0]const u8) ?*FILE;
+pub extern "c" fn fmemopen(noalias buf: ?*anyopaque, size: usize, noalias mode: [*:0]const u8) ?*FILE;
 
 pub extern "c" fn syslog(priority: c_int, message: [*:0]const u8, ...) void;
 pub extern "c" fn openlog(ident: [*:0]const u8, logopt: c_int, facility: c_int) void;
lib/std/child_process.zig
@@ -923,7 +923,7 @@ fn windowsCreateProcess(app_name: [*:0]u16, cmd_line: [*:0]u16, envp_ptr: ?[*]u1
         null,
         windows.TRUE,
         windows.CREATE_UNICODE_ENVIRONMENT,
-        @ptrCast(?*c_void, envp_ptr),
+        @ptrCast(?*anyopaque, envp_ptr),
         cwd_ptr,
         lpStartupInfo,
         lpProcessInformation,
lib/std/debug.zig
@@ -156,14 +156,14 @@ pub fn captureStackTrace(first_address: ?usize, stack_trace: *std.builtin.StackT
             stack_trace.index = windows.ntdll.RtlCaptureStackBackTrace(
                 0,
                 u32_addrs_len,
-                @ptrCast(**c_void, addrs.ptr),
+                @ptrCast(**anyopaque, addrs.ptr),
                 null,
             );
             return;
         };
         var addr_buf_stack: [32]usize = undefined;
         const addr_buf = if (addr_buf_stack.len > addrs.len) addr_buf_stack[0..] else addrs;
-        const n = windows.ntdll.RtlCaptureStackBackTrace(0, u32_addrs_len, @ptrCast(**c_void, addr_buf.ptr), null);
+        const n = windows.ntdll.RtlCaptureStackBackTrace(0, u32_addrs_len, @ptrCast(**anyopaque, addr_buf.ptr), null);
         const first_index = for (addr_buf[0..n]) |addr, i| {
             if (addr == first_addr) {
                 break i;
@@ -472,7 +472,7 @@ pub fn writeCurrentStackTraceWindows(
     start_addr: ?usize,
 ) !void {
     var addr_buf: [1024]usize = undefined;
-    const n = windows.ntdll.RtlCaptureStackBackTrace(0, addr_buf.len, @ptrCast(**c_void, &addr_buf), null);
+    const n = windows.ntdll.RtlCaptureStackBackTrace(0, addr_buf.len, @ptrCast(**anyopaque, &addr_buf), null);
     const addrs = addr_buf[0..n];
     var start_i: usize = if (start_addr) |saddr| blk: {
         for (addrs) |addr, i| {
@@ -1629,7 +1629,7 @@ fn resetSegfaultHandler() void {
     os.sigaction(os.SIG.BUS, &act, null);
 }
 
-fn handleSegfaultLinux(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const c_void) callconv(.C) noreturn {
+fn handleSegfaultLinux(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const anyopaque) callconv(.C) noreturn {
     // Reset to the default handler so that if a segfault happens in this handler it will crash
     // the process. Also when this handler returns, the original instruction will be repeated
     // and the resulting segfault will crash the process rather than continually dump stack traces.
lib/std/dynamic_library.zig
@@ -357,7 +357,7 @@ pub const WindowsDynLib = struct {
 pub const DlDynlib = struct {
     pub const Error = error{FileNotFound};
 
-    handle: *c_void,
+    handle: *anyopaque,
 
     pub fn open(path: []const u8) !DlDynlib {
         const path_c = try os.toPosixPath(path);
lib/std/heap.zig
@@ -58,7 +58,7 @@ const CAllocator = struct {
             // multiple of the pointer size
             const eff_alignment = std.math.max(alignment, @sizeOf(usize));
 
-            var aligned_ptr: ?*c_void = undefined;
+            var aligned_ptr: ?*anyopaque = undefined;
             if (c.posix_memalign(&aligned_ptr, eff_alignment, len) != 0)
                 return null;
 
@@ -97,7 +97,7 @@ const CAllocator = struct {
     }
 
     fn alloc(
-        _: *c_void,
+        _: *anyopaque,
         len: usize,
         alignment: u29,
         len_align: u29,
@@ -123,7 +123,7 @@ const CAllocator = struct {
     }
 
     fn resize(
-        _: *c_void,
+        _: *anyopaque,
         buf: []u8,
         buf_align: u29,
         new_len: usize,
@@ -145,7 +145,7 @@ const CAllocator = struct {
     }
 
     fn free(
-        _: *c_void,
+        _: *anyopaque,
         buf: []u8,
         buf_align: u29,
         return_address: usize,
@@ -185,7 +185,7 @@ const raw_c_allocator_vtable = Allocator.VTable{
 };
 
 fn rawCAlloc(
-    _: *c_void,
+    _: *anyopaque,
     len: usize,
     ptr_align: u29,
     len_align: u29,
@@ -199,7 +199,7 @@ fn rawCAlloc(
 }
 
 fn rawCResize(
-    _: *c_void,
+    _: *anyopaque,
     buf: []u8,
     old_align: u29,
     new_len: usize,
@@ -215,7 +215,7 @@ fn rawCResize(
 }
 
 fn rawCFree(
-    _: *c_void,
+    _: *anyopaque,
     buf: []u8,
     old_align: u29,
     ret_addr: usize,
@@ -257,7 +257,7 @@ const PageAllocator = struct {
         .free = free,
     };
 
-    fn alloc(_: *c_void, n: usize, alignment: u29, len_align: u29, ra: usize) error{OutOfMemory}![]u8 {
+    fn alloc(_: *anyopaque, n: usize, alignment: u29, len_align: u29, ra: usize) error{OutOfMemory}![]u8 {
         _ = ra;
         assert(n > 0);
         const aligned_len = mem.alignForward(n, mem.page_size);
@@ -305,7 +305,7 @@ const PageAllocator = struct {
                 // VirtualAlloc call to fail. To handle this, we will retry
                 // until it succeeds.
                 const ptr = w.VirtualAlloc(
-                    @intToPtr(*c_void, aligned_addr),
+                    @intToPtr(*anyopaque, aligned_addr),
                     aligned_len,
                     w.MEM_COMMIT | w.MEM_RESERVE,
                     w.PAGE_READWRITE,
@@ -355,7 +355,7 @@ const PageAllocator = struct {
     }
 
     fn resize(
-        _: *c_void,
+        _: *anyopaque,
         buf_unaligned: []u8,
         buf_align: u29,
         new_size: usize,
@@ -376,7 +376,7 @@ const PageAllocator = struct {
                     // For shrinking that is not releasing, we will only
                     // decommit the pages not needed anymore.
                     w.VirtualFree(
-                        @intToPtr(*c_void, new_addr_end),
+                        @intToPtr(*anyopaque, new_addr_end),
                         old_addr_end - new_addr_end,
                         w.MEM_DECOMMIT,
                     );
@@ -406,7 +406,7 @@ const PageAllocator = struct {
         return null;
     }
 
-    fn free(_: *c_void, buf_unaligned: []u8, buf_align: u29, return_address: usize) void {
+    fn free(_: *anyopaque, buf_unaligned: []u8, buf_align: u29, return_address: usize) void {
         _ = buf_align;
         _ = return_address;
 
@@ -518,7 +518,7 @@ const WasmPageAllocator = struct {
         return mem.alignForward(memsize, mem.page_size) / mem.page_size;
     }
 
-    fn alloc(_: *c_void, len: usize, alignment: u29, len_align: u29, ra: usize) error{OutOfMemory}![]u8 {
+    fn alloc(_: *anyopaque, len: usize, alignment: u29, len_align: u29, ra: usize) error{OutOfMemory}![]u8 {
         _ = ra;
         const page_count = nPages(len);
         const page_idx = try allocPages(page_count, alignment);
@@ -573,7 +573,7 @@ const WasmPageAllocator = struct {
     }
 
     fn resize(
-        _: *c_void,
+        _: *anyopaque,
         buf: []u8,
         buf_align: u29,
         new_len: usize,
@@ -594,7 +594,7 @@ const WasmPageAllocator = struct {
     }
 
     fn free(
-        _: *c_void,
+        _: *anyopaque,
         buf: []u8,
         buf_align: u29,
         return_address: usize,
@@ -684,10 +684,10 @@ pub const HeapAllocator = switch (builtin.os.tag) {
             const new_ptr = os.windows.kernel32.HeapReAlloc(
                 self.heap_handle.?,
                 os.windows.HEAP_REALLOC_IN_PLACE_ONLY,
-                @intToPtr(*c_void, root_addr),
+                @intToPtr(*anyopaque, root_addr),
                 amt,
             ) orelse return null;
-            assert(new_ptr == @intToPtr(*c_void, root_addr));
+            assert(new_ptr == @intToPtr(*anyopaque, root_addr));
             const return_len = init: {
                 if (len_align == 0) break :init new_size;
                 const full_len = os.windows.kernel32.HeapSize(self.heap_handle.?, 0, new_ptr);
@@ -707,7 +707,7 @@ pub const HeapAllocator = switch (builtin.os.tag) {
         ) void {
             _ = buf_align;
             _ = return_address;
-            os.windows.HeapFree(self.heap_handle.?, 0, @intToPtr(*c_void, getRecordPtr(buf).*));
+            os.windows.HeapFree(self.heap_handle.?, 0, @intToPtr(*anyopaque, getRecordPtr(buf).*));
         }
     },
     else => @compileError("Unsupported OS"),
lib/std/mem.zig
@@ -151,11 +151,11 @@ const fail_allocator = Allocator{
 
 const failAllocator_vtable = Allocator.VTable{
     .alloc = failAllocatorAlloc,
-    .resize = Allocator.NoResize(c_void).noResize,
-    .free = Allocator.NoOpFree(c_void).noOpFree,
+    .resize = Allocator.NoResize(anyopaque).noResize,
+    .free = Allocator.NoOpFree(anyopaque).noOpFree,
 };
 
-fn failAllocatorAlloc(_: *c_void, n: usize, alignment: u29, len_align: u29, ra: usize) Allocator.Error![]u8 {
+fn failAllocatorAlloc(_: *anyopaque, n: usize, alignment: u29, len_align: u29, ra: usize) Allocator.Error![]u8 {
     _ = n;
     _ = alignment;
     _ = len_align;
lib/std/os.zig
@@ -2904,7 +2904,7 @@ pub fn isCygwinPty(handle: fd_t) bool {
     if (windows.kernel32.GetFileInformationByHandleEx(
         handle,
         windows.FileNameInfo,
-        @ptrCast(*c_void, &name_info_bytes),
+        @ptrCast(*anyopaque, &name_info_bytes),
         name_info_bytes.len,
     ) == 0) {
         return false;
@@ -4236,9 +4236,9 @@ pub const SysCtlError = error{
 
 pub fn sysctl(
     name: []const c_int,
-    oldp: ?*c_void,
+    oldp: ?*anyopaque,
     oldlenp: ?*usize,
-    newp: ?*c_void,
+    newp: ?*anyopaque,
     newlen: usize,
 ) SysCtlError!void {
     if (builtin.os.tag == .wasi) {
@@ -4261,9 +4261,9 @@ pub fn sysctl(
 
 pub fn sysctlbynameZ(
     name: [*:0]const u8,
-    oldp: ?*c_void,
+    oldp: ?*anyopaque,
     oldlenp: ?*usize,
-    newp: ?*c_void,
+    newp: ?*anyopaque,
     newlen: usize,
 ) SysCtlError!void {
     if (builtin.os.tag == .wasi) {
@@ -4801,12 +4801,12 @@ pub fn dl_iterate_phdr(
 
     if (builtin.link_libc) {
         switch (system.dl_iterate_phdr(struct {
-            fn callbackC(info: *dl_phdr_info, size: usize, data: ?*c_void) callconv(.C) c_int {
+            fn callbackC(info: *dl_phdr_info, size: usize, data: ?*anyopaque) callconv(.C) c_int {
                 const context_ptr = @ptrCast(*const Context, @alignCast(@alignOf(*const Context), data));
                 callback(info, size, context_ptr.*) catch |err| return @errorToInt(err);
                 return 0;
             }
-        }.callbackC, @intToPtr(?*c_void, @ptrToInt(&context)))) {
+        }.callbackC, @intToPtr(?*anyopaque, @ptrToInt(&context)))) {
             0 => return,
             else => |err| return @errSetCast(Error, @intToError(@intCast(u16, err))), // TODO don't hardcode u16
         }
lib/std/rand.zig
@@ -29,8 +29,8 @@ pub const Xoshiro256 = @import("rand/Xoshiro256.zig");
 pub const Sfc64 = @import("rand/Sfc64.zig");
 
 pub const Random = struct {
-    ptr: *c_void,
-    fillFn: fn (ptr: *c_void, buf: []u8) void,
+    ptr: *anyopaque,
+    fillFn: fn (ptr: *anyopaque, buf: []u8) void,
 
     pub fn init(pointer: anytype, comptime fillFn: fn (ptr: @TypeOf(pointer), buf: []u8) void) Random {
         const Ptr = @TypeOf(pointer);
@@ -38,7 +38,7 @@ pub const Random = struct {
         assert(@typeInfo(Ptr).Pointer.size == .One); // Must be a single-item pointer
         assert(@typeInfo(@typeInfo(Ptr).Pointer.child) == .Struct); // Must point to a struct
         const gen = struct {
-            fn fill(ptr: *c_void, buf: []u8) void {
+            fn fill(ptr: *anyopaque, buf: []u8) void {
                 const alignment = @typeInfo(Ptr).Pointer.alignment;
                 const self = @ptrCast(Ptr, @alignCast(alignment, ptr));
                 fillFn(self, buf);
lib/std/start_windows_tls.zig
@@ -31,10 +31,10 @@ comptime {
 //};
 // This is the workaround because we can't do @ptrToInt at comptime like that.
 pub const IMAGE_TLS_DIRECTORY = extern struct {
-    StartAddressOfRawData: *c_void,
-    EndAddressOfRawData: *c_void,
-    AddressOfIndex: *c_void,
-    AddressOfCallBacks: *c_void,
+    StartAddressOfRawData: *anyopaque,
+    EndAddressOfRawData: *anyopaque,
+    AddressOfIndex: *anyopaque,
+    AddressOfCallBacks: *anyopaque,
     SizeOfZeroFill: u32,
     Characteristics: u32,
 };
lib/std/Thread.zig
@@ -344,7 +344,7 @@ const Completion = Atomic(enum(u8) {
 fn callFn(comptime f: anytype, args: anytype) switch (Impl) {
     WindowsThreadImpl => std.os.windows.DWORD,
     LinuxThreadImpl => u8,
-    PosixThreadImpl => ?*c_void,
+    PosixThreadImpl => ?*anyopaque,
     else => unreachable,
 } {
     const default_value = if (Impl == PosixThreadImpl) null else 0;
@@ -499,7 +499,7 @@ const WindowsThreadImpl = struct {
             null,
             stack_size,
             Instance.entryFn,
-            @ptrCast(*c_void, instance),
+            @ptrCast(*anyopaque, instance),
             0,
             null,
         ) orelse {
@@ -621,7 +621,7 @@ const PosixThreadImpl = struct {
         const allocator = std.heap.c_allocator;
 
         const Instance = struct {
-            fn entryFn(raw_arg: ?*c_void) callconv(.C) ?*c_void {
+            fn entryFn(raw_arg: ?*anyopaque) callconv(.C) ?*anyopaque {
                 // @alignCast() below doesn't support zero-sized-types (ZST)
                 if (@sizeOf(Args) < 1) {
                     return callFn(f, @as(Args, undefined));
@@ -651,7 +651,7 @@ const PosixThreadImpl = struct {
             &handle,
             &attr,
             Instance.entryFn,
-            if (@sizeOf(Args) > 1) @ptrCast(*c_void, args_ptr) else undefined,
+            if (@sizeOf(Args) > 1) @ptrCast(*anyopaque, args_ptr) else undefined,
         )) {
             .SUCCESS => return Impl{ .handle = handle },
             .AGAIN => return error.SystemResources,
src/stage1/all_types.hpp
@@ -2076,7 +2076,7 @@ struct CodeGen {
         ZigType *entry_bool;
         ZigType *entry_c_int[CIntTypeCount];
         ZigType *entry_c_longdouble;
-        ZigType *entry_c_void;
+        ZigType *entry_anyopaque;
         ZigType *entry_u8;
         ZigType *entry_u16;
         ZigType *entry_u32;
src/stage1/codegen.cpp
@@ -9014,9 +9014,9 @@ static void define_builtin_types(CodeGen *g) {
     g->builtin_types.entry_i64 = get_int_type(g, true, 64);
 
     {
-        g->builtin_types.entry_c_void = get_opaque_type(g, nullptr, nullptr, "c_void",
-                buf_create_from_str("c_void"));
-        g->primitive_type_table.put(&g->builtin_types.entry_c_void->name, g->builtin_types.entry_c_void);
+        g->builtin_types.entry_anyopaque = get_opaque_type(g, nullptr, nullptr, "anyopaque",
+                buf_create_from_str("anyopaque"));
+        g->primitive_type_table.put(&g->builtin_types.entry_anyopaque->name, g->builtin_types.entry_anyopaque);
     }
 
     {
src/stage1/ir.cpp
@@ -7884,18 +7884,18 @@ static Stage1AirInst *ir_analyze_cast(IrAnalyze *ira, Scope *scope, AstNode *sou
         }
     }
 
-    // cast from *T and [*]T to *c_void and ?*c_void
+    // cast from *T and [*]T to *anyopaque and ?*anyopaque
     // but don't do it if the actual type is a double pointer
     if (is_pointery_and_elem_is_not_pointery(actual_type)) {
         ZigType *dest_ptr_type = nullptr;
         if (wanted_type->id == ZigTypeIdPointer &&
             actual_type->id != ZigTypeIdOptional &&
-            wanted_type->data.pointer.child_type == ira->codegen->builtin_types.entry_c_void)
+            wanted_type->data.pointer.child_type == ira->codegen->builtin_types.entry_anyopaque)
         {
             dest_ptr_type = wanted_type;
         } else if (wanted_type->id == ZigTypeIdOptional &&
             wanted_type->data.maybe.child_type->id == ZigTypeIdPointer &&
-            wanted_type->data.maybe.child_type->data.pointer.child_type == ira->codegen->builtin_types.entry_c_void)
+            wanted_type->data.maybe.child_type->data.pointer.child_type == ira->codegen->builtin_types.entry_anyopaque)
         {
             dest_ptr_type = wanted_type->data.maybe.child_type;
         }
src/AstGen.zig
@@ -7597,6 +7597,7 @@ fn calleeExpr(
 const primitives = std.ComptimeStringMap(Zir.Inst.Ref, .{
     .{ "anyerror", .anyerror_type },
     .{ "anyframe", .anyframe_type },
+    .{ "anyopaque", .anyopaque_type },
     .{ "bool", .bool_type },
     .{ "c_int", .c_int_type },
     .{ "c_long", .c_long_type },
@@ -7607,7 +7608,6 @@ const primitives = std.ComptimeStringMap(Zir.Inst.Ref, .{
     .{ "c_ulong", .c_ulong_type },
     .{ "c_ulonglong", .c_ulonglong_type },
     .{ "c_ushort", .c_ushort_type },
-    .{ "c_void", .c_void_type },
     .{ "comptime_float", .comptime_float_type },
     .{ "comptime_int", .comptime_int_type },
     .{ "f128", .f128_type },
@@ -8324,7 +8324,7 @@ fn rvalue(
                 as_ty | @enumToInt(Zir.Inst.Ref.f32_type),
                 as_ty | @enumToInt(Zir.Inst.Ref.f64_type),
                 as_ty | @enumToInt(Zir.Inst.Ref.f128_type),
-                as_ty | @enumToInt(Zir.Inst.Ref.c_void_type),
+                as_ty | @enumToInt(Zir.Inst.Ref.anyopaque_type),
                 as_ty | @enumToInt(Zir.Inst.Ref.bool_type),
                 as_ty | @enumToInt(Zir.Inst.Ref.void_type),
                 as_ty | @enumToInt(Zir.Inst.Ref.type_type),
src/clang.zig
@@ -9,7 +9,7 @@ pub const SourceLocation = extern struct {
 };
 
 pub const QualType = extern struct {
-    ptr: ?*c_void,
+    ptr: ?*anyopaque,
 
     pub const getCanonicalType = ZigClangQualType_getCanonicalType;
     extern fn ZigClangQualType_getCanonicalType(QualType) QualType;
@@ -37,7 +37,7 @@ pub const QualType = extern struct {
 };
 
 pub const APValueLValueBase = extern struct {
-    Ptr: ?*c_void,
+    Ptr: ?*anyopaque,
     CallIndex: c_uint,
     Version: c_uint,
 
@@ -85,7 +85,7 @@ pub const APValue = extern struct {
 pub const ExprEvalResult = extern struct {
     HasSideEffects: bool,
     HasUndefinedBehavior: bool,
-    SmallVectorImpl: ?*c_void,
+    SmallVectorImpl: ?*anyopaque,
     Val: APValue,
 };
 
@@ -161,7 +161,7 @@ pub const ASTUnit = opaque {
     extern fn ZigClangASTUnit_getSourceManager(*ASTUnit) *SourceManager;
 
     pub const visitLocalTopLevelDecls = ZigClangASTUnit_visitLocalTopLevelDecls;
-    extern fn ZigClangASTUnit_visitLocalTopLevelDecls(*ASTUnit, context: ?*c_void, Fn: ?fn (?*c_void, *const Decl) callconv(.C) bool) bool;
+    extern fn ZigClangASTUnit_visitLocalTopLevelDecls(*ASTUnit, context: ?*anyopaque, Fn: ?fn (?*anyopaque, *const Decl) callconv(.C) bool) bool;
 
     pub const getLocalPreprocessingEntities_begin = ZigClangASTUnit_getLocalPreprocessingEntities_begin;
     extern fn ZigClangASTUnit_getLocalPreprocessingEntities_begin(*ASTUnit) PreprocessingRecord.iterator;
@@ -418,7 +418,7 @@ pub const EnumDecl = opaque {
     extern fn ZigClangEnumDecl_enumerator_end(*const EnumDecl) enumerator_iterator;
 
     pub const enumerator_iterator = extern struct {
-        ptr: *c_void,
+        ptr: *anyopaque,
 
         pub const next = ZigClangEnumDecl_enumerator_iterator_next;
         extern fn ZigClangEnumDecl_enumerator_iterator_next(enumerator_iterator) enumerator_iterator;
@@ -778,7 +778,7 @@ pub const RecordDecl = opaque {
     extern fn ZigClangRecordDecl_field_end(*const RecordDecl) field_iterator;
 
     pub const field_iterator = extern struct {
-        ptr: *c_void,
+        ptr: *anyopaque,
 
         pub const next = ZigClangRecordDecl_field_iterator_next;
         extern fn ZigClangRecordDecl_field_iterator_next(field_iterator) field_iterator;
src/crash_report.zig
@@ -179,7 +179,7 @@ pub fn attachSegfaultHandler() void {
     os.sigaction(os.SIG.BUS, &act, null);
 }
 
-fn handleSegfaultLinux(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const c_void) callconv(.C) noreturn {
+fn handleSegfaultLinux(sig: i32, info: *const os.siginfo_t, ctx_ptr: ?*const anyopaque) callconv(.C) noreturn {
     // TODO: use alarm() here to prevent infinite loops
     PanicSwitch.preDispatch();
 
src/Sema.zig
@@ -12354,9 +12354,9 @@ fn coerce(
                 }
             }
 
-            // cast from *T and [*]T to *c_void
+            // cast from *T and [*]T to *anyopaque
             // but don't do it if the source type is a double pointer
-            if (dest_info.pointee_type.tag() == .c_void and inst_ty.zigTypeTag() == .Pointer and
+            if (dest_info.pointee_type.tag() == .anyopaque and inst_ty.zigTypeTag() == .Pointer and
                 inst_ty.childType().zigTypeTag() != .Pointer)
             {
                 return sema.coerceCompatiblePtrs(block, dest_ty, inst, inst_src);
@@ -14809,7 +14809,7 @@ fn typeHasOnePossibleValue(
         .const_slice_u8,
         .const_slice,
         .mut_slice,
-        .c_void,
+        .anyopaque,
         .optional,
         .optional_single_mut_pointer,
         .optional_single_const_pointer,
@@ -15026,7 +15026,7 @@ pub fn addType(sema: *Sema, ty: Type) !Air.Inst.Ref {
         .f32 => return .f32_type,
         .f64 => return .f64_type,
         .f128 => return .f128_type,
-        .c_void => return .c_void_type,
+        .anyopaque => return .anyopaque_type,
         .bool => return .bool_type,
         .void => return .void_type,
         .type => return .type_type,
src/tracy.zig
@@ -284,14 +284,14 @@ extern fn ___tracy_emit_zone_name(ctx: ___tracy_c_zone_context, txt: [*]const u8
 extern fn ___tracy_emit_zone_color(ctx: ___tracy_c_zone_context, color: u32) void;
 extern fn ___tracy_emit_zone_value(ctx: ___tracy_c_zone_context, value: u64) void;
 extern fn ___tracy_emit_zone_end(ctx: ___tracy_c_zone_context) void;
-extern fn ___tracy_emit_memory_alloc(ptr: *const c_void, size: usize, secure: c_int) void;
-extern fn ___tracy_emit_memory_alloc_callstack(ptr: *const c_void, size: usize, depth: c_int, secure: c_int) void;
-extern fn ___tracy_emit_memory_free(ptr: *const c_void, secure: c_int) void;
-extern fn ___tracy_emit_memory_free_callstack(ptr: *const c_void, depth: c_int, secure: c_int) void;
-extern fn ___tracy_emit_memory_alloc_named(ptr: *const c_void, size: usize, secure: c_int, name: [*:0]const u8) void;
-extern fn ___tracy_emit_memory_alloc_callstack_named(ptr: *const c_void, size: usize, depth: c_int, secure: c_int, name: [*:0]const u8) void;
-extern fn ___tracy_emit_memory_free_named(ptr: *const c_void, secure: c_int, name: [*:0]const u8) void;
-extern fn ___tracy_emit_memory_free_callstack_named(ptr: *const c_void, depth: c_int, secure: c_int, name: [*:0]const u8) void;
+extern fn ___tracy_emit_memory_alloc(ptr: *const anyopaque, size: usize, secure: c_int) void;
+extern fn ___tracy_emit_memory_alloc_callstack(ptr: *const anyopaque, size: usize, depth: c_int, secure: c_int) void;
+extern fn ___tracy_emit_memory_free(ptr: *const anyopaque, secure: c_int) void;
+extern fn ___tracy_emit_memory_free_callstack(ptr: *const anyopaque, depth: c_int, secure: c_int) void;
+extern fn ___tracy_emit_memory_alloc_named(ptr: *const anyopaque, size: usize, secure: c_int, name: [*:0]const u8) void;
+extern fn ___tracy_emit_memory_alloc_callstack_named(ptr: *const anyopaque, size: usize, depth: c_int, secure: c_int, name: [*:0]const u8) void;
+extern fn ___tracy_emit_memory_free_named(ptr: *const anyopaque, secure: c_int, name: [*:0]const u8) void;
+extern fn ___tracy_emit_memory_free_callstack_named(ptr: *const anyopaque, depth: c_int, secure: c_int, name: [*:0]const u8) void;
 extern fn ___tracy_emit_message(txt: [*]const u8, size: usize, callstack: c_int) void;
 extern fn ___tracy_emit_messageL(txt: [*:0]const u8, callstack: c_int) void;
 extern fn ___tracy_emit_messageC(txt: [*]const u8, size: usize, color: u32, callstack: c_int) void;
src/translate_c.zig
@@ -448,13 +448,13 @@ fn prepopulateGlobalNameTable(ast_unit: *clang.ASTUnit, c: *Context) !void {
     }
 }
 
-fn declVisitorNamesOnlyC(context: ?*c_void, decl: *const clang.Decl) callconv(.C) bool {
+fn declVisitorNamesOnlyC(context: ?*anyopaque, decl: *const clang.Decl) callconv(.C) bool {
     const c = @ptrCast(*Context, @alignCast(@alignOf(Context), context));
     declVisitorNamesOnly(c, decl) catch return false;
     return true;
 }
 
-fn declVisitorC(context: ?*c_void, decl: *const clang.Decl) callconv(.C) bool {
+fn declVisitorC(context: ?*anyopaque, decl: *const clang.Decl) callconv(.C) bool {
     const c = @ptrCast(*Context, @alignCast(@alignOf(Context), context));
     declVisitor(c, decl) catch return false;
     return true;
@@ -698,7 +698,7 @@ fn visitFnDecl(c: *Context, fn_decl: *const clang.FunctionDecl) Error!void {
     // add return statement if the function didn't have one
     blk: {
         const maybe_body = try block_scope.complete(c);
-        if (fn_ty.getNoReturnAttr() or isCVoid(return_qt) or maybe_body.isNoreturn(false)) {
+        if (fn_ty.getNoReturnAttr() or isAnyopaque(return_qt) or maybe_body.isNoreturn(false)) {
             proto_node.data.body = maybe_body;
             break :blk;
         }
@@ -4618,7 +4618,7 @@ fn transType(c: *Context, scope: *Scope, ty: *const clang.Type, source_loc: clan
         .Builtin => {
             const builtin_ty = @ptrCast(*const clang.BuiltinType, ty);
             return Tag.type.create(c.arena, switch (builtin_ty.getKind()) {
-                .Void => "c_void",
+                .Void => "anyopaque",
                 .Bool => "bool",
                 .Char_U, .UChar, .Char_S, .Char8 => "u8",
                 .SChar => "i8",
@@ -4822,7 +4822,7 @@ fn qualTypeWasDemotedToOpaque(c: *Context, qt: clang.QualType) bool {
     }
 }
 
-fn isCVoid(qt: clang.QualType) bool {
+fn isAnyopaque(qt: clang.QualType) bool {
     const ty = qt.getTypePtr();
     if (ty.getTypeClass() == .Builtin) {
         const builtin_ty = @ptrCast(*const clang.BuiltinType, ty);
@@ -4955,8 +4955,8 @@ fn finishTransFnProto(
             break :blk Tag.noreturn_type.init();
         } else {
             const return_qt = fn_ty.getReturnType();
-            if (isCVoid(return_qt)) {
-                // convert primitive c_void to actual void (only for return type)
+            if (isAnyopaque(return_qt)) {
+                // convert primitive anyopaque to actual void (only for return type)
                 break :blk Tag.void_type.init();
             } else {
                 break :blk transQualType(c, scope, return_qt, source_loc) catch |err| switch (err) {
@@ -6096,7 +6096,7 @@ fn parseCSpecifierQualifierList(c: *Context, m: *MacroCtx, scope: *Scope, allow_
                 return try Tag.identifier.create(c.arena, mangled_name);
             }
         },
-        .Keyword_void => return try Tag.type.create(c.arena, "c_void"),
+        .Keyword_void => return try Tag.type.create(c.arena, "anyopaque"),
         .Keyword_bool => return try Tag.type.create(c.arena, "bool"),
         .Keyword_char,
         .Keyword_int,
src/type.zig
@@ -68,7 +68,7 @@ pub const Type = extern union {
             .error_set_merged,
             => return .ErrorSet,
 
-            .c_void, .@"opaque" => return .Opaque,
+            .anyopaque, .@"opaque" => return .Opaque,
             .bool => return .Bool,
             .void => return .Void,
             .type => return .Type,
@@ -764,7 +764,7 @@ pub const Type = extern union {
             .c_longlong,
             .c_ulonglong,
             .c_longdouble,
-            .c_void,
+            .anyopaque,
             .f16,
             .f32,
             .f64,
@@ -965,7 +965,7 @@ pub const Type = extern union {
                 .c_longlong,
                 .c_ulonglong,
                 .c_longdouble,
-                .c_void,
+                .anyopaque,
                 .f16,
                 .f32,
                 .f64,
@@ -1257,7 +1257,7 @@ pub const Type = extern union {
             .c_longlong,
             .c_ulonglong,
             .c_longdouble,
-            .c_void,
+            .anyopaque,
             .f16,
             .f32,
             .f64,
@@ -1365,7 +1365,7 @@ pub const Type = extern union {
             .f32,
             .f64,
             .f128,
-            .c_void,
+            .anyopaque,
             .bool,
             .void,
             .anyerror,
@@ -1476,7 +1476,7 @@ pub const Type = extern union {
             .c_longlong => return Value.initTag(.c_longlong_type),
             .c_ulonglong => return Value.initTag(.c_ulonglong_type),
             .c_longdouble => return Value.initTag(.c_longdouble_type),
-            .c_void => return Value.initTag(.c_void_type),
+            .anyopaque => return Value.initTag(.anyopaque_type),
             .f16 => return Value.initTag(.f16_type),
             .f32 => return Value.initTag(.f32_type),
             .f64 => return Value.initTag(.f64_type),
@@ -1653,7 +1653,7 @@ pub const Type = extern union {
                 return payload.error_set.hasCodeGenBits() or payload.payload.hasCodeGenBits();
             },
 
-            .c_void,
+            .anyopaque,
             .void,
             .type,
             .comptime_int,
@@ -1897,7 +1897,7 @@ pub const Type = extern union {
 
             .empty_struct,
             .void,
-            .c_void,
+            .anyopaque,
             => return 0,
 
             .empty_struct_literal,
@@ -1942,7 +1942,7 @@ pub const Type = extern union {
             .extern_options => unreachable, // missing call to resolveTypeFields
             .type_info => unreachable, // missing call to resolveTypeFields
 
-            .c_void,
+            .anyopaque,
             .type,
             .comptime_int,
             .comptime_float,
@@ -2116,7 +2116,7 @@ pub const Type = extern union {
             .fn_naked_noreturn_no_args => unreachable, // represents machine code; not a pointer
             .fn_ccc_void_no_args => unreachable, // represents machine code; not a pointer
             .function => unreachable, // represents machine code; not a pointer
-            .c_void => unreachable,
+            .anyopaque => unreachable,
             .void => unreachable,
             .type => unreachable,
             .comptime_int => unreachable,
@@ -3283,7 +3283,7 @@ pub const Type = extern union {
             .const_slice_u8,
             .const_slice,
             .mut_slice,
-            .c_void,
+            .anyopaque,
             .optional,
             .optional_single_mut_pointer,
             .optional_single_const_pointer,
@@ -3860,7 +3860,7 @@ pub const Type = extern union {
         f32,
         f64,
         f128,
-        c_void,
+        anyopaque,
         bool,
         void,
         type,
@@ -3975,7 +3975,7 @@ pub const Type = extern union {
                 .f32,
                 .f64,
                 .f128,
-                .c_void,
+                .anyopaque,
                 .bool,
                 .void,
                 .type,
src/value.zig
@@ -48,7 +48,7 @@ pub const Value = extern union {
         f32_type,
         f64_type,
         f128_type,
-        c_void_type,
+        anyopaque_type,
         bool_type,
         void_type,
         type_type,
@@ -204,7 +204,7 @@ pub const Value = extern union {
                 .f32_type,
                 .f64_type,
                 .f128_type,
-                .c_void_type,
+                .anyopaque_type,
                 .bool_type,
                 .void_type,
                 .type_type,
@@ -395,7 +395,7 @@ pub const Value = extern union {
             .f32_type,
             .f64_type,
             .f128_type,
-            .c_void_type,
+            .anyopaque_type,
             .bool_type,
             .void_type,
             .type_type,
@@ -625,7 +625,7 @@ pub const Value = extern union {
             .f32_type => return out_stream.writeAll("f32"),
             .f64_type => return out_stream.writeAll("f64"),
             .f128_type => return out_stream.writeAll("f128"),
-            .c_void_type => return out_stream.writeAll("c_void"),
+            .anyopaque_type => return out_stream.writeAll("anyopaque"),
             .bool_type => return out_stream.writeAll("bool"),
             .void_type => return out_stream.writeAll("void"),
             .type_type => return out_stream.writeAll("type"),
@@ -804,7 +804,7 @@ pub const Value = extern union {
             .f32_type => Type.initTag(.f32),
             .f64_type => Type.initTag(.f64),
             .f128_type => Type.initTag(.f128),
-            .c_void_type => Type.initTag(.c_void),
+            .anyopaque_type => Type.initTag(.anyopaque),
             .bool_type => Type.initTag(.bool),
             .void_type => Type.initTag(.void),
             .type_type => Type.initTag(.type),
src/Zir.zig
@@ -1632,7 +1632,7 @@ pub const Inst = struct {
         f32_type,
         f64_type,
         f128_type,
-        c_void_type,
+        anyopaque_type,
         bool_type,
         void_type,
         type_type,
@@ -1805,9 +1805,9 @@ pub const Inst = struct {
                 .ty = Type.initTag(.type),
                 .val = Value.initTag(.f128_type),
             },
-            .c_void_type = .{
+            .anyopaque_type = .{
                 .ty = Type.initTag(.type),
-                .val = Value.initTag(.c_void_type),
+                .val = Value.initTag(.anyopaque_type),
             },
             .bool_type = .{
                 .ty = Type.initTag(.type),
test/behavior/bugs/2578.zig
@@ -5,7 +5,7 @@ const Foo = struct {
 var foo: Foo = undefined;
 const t = &foo;
 
-fn bar(pointer: ?*c_void) void {
+fn bar(pointer: ?*anyopaque) void {
     _ = pointer;
 }
 
test/behavior/async_fn.zig
@@ -1631,9 +1631,9 @@ test "nosuspend resume async function calls" {
     try expectEqual(@as(i32, 42), (try await frame_d).b);
 }
 
-test "avoid forcing frame alignment resolution implicit cast to *c_void" {
+test "avoid forcing frame alignment resolution implicit cast to *anyopaque" {
     const S = struct {
-        var x: ?*c_void = null;
+        var x: ?*anyopaque = null;
 
         fn foo() bool {
             suspend {
test/behavior/cast_llvm.zig
@@ -31,14 +31,14 @@ fn expectFloatToInt(comptime F: type, f: F, comptime I: type, i: I) !void {
     try expect(@floatToInt(I, f) == i);
 }
 
-test "implicit cast from [*]T to ?*c_void" {
+test "implicit cast from [*]T to ?*anyopaque" {
     var a = [_]u8{ 3, 2, 1 };
     var runtime_zero: usize = 0;
     incrementVoidPtrArray(a[runtime_zero..].ptr, 3);
     try expect(std.mem.eql(u8, &a, &[_]u8{ 4, 3, 2 }));
 }
 
-fn incrementVoidPtrArray(array: ?*c_void, len: usize) void {
+fn incrementVoidPtrArray(array: ?*anyopaque, len: usize) void {
     var n: usize = 0;
     while (n < len) : (n += 1) {
         @ptrCast([*]u8, array.?)[n] += 1;
@@ -50,18 +50,18 @@ test "compile time int to ptr of function" {
 }
 
 pub const FUNCTION_CONSTANT = @intToPtr(PFN_void, maxInt(usize));
-pub const PFN_void = fn (*c_void) callconv(.C) void;
+pub const PFN_void = fn (*anyopaque) callconv(.C) void;
 
 fn foobar(func: PFN_void) !void {
     try std.testing.expect(@ptrToInt(func) == maxInt(usize));
 }
 
-test "implicit ptr to *c_void" {
+test "implicit ptr to *anyopaque" {
     var a: u32 = 1;
-    var ptr: *align(@alignOf(u32)) c_void = &a;
+    var ptr: *align(@alignOf(u32)) anyopaque = &a;
     var b: *u32 = @ptrCast(*u32, ptr);
     try expect(b.* == 1);
-    var ptr2: ?*align(@alignOf(u32)) c_void = &a;
+    var ptr2: ?*align(@alignOf(u32)) anyopaque = &a;
     var c: *u32 = @ptrCast(*u32, ptr2.?);
     try expect(c.* == 1);
 }
@@ -135,13 +135,13 @@ test "implicit cast from *[N]T to ?[*]T" {
     try expect(std.mem.eql(u16, x.?[0..4], y[0..4]));
 }
 
-test "implicit cast from *T to ?*c_void" {
+test "implicit cast from *T to ?*anyopaque" {
     var a: u8 = 1;
     incrementVoidPtrValue(&a);
     try std.testing.expect(a == 2);
 }
 
-fn incrementVoidPtrValue(value: ?*c_void) void {
+fn incrementVoidPtrValue(value: ?*anyopaque) void {
     @ptrCast(*u8, value.?).* += 1;
 }
 
@@ -188,8 +188,8 @@ test "cast between [*c]T and ?[*:0]T on fn parameter" {
 
 var global_struct: struct { f0: usize } = undefined;
 test "assignment to optional pointer result loc" {
-    var foo: struct { ptr: ?*c_void } = .{ .ptr = &global_struct };
-    try expect(foo.ptr.? == @ptrCast(*c_void, &global_struct));
+    var foo: struct { ptr: ?*anyopaque } = .{ .ptr = &global_struct };
+    try expect(foo.ptr.? == @ptrCast(*anyopaque, &global_struct));
 }
 
 test "cast between *[N]void and []void" {
test/behavior/ptrcast_stage1.zig
@@ -64,10 +64,10 @@ test "comptime ptrcast keeps larger alignment" {
     }
 }
 
-test "implicit optional pointer to optional c_void pointer" {
+test "implicit optional pointer to optional anyopaque pointer" {
     var buf: [4]u8 = "aoeu".*;
     var x: ?[*]u8 = &buf;
-    var y: ?*c_void = x;
+    var y: ?*anyopaque = x;
     var z = @ptrCast(*[4]u8, y);
     try expect(std.mem.eql(u8, z, "aoeu"));
 }
test/behavior/translate_c_macros_stage1.zig
@@ -22,5 +22,5 @@ test "reference to a struct type" {
 }
 
 test "cast negative integer to pointer" {
-    try expectEqual(@intToPtr(?*c_void, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);
+    try expectEqual(@intToPtr(?*anyopaque, @bitCast(usize, @as(isize, -1))), h.MAP_FAILED);
 }
test/behavior/type_info.zig
@@ -227,13 +227,13 @@ fn testUnion() !void {
     try expect(notag_union_info.Union.fields[1].alignment == @alignOf(u32));
 
     const TestExternUnion = extern union {
-        foo: *c_void,
+        foo: *anyopaque,
     };
 
     const extern_union_info = @typeInfo(TestExternUnion);
     try expect(extern_union_info.Union.layout == .Extern);
     try expect(extern_union_info.Union.tag_type == null);
-    try expect(extern_union_info.Union.fields[0].field_type == *c_void);
+    try expect(extern_union_info.Union.fields[0].field_type == *anyopaque);
 }
 
 test "type info: struct info" {
@@ -407,7 +407,7 @@ test "data field is a compile-time value" {
 }
 
 test "sentinel of opaque pointer type" {
-    const c_void_info = @typeInfo(*c_void);
+    const c_void_info = @typeInfo(*anyopaque);
     try expect(c_void_info.Pointer.sentinel == null);
 }
 
test/stage1/c_abi/main.zig
@@ -97,13 +97,13 @@ export fn zig_f64(x: f64) void {
     expect(x == 56.78) catch @panic("test failure");
 }
 
-extern fn c_ptr(*c_void) void;
+extern fn c_ptr(*anyopaque) void;
 
 test "C ABI pointer" {
-    c_ptr(@intToPtr(*c_void, 0xdeadbeef));
+    c_ptr(@intToPtr(*anyopaque, 0xdeadbeef));
 }
 
-export fn zig_ptr(x: *c_void) void {
+export fn zig_ptr(x: *anyopaque) void {
     expect(@ptrToInt(x) == 0xdeadbeef) catch @panic("test failure");
 }
 
test/compare_output.zig
@@ -179,7 +179,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
     cases.addC("expose function pointer to C land",
         \\const c = @cImport(@cInclude("stdlib.h"));
         \\
-        \\export fn compare_fn(a: ?*const c_void, b: ?*const c_void) c_int {
+        \\export fn compare_fn(a: ?*const anyopaque, b: ?*const anyopaque) c_int {
         \\    const a_int = @ptrCast(*const i32, @alignCast(@alignOf(i32), a));
         \\    const b_int = @ptrCast(*const i32, @alignCast(@alignOf(i32), b));
         \\    if (a_int.* < b_int.*) {
@@ -194,7 +194,7 @@ pub fn addCases(cases: *tests.CompareOutputContext) void {
         \\pub export fn main() c_int {
         \\    var array = [_]u32{ 1, 7, 3, 2, 0, 9, 4, 8, 6, 5 };
         \\
-        \\    c.qsort(@ptrCast(?*c_void, &array), @intCast(c_ulong, array.len), @sizeOf(i32), compare_fn);
+        \\    c.qsort(@ptrCast(?*anyopaque, &array), @intCast(c_ulong, array.len), @sizeOf(i32), compare_fn);
         \\
         \\    for (array) |item, i| {
         \\        if (item != i) {
test/compile_errors.zig
@@ -3058,10 +3058,10 @@ pub fn addCases(ctx: *TestContext) !void {
         "tmp.zig:1:15: error: parameter of type 'anytype' not allowed in function with calling convention 'C'",
     });
 
-    ctx.objErrStage1("C pointer to c_void",
+    ctx.objErrStage1("C pointer to anyopaque",
         \\export fn a() void {
-        \\    var x: *c_void = undefined;
-        \\    var y: [*c]c_void = x;
+        \\    var x: *anyopaque = undefined;
+        \\    var y: [*c]anyopaque = x;
         \\    _ = y;
         \\}
     , &[_][]const u8{
@@ -3305,7 +3305,7 @@ pub fn addCases(ctx: *TestContext) !void {
 
     ctx.objErrStage1("compile log a pointer to an opaque value",
         \\export fn entry() void {
-        \\    @compileLog(@ptrCast(*const c_void, &entry));
+        \\    @compileLog(@ptrCast(*const anyopaque, &entry));
         \\}
     , &[_][]const u8{
         "tmp.zig:2:5: error: found compile log statement",
@@ -3465,16 +3465,16 @@ pub fn addCases(ctx: *TestContext) !void {
         "tmp.zig:2:11: error: use of undeclared identifier 'SymbolThatDoesNotExist'",
     });
 
-    ctx.objErrStage1("don't implicit cast double pointer to *c_void",
+    ctx.objErrStage1("don't implicit cast double pointer to *anyopaque",
         \\export fn entry() void {
         \\    var a: u32 = 1;
-        \\    var ptr: *align(@alignOf(u32)) c_void = &a;
+        \\    var ptr: *align(@alignOf(u32)) anyopaque = &a;
         \\    var b: *u32 = @ptrCast(*u32, ptr);
-        \\    var ptr2: *c_void = &b;
+        \\    var ptr2: *anyopaque = &b;
         \\    _ = ptr2;
         \\}
     , &[_][]const u8{
-        "tmp.zig:5:26: error: expected type '*c_void', found '**u32'",
+        "tmp.zig:5:29: error: expected type '*anyopaque', found '**u32'",
     });
 
     ctx.objErrStage1("runtime index into comptime type slice",
@@ -4045,9 +4045,9 @@ pub fn addCases(ctx: *TestContext) !void {
         "tmp.zig:8:9: error: integer value '256' cannot be stored in type 'u8'",
     });
 
-    ctx.objErrStage1("use c_void as return type of fn ptr",
+    ctx.objErrStage1("use anyopaque as return type of fn ptr",
         \\export fn entry() void {
-        \\    const a: fn () c_void = undefined;
+        \\    const a: fn () anyopaque = undefined;
         \\    _ = a;
         \\}
     , &[_][]const u8{
@@ -7469,10 +7469,10 @@ pub fn addCases(ctx: *TestContext) !void {
         \\extern fn bar(d: *Derp) void;
         \\export fn foo() void {
         \\    var x = @as(u8, 1);
-        \\    bar(@ptrCast(*c_void, &x));
+        \\    bar(@ptrCast(*anyopaque, &x));
         \\}
     , &[_][]const u8{
-        "tmp.zig:5:9: error: expected type '*Derp', found '*c_void'",
+        "tmp.zig:5:9: error: expected type '*Derp', found '*anyopaque'",
     });
 
     ctx.objErrStage1("non-const variables of things that require const variables",
@@ -8765,10 +8765,10 @@ pub fn addCases(ctx: *TestContext) !void {
 
     ctx.objErrStage1("integer underflow error",
         \\export fn entry() void {
-        \\    _ = @intToPtr(*c_void, ~@as(usize, @import("std").math.maxInt(usize)) - 1);
+        \\    _ = @intToPtr(*anyopaque, ~@as(usize, @import("std").math.maxInt(usize)) - 1);
         \\}
     , &[_][]const u8{
-        ":2:75: error: operation caused overflow",
+        ":2:78: error: operation caused overflow",
     });
 
     {
@@ -8864,14 +8864,14 @@ pub fn addCases(ctx: *TestContext) !void {
         "tmp.zig:8:12: error: negation of type 'u32'",
     });
 
-    ctx.objErrStage1("Issue #5618: coercion of ?*c_void to *c_void must fail.",
+    ctx.objErrStage1("Issue #5618: coercion of ?*anyopaque to *anyopaque must fail.",
         \\export fn foo() void {
-        \\    var u: ?*c_void = null;
-        \\    var v: *c_void = undefined;
+        \\    var u: ?*anyopaque = null;
+        \\    var v: *anyopaque = undefined;
         \\    v = u;
         \\}
     , &[_][]const u8{
-        "tmp.zig:4:9: error: expected type '*c_void', found '?*c_void'",
+        "tmp.zig:4:9: error: expected type '*anyopaque', found '?*anyopaque'",
     });
 
     ctx.objErrStage1("Issue #6823: don't allow .* to be followed by **",
test/translate_c.zig
@@ -99,7 +99,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\    .b = @import("std").mem.zeroes(struct_Bar),
         \\};
         ,
-        \\pub const PTR = ?*c_void;
+        \\pub const PTR = ?*anyopaque;
     });
 
     cases.add("scoped record",
@@ -199,8 +199,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\#define SYS_BASE_CACHED 0
         \\#define MEM_PHYSICAL_TO_K0(x) (void*)((uint32_t)(x) + SYS_BASE_CACHED)
     , &[_][]const u8{
-        \\pub inline fn MEM_PHYSICAL_TO_K0(x: anytype) ?*c_void {
-        \\    return @import("std").zig.c_translation.cast(?*c_void, @import("std").zig.c_translation.cast(u32, x) + SYS_BASE_CACHED);
+        \\pub inline fn MEM_PHYSICAL_TO_K0(x: anytype) ?*anyopaque {
+        \\    return @import("std").zig.c_translation.cast(?*anyopaque, @import("std").zig.c_translation.cast(u32, x) + SYS_BASE_CACHED);
         \\}
     });
 
@@ -511,9 +511,9 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\void ((f1)) (void *L);
         \\void (((f2))) (void *L);
     , &[_][]const u8{
-        \\pub extern fn f0(L: ?*c_void) void;
-        \\pub extern fn f1(L: ?*c_void) void;
-        \\pub extern fn f2(L: ?*c_void) void;
+        \\pub extern fn f0(L: ?*anyopaque) void;
+        \\pub extern fn f1(L: ?*anyopaque) void;
+        \\pub extern fn f2(L: ?*anyopaque) void;
     });
 
     cases.add("array initializer w/ typedef",
@@ -812,7 +812,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\typedef void Foo;
         \\Foo fun(Foo *a);
     , &[_][]const u8{
-        \\pub const Foo = c_void;
+        \\pub const Foo = anyopaque;
         ,
         \\pub extern fn fun(a: ?*Foo) Foo;
     });
@@ -837,7 +837,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
     , &[_][]const u8{
         \\pub extern fn foo() void;
         \\pub export fn bar() void {
-        \\    var func_ptr: ?*c_void = @ptrCast(?*c_void, foo);
+        \\    var func_ptr: ?*anyopaque = @ptrCast(?*anyopaque, foo);
         \\    var typed_func_ptr: ?fn () callconv(.C) void = @intToPtr(?fn () callconv(.C) void, @intCast(c_ulong, @ptrToInt(func_ptr)));
         \\    _ = typed_func_ptr;
         \\}
@@ -1264,9 +1264,9 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\    return x;
         \\}
     , &[_][]const u8{
-        \\pub export fn foo() ?*c_void {
+        \\pub export fn foo() ?*anyopaque {
         \\    var x: [*c]c_ushort = undefined;
-        \\    return @ptrCast(?*c_void, x);
+        \\    return @ptrCast(?*anyopaque, x);
         \\}
     });
 
@@ -1410,7 +1410,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\}
     , &[_][]const u8{
         \\pub export fn test_ptr_cast() void {
-        \\    var p: ?*c_void = undefined;
+        \\    var p: ?*anyopaque = undefined;
         \\    {
         \\        var to_char: [*c]u8 = @ptrCast([*c]u8, @alignCast(@import("std").meta.alignment(u8), p));
         \\        _ = to_char;
@@ -1448,7 +1448,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub export fn while_none_bool() c_int {
         \\    var a: c_int = undefined;
         \\    var b: f32 = undefined;
-        \\    var c: ?*c_void = undefined;
+        \\    var c: ?*anyopaque = undefined;
         \\    while (a != 0) return 0;
         \\    while (b != 0) return 1;
         \\    while (c != null) return 2;
@@ -1470,7 +1470,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub export fn for_none_bool() c_int {
         \\    var a: c_int = undefined;
         \\    var b: f32 = undefined;
-        \\    var c: ?*c_void = undefined;
+        \\    var c: ?*anyopaque = undefined;
         \\    while (a != 0) return 0;
         \\    while (b != 0) return 1;
         \\    while (c != null) return 2;
@@ -1551,7 +1551,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub export fn foo() c_int {
         \\    var a: c_int = undefined;
         \\    var b: f32 = undefined;
-        \\    var c: ?*c_void = undefined;
+        \\    var c: ?*anyopaque = undefined;
         \\    return @boolToInt(!(a == @as(c_int, 0)));
         \\    return @boolToInt(!(a != 0));
         \\    return @boolToInt(!(b != 0));
@@ -2200,7 +2200,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
     cases.add("restrict -> noalias",
         \\void foo(void *restrict bar, void *restrict);
     , &[_][]const u8{
-        \\pub extern fn foo(noalias bar: ?*c_void, noalias ?*c_void) void;
+        \\pub extern fn foo(noalias bar: ?*anyopaque, noalias ?*anyopaque) void;
     });
 
     cases.add("assign",
@@ -2362,7 +2362,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         ++ " " ++ default_enum_type ++
             \\;
             \\pub const SomeTypedef = c_int;
-            \\pub export fn and_or_non_bool(arg_a: c_int, arg_b: f32, arg_c: ?*c_void) c_int {
+            \\pub export fn and_or_non_bool(arg_a: c_int, arg_b: f32, arg_c: ?*anyopaque) c_int {
             \\    var a = arg_a;
             \\    var b = arg_b;
             \\    var c = arg_c;
@@ -2686,7 +2686,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub const enum_SomeEnum =
         ++ " " ++ default_enum_type ++
             \\;
-            \\pub export fn if_none_bool(arg_a: c_int, arg_b: f32, arg_c: ?*c_void, arg_d: enum_SomeEnum) c_int {
+            \\pub export fn if_none_bool(arg_a: c_int, arg_b: f32, arg_c: ?*anyopaque, arg_d: enum_SomeEnum) c_int {
             \\    var a = arg_a;
             \\    var b = arg_b;
             \\    var c = arg_c;
@@ -3089,7 +3089,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\pub extern fn fn_f64(x: f64) void;
         \\pub extern fn fn_char(x: u8) void;
         \\pub extern fn fn_bool(x: bool) void;
-        \\pub extern fn fn_ptr(x: ?*c_void) void;
+        \\pub extern fn fn_ptr(x: ?*anyopaque) void;
         \\pub export fn call() void {
         \\    fn_int(@floatToInt(c_int, 3.0));
         \\    fn_int(@floatToInt(c_int, 3.0));
@@ -3105,7 +3105,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\    fn_bool(@as(c_int, 0) != 0);
         \\    fn_bool(@ptrToInt(fn_int) != 0);
         \\    fn_int(@intCast(c_int, @ptrToInt(fn_int)));
-        \\    fn_ptr(@intToPtr(?*c_void, @as(c_int, 42)));
+        \\    fn_ptr(@intToPtr(?*anyopaque, @as(c_int, 42)));
         \\}
     });
 
@@ -3161,12 +3161,12 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\#define BAZ (uint32_t)(2)
         \\#define a 2
     , &[_][]const u8{
-        \\pub inline fn FOO(bar: anytype) @TypeOf(baz(@import("std").zig.c_translation.cast(?*c_void, baz))) {
+        \\pub inline fn FOO(bar: anytype) @TypeOf(baz(@import("std").zig.c_translation.cast(?*anyopaque, baz))) {
         \\    _ = bar;
-        \\    return baz(@import("std").zig.c_translation.cast(?*c_void, baz));
+        \\    return baz(@import("std").zig.c_translation.cast(?*anyopaque, baz));
         \\}
         ,
-        \\pub const BAR = @import("std").zig.c_translation.cast(?*c_void, a);
+        \\pub const BAR = @import("std").zig.c_translation.cast(?*anyopaque, a);
         ,
         \\pub const BAZ = @import("std").zig.c_translation.cast(u32, @as(c_int, 2));
     });
@@ -3404,7 +3404,7 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\#define NULL ((void*)0)
         \\#define FOO ((int)0x8000)
     , &[_][]const u8{
-        \\pub const NULL = @import("std").zig.c_translation.cast(?*c_void, @as(c_int, 0));
+        \\pub const NULL = @import("std").zig.c_translation.cast(?*anyopaque, @as(c_int, 0));
         ,
         \\pub const FOO = @import("std").zig.c_translation.cast(c_int, @import("std").zig.c_translation.promoteIntLiteral(c_int, 0x8000, .hexadecimal));
     });
@@ -3623,8 +3623,8 @@ pub fn addCases(cases: *tests.TranslateCContext) void {
         \\typedef long long LONG_PTR;
         \\#define INVALID_HANDLE_VALUE ((void *)(LONG_PTR)-1)
     , &[_][]const u8{
-        \\pub const MAP_FAILED = @import("std").zig.c_translation.cast(?*c_void, -@as(c_int, 1));
-        \\pub const INVALID_HANDLE_VALUE = @import("std").zig.c_translation.cast(?*c_void, @import("std").zig.c_translation.cast(LONG_PTR, -@as(c_int, 1)));
+        \\pub const MAP_FAILED = @import("std").zig.c_translation.cast(?*anyopaque, -@as(c_int, 1));
+        \\pub const INVALID_HANDLE_VALUE = @import("std").zig.c_translation.cast(?*anyopaque, @import("std").zig.c_translation.cast(LONG_PTR, -@as(c_int, 1)));
     });
 
     cases.add("discard unused local variables and function parameters",