@@ -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