Commit 354deb6f authored by sgjesse@chromium.org's avatar sgjesse@chromium.org

Made the ARM port with simulator build and run on Windows.

The reason for the "ugly" definition of SScanF is that the Windows CRT does not have a vsscanf function making it difficult to add OS::SSprintF to platform.h.
Review URL: http://codereview.chromium.org/2988

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@350 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent dc91b5f3
...@@ -855,13 +855,9 @@ static const char* reg_names[16] = { ...@@ -855,13 +855,9 @@ static const char* reg_names[16] = {
const char* NameConverter::NameOfAddress(byte* addr) const { const char* NameConverter::NameOfAddress(byte* addr) const {
static char tmp_buffer[32]; static v8::internal::EmbeddedVector<char, 32> tmp_buffer;
#ifdef WIN32 v8::internal::OS::SNPrintF(tmp_buffer, "%p", addr);
_snprintf(tmp_buffer, sizeof tmp_buffer, "%p", addr); return tmp_buffer.start();
#else
snprintf(tmp_buffer, sizeof tmp_buffer, "%p", addr);
#endif
return tmp_buffer;
} }
......
...@@ -44,6 +44,15 @@ using ::v8::internal::OS; ...@@ -44,6 +44,15 @@ using ::v8::internal::OS;
using ::v8::internal::ReadLine; using ::v8::internal::ReadLine;
using ::v8::internal::DeleteArray; using ::v8::internal::DeleteArray;
// This macro provides a platform independent use of sscanf. The reason for
// SScanF not beeing implemented in a platform independent was through
// ::v8::internal::OS in the same way as SNPrintF is that the Windows C Run-Time
// Library does not provide vsscanf.
#ifdef WIN32
#define SScanF sscanf_s
#else
#define SScanF sscanf // NOLINT
#endif
// The Debugger class is used by the simulator while debugging simulated ARM // The Debugger class is used by the simulator while debugging simulated ARM
// code. // code.
...@@ -130,7 +139,7 @@ bool Debugger::GetValue(char* desc, int32_t* value) { ...@@ -130,7 +139,7 @@ bool Debugger::GetValue(char* desc, int32_t* value) {
} }
return true; return true;
} else { } else {
return sscanf(desc, "%i", value) == 1; // NOLINT return SScanF(desc, "%i", value) == 1;
} }
return false; return false;
} }
...@@ -215,7 +224,7 @@ void Debugger::Debug() { ...@@ -215,7 +224,7 @@ void Debugger::Debug() {
} else { } else {
// Use sscanf to parse the individual parts of the command line. At the // Use sscanf to parse the individual parts of the command line. At the
// moment no command expects more than two parameters. // moment no command expects more than two parameters.
int args = sscanf(line, // NOLINT int args = SScanF(line,
"%" XSTR(COMMAND_SIZE) "s " "%" XSTR(COMMAND_SIZE) "s "
"%" XSTR(ARG_SIZE) "s " "%" XSTR(ARG_SIZE) "s "
"%" XSTR(ARG_SIZE) "s", "%" XSTR(ARG_SIZE) "s",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment