diff --git a/.vscode/launch.json b/.vscode/launch.json index b51c1770..1a908616 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -37,8 +37,16 @@ "type": "cppdbg", "program": "${workspaceFolder}/_Build/vscode-clang/kyty_emulator", "cwd": "${workspaceFolder}/_Build/vscode-clang", + "externalConsole": false, "MIMode": "gdb", - "miDebuggerPath": "/usr/bin/gdb" + "miDebuggerPath": "/usr/bin/gdb", + "setupCommands": [ + { + "description": "Pass Kyty's internal signals to its handlers", + "text": "handle SIG37 SIGSEGV SIGBUS SIGILL nostop noprint pass", + "ignoreFailures": false + } + ] } }, { @@ -49,7 +57,14 @@ "linux": { "type": "cppdbg", "MIMode": "gdb", - "miDebuggerPath": "/usr/bin/gdb" + "miDebuggerPath": "/usr/bin/gdb", + "setupCommands": [ + { + "description": "Pass Kyty's internal signals to its handlers", + "text": "handle SIG37 SIGSEGV SIGBUS SIGILL nostop noprint pass", + "ignoreFailures": false + } + ] } } ] diff --git a/src/libs/libC.cpp b/src/libs/libC.cpp index 022229fe..4fa90741 100644 --- a/src/libs/libC.cpp +++ b/src/libs/libC.cpp @@ -327,25 +327,8 @@ static KYTY_SYSV_ABI int setenv(const char* name, const char* value, int overwri return -1; } - if (overwrite == 0 && std::getenv(name) != nullptr) { - return 0; - } - -#if KYTY_PLATFORM == KYTY_PLATFORM_WINDOWS - const auto ret = ::_putenv_s(name, value); - if (ret != 0) { - *Posix::GetErrorAddr() = ret; - return -1; - } + // Guest environment changes must not leak into emulator host libraries. return 0; -#else - const auto ret = ::setenv(name, value, overwrite); - if (ret != 0) { - *Posix::GetErrorAddr() = errno; - return -1; - } - return 0; -#endif } static KYTY_SYSV_ABI int64_t libc_time(int64_t* timer) {