https://github.com/Da-Viper updated https://github.com/llvm/llvm-project/pull/129753
>From 2f773debb694f5684664ea47e545027aeb6e33db Mon Sep 17 00:00:00 2001 From: Ezike Ebuka <yerimy...@gmail.com> Date: Wed, 5 Mar 2025 10:32:16 +0000 Subject: [PATCH 1/3] [lldb-dap] Fix: disableASLR launch argument not working. --- .../tools/lldb-dap/Handler/RequestHandler.cpp | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/lldb/tools/lldb-dap/Handler/RequestHandler.cpp b/lldb/tools/lldb-dap/Handler/RequestHandler.cpp index d4030965869a1..816397adb26ad 100644 --- a/lldb/tools/lldb-dap/Handler/RequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/RequestHandler.cpp @@ -31,7 +31,18 @@ MakeArgv(const llvm::ArrayRef<std::string> &strs) { return argv; } -// Both attach and launch take a either a sourcePath or sourceMap +static uint32_t SetLaunchFlag(uint32_t flags, const llvm::json::Object *obj, + llvm::StringRef key, lldb::LaunchFlags mask, + bool default_value) { + if (GetBoolean(obj, key).value_or(default_value)) + flags |= mask; + else + flags &= ~mask; + + return flags; +} + +// Both attach and launch take either a sourcePath or a sourceMap // argument (or neither), from which we need to set the target.source-map. void RequestHandler::SetSourceMapFromArguments( const llvm::json::Object &arguments) const { @@ -173,12 +184,13 @@ RequestHandler::LaunchProcess(const llvm::json::Object &request) const { auto flags = launch_info.GetLaunchFlags(); - if (GetBoolean(arguments, "disableASLR").value_or(true)) - flags |= lldb::eLaunchFlagDisableASLR; - if (GetBoolean(arguments, "disableSTDIO").value_or(false)) - flags |= lldb::eLaunchFlagDisableSTDIO; - if (GetBoolean(arguments, "shellExpandArguments").value_or(false)) - flags |= lldb::eLaunchFlagShellExpandArguments; + flags = SetLaunchFlag(flags, arguments, "disableASLR", + lldb::eLaunchFlagDisableASLR, true); + flags = SetLaunchFlag(flags, arguments, "disableSTDIO", + lldb::eLaunchFlagDisableSTDIO, false); + flags = SetLaunchFlag(flags, arguments, "shellExpandArguments", + lldb::eLaunchFlagShellExpandArguments, false); + const bool detachOnError = GetBoolean(arguments, "detachOnError").value_or(false); launch_info.SetDetachOnError(detachOnError); >From 2486994b4077d333869b0687ee8a85fd5179d504 Mon Sep 17 00:00:00 2001 From: Ezike Ebuka <yerimy...@gmail.com> Date: Wed, 5 Mar 2025 16:58:49 +0000 Subject: [PATCH 2/3] [lldb] [lldb-dap] do not set a flag if it is not in json object. --- lldb/tools/lldb-dap/Handler/RequestHandler.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lldb/tools/lldb-dap/Handler/RequestHandler.cpp b/lldb/tools/lldb-dap/Handler/RequestHandler.cpp index 816397adb26ad..36669a0596d34 100644 --- a/lldb/tools/lldb-dap/Handler/RequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/RequestHandler.cpp @@ -32,12 +32,12 @@ MakeArgv(const llvm::ArrayRef<std::string> &strs) { } static uint32_t SetLaunchFlag(uint32_t flags, const llvm::json::Object *obj, - llvm::StringRef key, lldb::LaunchFlags mask, - bool default_value) { - if (GetBoolean(obj, key).value_or(default_value)) - flags |= mask; - else - flags &= ~mask; + llvm::StringRef key, lldb::LaunchFlags mask) { + if (const auto opt_value = GetBoolean(obj, key)) + if (opt_value.value()) + flags |= mask; + else + flags &= ~mask; return flags; } @@ -185,11 +185,11 @@ RequestHandler::LaunchProcess(const llvm::json::Object &request) const { auto flags = launch_info.GetLaunchFlags(); flags = SetLaunchFlag(flags, arguments, "disableASLR", - lldb::eLaunchFlagDisableASLR, true); + lldb::eLaunchFlagDisableASLR); flags = SetLaunchFlag(flags, arguments, "disableSTDIO", - lldb::eLaunchFlagDisableSTDIO, false); + lldb::eLaunchFlagDisableSTDIO); flags = SetLaunchFlag(flags, arguments, "shellExpandArguments", - lldb::eLaunchFlagShellExpandArguments, false); + lldb::eLaunchFlagShellExpandArguments); const bool detachOnError = GetBoolean(arguments, "detachOnError").value_or(false); >From e5c13128e39c3d24edfa67515b32af8f9fa81e07 Mon Sep 17 00:00:00 2001 From: Ezike Ebuka <yerimy...@gmail.com> Date: Wed, 5 Mar 2025 17:05:14 +0000 Subject: [PATCH 3/3] [lldb] [lldb-dap] fix dangling-else warning --- lldb/tools/lldb-dap/Handler/RequestHandler.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lldb/tools/lldb-dap/Handler/RequestHandler.cpp b/lldb/tools/lldb-dap/Handler/RequestHandler.cpp index 36669a0596d34..dc220bee6fefd 100644 --- a/lldb/tools/lldb-dap/Handler/RequestHandler.cpp +++ b/lldb/tools/lldb-dap/Handler/RequestHandler.cpp @@ -33,11 +33,12 @@ MakeArgv(const llvm::ArrayRef<std::string> &strs) { static uint32_t SetLaunchFlag(uint32_t flags, const llvm::json::Object *obj, llvm::StringRef key, lldb::LaunchFlags mask) { - if (const auto opt_value = GetBoolean(obj, key)) - if (opt_value.value()) + if (const auto opt_value = GetBoolean(obj, key)) { + if (*opt_value) flags |= mask; else flags &= ~mask; + } return flags; } _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits