aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Herczeg <zherczeg.u-szeged@partner.samsung.com>2018-09-20 09:33:56 +0200
committerLászló Langó <llango.u-szeged@partner.samsung.com>2018-09-20 09:33:56 +0200
commit35fbcd1ffd9368d29015671fc60047245bd0b14b (patch)
tree1a8e5911b33b59ae5fab4a80e8091be1ba7b94e1
parentdf69e1e08b2eccfe7595cc9af18c0c929ec0a35c (diff)
Increase the debugger version field size from 1 byte to 4 byte (#2513)
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
-rw-r--r--jerry-core/debugger/debugger.c14
-rw-r--r--jerry-core/debugger/debugger.h14
-rw-r--r--jerry-debugger/jerry_client_ws.py30
3 files changed, 38 insertions, 20 deletions
diff --git a/jerry-core/debugger/debugger.c b/jerry-core/debugger/debugger.c
index be5513a3..3f9ed5b4 100644
--- a/jerry-core/debugger/debugger.c
+++ b/jerry-core/debugger/debugger.c
@@ -39,7 +39,7 @@ typedef struct
*/
JERRY_STATIC_ASSERT (JERRY_DEBUGGER_MESSAGES_OUT_MAX_COUNT == 28
&& JERRY_DEBUGGER_MESSAGES_IN_MAX_COUNT == 19
- && JERRY_DEBUGGER_VERSION == 5,
+ && JERRY_DEBUGGER_VERSION == 6,
debugger_version_correlates_to_message_type_count);
/**
@@ -880,10 +880,18 @@ jerry_debugger_send_configuration (uint8_t max_message_size) /**< maximum messag
endian_data.uint16_value = 1;
configuration_p->type = JERRY_DEBUGGER_CONFIGURATION;
+ configuration_p->configuration = 0;
+
+ if (endian_data.uint8_value[0] == 1)
+ {
+ configuration_p->configuration |= (uint8_t) JERRY_DEBUGGER_LITTLE_ENDIAN;
+ }
+
+ uint32_t version = JERRY_DEBUGGER_VERSION;
+ memcpy (configuration_p->version, &version, sizeof (uint32_t));
+
configuration_p->max_message_size = max_message_size;
configuration_p->cpointer_size = sizeof (jmem_cpointer_t);
- configuration_p->little_endian = (endian_data.uint8_value[0] == 1);
- configuration_p->version = JERRY_DEBUGGER_VERSION;
return jerry_debugger_send (sizeof (jerry_debugger_send_configuration_t));
} /* jerry_debugger_send_configuration */
diff --git a/jerry-core/debugger/debugger.h b/jerry-core/debugger/debugger.h
index ff5a37aa..5b1db984 100644
--- a/jerry-core/debugger/debugger.h
+++ b/jerry-core/debugger/debugger.h
@@ -26,7 +26,7 @@
/**
* JerryScript debugger protocol version.
*/
-#define JERRY_DEBUGGER_VERSION (5)
+#define JERRY_DEBUGGER_VERSION (6)
/**
* Frequency of calling jerry_debugger_receive() by the VM.
@@ -192,6 +192,14 @@ typedef enum
} jerry_debugger_header_type_t;
/**
+ * Debugger option flags.
+ */
+typedef enum
+{
+ JERRY_DEBUGGER_LITTLE_ENDIAN = 1u << 0, /**< little endian */
+} jerry_debugger_configuration_flags_t;
+
+/**
* Subtypes of eval.
*/
typedef enum
@@ -250,10 +258,10 @@ typedef struct
typedef struct
{
uint8_t type; /**< type of the message */
+ uint8_t configuration; /**< configuration option bits */
+ uint8_t version[sizeof (uint32_t)]; /**< debugger version */
uint8_t max_message_size; /**< maximum incoming message size */
uint8_t cpointer_size; /**< size of compressed pointers */
- uint8_t little_endian; /**< little endian machine */
- uint8_t version; /**< debugger version */
} jerry_debugger_send_configuration_t;
/**
diff --git a/jerry-debugger/jerry_client_ws.py b/jerry-debugger/jerry_client_ws.py
index ff24e848..246e3762 100644
--- a/jerry-debugger/jerry_client_ws.py
+++ b/jerry-debugger/jerry_client_ws.py
@@ -24,7 +24,7 @@ import struct
import sys
# Expected debugger protocol version.
-JERRY_DEBUGGER_VERSION = 5
+JERRY_DEBUGGER_VERSION = 6
# Messages sent by the server to client.
JERRY_DEBUGGER_CONFIGURATION = 1
@@ -55,6 +55,9 @@ JERRY_DEBUGGER_WAIT_FOR_SOURCE = 25
JERRY_DEBUGGER_OUTPUT_RESULT = 26
JERRY_DEBUGGER_OUTPUT_RESULT_END = 27
+# Debugger option flags
+JERRY_DEBUGGER_LITTLE_ENDIAN = 0x1
+
# Subtypes of eval
JERRY_DEBUGGER_EVAL_EVAL = "\0"
JERRY_DEBUGGER_EVAL_THROW = "\1"
@@ -308,14 +311,14 @@ class JerryDebugger(object):
else:
result = b""
- len_expected = 7
+ len_expected = 10
# Network configurations, which has the following struct:
# header [2] - opcode[1], size[1]
# type [1]
+ # configuration [1]
+ # version [4]
# max_message_size [1]
# cpointer_size [1]
- # little_endian [1]
- # version [1]
while len(result) < len_expected:
result += self.client_socket.recv(1024)
@@ -324,21 +327,15 @@ class JerryDebugger(object):
expected = struct.pack("BBB",
WEBSOCKET_BINARY_FRAME | WEBSOCKET_FIN_BIT,
- 5,
+ 8,
JERRY_DEBUGGER_CONFIGURATION)
if result[0:3] != expected:
raise Exception("Unexpected configuration")
- self.max_message_size = ord(result[3])
- self.cp_size = ord(result[4])
- self.little_endian = ord(result[5])
- self.version = ord(result[6])
-
- if self.version != JERRY_DEBUGGER_VERSION:
- raise Exception("Incorrect debugger version from target: %d expected: %d" %
- (self.version, JERRY_DEBUGGER_VERSION))
-
+ self.little_endian = ord(result[3]) & JERRY_DEBUGGER_LITTLE_ENDIAN
+ self.max_message_size = ord(result[8])
+ self.cp_size = ord(result[9])
if self.little_endian:
self.byte_order = "<"
@@ -354,6 +351,11 @@ class JerryDebugger(object):
self.idx_format = "I"
+ self.version = struct.unpack(self.byte_order + self.idx_format, result[4:8])[0]
+ if self.version != JERRY_DEBUGGER_VERSION:
+ raise Exception("Incorrect debugger version from target: %d expected: %d" %
+ (self.version, JERRY_DEBUGGER_VERSION))
+
logging.debug("Compressed pointer size: %d", self.cp_size)
if len_result > len_expected: