std: win: Disable stack overflow handling on UWP
The required functions are not available, so hope for the best
This commit is contained in:
parent
668f0d3495
commit
e88a4cee52
3 changed files with 45 additions and 29 deletions
|
@ -256,10 +256,6 @@ pub const WAIT_OBJECT_0: DWORD = 0x00000000;
|
|||
pub const WAIT_TIMEOUT: DWORD = 258;
|
||||
pub const WAIT_FAILED: DWORD = 0xFFFFFFFF;
|
||||
|
||||
pub const EXCEPTION_CONTINUE_SEARCH: LONG = 0;
|
||||
pub const EXCEPTION_STACK_OVERFLOW: DWORD = 0xc00000fd;
|
||||
pub const EXCEPTION_MAXIMUM_PARAMETERS: usize = 15;
|
||||
|
||||
pub const PIPE_ACCESS_INBOUND: DWORD = 0x00000001;
|
||||
pub const PIPE_ACCESS_OUTBOUND: DWORD = 0x00000002;
|
||||
pub const FILE_FLAG_FIRST_PIPE_INSTANCE: DWORD = 0x00080000;
|
||||
|
@ -444,25 +440,6 @@ pub struct REPARSE_MOUNTPOINT_DATA_BUFFER {
|
|||
pub ReparseTarget: WCHAR,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
pub struct EXCEPTION_RECORD {
|
||||
pub ExceptionCode: DWORD,
|
||||
pub ExceptionFlags: DWORD,
|
||||
pub ExceptionRecord: *mut EXCEPTION_RECORD,
|
||||
pub ExceptionAddress: LPVOID,
|
||||
pub NumberParameters: DWORD,
|
||||
pub ExceptionInformation: [LPVOID; EXCEPTION_MAXIMUM_PARAMETERS]
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
pub struct EXCEPTION_POINTERS {
|
||||
pub ExceptionRecord: *mut EXCEPTION_RECORD,
|
||||
pub ContextRecord: *mut CONTEXT,
|
||||
}
|
||||
|
||||
pub type PVECTORED_EXCEPTION_HANDLER = extern "system"
|
||||
fn(ExceptionInfo: *mut EXCEPTION_POINTERS) -> LONG;
|
||||
|
||||
#[repr(C)]
|
||||
pub struct GUID {
|
||||
pub Data1: DWORD,
|
||||
|
@ -545,8 +522,6 @@ pub enum ADDRESS_MODE {
|
|||
AddrModeFlat,
|
||||
}
|
||||
|
||||
pub enum CONTEXT {}
|
||||
|
||||
#[repr(C)]
|
||||
pub struct SOCKADDR_STORAGE_LH {
|
||||
pub ss_family: ADDRESS_FAMILY,
|
||||
|
@ -631,6 +606,31 @@ pub struct timeval {
|
|||
// Functions forbidden when targeting UWP
|
||||
cfg_if::cfg_if! {
|
||||
if #[cfg(not(target_vendor = "uwp"))] {
|
||||
pub const EXCEPTION_CONTINUE_SEARCH: LONG = 0;
|
||||
pub const EXCEPTION_STACK_OVERFLOW: DWORD = 0xc00000fd;
|
||||
pub const EXCEPTION_MAXIMUM_PARAMETERS: usize = 15;
|
||||
|
||||
#[repr(C)]
|
||||
pub struct EXCEPTION_RECORD {
|
||||
pub ExceptionCode: DWORD,
|
||||
pub ExceptionFlags: DWORD,
|
||||
pub ExceptionRecord: *mut EXCEPTION_RECORD,
|
||||
pub ExceptionAddress: LPVOID,
|
||||
pub NumberParameters: DWORD,
|
||||
pub ExceptionInformation: [LPVOID; EXCEPTION_MAXIMUM_PARAMETERS]
|
||||
}
|
||||
|
||||
pub enum CONTEXT {}
|
||||
|
||||
#[repr(C)]
|
||||
pub struct EXCEPTION_POINTERS {
|
||||
pub ExceptionRecord: *mut EXCEPTION_RECORD,
|
||||
pub ContextRecord: *mut CONTEXT,
|
||||
}
|
||||
|
||||
pub type PVECTORED_EXCEPTION_HANDLER = extern "system"
|
||||
fn(ExceptionInfo: *mut EXCEPTION_POINTERS) -> LONG;
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct CONSOLE_READCONSOLE_CONTROL {
|
||||
|
@ -694,6 +694,9 @@ if #[cfg(not(target_vendor = "uwp"))] {
|
|||
pub fn SetHandleInformation(hObject: HANDLE,
|
||||
dwMask: DWORD,
|
||||
dwFlags: DWORD) -> BOOL;
|
||||
pub fn AddVectoredExceptionHandler(FirstHandler: ULONG,
|
||||
VectoredHandler: PVECTORED_EXCEPTION_HANDLER)
|
||||
-> LPVOID;
|
||||
pub fn CreateHardLinkW(lpSymlinkFileName: LPCWSTR,
|
||||
lpTargetFileName: LPCWSTR,
|
||||
lpSecurityAttributes: LPSECURITY_ATTRIBUTES)
|
||||
|
@ -804,9 +807,6 @@ extern "system" {
|
|||
lpData: LPVOID,
|
||||
pbCancel: LPBOOL,
|
||||
dwCopyFlags: DWORD) -> BOOL;
|
||||
pub fn AddVectoredExceptionHandler(FirstHandler: ULONG,
|
||||
VectoredHandler: PVECTORED_EXCEPTION_HANDLER)
|
||||
-> LPVOID;
|
||||
pub fn FormatMessageW(flags: DWORD,
|
||||
lpSrc: LPVOID,
|
||||
msgId: DWORD,
|
||||
|
@ -1015,6 +1015,7 @@ compat_fn! {
|
|||
_dwFlags: DWORD) -> DWORD {
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED as DWORD); 0
|
||||
}
|
||||
#[cfg(not(target_vendor = "uwp"))]
|
||||
pub fn SetThreadStackGuarantee(_size: *mut c_ulong) -> BOOL {
|
||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED as DWORD); 0
|
||||
}
|
||||
|
|
|
@ -33,16 +33,18 @@ pub mod pipe;
|
|||
pub mod process;
|
||||
pub mod rand;
|
||||
pub mod rwlock;
|
||||
pub mod stack_overflow;
|
||||
pub mod thread;
|
||||
pub mod thread_local;
|
||||
pub mod time;
|
||||
cfg_if::cfg_if! {
|
||||
if #[cfg(not(target_vendor = "uwp"))] {
|
||||
pub mod stdio;
|
||||
pub mod stack_overflow;
|
||||
} else {
|
||||
pub mod stdio_uwp;
|
||||
pub mod stack_overflow_uwp;
|
||||
pub use self::stdio_uwp as stdio;
|
||||
pub use self::stack_overflow_uwp as stack_overflow;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
13
src/libstd/sys/windows/stack_overflow_uwp.rs
Normal file
13
src/libstd/sys/windows/stack_overflow_uwp.rs
Normal file
|
@ -0,0 +1,13 @@
|
|||
#![cfg_attr(test, allow(dead_code))]
|
||||
|
||||
pub struct Handler;
|
||||
|
||||
impl Handler {
|
||||
pub fn new() -> Handler {
|
||||
Handler
|
||||
}
|
||||
}
|
||||
|
||||
pub unsafe fn init() {}
|
||||
|
||||
pub unsafe fn cleanup() {}
|
Loading…
Add table
Add a link
Reference in a new issue