MCPcopy Create free account
hub / github.com/HexHive/NASS / do_invoke

Method do_invoke

tools/gef.py:5884–5917  ·  view source on GitHub ↗
(self, argv: List[str])

Source from the content-addressed store, hash-verified

5882 f"\n{_cmdline_} +zero # sets ZERO flag")
5883
5884 def do_invoke(self, argv: List[str]) -> None:
5885 if not gef.arch.flag_register:
5886 warn(f"The architecture {gef.arch.arch}:{gef.arch.mode} doesn't have flag register.")
5887 return
5888
5889 for flag in argv:
5890 if len(flag) < 2:
5891 continue
5892
5893 action = flag[0]
5894 name = flag[1:].lower()
5895
5896 if action not in ("+", "-", "~"):
5897 err(f"Invalid action for flag '{flag}'")
5898 continue
5899
5900 if name not in gef.arch.flags_table.values():
5901 err(f"Invalid flag name '{flag[1:]}'")
5902 continue
5903
5904 for off in gef.arch.flags_table:
5905 if gef.arch.flags_table[off] == name:
5906 old_flag = gef.arch.register(gef.arch.flag_register)
5907 if action == "+":
5908 new_flags = old_flag | (1 << off)
5909 elif action == "-":
5910 new_flags = old_flag & ~(1 << off)
5911 else:
5912 new_flags = old_flag ^ (1 << off)
5913
5914 gdb.execute(f"set ({gef.arch.flag_register}) = {new_flags:#x}")
5915
5916 gef_print(gef.arch.flag_register_to_human())
5917 return
5918
5919
5920@register

Callers

nothing calls this directly

Calls 5

warnFunction · 0.85
errFunction · 0.85
gef_printFunction · 0.85
registerMethod · 0.80

Tested by

no test coverage detected