ReactOS 0.4.15-dev-7934-g1dc8d80
rtcapi.h File Reference
#include <crtdefs.h>
Include dependency graph for rtcapi.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _RTC_vardesc
 
struct  _RTC_framedesc
 
struct  _RTC_ALLOCA_NODE
 

Macros

#define _RTCINTERNAL_DEPRECATED
 
#define _RTC_ERRTYPE_IGNORE   -1
 
#define _RTC_ERRTYPE_ASK   -2
 

Typedefs

typedef enum _RTC_ErrorNumber _RTC_ErrorNumber
 
typedef int(__cdecl_RTC_error_fn) (int, const char *, int, const char *, const char *,...)
 
typedef int(__cdecl_RTC_error_fnW) (int, const wchar_t *, int, const wchar_t *, const wchar_t *,...)
 
typedef struct _RTC_vardesc _RTC_vardesc
 
typedef struct _RTC_framedesc _RTC_framedesc
 
typedef struct _RTC_ALLOCA_NODE _RTC_ALLOCA_NODE
 

Enumerations

enum  _RTC_ErrorNumber {
  _RTC_CHKSTK = 0 , _RTC_CVRT_LOSS_INFO , _RTC_CORRUPT_STACK , _RTC_UNINIT_LOCAL_USE ,
  _RTC_CORRUPTED_ALLOCA , _RTC_ILLEGAL
}
 

Functions

int __cdecl _RTC_NumErrors (void)
 
const char *__cdecl _RTC_GetErrDesc (_RTC_ErrorNumber _Errnum)
 
int __cdecl _RTC_SetErrorType (_RTC_ErrorNumber _Errnum, int _ErrType)
 
_RTC_error_fn __cdecl _RTC_SetErrorFunc (_RTC_error_fn)
 
_RTC_error_fnW __cdecl _RTC_SetErrorFuncW (_RTC_error_fnW)
 
void __cdecl _RTC_Initialize (void)
 
void __cdecl _RTC_Terminate (void)
 
_RTC_error_fn __cdecl _CRT_RTC_INIT (void *_Res0, void **_Res1, int _Res2, int _Res3, int _Res4)
 
_RTC_error_fnW __cdecl _CRT_RTC_INITW (void *_Res0, void **_Res1, int _Res2, int _Res3, int _Res4)
 
char __fastcall _RTC_Check_2_to_1 (short _Src)
 
char __fastcall _RTC_Check_4_to_1 (int _Src)
 
__MINGW_EXTENSION char __fastcall _RTC_Check_8_to_1 (__int64 _Src)
 
short __fastcall _RTC_Check_4_to_2 (int _Src)
 
__MINGW_EXTENSION short __fastcall _RTC_Check_8_to_2 (__int64 _Src)
 
__MINGW_EXTENSION int __fastcall _RTC_Check_8_to_4 (__int64 _Src)
 
void __fastcall _RTC_CheckStackVars (void *_Esp, _RTC_framedesc *_Fd)
 
void __fastcall _RTC_CheckStackVars2 (void *_Esp, _RTC_framedesc *_Fd, _RTC_ALLOCA_NODE *_AllocaList)
 
void __fastcall _RTC_AllocaHelper (_RTC_ALLOCA_NODE *_PAllocaBase, size_t _CbSize, _RTC_ALLOCA_NODE **_PAllocaInfoList)
 
void __cdecl _RTC_UninitUse (const char *_Varname)
 
void __cdecl _RTC_Shutdown (void)
 
void __cdecl _RTC_InitBase (void)
 

Macro Definition Documentation

◆ _RTC_ERRTYPE_ASK

#define _RTC_ERRTYPE_ASK   -2

Definition at line 24 of file rtcapi.h.

◆ _RTC_ERRTYPE_IGNORE

#define _RTC_ERRTYPE_IGNORE   -1

Definition at line 23 of file rtcapi.h.

◆ _RTCINTERNAL_DEPRECATED

#define _RTCINTERNAL_DEPRECATED

This file has no copyright assigned and is placed in the Public Domain. This file is part of the w64 mingw-runtime package. No warranty is given; refer to the file DISCLAIMER within this package.

Definition at line 13 of file rtcapi.h.

Typedef Documentation

◆ _RTC_ALLOCA_NODE

◆ _RTC_error_fn

typedef int(__cdecl * _RTC_error_fn) (int, const char *, int, const char *, const char *,...)

Definition at line 26 of file rtcapi.h.

◆ _RTC_error_fnW

typedef int(__cdecl * _RTC_error_fnW) (int, const wchar_t *, int, const wchar_t *, const wchar_t *,...)

Definition at line 27 of file rtcapi.h.

◆ _RTC_ErrorNumber

◆ _RTC_framedesc

◆ _RTC_vardesc

Enumeration Type Documentation

◆ _RTC_ErrorNumber

Enumerator
_RTC_CHKSTK 
_RTC_CVRT_LOSS_INFO 
_RTC_CORRUPT_STACK 
_RTC_UNINIT_LOCAL_USE 
_RTC_CORRUPTED_ALLOCA 
_RTC_ILLEGAL 

Definition at line 19 of file rtcapi.h.

19 {
_RTC_ErrorNumber
Definition: rtcapi.h:19
@ _RTC_CORRUPTED_ALLOCA
Definition: rtcapi.h:20
@ _RTC_UNINIT_LOCAL_USE
Definition: rtcapi.h:20
@ _RTC_CORRUPT_STACK
Definition: rtcapi.h:20
@ _RTC_CVRT_LOSS_INFO
Definition: rtcapi.h:20
@ _RTC_CHKSTK
Definition: rtcapi.h:20
@ _RTC_ILLEGAL
Definition: rtcapi.h:20

Function Documentation

◆ _CRT_RTC_INIT()

_RTC_error_fn __cdecl _CRT_RTC_INIT ( void _Res0,
void **  _Res1,
int  _Res2,
int  _Res3,
int  _Res4 
)

◆ _CRT_RTC_INITW()

_RTC_error_fnW __cdecl _CRT_RTC_INITW ( void _Res0,
void **  _Res1,
int  _Res2,
int  _Res3,
int  _Res4 
)

Definition at line 65 of file mscmain.c.

71{
72 return &Catch_RTC_Failure;
73}
int __cdecl Catch_RTC_Failure(int errType, const wchar_t *file, int line, const wchar_t *module, const wchar_t *format,...)
Definition: mscmain.c:42

Referenced by _RTC_InitBase().

◆ _RTC_AllocaHelper()

void __fastcall _RTC_AllocaHelper ( _RTC_ALLOCA_NODE _PAllocaBase,
size_t  _CbSize,
_RTC_ALLOCA_NODE **  _PAllocaInfoList 
)

Definition at line 192 of file rtcapi.c.

196{
197 unsigned long i;
198
199 /* Check if we got any allocation */
200 if ((_PAllocaBase != 0) &&
201 (_CbSize != 0) &&
202 (_PAllocaInfoList != 0))
203 {
204 /* Mark the whole range */
205 char *guard = (char*)_PAllocaBase;
206 for (i = 0; i < _CbSize; i++)
207 {
208 guard[i] = 0xCC;
209 }
210
211 /* Initialize the alloca base frame */
212 _PAllocaBase->allocaSize = _CbSize;
213
214 /* Insert this frame into the alloca list */
215 _PAllocaBase->next = *_PAllocaInfoList;
216 *_PAllocaInfoList = _PAllocaBase;
217 }
218}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
struct _RTC_ALLOCA_NODE * next
Definition: rtcapi.h:54
size_t allocaSize
Definition: rtcapi.h:58

◆ _RTC_Check_2_to_1()

char __fastcall _RTC_Check_2_to_1 ( short  _Src)

◆ _RTC_Check_4_to_1()

char __fastcall _RTC_Check_4_to_1 ( int  _Src)

◆ _RTC_Check_4_to_2()

short __fastcall _RTC_Check_4_to_2 ( int  _Src)

◆ _RTC_Check_8_to_1()

__MINGW_EXTENSION char __fastcall _RTC_Check_8_to_1 ( __int64  _Src)

◆ _RTC_Check_8_to_2()

__MINGW_EXTENSION short __fastcall _RTC_Check_8_to_2 ( __int64  _Src)

◆ _RTC_Check_8_to_4()

__MINGW_EXTENSION int __fastcall _RTC_Check_8_to_4 ( __int64  _Src)

◆ _RTC_CheckStackVars()

void __fastcall _RTC_CheckStackVars ( void _Esp,
_RTC_framedesc _Fd 
)

Definition at line 129 of file rtcapi.c.

132{
133 int i, *guard1, *guard2;
134
135 /* Loop all variables in the descriptor */
136 for (i = 0; i < _Fd->varCount; i++)
137 {
138 /* Get the 2 guards below and above the variable */
139 guard1 = (int*)((char*)_Esp + _Fd->variables[i].addr - sizeof(*guard1));
140 guard2 = (int*)((char*)_Esp + _Fd->variables[i].addr +_Fd->variables[i].size);
141
142 /* Check if they contain the guard bytes */
143 if ((*guard1 != 0xCCCCCCCC) || (*guard2 != 0xCCCCCCCC))
144 {
146 L"unknown file",
147 -1,
148 L"unknown module",
149 L"Stack corruption near '%s'\n",
150 _Fd->variables[i].name);
151 }
152 }
153}
#define L(x)
Definition: ntvdm.h:50
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:50
int varCount
Definition: rtcapi.h:46
_RTC_vardesc * variables
Definition: rtcapi.h:47
char * name
Definition: rtcapi.h:42
int size
Definition: rtcapi.h:41
int addr
Definition: rtcapi.h:40

Referenced by _RTC_CheckStackVars2().

◆ _RTC_CheckStackVars2()

void __fastcall _RTC_CheckStackVars2 ( void _Esp,
_RTC_framedesc _Fd,
_RTC_ALLOCA_NODE _AllocaList 
)

Definition at line 157 of file rtcapi.c.

161{
163 int *guard;
164
165 /* Process normal variables */
166 _RTC_CheckStackVars(_Esp, _Fd);
167
168 /* Process the alloca list */
169 for (current = _AllocaList; current != 0; current = current->next)
170 {
171 /* Get the upper guard */
172 guard = (int*)((char*)current + current->allocaSize - sizeof(*guard));
173
174 /* Check if all guard locations are still ok */
175 if ((current->guard1 != 0xCCCCCCCC) ||
176 (current->guard2[0] != 0xCCCCCCCC) ||
177 (current->guard2[1] != 0xCCCCCCCC) ||
178 (current->guard2[2] != 0xCCCCCCCC) ||
179 (*guard != 0xCCCCCCCC))
180 {
182 L"unknown file",
183 -1,
184 L"unknown module",
185 L"Stack corruption in alloca frame\n");
186 }
187 }
188}
struct task_struct * current
Definition: linux.c:32
void __fastcall _RTC_CheckStackVars(void *_Esp, _RTC_framedesc *_Fd)
Definition: rtcapi.c:129

◆ _RTC_GetErrDesc()

const char *__cdecl _RTC_GetErrDesc ( _RTC_ErrorNumber  _Errnum)

Definition at line 44 of file rtcuserapi.c.

46{
47 if (_Errnum < (sizeof(_RTC_ErrorDescription) / sizeof(_RTC_ErrorDescription[0])))
48 {
49 return _RTC_ErrorDescription[_Errnum];
50 }
51
52 return "Invalid/Unknown error.";
53}
static char * _RTC_ErrorDescription[]
Definition: rtcuserapi.c:24

◆ _RTC_InitBase()

void __cdecl _RTC_InitBase ( void  )

Definition at line 69 of file rtcapi.c.

70{
71 static char initialized = 0;
72 _RTC_error_fnW errorFunc;
73
74 if (!initialized)
75 {
76 errorFunc = _CRT_RTC_INITW(0, 0, 0, 1, 0);
77 _RTC_SetErrorFuncW(errorFunc);
78 initialized = 1;
79 }
80}
_RTC_error_fnW __cdecl _RTC_SetErrorFuncW(_RTC_error_fnW)
Definition: rtcuserapi.c:78
_RTC_error_fnW __cdecl _CRT_RTC_INITW(void *_Res0, void **_Res1, int _Res2, int _Res3, int _Res4)
Definition: mscmain.c:65
int(__cdecl * _RTC_error_fnW)(int, const wchar_t *, int, const wchar_t *, const wchar_t *,...)
Definition: rtcapi.h:27
static BOOL initialized
Definition: syslog.c:39

Referenced by _RTC_Initialize().

◆ _RTC_Initialize()

void __cdecl _RTC_Initialize ( void  )

Definition at line 91 of file rtcapi.c.

92{
93 /* Usually this function would walk an array of function pointers and call
94 each of these, like done with global ctors, but since these are currently
95 only _RTC_InitBase, we simply call that function once. */
97}
void __cdecl _RTC_InitBase(void)
Definition: rtcapi.c:69

Referenced by __main().

◆ _RTC_NumErrors()

int __cdecl _RTC_NumErrors ( void  )

Definition at line 35 of file rtcuserapi.c.

36{
37 /* Not supported yet */
39 return 0;
40}
void __cdecl __debugbreak(void)
Definition: intrin_ppc.h:698

◆ _RTC_SetErrorFunc()

_RTC_error_fn __cdecl _RTC_SetErrorFunc ( _RTC_error_fn  new_fn)

Definition at line 68 of file rtcuserapi.c.

70{
71 /* Not supported yet */
73 return 0;
74}

◆ _RTC_SetErrorFuncW()

_RTC_error_fnW __cdecl _RTC_SetErrorFuncW ( _RTC_error_fnW  new_fn)

Definition at line 78 of file rtcuserapi.c.

79{
80 _RTC_error_fnW old_fn;
81
82 /* Get the current error func */
83 old_fn = _RTC_pErrorFuncW;
84
85 /* Set the new function or reset when 0 was passed */
86 _RTC_pErrorFuncW = new_fn ? new_fn : _RTC_DefaultErrorFuncW;
87
88 /* Return the old error func, or 0, if none was set */
89 return old_fn != _RTC_DefaultErrorFuncW ? old_fn : 0;
90}
int __cdecl _RTC_DefaultErrorFuncW(int errType, const wchar_t *file, int line, const wchar_t *module, const wchar_t *format,...)
Definition: rtcapi.c:37
_RTC_error_fnW _RTC_pErrorFuncW
Definition: rtcapi.c:50

Referenced by _RTC_InitBase().

◆ _RTC_SetErrorType()

int __cdecl _RTC_SetErrorType ( _RTC_ErrorNumber  _Errnum,
int  _ErrType 
)

Definition at line 57 of file rtcuserapi.c.

60{
61 /* Not supported yet */
63 return 0;
64}

◆ _RTC_Shutdown()

void __cdecl _RTC_Shutdown ( void  )

Definition at line 84 of file rtcapi.c.

85{
87}

◆ _RTC_Terminate()

void __cdecl _RTC_Terminate ( void  )

◆ _RTC_UninitUse()

void __cdecl _RTC_UninitUse ( const char _Varname)

Definition at line 116 of file rtcapi.c.

118{
120 L"unknown file",
121 -1,
122 L"unknown module",
123 L"Use of uninitialized variable %S!\n",
124 _Varname);
125}