Auto merge of #2837 - LegNeato:sigrtmin, r=saethlin
Add shim for SIGRTMIN Fixes https://github.com/rust-lang/miri/issues/2832.
This commit is contained in:
commit
93a05753cb
@ -32,8 +32,14 @@ use crate::{
|
||||
*,
|
||||
};
|
||||
|
||||
/// The number of the available real-time signal with the lowest priority.
|
||||
/// Dummy constant related to epoll, must be between 32 and 64.
|
||||
/// First real-time signal.
|
||||
/// `signal(7)` says this must be between 32 and 64 and specifies 34 or 35
|
||||
/// as typical values.
|
||||
pub const SIGRTMIN: i32 = 34;
|
||||
|
||||
/// Last real-time signal.
|
||||
/// `signal(7)` says it must be between 32 and 64 and specifies
|
||||
/// `SIGRTMAX` - `SIGRTMIN` >= 8 (which is the value of `_POSIX_RTSIG_MAX`)
|
||||
pub const SIGRTMAX: i32 = 42;
|
||||
|
||||
/// Extra data stored with each stack frame
|
||||
|
@ -2,6 +2,7 @@ use rustc_span::Symbol;
|
||||
use rustc_target::spec::abi::Abi;
|
||||
|
||||
use crate::machine::SIGRTMAX;
|
||||
use crate::machine::SIGRTMIN;
|
||||
use crate::*;
|
||||
use shims::foreign_items::EmulateByNameResult;
|
||||
use shims::unix::fs::EvalContextExt as _;
|
||||
@ -74,6 +75,11 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> {
|
||||
let result = this.socketpair(domain, type_, protocol, sv)?;
|
||||
this.write_scalar(result, dest)?;
|
||||
}
|
||||
"__libc_current_sigrtmin" => {
|
||||
let [] = this.check_shim(abi, Abi::C { unwind: false }, link_name, args)?;
|
||||
|
||||
this.write_scalar(Scalar::from_i32(SIGRTMIN), dest)?;
|
||||
}
|
||||
"__libc_current_sigrtmax" => {
|
||||
let [] = this.check_shim(abi, Abi::C { unwind: false }, link_name, args)?;
|
||||
|
||||
|
@ -302,6 +302,24 @@ fn test_posix_mkstemp() {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
fn test_sigrt() {
|
||||
let min = libc::SIGRTMIN();
|
||||
let max = libc::SIGRTMAX();
|
||||
|
||||
// "The Linux kernel supports a range of 33 different real-time
|
||||
// signals, numbered 32 to 64"
|
||||
assert!(min >= 32);
|
||||
assert!(max >= 32);
|
||||
assert!(min <= 64);
|
||||
assert!(max <= 64);
|
||||
|
||||
// "POSIX.1-2001 requires that an implementation support at least
|
||||
// _POSIX_RTSIG_MAX (8) real-time signals."
|
||||
assert!(min < max);
|
||||
assert!(max - min >= 8)
|
||||
}
|
||||
|
||||
fn main() {
|
||||
test_posix_gettimeofday();
|
||||
test_posix_mkstemp();
|
||||
@ -319,5 +337,6 @@ fn main() {
|
||||
{
|
||||
test_posix_fadvise();
|
||||
test_sync_file_range();
|
||||
test_sigrt();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user