File gdb-testsuite-handle-older-python-in-gdb.python-py-send-packet.py.patch of Package gdb.28855

[gdb/testsuite] Handle older python in gdb.python/py-send-packet.py

With python 3.4, I run into:
...
Traceback (most recent call last):^M
  File "<string>", line 1, in <module>^M
  File
  "outputs/gdb.python/py-send-packet/py-send-packet.py", line 128, in \
    run_set_global_var_test^M
    res = conn.send_packet(b"X%x,4:\x02\x02\x02\x02" % addr)^M
TypeError: Could not convert Python object: b'X%x,4:\x02\x02\x02\x02'.^M
Error while executing Python code.^M
...
while with python 3.6 this works fine.

Fix this by avoiding the byte literal (with prefix b), and use instead:
...
  bytes(("X%x,4:" % addr).encode('ascii') + bytearray([0x2, 0x2, 0x2, 0x2])).
...

---
 gdb/testsuite/gdb.python/py-send-packet.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/gdb.python/py-send-packet.py b/gdb/testsuite/gdb.python/py-send-packet.py
index 4966688a922..f58deed1019 100644
--- a/gdb/testsuite/gdb.python/py-send-packet.py
+++ b/gdb/testsuite/gdb.python/py-send-packet.py
@@ -122,6 +122,15 @@ def check_global_var(expected_val):
     if val != expected_val:
         raise gdb.GdbError("global_var is 0x%x, expected 0x%x" % (val, expected_val))
 
+# Return a bytes object representing an 'X' packet with
+# address ADDR and bytes L.
+def bytes_xpacket (addr, l):
+    # Implement b"X%x,4:\xff\xff\xff\xff" % addr in a way that works
+    # across python versions.
+    res = ("X%x,4:" % addr).encode('ascii') + bytearray(l)
+    # Force it to type bytes.
+    res = bytes(res)
+    return res
 
 # Set the 'X' packet to the remote target to set a global variable.
 # Checks that we can send byte values.
@@ -133,7 +142,7 @@ def run_set_global_var_test():
     res = conn.send_packet("X%x,4:\x01\x01\x01\x01" % addr)
     assert isinstance(res, bytes)
     check_global_var(0x01010101)
-    res = conn.send_packet(b"X%x,4:\x02\x02\x02\x02" % addr)
+    res = conn.send_packet(bytes_xpacket(addr, [0x2, 0x2, 0x2, 0x2]))
     assert isinstance(res, bytes)
     check_global_var(0x02020202)
     if sys.version_info[0] > 2:
@@ -149,7 +158,7 @@ def run_set_global_var_test():
         assert saw_error
         check_global_var(0x02020202)
         # Now we pass a bytes object, which will work.
-        res = conn.send_packet(b"X%x,4:\xff\xff\xff\xff" % addr)
+        res = conn.send_packet(bytes_xpacket(addr, [0xff, 0xff, 0xff, 0xff]))
         check_global_var(0xFFFFFFFF)
     else:
         # On Python 2 we need to force the creation of a Unicode
openSUSE Build Service is sponsored by