aboutsummaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
diff options
context:
space:
mode:
authorFangrui Song <i@maskray.me>2023-07-22 16:45:32 -0700
committerFangrui Song <i@maskray.me>2023-07-22 16:45:32 -0700
commit5d66f9fd8e97c05a5dba317d3ad2566e61ead1ff (patch)
tree5252a6abab0defad569b038419c1c649c95234e8 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
parent4c73549ebf171c1fa8039dc97e8fa260e824aa96 (diff)
downloadllvm-5d66f9fd8e97c05a5dba317d3ad2566e61ead1ff.zip
llvm-5d66f9fd8e97c05a5dba317d3ad2566e61ead1ff.tar.gz
llvm-5d66f9fd8e97c05a5dba317d3ad2566e61ead1ff.tar.bz2
[gdb-remote] Sort entries in QEnvironment*
Similar to ae316ac66ffff430997e342772fc4629c1acece0 for QEMU_(UN)SET_ENV. The iteration order of StringMap is not guaranteed to be deterministic. Sort the entries to give deterministic packets for the tests added by D108018.
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp')
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
index 36e046d..c650312 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
@@ -35,6 +35,7 @@
#include "lldb/Host/Config.h"
#include "lldb/Utility/StringExtractorGDBRemote.h"
+#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Support/JSON.h"
@@ -826,8 +827,12 @@ llvm::Error GDBRemoteCommunicationClient::LaunchProcess(const Args &args) {
}
int GDBRemoteCommunicationClient::SendEnvironment(const Environment &env) {
- for (const auto &KV : env) {
- int r = SendEnvironmentPacket(Environment::compose(KV).c_str());
+ llvm::SmallVector<std::pair<llvm::StringRef, llvm::StringRef>, 0> vec;
+ for (const auto &kv : env)
+ vec.emplace_back(kv.first(), kv.second);
+ llvm::sort(vec, llvm::less_first());
+ for (const auto &[k, v] : vec) {
+ int r = SendEnvironmentPacket((k + "=" + v).str().c_str());
if (r != 0)
return r;
}