Skip to content

Commit

Permalink
Auto merge of #3386 - he32:netbsd-32bit-fix, r=JohnTitor
Browse files Browse the repository at this point in the history
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 rust 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.
  • Loading branch information
bors committed Oct 13, 2023
2 parents a8b74d9 + 41755d1 commit 1bb3be5
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/unix/bsd/netbsdlike/netbsd/mod.rs
Expand Up @@ -10,7 +10,7 @@ type __pthread_spin_t = __cpu_simple_lock_nv_t;
pub type vm_size_t = ::uintptr_t; // FIXME: deprecated since long time
pub type lwpid_t = ::c_uint;
pub type shmatt_t = ::c_uint;
pub type cpuid_t = u64;
pub type cpuid_t = ::c_ulong;
pub type cpuset_t = _cpuset;
pub type pthread_spin_t = ::c_uchar;
pub type timer_t = ::c_int;
Expand Down

0 comments on commit 1bb3be5

Please sign in to comment.