Unlike python2, python3 strings are not compatible with byte strings. That results in disassembly not working for the branches reports. Fixup those places overlooked in the port to python3.
Unified · Split
| @@ -2908,9 +2908,13 @@ class LibXED(): · 2907 unmodified lines | ||
| 2908 | 2908 | ok = self.xed_format_context(2, inst.xedp, inst.bufferp, sizeof(inst.buffer), ip, 0, 0) |
| 2909 | 2909 | if not ok: |
| 2910 | 2910 | return 0, "" |
| 2911 | + if sys.version_info[0] == 2: | |
| 2912 | + result = inst.buffer.value | |
| 2913 | + else: | |
| 2914 | + result = inst.buffer.value.decode() | |
| 2911 | 2915 | # Return instruction length and the disassembled instruction text |
| 2912 | 2916 | # For now, assume the length is in byte 166 |
| 2913 | − return inst.xedd[166], inst.buffer.value | |
| 2917 | + return inst.xedd[166], result | |
| 2914 | 2918 | |
| 2915 | 2919 | def TryOpen(file_name): |
| 2916 | 2920 | try: |
| @@ -2926,9 +2930,14 @@ def Is64Bit(f): · 9 unmodified lines | ||
| 2926 | 2930 | header = f.read(7) |
| 2927 | 2931 | f.seek(pos) |
| 2928 | 2932 | magic = header[0:4] |
| 2929 | − eclass = ord(header[4]) | |
| 2930 | − encoding = ord(header[5]) | |
| 2931 | − version = ord(header[6]) | |
| 2933 | + if sys.version_info[0] == 2: | |
| 2934 | + eclass = ord(header[4]) | |
| 2935 | + encoding = ord(header[5]) | |
| 2936 | + version = ord(header[6]) | |
| 2937 | + else: | |
| 2938 | + eclass = header[4] | |
| 2939 | + encoding = header[5] | |
| 2940 | + version = header[6] | |
| 2932 | 2941 | if magic == chr(127) + "ELF" and eclass > 0 and eclass < 3 and encoding > 0 and encoding < 3 and version == 1: |
| 2933 | 2942 | result = True if eclass == 2 else False |
| 2934 | 2943 | return result |