Changeset 96388 in vbox
- Timestamp:
- Aug 20, 2022 11:08:15 PM (2 years ago)
- Location:
- trunk/src/VBox/Runtime
- Files:
-
- 1 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/Makefile.kmk
r96373 r96388 2082 2082 r3/win/nocrt-startup-dll-win.cpp \ 2083 2083 r3/win/nocrt-startup-common-win.cpp \ 2084 r3/win/nocrt-fatal-write-win.cpp \ 2084 2085 r3/win/nocrt-alloc-win.cpp \ 2085 2086 r3/win/nocrt-RTLogWriteStdErr-win.cpp \ -
trunk/src/VBox/Runtime/common/compiler/vcc/purecall-vcc.cpp
r95915 r96388 29 29 * Header Files * 30 30 *********************************************************************************************************************************/ 31 #include "internal/ iprt.h"31 #include "internal/nocrt.h" 32 32 33 33 #include <iprt/asm.h> 34 #include <iprt/assert.h> 34 #ifndef IPRT_NOCRT_WITHOUT_FATAL_WRITE 35 # include <iprt/assert.h> 36 #endif 35 37 36 38 #include "internal/compiler-vcc.h" … … 39 41 extern "C" int __cdecl _purecall(void) 40 42 { 43 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 41 44 RTAssertMsg2("\n\n!!%p called _purecall!!\n\n", ASMReturnAddress()); 45 #else 46 rtNoCrtFatalWriteBegin(RT_STR_TUPLE("\r\n\r\n!!_purecall called from ")); 47 rtNoCrtFatalWritePtr(ASMReturnAddress()); 48 rtNoCrtFatalWriteEnd(RT_STR_TUPLE("!!\r\n\r\n")); 49 #endif 42 50 RT_BREAKPOINT(); 43 51 return 0; -
trunk/src/VBox/Runtime/common/compiler/vcc/stacksup-vcc.cpp
r96370 r96388 29 29 * Header Files * 30 30 *********************************************************************************************************************************/ 31 #include "internal/ iprt.h"31 #include "internal/nocrt.h" 32 32 33 33 #include <iprt/asm.h> 34 34 #include <iprt/asm-amd64-x86.h> 35 #include <iprt/assert.h> 35 #ifndef IPRT_NOCRT_WITHOUT_FATAL_WRITE 36 # include <iprt/assert.h> 37 #endif 36 38 37 39 #include "internal/compiler-vcc.h" … … 107 109 DECLASM(void) _RTC_StackVarCorrupted(uint8_t *pbFrame, RTC_VAR_DESC_T const *pVar) 108 110 { 111 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 109 112 RTAssertMsg2("\n\n!!Stack corruption!!\n\n" 110 113 "%p LB %#x - %s\n", 111 114 pbFrame + pVar->offFrame, pVar->cbVar, pVar->pszName); 115 #else 116 rtNoCrtFatalWriteBegin(RT_STR_TUPLE("\r\n\r\n!!Stack corruption!!\r\n\r\n")); 117 rtNoCrtFatalWritePtr(pbFrame + pVar->offFrame); 118 rtNoCrtFatalWrite(RT_STR_TUPLE(" LB ")); 119 rtNoCrtFatalWriteX32(pVar->cbVar); 120 rtNoCrtFatalWrite(RT_STR_TUPLE(" - ")); 121 rtNoCrtFatalWriteStr(pVar->pszName); 122 rtNoCrtFatalWriteEnd(RT_STR_TUPLE("\r\n")); 123 #endif 112 124 RT_BREAKPOINT(); 113 125 } … … 116 128 DECLASM(void) _RTC_SecurityCookieMismatch(uintptr_t uCookie) 117 129 { 130 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 118 131 RTAssertMsg2("\n\n!!Stack cookie corruption!!\n\n" 119 132 "expected %p, found %p\n", 120 133 __security_cookie, uCookie); 134 #else 135 rtNoCrtFatalWriteBegin(RT_STR_TUPLE("\r\n\r\n!!Stack cookie corruption!!\r\n\r\n" 136 "expected")); 137 rtNoCrtFatalWritePtr((void *)__security_cookie); 138 rtNoCrtFatalWrite(RT_STR_TUPLE(", found ")); 139 rtNoCrtFatalWritePtr((void *)uCookie); 140 rtNoCrtFatalWriteEnd(RT_STR_TUPLE("\r\n")); 141 #endif 121 142 RT_BREAKPOINT(); 122 143 } … … 126 147 DECLASM(void) _RTC_CheckEspFailed(uintptr_t uEip, uintptr_t uEsp, uintptr_t uEbp) 127 148 { 149 # ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 128 150 RTAssertMsg2("\n\n!!ESP check failed!!\n\n" 129 151 "eip=%p esp=%p ebp=%p\n", 130 152 uEip, uEsp, uEbp); 153 # else 154 rtNoCrtFatalWriteBegin(RT_STR_TUPLE("\r\n\r\n!!ESP check failed!!\r\n\r\n" 155 "eip=")); 156 rtNoCrtFatalWritePtr((void *)uEip); 157 rtNoCrtFatalWrite(RT_STR_TUPLE(" esp=")); 158 rtNoCrtFatalWritePtr((void *)uEsp); 159 rtNoCrtFatalWrite(RT_STR_TUPLE(" ebp=")); 160 rtNoCrtFatalWritePtr((void *)uEbp); 161 rtNoCrtFatalWriteEnd(RT_STR_TUPLE("\r\n")); 162 # endif 131 163 RT_BREAKPOINT(); 132 164 } … … 136 168 extern "C" void __cdecl _RTC_UninitUse(const char *pszVar) 137 169 { 170 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 138 171 RTAssertMsg2("\n\n!!Used uninitialized variable %s at %p!!\n\n", 139 172 pszVar ? pszVar : "", ASMReturnAddress()); 173 #else 174 rtNoCrtFatalWriteBegin(RT_STR_TUPLE("\r\n\r\n!!Used uninitialized variable ")); 175 rtNoCrtFatalWriteStr(pszVar); 176 rtNoCrtFatalWrite(RT_STR_TUPLE(" at ")); 177 rtNoCrtFatalWritePtr(ASMReturnAddress()); 178 rtNoCrtFatalWriteEnd(RT_STR_TUPLE("!!\r\n\r\n")); 179 #endif 140 180 RT_BREAKPOINT(); 141 181 } … … 159 199 else 160 200 { 201 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 161 202 RTAssertMsg2("\n\n!!Stack corruption (alloca)!!\n\n" 162 203 "%p LB %#x\n", 163 204 pHead, pHead->cb); 205 #else 206 rtNoCrtFatalWriteBegin(RT_STR_TUPLE("\r\n\r\n!!Stack corruption (alloca)!!\r\n\r\n")); 207 rtNoCrtFatalWritePtr(pHead); 208 rtNoCrtFatalWrite(RT_STR_TUPLE(" LB ")); 209 rtNoCrtFatalWriteX64(pHead->cb); 210 rtNoCrtFatalWriteEnd(RT_STR_TUPLE("\r\n")); 211 #endif 164 212 RT_BREAKPOINT(); 165 213 } -
trunk/src/VBox/Runtime/common/string/strformatnum.cpp
r94300 r96388 33 33 #include "internal/iprt.h" 34 34 35 #include <iprt/assert.h>36 35 #include <iprt/errcore.h> 37 36 #include "internal/string.h" -
trunk/src/VBox/Runtime/include/internal/nocrt.h
r96052 r96388 74 74 PRTNOCRTTHREADDATA rtNoCrtThreadDataGet(void); 75 75 76 #ifdef IN_RING3 77 void rtNoCrtFatalWriteBegin(const char *pchMsg, size_t cchMsg); 78 void rtNoCrtFatalWrite(const char *pchMsg, size_t cchMsg); 79 void rtNoCrtFatalWriteEnd(const char *pchMsg, size_t cchMsg); 80 void rtNoCrtFatalWriteStr(const char *pszMsg); 81 void rtNoCrtFatalWritePtr(void const *pv); 82 void rtNoCrtFatalWriteX64(uint64_t uValue); 83 void rtNoCrtFatalWriteX32(uint32_t uValue); 84 void rtNoCrtFatalWriteRc(int rc); 85 void rtNoCrtFatalWriteWinRc(uint32_t rc); 86 87 void rtNoCrtFatalMsg(const char *pchMsg, size_t cchMsg); 88 void rtNoCrtFatalMsgWithRc(const char *pchMsg, size_t cchMsg, int rc); 89 #endif 90 76 91 77 92 #endif /* !IPRT_INCLUDED_INTERNAL_nocrt_h */ -
trunk/src/VBox/Runtime/r3/win/nocrt-mainCRTStartup-win.asm
r95831 r96388 28 28 %include "iprt/asmdefs.mac" 29 29 30 extern CustomMainEntrypoint30 extern NAME(CustomMainEntrypoint) 31 31 BEGINPROC mainCRTStartup 32 jmp CustomMainEntrypoint32 jmp NAME(CustomMainEntrypoint) 33 33 ENDPROC mainCRTStartup 34 34 -
trunk/src/VBox/Runtime/r3/win/nocrt-startup-common-win.cpp
r95870 r96388 29 29 * Header Files * 30 30 *********************************************************************************************************************************/ 31 #include "internal/ iprt.h"31 #include "internal/nocrt.h" 32 32 #include "internal/process.h" 33 33 34 34 #include <iprt/nt/nt-and-windows.h> 35 #ifndef IPRT_NOCRT_WITHOUT_FATAL_WRITE 36 # include <iprt/assert.h> 37 #endif 35 38 #include <iprt/getopt.h> 36 39 #include <iprt/message.h> … … 71 74 } 72 75 else 76 { 77 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 73 78 RTMsgError("initProcExecPath: RTUtf16ToUtf8Ex failed: %Rrc\n", rc); 79 #else 80 rtNoCrtFatalMsgWithRc(RT_STR_TUPLE("initProcExecPath: RTUtf16ToUtf8Ex failed: "), rc); 81 #endif 82 } 74 83 } 75 84 else 85 { 86 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 76 87 RTMsgError("initProcExecPath: GetModuleFileNameW failed: %Rhrc\n", GetLastError()); 88 #else 89 rtNoCrtFatalWriteBegin(RT_STR_TUPLE("initProcExecPath: GetModuleFileNameW failed: ")); 90 rtNoCrtFatalWriteWinRc(GetLastError()); 91 rtNoCrtFatalWrite(RT_STR_TUPLE("\r\n")); 92 #endif 93 } 77 94 } 78 95 -
trunk/src/VBox/Runtime/r3/win/nocrt-startup-exe-win.cpp
r95892 r96388 31 31 * Header Files * 32 32 *********************************************************************************************************************************/ 33 #include "internal/ iprt.h"33 #include "internal/nocrt.h" 34 34 #include "internal/process.h" 35 35 … … 98 98 * Get and convert the command line to argc/argv format. 99 99 */ 100 rcExit = RTEXITCODE_INIT; 100 101 UNICODE_STRING const *pCmdLine = pPeb->ProcessParameters ? &pPeb->ProcessParameters->CommandLine : NULL; 101 102 if (pCmdLine) … … 118 119 } 119 120 else 120 rcExit = RTMsgErrorExitFailure("Error parsing command line: %Rrc\n", rc); 121 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 122 RTMsgError("Error parsing command line: %Rrc\n", rc); 123 #else 124 rtNoCrtFatalMsgWithRc(RT_STR_TUPLE("Error parsing command line: "), rc); 125 #endif 121 126 } 122 127 else 123 rcExit = RTMsgErrorExitFailure("Failed to convert command line to UTF-8: %Rrc\n", rc); 128 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 129 RTMsgError("Failed to convert command line to UTF-8: %Rrc\n", rc); 130 #else 131 rtNoCrtFatalMsgWithRc(RT_STR_TUPLE("Failed to convert command line to UTF-8: "), rc); 132 #endif 124 133 } 125 134 else 126 rcExit = RTMsgErrorExitFailure("No command line\n"); 135 #ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 136 RTMsgError("No command line\n"); 137 #else 138 rtNoCrtFatalMsg(RT_STR_TUPLE("No command line\r\n")); 139 #endif 127 140 rtTerminateProcess(rcExit, true /*fDoAtExit*/); 128 141 } … … 130 143 else 131 144 { 145 # ifdef IPRT_NOCRT_WITHOUT_FATAL_WRITE 132 146 RTMsgError("A C static initializor failed (%d)\n", rcExit); 147 # else 148 rtNoCrtFatalWriteBegin(RT_STR_TUPLE("A C static initializor failed (")); 149 rtNoCrtFatalWriteWinRc(rcExit); 150 rtNoCrtFatalWriteEnd(RT_STR_TUPLE("\r\n")); 151 # endif 133 152 rtTerminateProcess(rcExit, false /*fDoAtExit*/); 134 153 }
Note:
See TracChangeset
for help on using the changeset viewer.