MCPcopy Index your code
hub / github.com/keystone-engine/keypatch / __init__

Method __init__

keypatch.py:1022–1064  ·  view source on GitHub ↗
(self, kp_asm, addr_begin, addr_end, assembly=None, opts=None)

Source from the content-addressed store, hash-verified

1020# Fill Range form
1021class Keypatch_FillRange(Keypatch_Form):
1022 def __init__(self, kp_asm, addr_begin, addr_end, assembly=None, opts=None):
1023 self.setup(kp_asm, addr_begin, assembly)
1024 self.addr_end = addr_end
1025
1026 # create FillRange form
1027 Form.__init__(self,
1028 r"""STARTITEM {id:c_assembly}
1029BUTTON YES* Patch
1030KEYPATCH:: Fill Range
1031
1032 {FormChangeCb}
1033 <Endian :{c_endian}>
1034 <~S~yntax :{c_syntax}>
1035 <Start :{c_addr}>
1036 <End :{c_addr_end}>
1037 <Size :{c_size}>
1038 <~A~ssembly :{c_assembly}>
1039 <- Fixup :{c_raw_assembly}>
1040 <- Encode:{c_encoding}>
1041 <- Size :{c_encoding_len}>
1042 <~N~OPs padding until next instruction boundary:{c_opt_padding}>
1043 <Save ~o~riginal instructions in IDA comment:{c_opt_comment}>{c_opt_chk}>
1044 """, {
1045 'c_endian': Form.DropdownListControl(
1046 items = self.kp_asm.endian_lists.keys(),
1047 readonly = True,
1048 selval = self.endian_id),
1049 'c_addr': Form.NumericInput(value=addr_begin, swidth=MAX_ADDRESS_LEN, tp=Form.FT_ADDR),
1050 'c_addr_end': Form.NumericInput(value=addr_end - 1, swidth=MAX_ADDRESS_LEN, tp=Form.FT_ADDR),
1051 'c_assembly': Form.StringInput(value=self.asm[:MAX_INSTRUCTION_STRLEN], width=MAX_INSTRUCTION_STRLEN),
1052 'c_size': Form.NumericInput(value=addr_end - addr_begin, swidth=8, tp=Form.FT_DEC),
1053 'c_raw_assembly': Form.StringInput(value='', width=MAX_INSTRUCTION_STRLEN),
1054 'c_encoding': Form.StringInput(value='', width=MAX_ENCODING_LEN),
1055 'c_encoding_len': Form.NumericInput(value=0, swidth=8, tp=Form.FT_DEC),
1056 'c_syntax': Form.DropdownListControl(
1057 items = self.syntax_keys,
1058 readonly = True,
1059 selval = self.syntax_id),
1060 'c_opt_chk':idaapi.Form.ChkGroupControl(('c_opt_padding', 'c_opt_comment', ''), value=opts['c_opt_chk']),
1061 'FormChangeCb': Form.FormChangeCb(self.OnFormChange),
1062 })
1063
1064 self.Compile()
1065
1066 # callback to be executed when any form control changed
1067 def OnFormChange(self, fid):

Callers

nothing calls this directly

Calls 2

setupMethod · 0.80
__init__Method · 0.45

Tested by

no test coverage detected