mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-09 17:43:57 +00:00
Fix jModulesInfo handling for cross-path syntax debugging
We were sending paths with the host path separator, which meant the remote target did not understand our packets correctly. llvm-svn: 291103
This commit is contained in:
parent
f31c9d27a4
commit
763f1c453b
@ -3246,7 +3246,7 @@ GDBRemoteCommunicationClient::GetModulesInfo(
|
|||||||
JSONObject::SP module_sp = std::make_shared<JSONObject>();
|
JSONObject::SP module_sp = std::make_shared<JSONObject>();
|
||||||
module_array_sp->AppendObject(module_sp);
|
module_array_sp->AppendObject(module_sp);
|
||||||
module_sp->SetObject(
|
module_sp->SetObject(
|
||||||
"file", std::make_shared<JSONString>(module_file_spec.GetPath()));
|
"file", std::make_shared<JSONString>(module_file_spec.GetPath(false)));
|
||||||
module_sp->SetObject("triple",
|
module_sp->SetObject("triple",
|
||||||
std::make_shared<JSONString>(triple.getTriple()));
|
std::make_shared<JSONString>(triple.getTriple()));
|
||||||
}
|
}
|
||||||
|
@ -199,14 +199,22 @@ TEST_F(GDBRemoteCommunicationClientTest, GetModulesInfo) {
|
|||||||
|
|
||||||
FileSpec file_specs[] = {
|
FileSpec file_specs[] = {
|
||||||
FileSpec("/foo/bar.so", false, FileSpec::ePathSyntaxPosix),
|
FileSpec("/foo/bar.so", false, FileSpec::ePathSyntaxPosix),
|
||||||
FileSpec("/foo/baz.so", false, FileSpec::ePathSyntaxPosix)};
|
FileSpec("/foo/baz.so", false, FileSpec::ePathSyntaxPosix),
|
||||||
|
|
||||||
|
// This is a bit dodgy but we currently depend on GetModulesInfo not
|
||||||
|
// performing denormalization. It can go away once the users
|
||||||
|
// (DynamicLoaderPOSIXDYLD, at least) correctly set the path syntax for
|
||||||
|
// the FileSpecs they create.
|
||||||
|
FileSpec("/foo/baw.so", false, FileSpec::ePathSyntaxWindows),
|
||||||
|
};
|
||||||
std::future<llvm::Optional<std::vector<ModuleSpec>>> async_result =
|
std::future<llvm::Optional<std::vector<ModuleSpec>>> async_result =
|
||||||
std::async(std::launch::async,
|
std::async(std::launch::async,
|
||||||
[&] { return client.GetModulesInfo(file_specs, triple); });
|
[&] { return client.GetModulesInfo(file_specs, triple); });
|
||||||
HandlePacket(
|
HandlePacket(
|
||||||
server, "jModulesInfo:["
|
server, "jModulesInfo:["
|
||||||
R"({"file":"/foo/bar.so","triple":"i386-pc-linux"},)"
|
R"({"file":"/foo/bar.so","triple":"i386-pc-linux"},)"
|
||||||
R"({"file":"/foo/baz.so","triple":"i386-pc-linux"}])",
|
R"({"file":"/foo/baz.so","triple":"i386-pc-linux"},)"
|
||||||
|
R"({"file":"/foo/baw.so","triple":"i386-pc-linux"}])",
|
||||||
R"([{"uuid":"404142434445464748494a4b4c4d4e4f","triple":"i386-pc-linux",)"
|
R"([{"uuid":"404142434445464748494a4b4c4d4e4f","triple":"i386-pc-linux",)"
|
||||||
R"("file_path":"/foo/bar.so","file_offset":0,"file_size":1234}]])");
|
R"("file_path":"/foo/bar.so","file_offset":0,"file_size":1234}]])");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user