diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:25 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:18:25 +0000 |
commit | 5363f350887b1e5b5dd21a86f88c8af9d7fea6da (patch) | |
tree | 35ca005eb6e0e9a1ba3bb5dbc033209ad445dc17 /vendor/ntapi/src | |
parent | Adding debian version 1.66.0+dfsg1-1. (diff) | |
download | rustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.tar.xz rustc-5363f350887b1e5b5dd21a86f88c8af9d7fea6da.zip |
Merging upstream version 1.67.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/ntapi/src')
-rw-r--r-- | vendor/ntapi/src/lib.rs | 19 | ||||
-rw-r--r-- | vendor/ntapi/src/ntexapi.rs | 18 | ||||
-rw-r--r-- | vendor/ntapi/src/ntldr.rs | 2 | ||||
-rw-r--r-- | vendor/ntapi/src/ntpsapi.rs | 26 | ||||
-rw-r--r-- | vendor/ntapi/src/ntrtl.rs | 15 | ||||
-rw-r--r-- | vendor/ntapi/src/winapi_local/um/winnt.rs | 19 |
6 files changed, 35 insertions, 64 deletions
diff --git a/vendor/ntapi/src/lib.rs b/vendor/ntapi/src/lib.rs index 6b06b6c57..0f7708cbe 100644 --- a/vendor/ntapi/src/lib.rs +++ b/vendor/ntapi/src/lib.rs @@ -3,26 +3,7 @@ //! **`impl-default`** -- Implement [`Default`] for structs and unions.<br/> //! **`user`** *(default)* -- Link to `ntdll`.<br/> //! **`kernel`** -- Link to `ntoskrnl` on MSVC targets.<br/> -//! **`beta`** -- Unlock unstable features that require a beta compiler: -//! - [`NtCurrentTeb`] -//! - [`__readfsdword`] -//! - [`__readgsqword`] -//! - [`_bittest64`] -//! - [`NtCurrentPeb`] -//! - [`NtCurrentProcessId`] -//! - [`NtCurrentThreadId`] -//! - [`RtlProcessHeap`] -//! - [`RtlCheckBit`] implementation using [`_bittest64`] on x86_64. //! -//! [`NtCurrentTeb`]: winapi_local/um/winnt/fn.NtCurrentTeb.html -//! [`__readfsdword`]: winapi_local/um/winnt/fn.__readfsdword.html -//! [`__readgsqword`]: winapi_local/um/winnt/fn.__readgsqword.html -//! [`_bittest64`]: winapi_local/um/winnt/fn._bittest64.html -//! [`NtCurrentPeb`]: ntpsapi/fn.NtCurrentPeb.html -//! [`NtCurrentProcessId`]: ntpsapi/fn.NtCurrentProcessId.html -//! [`NtCurrentThreadId`]: ntpsapi/fn.NtCurrentThreadId.html -//! [`RtlProcessHeap`]: ntrtl/fn.RtlProcessHeap.html -//! [`RtlCheckBit`]: ntrtl/fn.RtlCheckBit.html //! [fn_ptr]: https://doc.rust-lang.org/reference/types.html#function-pointer-types //! [`Default`]: https://doc.rust-lang.org/std/default/trait.Default.html#tymethod.default #![cfg(all(windows, any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))] diff --git a/vendor/ntapi/src/ntexapi.rs b/vendor/ntapi/src/ntexapi.rs index 5fa47c913..08a0ddf9e 100644 --- a/vendor/ntapi/src/ntexapi.rs +++ b/vendor/ntapi/src/ntexapi.rs @@ -1,7 +1,9 @@ -use core::mem::uninitialized; +use core::mem::MaybeUninit; +#[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] +use core::ptr::addr_of; use core::ptr::read_volatile; #[cfg(target_arch = "x86")] -use core::sync::atomic::spin_loop_hint; +use core::hint::spin_loop; use crate::ntapi_base::{CLIENT_ID, KPRIORITY, KSYSTEM_TIME, PRTL_ATOM, RTL_ATOM}; use crate::ntioapi::{BUS_DATA_TYPE, FILE_IO_COMPLETION_INFORMATION, INTERFACE_TYPE}; use crate::ntkeapi::{KPROFILE_SOURCE, KTHREAD_STATE, KWAIT_REASON}; @@ -2778,9 +2780,9 @@ pub type PKUSER_SHARED_DATA = *mut KUSER_SHARED_DATA; pub const USER_SHARED_DATA: *const KUSER_SHARED_DATA = 0x7ffe0000 as *const _; #[inline] pub unsafe fn NtGetTickCount64() -> ULONGLONG { - let mut tick_count: ULARGE_INTEGER = uninitialized(); + let mut tick_count: ULARGE_INTEGER = MaybeUninit::uninit().assume_init(); #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] { - *tick_count.QuadPart_mut() = read_volatile(&(*USER_SHARED_DATA).u.TickCountQuad); + *tick_count.QuadPart_mut() = read_volatile(addr_of!((*USER_SHARED_DATA).u.TickCountQuad)); } #[cfg(target_arch = "x86")] { loop { @@ -2792,7 +2794,7 @@ pub unsafe fn NtGetTickCount64() -> ULONGLONG { { break; } - spin_loop_hint(); + spin_loop(); } } (UInt32x32To64(tick_count.s().LowPart, (*USER_SHARED_DATA).TickCountMultiplier) >> 24) @@ -2804,11 +2806,11 @@ pub unsafe fn NtGetTickCount64() -> ULONGLONG { #[inline] pub unsafe fn NtGetTickCount() -> ULONG { #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] { - ((read_volatile(&(*USER_SHARED_DATA).u.TickCountQuad) + ((read_volatile(addr_of!((*USER_SHARED_DATA).u.TickCountQuad)) * (*USER_SHARED_DATA).TickCountMultiplier as u64) >> 24) as u32 } #[cfg(target_arch = "x86")] { - let mut tick_count: ULARGE_INTEGER = uninitialized(); + let mut tick_count: ULARGE_INTEGER = MaybeUninit::uninit().assume_init(); loop { tick_count.s_mut().HighPart = read_volatile(&(*USER_SHARED_DATA).u.TickCount.High1Time) as u32; @@ -2818,7 +2820,7 @@ pub unsafe fn NtGetTickCount() -> ULONG { { break; } - spin_loop_hint(); + spin_loop(); } ((UInt32x32To64(tick_count.s().LowPart, (*USER_SHARED_DATA).TickCountMultiplier) >> 24) + UInt32x32To64( diff --git a/vendor/ntapi/src/ntldr.rs b/vendor/ntapi/src/ntldr.rs index 1114dd8e2..4b4bcb629 100644 --- a/vendor/ntapi/src/ntldr.rs +++ b/vendor/ntapi/src/ntldr.rs @@ -201,7 +201,7 @@ pub const fn LDR_IS_IMAGEMAPPING(DllHandle: ULONG_PTR) -> bool { } #[inline] pub const fn LDR_IS_RESOURCE(DllHandle: ULONG_PTR) -> bool { - (LDR_IS_IMAGEMAPPING(DllHandle) | LDR_IS_DATAFILE(DllHandle)) as u8 != 0 //fixme + LDR_IS_IMAGEMAPPING(DllHandle) || LDR_IS_DATAFILE(DllHandle) } EXTERN!{extern "system" { fn LdrLoadDll( diff --git a/vendor/ntapi/src/ntpsapi.rs b/vendor/ntapi/src/ntpsapi.rs index b2ba28afe..2a0d3cde0 100644 --- a/vendor/ntapi/src/ntpsapi.rs +++ b/vendor/ntapi/src/ntpsapi.rs @@ -19,7 +19,7 @@ use winapi::um::winnt::{ PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY, PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY, PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY, PSECURITY_QUALITY_OF_SERVICE, }; -#[cfg(all(feature = "beta", not(target_arch = "aarch64")))] +#[cfg(not(target_arch = "aarch64"))] use crate::winapi_local::um::winnt::NtCurrentTeb; pub const GDI_HANDLE_BUFFER_SIZE32: usize = 34; pub const GDI_HANDLE_BUFFER_SIZE64: usize = 60; @@ -932,7 +932,7 @@ pub const NtCurrentThread: HANDLE = -2isize as *mut c_void; pub const ZwCurrentThread: HANDLE = NtCurrentThread; pub const NtCurrentSession: HANDLE = -3isize as *mut c_void; pub const ZwCurrentSession: HANDLE = NtCurrentSession; -#[inline] #[cfg(all(feature = "beta", not(target_arch = "aarch64")))] +#[inline] #[cfg(not(target_arch = "aarch64"))] pub unsafe fn NtCurrentPeb() -> PPEB { (*NtCurrentTeb()).ProcessEnvironmentBlock } @@ -940,11 +940,11 @@ pub const NtCurrentProcessToken: HANDLE = -4isize as *mut c_void; pub const NtCurrentThreadToken: HANDLE = -5isize as *mut c_void; pub const NtCurrentEffectiveToken: HANDLE = -6isize as *mut c_void; pub const NtCurrentSilo: HANDLE = -1isize as *mut c_void; -#[inline] #[cfg(all(feature = "beta", not(target_arch = "aarch64")))] +#[inline] #[cfg(not(target_arch = "aarch64"))] pub unsafe fn NtCurrentProcessId() -> HANDLE { (*NtCurrentTeb()).ClientId.UniqueProcess } -#[inline] #[cfg(all(feature = "beta", not(target_arch = "aarch64")))] +#[inline] #[cfg(not(target_arch = "aarch64"))] pub unsafe fn NtCurrentThreadId() -> HANDLE { (*NtCurrentTeb()).ClientId.UniqueThread } @@ -1121,14 +1121,22 @@ ENUM!{enum PS_ATTRIBUTE_NUM { }} #[inline] pub const fn PsAttributeValue( - Number: PS_ATTRIBUTE_NUM, + mut Number: PS_ATTRIBUTE_NUM, Thread: bool, Input: bool, Additive: bool, -) -> ULONG_PTR { //fixme - (Number & PS_ATTRIBUTE_NUMBER_MASK | [0, PS_ATTRIBUTE_THREAD][Thread as usize] - | [0, PS_ATTRIBUTE_INPUT][Input as usize] | [0, PS_ATTRIBUTE_ADDITIVE][Additive as usize] - ) as usize +) -> ULONG_PTR { + Number &= PS_ATTRIBUTE_NUMBER_MASK; + if Thread { + Number |= PS_ATTRIBUTE_THREAD; + } + if Input { + Number |= PS_ATTRIBUTE_INPUT; + } + if Additive { + Number |= PS_ATTRIBUTE_ADDITIVE; + } + Number as _ } pub const PS_ATTRIBUTE_PARENT_PROCESS: ULONG_PTR = 0x00060000; pub const PS_ATTRIBUTE_DEBUG_PORT: ULONG_PTR = 0x00060001; diff --git a/vendor/ntapi/src/ntrtl.rs b/vendor/ntapi/src/ntrtl.rs index 9dfa19f7c..abbc3862a 100644 --- a/vendor/ntapi/src/ntrtl.rs +++ b/vendor/ntapi/src/ntrtl.rs @@ -2196,7 +2196,7 @@ EXTERN!{extern "system" { MakeReadOnly: BOOLEAN, ); }} -#[inline] #[cfg(all(feature = "beta", not(target_arch = "aarch64")))] +#[inline] #[cfg(not(target_arch = "aarch64"))] pub unsafe fn RtlProcessHeap() -> PVOID { use crate::ntpsapi::NtCurrentPeb; (*NtCurrentPeb()).ProcessHeap @@ -2506,7 +2506,7 @@ EXTERN!{extern "system" { }} #[inline] pub const fn RtlIsEqualLuid(L1: &LUID, L2: &LUID) -> bool { - ((L1.LowPart == L2.LowPart) & (L1.HighPart == L2.HighPart)) as u8 != 0 //fixme + (L1.LowPart == L2.LowPart) && (L1.HighPart == L2.HighPart) } #[inline] pub const fn RtlIsZeroLuid(L1: &LUID) -> bool { @@ -2944,15 +2944,10 @@ EXTERN!{extern "system" { }} #[inline] pub unsafe fn RtlCheckBit(BitMapHeader: &RTL_BITMAP, BitPosition: ULONG) -> u8 { - #[cfg(all(target_arch = "x86_64", feature = "beta"))] { - use crate::winapi_local::um::winnt::_bittest64; - _bittest64(BitMapHeader.Buffer as *const i64, BitPosition as i64) + #[cfg(target_arch = "x86_64")] { + core::arch::x86_64::_bittest64(BitMapHeader.Buffer as *const i64, BitPosition as i64) } - #[cfg(any( - target_arch = "x86", - all(target_arch = "x86_64", not(feature = "beta")), - target_arch = "aarch64", - ))] { + #[cfg(any(target_arch = "x86", target_arch = "aarch64"))] { (*BitMapHeader.Buffer.offset(BitPosition as isize / 32) >> (BitPosition % 32) & 1) as u8 } } diff --git a/vendor/ntapi/src/winapi_local/um/winnt.rs b/vendor/ntapi/src/winapi_local/um/winnt.rs index 5c4f7b2fb..0c8efb262 100644 --- a/vendor/ntapi/src/winapi_local/um/winnt.rs +++ b/vendor/ntapi/src/winapi_local/um/winnt.rs @@ -1,5 +1,3 @@ -#[cfg(all(feature = "beta", not(target_arch = "aarch64")))] -use core::arch::asm; use winapi::shared::basetsd::{DWORD64, SIZE_T, ULONG64}; use winapi::shared::minwindef::DWORD; use winapi::um::winnt::{HANDLE, PVOID}; @@ -8,24 +6,11 @@ use winapi::um::winnt::{HANDLE, PVOID}; pub const fn UInt32x32To64(a: u32, b: u32) -> u64 { a as u64 * b as u64 } -#[cfg(all(feature = "beta", not(target_arch = "aarch64")))] +#[cfg(not(target_arch = "aarch64"))] IFDEF!{ +use core::arch::asm; use crate::ntpebteb::TEB; #[inline] -#[cfg(target_pointer_width = "64")] -pub unsafe fn _bittest64(Base: *const i64, Offset: i64) -> u8 { - let out: u8; - asm!( - "bt {1}, {2}", - "setb {0}", - out(reg_byte) out, - in(reg) Base, - in(reg) Offset, - options(nostack, pure, readonly), - ); - out -} -#[inline] pub unsafe fn __readfsdword(Offset: DWORD) -> DWORD { let out: u32; asm!( |