std: win: Disable stack overflow handling on UWP
The required functions are not available, so hope for the best
This commit is contained in:
@@ -256,10 +256,6 @@ pub const WAIT_OBJECT_0: DWORD = 0x00000000;
|
|||||||
pub const WAIT_TIMEOUT: DWORD = 258;
|
pub const WAIT_TIMEOUT: DWORD = 258;
|
||||||
pub const WAIT_FAILED: DWORD = 0xFFFFFFFF;
|
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_INBOUND: DWORD = 0x00000001;
|
||||||
pub const PIPE_ACCESS_OUTBOUND: DWORD = 0x00000002;
|
pub const PIPE_ACCESS_OUTBOUND: DWORD = 0x00000002;
|
||||||
pub const FILE_FLAG_FIRST_PIPE_INSTANCE: DWORD = 0x00080000;
|
pub const FILE_FLAG_FIRST_PIPE_INSTANCE: DWORD = 0x00080000;
|
||||||
@@ -444,25 +440,6 @@ pub struct REPARSE_MOUNTPOINT_DATA_BUFFER {
|
|||||||
pub ReparseTarget: WCHAR,
|
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)]
|
#[repr(C)]
|
||||||
pub struct GUID {
|
pub struct GUID {
|
||||||
pub Data1: DWORD,
|
pub Data1: DWORD,
|
||||||
@@ -545,8 +522,6 @@ pub enum ADDRESS_MODE {
|
|||||||
AddrModeFlat,
|
AddrModeFlat,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum CONTEXT {}
|
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct SOCKADDR_STORAGE_LH {
|
pub struct SOCKADDR_STORAGE_LH {
|
||||||
pub ss_family: ADDRESS_FAMILY,
|
pub ss_family: ADDRESS_FAMILY,
|
||||||
@@ -631,6 +606,31 @@ pub struct timeval {
|
|||||||
// Functions forbidden when targeting UWP
|
// Functions forbidden when targeting UWP
|
||||||
cfg_if::cfg_if! {
|
cfg_if::cfg_if! {
|
||||||
if #[cfg(not(target_vendor = "uwp"))] {
|
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)]
|
#[repr(C)]
|
||||||
#[derive(Copy, Clone)]
|
#[derive(Copy, Clone)]
|
||||||
pub struct CONSOLE_READCONSOLE_CONTROL {
|
pub struct CONSOLE_READCONSOLE_CONTROL {
|
||||||
@@ -694,6 +694,9 @@ if #[cfg(not(target_vendor = "uwp"))] {
|
|||||||
pub fn SetHandleInformation(hObject: HANDLE,
|
pub fn SetHandleInformation(hObject: HANDLE,
|
||||||
dwMask: DWORD,
|
dwMask: DWORD,
|
||||||
dwFlags: DWORD) -> BOOL;
|
dwFlags: DWORD) -> BOOL;
|
||||||
|
pub fn AddVectoredExceptionHandler(FirstHandler: ULONG,
|
||||||
|
VectoredHandler: PVECTORED_EXCEPTION_HANDLER)
|
||||||
|
-> LPVOID;
|
||||||
pub fn CreateHardLinkW(lpSymlinkFileName: LPCWSTR,
|
pub fn CreateHardLinkW(lpSymlinkFileName: LPCWSTR,
|
||||||
lpTargetFileName: LPCWSTR,
|
lpTargetFileName: LPCWSTR,
|
||||||
lpSecurityAttributes: LPSECURITY_ATTRIBUTES)
|
lpSecurityAttributes: LPSECURITY_ATTRIBUTES)
|
||||||
@@ -804,9 +807,6 @@ extern "system" {
|
|||||||
lpData: LPVOID,
|
lpData: LPVOID,
|
||||||
pbCancel: LPBOOL,
|
pbCancel: LPBOOL,
|
||||||
dwCopyFlags: DWORD) -> BOOL;
|
dwCopyFlags: DWORD) -> BOOL;
|
||||||
pub fn AddVectoredExceptionHandler(FirstHandler: ULONG,
|
|
||||||
VectoredHandler: PVECTORED_EXCEPTION_HANDLER)
|
|
||||||
-> LPVOID;
|
|
||||||
pub fn FormatMessageW(flags: DWORD,
|
pub fn FormatMessageW(flags: DWORD,
|
||||||
lpSrc: LPVOID,
|
lpSrc: LPVOID,
|
||||||
msgId: DWORD,
|
msgId: DWORD,
|
||||||
@@ -1015,6 +1015,7 @@ compat_fn! {
|
|||||||
_dwFlags: DWORD) -> DWORD {
|
_dwFlags: DWORD) -> DWORD {
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED as DWORD); 0
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED as DWORD); 0
|
||||||
}
|
}
|
||||||
|
#[cfg(not(target_vendor = "uwp"))]
|
||||||
pub fn SetThreadStackGuarantee(_size: *mut c_ulong) -> BOOL {
|
pub fn SetThreadStackGuarantee(_size: *mut c_ulong) -> BOOL {
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED as DWORD); 0
|
SetLastError(ERROR_CALL_NOT_IMPLEMENTED as DWORD); 0
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,16 +33,18 @@ pub mod pipe;
|
|||||||
pub mod process;
|
pub mod process;
|
||||||
pub mod rand;
|
pub mod rand;
|
||||||
pub mod rwlock;
|
pub mod rwlock;
|
||||||
pub mod stack_overflow;
|
|
||||||
pub mod thread;
|
pub mod thread;
|
||||||
pub mod thread_local;
|
pub mod thread_local;
|
||||||
pub mod time;
|
pub mod time;
|
||||||
cfg_if::cfg_if! {
|
cfg_if::cfg_if! {
|
||||||
if #[cfg(not(target_vendor = "uwp"))] {
|
if #[cfg(not(target_vendor = "uwp"))] {
|
||||||
pub mod stdio;
|
pub mod stdio;
|
||||||
|
pub mod stack_overflow;
|
||||||
} else {
|
} else {
|
||||||
pub mod stdio_uwp;
|
pub mod stdio_uwp;
|
||||||
|
pub mod stack_overflow_uwp;
|
||||||
pub use self::stdio_uwp as stdio;
|
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() {}
|
||||||
Reference in New Issue
Block a user