summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
diff options
context:
space:
mode:
authorZachary Turner <zturner@google.com>2016-08-29 19:58:14 +0000
committerZachary Turner <zturner@google.com>2016-08-29 19:58:14 +0000
commit54695a339f5d4f336865a564ab539ff1b5743223 (patch)
tree8613fa198a50f1f645644ecf602ec33a2159c606 /lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
parent8b4a30584a8e34893d3ded7923479bfc89b45f40 (diff)
downloadbcm5719-llvm-54695a339f5d4f336865a564ab539ff1b5743223.tar.gz
bcm5719-llvm-54695a339f5d4f336865a564ab539ff1b5743223.zip
Convert GetNameColonValue to return StringRefs.
StringExtractor::GetNameColonValue() looks for a substring of the form "<name>:<value>" and returns <name> and <value> to the caller. This results in two unnecessary string copies, since the name and value are not translated in any way and simply returned as-is. By converting this to return StringRefs we can get rid of hundreds of string copies. llvm-svn: 280000
Diffstat (limited to 'lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp')
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp383
1 files changed, 176 insertions, 207 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
index 5f766a7fc38..ebeba059f36 100644
--- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
@@ -41,6 +41,8 @@
#include "ProcessGDBRemoteLog.h"
#include "lldb/Host/Config.h"
+#include "llvm/ADT/StringSwitch.h"
+
#if defined (HAVE_LIBCOMPRESSION)
#include <compression.h>
#endif
@@ -1144,27 +1146,21 @@ GDBRemoteCommunicationClient::GetGDBServerVersion()
{
if (response.IsNormalResponse())
{
- std::string name;
- std::string value;
+ llvm::StringRef name, value;
bool success = false;
while (response.GetNameColonValue(name, value))
{
- if (name.compare("name") == 0)
+ if (name.equals("name"))
{
success = true;
- m_gdb_server_name.swap(value);
+ m_gdb_server_name = value;
}
- else if (name.compare("version") == 0)
+ else if (name.equals("version"))
{
- size_t dot_pos = value.find('.');
- if (dot_pos != std::string::npos)
- value[dot_pos] = '\0';
- const uint32_t version = StringConvert::ToUInt32(value.c_str(), UINT32_MAX, 0);
- if (version != UINT32_MAX)
- {
+ llvm::StringRef major, minor;
+ std::tie(major, minor) = value.split('.');
+ if (!major.getAsInteger(0, m_gdb_server_version))
success = true;
- m_gdb_server_version = version;
- }
}
}
if (success)
@@ -1322,8 +1318,8 @@ GDBRemoteCommunicationClient::GetHostInfo (bool force)
{
if (response.IsNormalResponse())
{
- std::string name;
- std::string value;
+ llvm::StringRef name;
+ llvm::StringRef value;
uint32_t cpu = LLDB_INVALID_CPUTYPE;
uint32_t sub = 0;
std::string arch_name;
@@ -1332,117 +1328,103 @@ GDBRemoteCommunicationClient::GetHostInfo (bool force)
std::string triple;
std::string distribution_id;
uint32_t pointer_byte_size = 0;
- StringExtractor extractor;
ByteOrder byte_order = eByteOrderInvalid;
uint32_t num_keys_decoded = 0;
while (response.GetNameColonValue(name, value))
{
- if (name.compare("cputype") == 0)
+ if (name.equals("cputype"))
{
// exception type in big endian hex
- cpu = StringConvert::ToUInt32 (value.c_str(), LLDB_INVALID_CPUTYPE, 0);
- if (cpu != LLDB_INVALID_CPUTYPE)
+ if (!value.getAsInteger(0, cpu))
++num_keys_decoded;
}
- else if (name.compare("cpusubtype") == 0)
+ else if (name.equals("cpusubtype"))
{
// exception count in big endian hex
- sub = StringConvert::ToUInt32 (value.c_str(), 0, 0);
- if (sub != 0)
+ if (!value.getAsInteger(0, sub))
++num_keys_decoded;
}
- else if (name.compare("arch") == 0)
+ else if (name.equals("arch"))
{
- arch_name.swap (value);
+ arch_name = value;
++num_keys_decoded;
}
- else if (name.compare("triple") == 0)
+ else if (name.equals("triple"))
{
- extractor.GetStringRef ().swap (value);
- extractor.SetFilePos(0);
+ StringExtractor extractor(value);
extractor.GetHexByteString (triple);
++num_keys_decoded;
}
- else if (name.compare ("distribution_id") == 0)
+ else if (name.equals("distribution_id"))
{
- extractor.GetStringRef ().swap (value);
- extractor.SetFilePos (0);
+ StringExtractor extractor(value);
extractor.GetHexByteString (distribution_id);
++num_keys_decoded;
}
- else if (name.compare("os_build") == 0)
+ else if (name.equals("os_build"))
{
- extractor.GetStringRef().swap(value);
- extractor.SetFilePos(0);
+ StringExtractor extractor(value);
extractor.GetHexByteString (m_os_build);
++num_keys_decoded;
}
- else if (name.compare("hostname") == 0)
+ else if (name.equals("hostname"))
{
- extractor.GetStringRef().swap(value);
- extractor.SetFilePos(0);
+ StringExtractor extractor(value);
extractor.GetHexByteString (m_hostname);
++num_keys_decoded;
}
- else if (name.compare("os_kernel") == 0)
+ else if (name.equals("os_kernel"))
{
- extractor.GetStringRef().swap(value);
- extractor.SetFilePos(0);
+ StringExtractor extractor(value);
extractor.GetHexByteString (m_os_kernel);
++num_keys_decoded;
}
- else if (name.compare("ostype") == 0)
+ else if (name.equals("ostype"))
{
- os_name.swap (value);
+ os_name = value;
++num_keys_decoded;
}
- else if (name.compare("vendor") == 0)
+ else if (name.equals("vendor"))
{
- vendor_name.swap(value);
+ vendor_name = value;
++num_keys_decoded;
}
- else if (name.compare("endian") == 0)
+ else if (name.equals("endian"))
{
- ++num_keys_decoded;
- if (value.compare("little") == 0)
- byte_order = eByteOrderLittle;
- else if (value.compare("big") == 0)
- byte_order = eByteOrderBig;
- else if (value.compare("pdp") == 0)
- byte_order = eByteOrderPDP;
- else
- --num_keys_decoded;
+ byte_order = llvm::StringSwitch<lldb::ByteOrder>(value)
+ .Case("little", eByteOrderLittle)
+ .Case("big", eByteOrderBig)
+ .Case("pdp", eByteOrderPDP)
+ .Default(eByteOrderInvalid);
+ if (byte_order != eByteOrderInvalid)
+ ++num_keys_decoded;
}
- else if (name.compare("ptrsize") == 0)
+ else if (name.equals("ptrsize"))
{
- pointer_byte_size = StringConvert::ToUInt32 (value.c_str(), 0, 0);
- if (pointer_byte_size != 0)
+ if (!value.getAsInteger(0, pointer_byte_size))
++num_keys_decoded;
}
- else if ((name.compare("os_version") == 0) ||
- (name.compare("version") == 0)) // Older debugserver binaries used the "version" key instead of "os_version"...
+ else if (name.equals("os_version") || name.equals("version")) // Older debugserver binaries used the
+ // "version" key instead of
+ // "os_version"...
{
- Args::StringToVersion (value.c_str(),
- m_os_version_major,
- m_os_version_minor,
- m_os_version_update);
+ Args::StringToVersion(value.str().c_str(), m_os_version_major, m_os_version_minor,
+ m_os_version_update);
if (m_os_version_major != UINT32_MAX)
++num_keys_decoded;
}
- else if (name.compare("watchpoint_exceptions_received") == 0)
+ else if (name.equals("watchpoint_exceptions_received"))
{
- ++num_keys_decoded;
- if (strcmp(value.c_str(),"before") == 0)
- m_watchpoints_trigger_after_instruction = eLazyBoolNo;
- else if (strcmp(value.c_str(),"after") == 0)
- m_watchpoints_trigger_after_instruction = eLazyBoolYes;
- else
- --num_keys_decoded;
+ m_watchpoints_trigger_after_instruction = llvm::StringSwitch<LazyBool>(value)
+ .Case("before", eLazyBoolNo)
+ .Case("after", eLazyBoolYes)
+ .Default(eLazyBoolCalculate);
+ if (m_watchpoints_trigger_after_instruction != eLazyBoolCalculate)
+ ++num_keys_decoded;
}
- else if (name.compare("default_packet_timeout") == 0)
+ else if (name.equals("default_packet_timeout"))
{
- m_default_packet_timeout = StringConvert::ToUInt32(value.c_str(), 0);
- if (m_default_packet_timeout > 0)
+ if (!value.getAsInteger(0, m_default_packet_timeout))
{
SetPacketTimeout(m_default_packet_timeout);
++num_keys_decoded;
@@ -1715,41 +1697,39 @@ GDBRemoteCommunicationClient::GetMemoryRegionInfo (lldb::addr_t addr,
StringExtractorGDBRemote response;
if (SendPacketAndWaitForResponse (packet, packet_len, response, false) == PacketResult::Success)
{
- std::string name;
- std::string value;
- addr_t addr_value;
+ llvm::StringRef name;
+ llvm::StringRef value;
+ addr_t addr_value = LLDB_INVALID_ADDRESS;
bool success = true;
bool saw_permissions = false;
while (success && response.GetNameColonValue(name, value))
{
- if (name.compare ("start") == 0)
+ if (name.equals("start"))
{
- addr_value = StringConvert::ToUInt64(value.c_str(), LLDB_INVALID_ADDRESS, 16, &success);
- if (success)
+ if (!value.getAsInteger(16, addr_value))
region_info.GetRange().SetRangeBase(addr_value);
}
- else if (name.compare ("size") == 0)
+ else if (name.equals("size"))
{
- addr_value = StringConvert::ToUInt64(value.c_str(), 0, 16, &success);
- if (success)
- region_info.GetRange().SetByteSize (addr_value);
+ if (!value.getAsInteger(16, addr_value))
+ region_info.GetRange().SetByteSize(addr_value);
}
- else if (name.compare ("permissions") == 0 && region_info.GetRange().IsValid())
+ else if (name.equals("permissions") && region_info.GetRange().IsValid())
{
saw_permissions = true;
if (region_info.GetRange().Contains (addr))
{
- if (value.find('r') != std::string::npos)
+ if (value.find('r') != llvm::StringRef::npos)
region_info.SetReadable (MemoryRegionInfo::eYes);
else
region_info.SetReadable (MemoryRegionInfo::eNo);
- if (value.find('w') != std::string::npos)
+ if (value.find('w') != llvm::StringRef::npos)
region_info.SetWritable (MemoryRegionInfo::eYes);
else
region_info.SetWritable (MemoryRegionInfo::eNo);
- if (value.find('x') != std::string::npos)
+ if (value.find('x') != llvm::StringRef::npos)
region_info.SetExecutable (MemoryRegionInfo::eYes);
else
region_info.SetExecutable (MemoryRegionInfo::eNo);
@@ -1765,21 +1745,20 @@ GDBRemoteCommunicationClient::GetMemoryRegionInfo (lldb::addr_t addr,
region_info.SetMapped(MemoryRegionInfo::eNo);
}
}
- else if (name.compare ("name") == 0)
+ else if (name.equals("name"))
{
- StringExtractorGDBRemote name_extractor;
- name_extractor.GetStringRef().swap(value);
- name_extractor.GetHexByteString(value);
- region_info.SetName(value.c_str());
+ StringExtractorGDBRemote name_extractor(value);
+ std::string name;
+ name_extractor.GetHexByteString(name);
+ region_info.SetName(name.c_str());
}
- else if (name.compare ("error") == 0)
+ else if (name.equals("error"))
{
- StringExtractorGDBRemote name_extractor;
- // Swap "value" over into "name_extractor"
- name_extractor.GetStringRef().swap(value);
+ StringExtractorGDBRemote error_extractor(value);
+ std::string error_string;
// Now convert the HEX bytes into a string value
- name_extractor.GetHexByteString (value);
- error.SetErrorString(value.c_str());
+ error_extractor.GetHexByteString(error_string);
+ error.SetErrorString(error_string.c_str());
}
}
@@ -1829,16 +1808,13 @@ GDBRemoteCommunicationClient::GetWatchpointSupportInfo (uint32_t &num)
StringExtractorGDBRemote response;
if (SendPacketAndWaitForResponse (packet, packet_len, response, false) == PacketResult::Success)
{
- m_supports_watchpoint_support_info = eLazyBoolYes;
- std::string name;
- std::string value;
+ m_supports_watchpoint_support_info = eLazyBoolYes;
+ llvm::StringRef name;
+ llvm::StringRef value;
while (response.GetNameColonValue(name, value))
{
- if (name.compare ("num") == 0)
- {
- num = StringConvert::ToUInt32(value.c_str(), 0, 0);
- m_num_supported_hardware_watchpoints = num;
- }
+ if (name.equals("num"))
+ value.getAsInteger(0, m_num_supported_hardware_watchpoints);
}
}
else
@@ -2050,72 +2026,82 @@ GDBRemoteCommunicationClient::DecodeProcessInfoResponse (StringExtractorGDBRemot
{
if (response.IsNormalResponse())
{
- std::string name;
- std::string value;
+ llvm::StringRef name;
+ llvm::StringRef value;
StringExtractor extractor;
uint32_t cpu = LLDB_INVALID_CPUTYPE;
uint32_t sub = 0;
std::string vendor;
std::string os_type;
-
+
while (response.GetNameColonValue(name, value))
{
- if (name.compare("pid") == 0)
+ if (name.equals("pid"))
{
- process_info.SetProcessID (StringConvert::ToUInt32 (value.c_str(), LLDB_INVALID_PROCESS_ID, 0));
+ lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;
+ value.getAsInteger(0, pid);
+ process_info.SetProcessID(pid);
}
- else if (name.compare("ppid") == 0)
+ else if (name.equals("ppid"))
{
- process_info.SetParentProcessID (StringConvert::ToUInt32 (value.c_str(), LLDB_INVALID_PROCESS_ID, 0));
+ lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;
+ value.getAsInteger(0, pid);
+ process_info.SetParentProcessID(pid);
}
- else if (name.compare("uid") == 0)
+ else if (name.equals("uid"))
{
- process_info.SetUserID (StringConvert::ToUInt32 (value.c_str(), UINT32_MAX, 0));
+ uint32_t uid = UINT32_MAX;
+ value.getAsInteger(0, uid);
+ process_info.SetUserID(uid);
}
- else if (name.compare("euid") == 0)
+ else if (name.equals("euid"))
{
- process_info.SetEffectiveUserID (StringConvert::ToUInt32 (value.c_str(), UINT32_MAX, 0));
+ uint32_t uid = UINT32_MAX;
+ value.getAsInteger(0, uid);
+ process_info.SetEffectiveGroupID(uid);
}
- else if (name.compare("gid") == 0)
+ else if (name.equals("gid"))
{
- process_info.SetGroupID (StringConvert::ToUInt32 (value.c_str(), UINT32_MAX, 0));
+ uint32_t gid = UINT32_MAX;
+ value.getAsInteger(0, gid);
+ process_info.SetGroupID(gid);
}
- else if (name.compare("egid") == 0)
+ else if (name.equals("egid"))
{
- process_info.SetEffectiveGroupID (StringConvert::ToUInt32 (value.c_str(), UINT32_MAX, 0));
+ uint32_t gid = UINT32_MAX;
+ value.getAsInteger(0, gid);
+ process_info.SetEffectiveGroupID(gid);
}
- else if (name.compare("triple") == 0)
+ else if (name.equals("triple"))
{
- StringExtractor extractor;
- extractor.GetStringRef().swap(value);
- extractor.SetFilePos(0);
- extractor.GetHexByteString (value);
- process_info.GetArchitecture ().SetTriple (value.c_str());
+ StringExtractor extractor(value);
+ std::string triple;
+ extractor.GetHexByteString(triple);
+ process_info.GetArchitecture().SetTriple(triple.c_str());
}
- else if (name.compare("name") == 0)
+ else if (name.equals("name"))
{
- StringExtractor extractor;
+ StringExtractor extractor(value);
// The process name from ASCII hex bytes since we can't
// control the characters in a process name
- extractor.GetStringRef().swap(value);
- extractor.SetFilePos(0);
- extractor.GetHexByteString (value);
- process_info.GetExecutableFile().SetFile (value.c_str(), false);
+ std::string name;
+ extractor.GetHexByteString(name);
+ process_info.GetExecutableFile().SetFile(name.c_str(), false);
}
- else if (name.compare("cputype") == 0)
+ else if (name.equals("cputype"))
{
- cpu = StringConvert::ToUInt32 (value.c_str(), LLDB_INVALID_CPUTYPE, 16);
+ value.getAsInteger(0, cpu);
}
- else if (name.compare("cpusubtype") == 0)
+ else if (name.equals("cpusubtype"))
{
- sub = StringConvert::ToUInt32 (value.c_str(), 0, 16);
+ value.getAsInteger(0, sub);
}
- else if (name.compare("vendor") == 0)
+ else if (name.equals("vendor"))
{
vendor = value;
}
- else if (name.compare("ostype") == 0)
+ else if (name.equals("ostype"))
{
os_type = value;
}
@@ -2181,8 +2167,8 @@ GDBRemoteCommunicationClient::GetCurrentProcessInfo (bool allow_lazy)
{
if (response.IsNormalResponse())
{
- std::string name;
- std::string value;
+ llvm::StringRef name;
+ llvm::StringRef value;
uint32_t cpu = LLDB_INVALID_CPUTYPE;
uint32_t sub = 0;
std::string arch_name;
@@ -2196,58 +2182,50 @@ GDBRemoteCommunicationClient::GetCurrentProcessInfo (bool allow_lazy)
lldb::pid_t pid = LLDB_INVALID_PROCESS_ID;
while (response.GetNameColonValue(name, value))
{
- if (name.compare("cputype") == 0)
+ if (name.equals("cputype"))
{
- cpu = StringConvert::ToUInt32 (value.c_str(), LLDB_INVALID_CPUTYPE, 16);
- if (cpu != LLDB_INVALID_CPUTYPE)
+ if (!value.getAsInteger(16, cpu))
++num_keys_decoded;
}
- else if (name.compare("cpusubtype") == 0)
+ else if (name.equals("cpusubtype"))
{
- sub = StringConvert::ToUInt32 (value.c_str(), 0, 16);
- if (sub != 0)
+ if (!value.getAsInteger(16, sub))
++num_keys_decoded;
}
- else if (name.compare("triple") == 0)
+ else if (name.equals("triple"))
{
- StringExtractor extractor;
- extractor.GetStringRef().swap(value);
- extractor.SetFilePos(0);
+ StringExtractor extractor(value);
extractor.GetHexByteString (triple);
++num_keys_decoded;
}
- else if (name.compare("ostype") == 0)
+ else if (name.equals("ostype"))
{
- os_name.swap (value);
+ os_name = value;
++num_keys_decoded;
}
- else if (name.compare("vendor") == 0)
+ else if (name.equals("vendor"))
{
- vendor_name.swap(value);
+ vendor_name = value;
++num_keys_decoded;
}
- else if (name.compare("endian") == 0)
+ else if (name.equals("endian"))
{
- ++num_keys_decoded;
- if (value.compare("little") == 0)
- byte_order = eByteOrderLittle;
- else if (value.compare("big") == 0)
- byte_order = eByteOrderBig;
- else if (value.compare("pdp") == 0)
- byte_order = eByteOrderPDP;
- else
- --num_keys_decoded;
+ byte_order = llvm::StringSwitch<lldb::ByteOrder>(value)
+ .Case("little", eByteOrderLittle)
+ .Case("big", eByteOrderBig)
+ .Case("pdp", eByteOrderPDP)
+ .Default(eByteOrderInvalid);
+ if (byte_order != eByteOrderInvalid)
+ ++num_keys_decoded;
}
- else if (name.compare("ptrsize") == 0)
+ else if (name.equals("ptrsize"))
{
- pointer_byte_size = StringConvert::ToUInt32 (value.c_str(), 0, 16);
- if (pointer_byte_size != 0)
+ if (!value.getAsInteger(16, pointer_byte_size))
++num_keys_decoded;
}
- else if (name.compare("pid") == 0)
+ else if (name.equals("pid"))
{
- pid = StringConvert::ToUInt64(value.c_str(), 0, 16);
- if (pid != LLDB_INVALID_PROCESS_ID)
+ if (!value.getAsInteger(16, pid))
++num_keys_decoded;
}
}
@@ -2709,30 +2687,23 @@ GDBRemoteCommunicationClient::LaunchGDBServer (const char *remote_accept_hostnam
stream.Printf("host:*;");
}
}
- const char *packet = stream.GetData();
- int packet_len = stream.GetSize();
-
// give the process a few seconds to startup
GDBRemoteCommunication::ScopedTimeout timeout (*this, 10);
- if (SendPacketAndWaitForResponse(packet, packet_len, response, false) == PacketResult::Success)
+ if (SendPacketAndWaitForResponse(stream.GetString(), response, false) == PacketResult::Success)
{
- std::string name;
- std::string value;
- StringExtractor extractor;
+ llvm::StringRef name;
+ llvm::StringRef value;
while (response.GetNameColonValue(name, value))
{
- if (name.compare("port") == 0)
- port = StringConvert::ToUInt32(value.c_str(), 0, 0);
- else if (name.compare("pid") == 0)
- pid = StringConvert::ToUInt64(value.c_str(), LLDB_INVALID_PROCESS_ID, 0);
+ if (name.equals("port"))
+ value.getAsInteger(0, port);
+ else if (name.equals("pid"))
+ value.getAsInteger(0, pid);
else if (name.compare("socket_name") == 0)
{
- extractor.GetStringRef().swap(value);
- extractor.SetFilePos(0);
- extractor.GetHexByteString(value);
-
- socket_name = value;
+ StringExtractor extractor(value);
+ extractor.GetHexByteString(socket_name);
}
}
return true;
@@ -3667,10 +3638,8 @@ GDBRemoteCommunicationClient::GetModuleInfo(const FileSpec &module_file_spec, co
return false;
}
- std::string name;
- std::string value;
- bool success;
- StringExtractor extractor;
+ llvm::StringRef name;
+ llvm::StringRef value;
module_spec.Clear ();
module_spec.GetFileSpec () = module_file_spec;
@@ -3679,36 +3648,36 @@ GDBRemoteCommunicationClient::GetModuleInfo(const FileSpec &module_file_spec, co
{
if (name == "uuid" || name == "md5")
{
- extractor.GetStringRef ().swap (value);
- extractor.SetFilePos (0);
- extractor.GetHexByteString (value);
- module_spec.GetUUID().SetFromCString (value.c_str(), value.size() / 2);
+ StringExtractor extractor(value);
+ std::string uuid;
+ extractor.GetHexByteString(uuid);
+ module_spec.GetUUID().SetFromCString(uuid.c_str(), uuid.size() / 2);
}
else if (name == "triple")
{
- extractor.GetStringRef ().swap (value);
- extractor.SetFilePos (0);
- extractor.GetHexByteString (value);
- module_spec.GetArchitecture().SetTriple (value.c_str ());
+ StringExtractor extractor(value);
+ std::string triple;
+ extractor.GetHexByteString(triple);
+ module_spec.GetArchitecture().SetTriple(triple.c_str());
}
else if (name == "file_offset")
{
- const auto ival = StringConvert::ToUInt64 (value.c_str (), 0, 16, &success);
- if (success)
+ uint64_t ival = 0;
+ if (!value.getAsInteger(16, ival))
module_spec.SetObjectOffset (ival);
}
else if (name == "file_size")
{
- const auto ival = StringConvert::ToUInt64 (value.c_str (), 0, 16, &success);
- if (success)
+ uint64_t ival = 0;
+ if (!value.getAsInteger(16, ival))
module_spec.SetObjectSize (ival);
}
else if (name == "file_path")
{
- extractor.GetStringRef ().swap (value);
- extractor.SetFilePos (0);
- extractor.GetHexByteString (value);
- module_spec.GetFileSpec() = FileSpec(value.c_str(), false, arch_spec);
+ StringExtractor extractor(value);
+ std::string path;
+ extractor.GetHexByteString(path);
+ module_spec.GetFileSpec() = FileSpec(path.c_str(), false, arch_spec);
}
}
OpenPOWER on IntegriCloud