diff options
| author | Glenn Smith <glenn@vector35.com> | 2026-02-17 16:05:42 -0500 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2026-02-18 14:05:05 -0500 |
| commit | 1530770981627436259078461823272722710609 (patch) | |
| tree | bbfbedcd7f34d3311a9dd3899620194bdb3906f6 /python | |
| parent | 4277063091481910510752532405206398473989 (diff) | |
Python API: Fix overriding Architecture.assemble being broken
Diffstat (limited to 'python')
| -rw-r--r-- | python/architecture.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/python/architecture.py b/python/architecture.py index 17267629..5057e36f 100644 --- a/python/architecture.py +++ b/python/architecture.py @@ -799,6 +799,7 @@ class Architecture(metaclass=_ArchitectureMetaClass): self._cb.freeNameAndTypeList = self._cb.freeNameAndTypeList.__class__(self._free_name_and_type_list) self._cb.getIntrinsicOutputs = self._cb.getIntrinsicOutputs.__class__(self._get_intrinsic_outputs) self._cb.freeTypeList = self._cb.freeTypeList.__class__(self._free_type_list) + self._cb.canAssemble = self._cb.canAssemble.__class__(self._can_assemble) self._cb.assemble = self._cb.assemble.__class__(self._assemble) self._cb.isNeverBranchPatchAvailable = self._cb.isNeverBranchPatchAvailable.__class__( self._is_never_branch_patch_available @@ -1764,6 +1765,13 @@ class Architecture(metaclass=_ArchitectureMetaClass): except (ValueError, KeyError): log_error_for_exception("Unhandled Python exception in Architecture._free_type_list") + def _can_assemble(self, ctxt): + try: + return self.can_assemble + except: + log_error_for_exception("Unhandled Python exception in Architecture._can_assemble") + return False + def _assemble(self, ctxt, code, addr, result, errors): """ This function calls the `assemble` command for the actual architecture plugin. @@ -1771,7 +1779,7 @@ class Architecture(metaclass=_ArchitectureMetaClass): it uses the default function provided in CoreArchitecture. """ try: - data = self.assemble(code, addr) + data = self.assemble(core.pyNativeStr(code), addr) if data is None: return False buf = ctypes.create_string_buffer(len(data)) |
