Skip to content

Commit 1530770

Browse files
committed
Python API: Fix overriding Architecture.assemble being broken
1 parent 4277063 commit 1530770

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

python/architecture.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,7 @@ def __init__(self):
799799
self._cb.freeNameAndTypeList = self._cb.freeNameAndTypeList.__class__(self._free_name_and_type_list)
800800
self._cb.getIntrinsicOutputs = self._cb.getIntrinsicOutputs.__class__(self._get_intrinsic_outputs)
801801
self._cb.freeTypeList = self._cb.freeTypeList.__class__(self._free_type_list)
802+
self._cb.canAssemble = self._cb.canAssemble.__class__(self._can_assemble)
802803
self._cb.assemble = self._cb.assemble.__class__(self._assemble)
803804
self._cb.isNeverBranchPatchAvailable = self._cb.isNeverBranchPatchAvailable.__class__(
804805
self._is_never_branch_patch_available
@@ -1764,14 +1765,21 @@ def _free_type_list(self, ctxt, buf_raw, length):
17641765
except (ValueError, KeyError):
17651766
log_error_for_exception("Unhandled Python exception in Architecture._free_type_list")
17661767

1768+
def _can_assemble(self, ctxt):
1769+
try:
1770+
return self.can_assemble
1771+
except:
1772+
log_error_for_exception("Unhandled Python exception in Architecture._can_assemble")
1773+
return False
1774+
17671775
def _assemble(self, ctxt, code, addr, result, errors):
17681776
"""
17691777
This function calls the `assemble` command for the actual architecture plugin.
17701778
If the plugin does not provide an `assemble(self, code, addr)`-style function,
17711779
it uses the default function provided in CoreArchitecture.
17721780
"""
17731781
try:
1774-
data = self.assemble(code, addr)
1782+
data = self.assemble(core.pyNativeStr(code), addr)
17751783
if data is None:
17761784
return False
17771785
buf = ctypes.create_string_buffer(len(data))

0 commit comments

Comments
 (0)