Skip to content

Commit e46004e

Browse files
he32JohnTitor
authored andcommitted
NetBSD's mod.rs: fix cpuid_t definition.
...in particular for 32-bit CPUs / ports, such as 32-bit arm, i386, and powerpc. In the C header files on NetBSD, this is defined as typedef unsigned long cpuid_t; and on ILP32 CPUs, that ends up being a 32-bit quantity. Defining this as a 64-bit type wrecks havoc on our 32-bit ports when e.g. _cpuset_isset() is used (as was introduced with 1.72.0), causing immediate SEGV due to NULL pointer de-reference, as observed in rust-lang/rust#116665 So, instead, define it as ::c_ulong, and let the CPU-specific type definitions take care of the sizing.
1 parent 48c55b2 commit e46004e

File tree

1 file changed

+1
-1
lines changed
  • src/unix/bsd/netbsdlike/netbsd

1 file changed

+1
-1
lines changed

src/unix/bsd/netbsdlike/netbsd/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ type __pthread_spin_t = __cpu_simple_lock_nv_t;
1010
pub type vm_size_t = ::uintptr_t; // FIXME: deprecated since long time
1111
pub type lwpid_t = ::c_uint;
1212
pub type shmatt_t = ::c_uint;
13-
pub type cpuid_t = u64;
13+
pub type cpuid_t = ::c_ulong;
1414
pub type cpuset_t = _cpuset;
1515
pub type pthread_spin_t = ::c_uchar;
1616
pub type timer_t = ::c_int;

0 commit comments

Comments
 (0)