gdb, gdbserver, gdbsupport: fix leading space vs tabs issues
Many spots incorrectly use only spaces for indentation (for example, there are a lot of spots in ada-lang.c). I've always found it awkward when I needed to edit one of these spots: do I keep the original wrong indentation, or do I fix it? What if the lines around it are also wrong, do I fix them too? I probably don't want to fix them in the same patch, to avoid adding noise to my patch. So I propose to fix as much as possible once and for all (hopefully). One typical counter argument for this is that it makes code archeology more difficult, because git-blame will show this commit as the last change for these lines. My counter counter argument is: when git-blaming, you often need to do "blame the file at the parent commit" anyway, to go past some other refactor that touched the line you are interested in, but is not the change you are looking for. So you already need a somewhat efficient way to do this. Using some interactive tool, rather than plain git-blame, makes this trivial. For example, I use "tig blame <file>", where going back past the commit that changed the currently selected line is one keystroke. It looks like Magit in Emacs does it too (though I've never used it). Web viewers of Github and Gitlab do it too. My point is that it won't really make archeology more difficult. The other typical counter argument is that it will cause conflicts with existing patches. That's true... but it's a one time cost, and those are not conflicts that are difficult to resolve. I have also tried "git rebase --ignore-whitespace", it seems to work well. Although that will re-introduce the faulty indentation, so one needs to take care of fixing the indentation in the patch after that (which is easy). gdb/ChangeLog: * aarch64-linux-tdep.c: Fix indentation. * aarch64-ravenscar-thread.c: Fix indentation. * aarch64-tdep.c: Fix indentation. * aarch64-tdep.h: Fix indentation. * ada-lang.c: Fix indentation. * ada-lang.h: Fix indentation. * ada-tasks.c: Fix indentation. * ada-typeprint.c: Fix indentation. * ada-valprint.c: Fix indentation. * ada-varobj.c: Fix indentation. * addrmap.c: Fix indentation. * addrmap.h: Fix indentation. * agent.c: Fix indentation. * aix-thread.c: Fix indentation. * alpha-bsd-nat.c: Fix indentation. * alpha-linux-tdep.c: Fix indentation. * alpha-mdebug-tdep.c: Fix indentation. * alpha-nbsd-tdep.c: Fix indentation. * alpha-obsd-tdep.c: Fix indentation. * alpha-tdep.c: Fix indentation. * amd64-bsd-nat.c: Fix indentation. * amd64-darwin-tdep.c: Fix indentation. * amd64-linux-nat.c: Fix indentation. * amd64-linux-tdep.c: Fix indentation. * amd64-nat.c: Fix indentation. * amd64-obsd-tdep.c: Fix indentation. * amd64-tdep.c: Fix indentation. * amd64-windows-tdep.c: Fix indentation. * annotate.c: Fix indentation. * arc-tdep.c: Fix indentation. * arch-utils.c: Fix indentation. * arch/arm-get-next-pcs.c: Fix indentation. * arch/arm.c: Fix indentation. * arm-linux-nat.c: Fix indentation. * arm-linux-tdep.c: Fix indentation. * arm-nbsd-tdep.c: Fix indentation. * arm-pikeos-tdep.c: Fix indentation. * arm-tdep.c: Fix indentation. * arm-tdep.h: Fix indentation. * arm-wince-tdep.c: Fix indentation. * auto-load.c: Fix indentation. * auxv.c: Fix indentation. * avr-tdep.c: Fix indentation. * ax-gdb.c: Fix indentation. * ax-general.c: Fix indentation. * bfin-linux-tdep.c: Fix indentation. * block.c: Fix indentation. * block.h: Fix indentation. * blockframe.c: Fix indentation. * bpf-tdep.c: Fix indentation. * break-catch-sig.c: Fix indentation. * break-catch-syscall.c: Fix indentation. * break-catch-throw.c: Fix indentation. * breakpoint.c: Fix indentation. * breakpoint.h: Fix indentation. * bsd-uthread.c: Fix indentation. * btrace.c: Fix indentation. * build-id.c: Fix indentation. * buildsym-legacy.h: Fix indentation. * buildsym.c: Fix indentation. * c-typeprint.c: Fix indentation. * c-valprint.c: Fix indentation. * c-varobj.c: Fix indentation. * charset.c: Fix indentation. * cli/cli-cmds.c: Fix indentation. * cli/cli-decode.c: Fix indentation. * cli/cli-decode.h: Fix indentation. * cli/cli-script.c: Fix indentation. * cli/cli-setshow.c: Fix indentation. * coff-pe-read.c: Fix indentation. * coffread.c: Fix indentation. * compile/compile-cplus-types.c: Fix indentation. * compile/compile-object-load.c: Fix indentation. * compile/compile-object-run.c: Fix indentation. * completer.c: Fix indentation. * corefile.c: Fix indentation. * corelow.c: Fix indentation. * cp-abi.h: Fix indentation. * cp-namespace.c: Fix indentation. * cp-support.c: Fix indentation. * cp-valprint.c: Fix indentation. * cris-linux-tdep.c: Fix indentation. * cris-tdep.c: Fix indentation. * darwin-nat-info.c: Fix indentation. * darwin-nat.c: Fix indentation. * darwin-nat.h: Fix indentation. * dbxread.c: Fix indentation. * dcache.c: Fix indentation. * disasm.c: Fix indentation. * dtrace-probe.c: Fix indentation. * dwarf2/abbrev.c: Fix indentation. * dwarf2/attribute.c: Fix indentation. * dwarf2/expr.c: Fix indentation. * dwarf2/frame.c: Fix indentation. * dwarf2/index-cache.c: Fix indentation. * dwarf2/index-write.c: Fix indentation. * dwarf2/line-header.c: Fix indentation. * dwarf2/loc.c: Fix indentation. * dwarf2/macro.c: Fix indentation. * dwarf2/read.c: Fix indentation. * dwarf2/read.h: Fix indentation. * elfread.c: Fix indentation. * eval.c: Fix indentation. * event-top.c: Fix indentation. * exec.c: Fix indentation. * exec.h: Fix indentation. * expprint.c: Fix indentation. * f-lang.c: Fix indentation. * f-typeprint.c: Fix indentation. * f-valprint.c: Fix indentation. * fbsd-nat.c: Fix indentation. * fbsd-tdep.c: Fix indentation. * findvar.c: Fix indentation. * fork-child.c: Fix indentation. * frame-unwind.c: Fix indentation. * frame-unwind.h: Fix indentation. * frame.c: Fix indentation. * frv-linux-tdep.c: Fix indentation. * frv-tdep.c: Fix indentation. * frv-tdep.h: Fix indentation. * ft32-tdep.c: Fix indentation. * gcore.c: Fix indentation. * gdb_bfd.c: Fix indentation. * gdbarch.sh: Fix indentation. * gdbarch.c: Re-generate * gdbarch.h: Re-generate. * gdbcore.h: Fix indentation. * gdbthread.h: Fix indentation. * gdbtypes.c: Fix indentation. * gdbtypes.h: Fix indentation. * glibc-tdep.c: Fix indentation. * gnu-nat.c: Fix indentation. * gnu-nat.h: Fix indentation. * gnu-v2-abi.c: Fix indentation. * gnu-v3-abi.c: Fix indentation. * go32-nat.c: Fix indentation. * guile/guile-internal.h: Fix indentation. * guile/scm-cmd.c: Fix indentation. * guile/scm-frame.c: Fix indentation. * guile/scm-iterator.c: Fix indentation. * guile/scm-math.c: Fix indentation. * guile/scm-ports.c: Fix indentation. * guile/scm-pretty-print.c: Fix indentation. * guile/scm-value.c: Fix indentation. * h8300-tdep.c: Fix indentation. * hppa-linux-nat.c: Fix indentation. * hppa-linux-tdep.c: Fix indentation. * hppa-nbsd-nat.c: Fix indentation. * hppa-nbsd-tdep.c: Fix indentation. * hppa-obsd-nat.c: Fix indentation. * hppa-tdep.c: Fix indentation. * hppa-tdep.h: Fix indentation. * i386-bsd-nat.c: Fix indentation. * i386-darwin-nat.c: Fix indentation. * i386-darwin-tdep.c: Fix indentation. * i386-dicos-tdep.c: Fix indentation. * i386-gnu-nat.c: Fix indentation. * i386-linux-nat.c: Fix indentation. * i386-linux-tdep.c: Fix indentation. * i386-nto-tdep.c: Fix indentation. * i386-obsd-tdep.c: Fix indentation. * i386-sol2-nat.c: Fix indentation. * i386-tdep.c: Fix indentation. * i386-tdep.h: Fix indentation. * i386-windows-tdep.c: Fix indentation. * i387-tdep.c: Fix indentation. * i387-tdep.h: Fix indentation. * ia64-libunwind-tdep.c: Fix indentation. * ia64-libunwind-tdep.h: Fix indentation. * ia64-linux-nat.c: Fix indentation. * ia64-linux-tdep.c: Fix indentation. * ia64-tdep.c: Fix indentation. * ia64-tdep.h: Fix indentation. * ia64-vms-tdep.c: Fix indentation. * infcall.c: Fix indentation. * infcmd.c: Fix indentation. * inferior.c: Fix indentation. * infrun.c: Fix indentation. * iq2000-tdep.c: Fix indentation. * language.c: Fix indentation. * linespec.c: Fix indentation. * linux-fork.c: Fix indentation. * linux-nat.c: Fix indentation. * linux-tdep.c: Fix indentation. * linux-thread-db.c: Fix indentation. * lm32-tdep.c: Fix indentation. * m2-lang.c: Fix indentation. * m2-typeprint.c: Fix indentation. * m2-valprint.c: Fix indentation. * m32c-tdep.c: Fix indentation. * m32r-linux-tdep.c: Fix indentation. * m32r-tdep.c: Fix indentation. * m68hc11-tdep.c: Fix indentation. * m68k-bsd-nat.c: Fix indentation. * m68k-linux-nat.c: Fix indentation. * m68k-linux-tdep.c: Fix indentation. * m68k-tdep.c: Fix indentation. * machoread.c: Fix indentation. * macrocmd.c: Fix indentation. * macroexp.c: Fix indentation. * macroscope.c: Fix indentation. * macrotab.c: Fix indentation. * macrotab.h: Fix indentation. * main.c: Fix indentation. * mdebugread.c: Fix indentation. * mep-tdep.c: Fix indentation. * mi/mi-cmd-catch.c: Fix indentation. * mi/mi-cmd-disas.c: Fix indentation. * mi/mi-cmd-env.c: Fix indentation. * mi/mi-cmd-stack.c: Fix indentation. * mi/mi-cmd-var.c: Fix indentation. * mi/mi-cmds.c: Fix indentation. * mi/mi-main.c: Fix indentation. * mi/mi-parse.c: Fix indentation. * microblaze-tdep.c: Fix indentation. * minidebug.c: Fix indentation. * minsyms.c: Fix indentation. * mips-linux-nat.c: Fix indentation. * mips-linux-tdep.c: Fix indentation. * mips-nbsd-tdep.c: Fix indentation. * mips-tdep.c: Fix indentation. * mn10300-linux-tdep.c: Fix indentation. * mn10300-tdep.c: Fix indentation. * moxie-tdep.c: Fix indentation. * msp430-tdep.c: Fix indentation. * namespace.h: Fix indentation. * nat/fork-inferior.c: Fix indentation. * nat/gdb_ptrace.h: Fix indentation. * nat/linux-namespaces.c: Fix indentation. * nat/linux-osdata.c: Fix indentation. * nat/netbsd-nat.c: Fix indentation. * nat/x86-dregs.c: Fix indentation. * nbsd-nat.c: Fix indentation. * nbsd-tdep.c: Fix indentation. * nios2-linux-tdep.c: Fix indentation. * nios2-tdep.c: Fix indentation. * nto-procfs.c: Fix indentation. * nto-tdep.c: Fix indentation. * objfiles.c: Fix indentation. * objfiles.h: Fix indentation. * opencl-lang.c: Fix indentation. * or1k-tdep.c: Fix indentation. * osabi.c: Fix indentation. * osabi.h: Fix indentation. * osdata.c: Fix indentation. * p-lang.c: Fix indentation. * p-typeprint.c: Fix indentation. * p-valprint.c: Fix indentation. * parse.c: Fix indentation. * ppc-linux-nat.c: Fix indentation. * ppc-linux-tdep.c: Fix indentation. * ppc-nbsd-nat.c: Fix indentation. * ppc-nbsd-tdep.c: Fix indentation. * ppc-obsd-nat.c: Fix indentation. * ppc-ravenscar-thread.c: Fix indentation. * ppc-sysv-tdep.c: Fix indentation. * ppc64-tdep.c: Fix indentation. * printcmd.c: Fix indentation. * proc-api.c: Fix indentation. * producer.c: Fix indentation. * producer.h: Fix indentation. * prologue-value.c: Fix indentation. * prologue-value.h: Fix indentation. * psymtab.c: Fix indentation. * python/py-arch.c: Fix indentation. * python/py-bpevent.c: Fix indentation. * python/py-event.c: Fix indentation. * python/py-event.h: Fix indentation. * python/py-finishbreakpoint.c: Fix indentation. * python/py-frame.c: Fix indentation. * python/py-framefilter.c: Fix indentation. * python/py-inferior.c: Fix indentation. * python/py-infthread.c: Fix indentation. * python/py-objfile.c: Fix indentation. * python/py-prettyprint.c: Fix indentation. * python/py-registers.c: Fix indentation. * python/py-signalevent.c: Fix indentation. * python/py-stopevent.c: Fix indentation. * python/py-stopevent.h: Fix indentation. * python/py-threadevent.c: Fix indentation. * python/py-tui.c: Fix indentation. * python/py-unwind.c: Fix indentation. * python/py-value.c: Fix indentation. * python/py-xmethods.c: Fix indentation. * python/python-internal.h: Fix indentation. * python/python.c: Fix indentation. * ravenscar-thread.c: Fix indentation. * record-btrace.c: Fix indentation. * record-full.c: Fix indentation. * record.c: Fix indentation. * reggroups.c: Fix indentation. * regset.h: Fix indentation. * remote-fileio.c: Fix indentation. * remote.c: Fix indentation. * reverse.c: Fix indentation. * riscv-linux-tdep.c: Fix indentation. * riscv-ravenscar-thread.c: Fix indentation. * riscv-tdep.c: Fix indentation. * rl78-tdep.c: Fix indentation. * rs6000-aix-tdep.c: Fix indentation. * rs6000-lynx178-tdep.c: Fix indentation. * rs6000-nat.c: Fix indentation. * rs6000-tdep.c: Fix indentation. * rust-lang.c: Fix indentation. * rx-tdep.c: Fix indentation. * s12z-tdep.c: Fix indentation. * s390-linux-tdep.c: Fix indentation. * score-tdep.c: Fix indentation. * ser-base.c: Fix indentation. * ser-mingw.c: Fix indentation. * ser-uds.c: Fix indentation. * ser-unix.c: Fix indentation. * serial.c: Fix indentation. * sh-linux-tdep.c: Fix indentation. * sh-nbsd-tdep.c: Fix indentation. * sh-tdep.c: Fix indentation. * skip.c: Fix indentation. * sol-thread.c: Fix indentation. * solib-aix.c: Fix indentation. * solib-darwin.c: Fix indentation. * solib-frv.c: Fix indentation. * solib-svr4.c: Fix indentation. * solib.c: Fix indentation. * source.c: Fix indentation. * sparc-linux-tdep.c: Fix indentation. * sparc-nbsd-tdep.c: Fix indentation. * sparc-obsd-tdep.c: Fix indentation. * sparc-ravenscar-thread.c: Fix indentation. * sparc-tdep.c: Fix indentation. * sparc64-linux-tdep.c: Fix indentation. * sparc64-nbsd-tdep.c: Fix indentation. * sparc64-obsd-tdep.c: Fix indentation. * sparc64-tdep.c: Fix indentation. * stabsread.c: Fix indentation. * stack.c: Fix indentation. * stap-probe.c: Fix indentation. * stubs/ia64vms-stub.c: Fix indentation. * stubs/m32r-stub.c: Fix indentation. * stubs/m68k-stub.c: Fix indentation. * stubs/sh-stub.c: Fix indentation. * stubs/sparc-stub.c: Fix indentation. * symfile-mem.c: Fix indentation. * symfile.c: Fix indentation. * symfile.h: Fix indentation. * symmisc.c: Fix indentation. * symtab.c: Fix indentation. * symtab.h: Fix indentation. * target-float.c: Fix indentation. * target.c: Fix indentation. * target.h: Fix indentation. * tic6x-tdep.c: Fix indentation. * tilegx-linux-tdep.c: Fix indentation. * tilegx-tdep.c: Fix indentation. * top.c: Fix indentation. * tracefile-tfile.c: Fix indentation. * tracepoint.c: Fix indentation. * tui/tui-disasm.c: Fix indentation. * tui/tui-io.c: Fix indentation. * tui/tui-regs.c: Fix indentation. * tui/tui-stack.c: Fix indentation. * tui/tui-win.c: Fix indentation. * tui/tui-winsource.c: Fix indentation. * tui/tui.c: Fix indentation. * typeprint.c: Fix indentation. * ui-out.h: Fix indentation. * unittests/copy_bitwise-selftests.c: Fix indentation. * unittests/memory-map-selftests.c: Fix indentation. * utils.c: Fix indentation. * v850-tdep.c: Fix indentation. * valarith.c: Fix indentation. * valops.c: Fix indentation. * valprint.c: Fix indentation. * valprint.h: Fix indentation. * value.c: Fix indentation. * value.h: Fix indentation. * varobj.c: Fix indentation. * vax-tdep.c: Fix indentation. * windows-nat.c: Fix indentation. * windows-tdep.c: Fix indentation. * xcoffread.c: Fix indentation. * xml-syscall.c: Fix indentation. * xml-tdesc.c: Fix indentation. * xstormy16-tdep.c: Fix indentation. * xtensa-config.c: Fix indentation. * xtensa-linux-nat.c: Fix indentation. * xtensa-linux-tdep.c: Fix indentation. * xtensa-tdep.c: Fix indentation. gdbserver/ChangeLog: * ax.cc: Fix indentation. * dll.cc: Fix indentation. * inferiors.h: Fix indentation. * linux-low.cc: Fix indentation. * linux-nios2-low.cc: Fix indentation. * linux-ppc-ipa.cc: Fix indentation. * linux-ppc-low.cc: Fix indentation. * linux-x86-low.cc: Fix indentation. * linux-xtensa-low.cc: Fix indentation. * regcache.cc: Fix indentation. * server.cc: Fix indentation. * tracepoint.cc: Fix indentation. gdbsupport/ChangeLog: * common-exceptions.h: Fix indentation. * event-loop.cc: Fix indentation. * fileio.cc: Fix indentation. * filestuff.cc: Fix indentation. * gdb-dlfcn.cc: Fix indentation. * gdb_string_view.h: Fix indentation. * job-control.cc: Fix indentation. * signals.cc: Fix indentation. Change-Id: I4bad7ae6be0fbe14168b8ebafb98ffe14964a695
This commit is contained in:
parent
1c2bec1918
commit
dda83cd783
420 changed files with 14515 additions and 14099 deletions
|
@ -138,41 +138,41 @@ archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
|
|||
to be done first to ensure we do not lose information in the
|
||||
conversion process. */
|
||||
if (PyLong_Check (end_obj))
|
||||
end = PyLong_AsUnsignedLongLong (end_obj);
|
||||
end = PyLong_AsUnsignedLongLong (end_obj);
|
||||
#if PY_MAJOR_VERSION == 2
|
||||
else if (PyInt_Check (end_obj))
|
||||
/* If the end_pc value is specified without a trailing 'L', end_obj will
|
||||
be an integer and not a long integer. */
|
||||
end = PyInt_AsLong (end_obj);
|
||||
/* If the end_pc value is specified without a trailing 'L', end_obj will
|
||||
be an integer and not a long integer. */
|
||||
end = PyInt_AsLong (end_obj);
|
||||
#endif
|
||||
else
|
||||
{
|
||||
PyErr_SetString (PyExc_TypeError,
|
||||
_("Argument 'end_pc' should be a (long) integer."));
|
||||
{
|
||||
PyErr_SetString (PyExc_TypeError,
|
||||
_("Argument 'end_pc' should be a (long) integer."));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (end < start)
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
_("Argument 'end_pc' should be greater than or "
|
||||
"equal to the argument 'start_pc'."));
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
_("Argument 'end_pc' should be greater than or "
|
||||
"equal to the argument 'start_pc'."));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
if (count_obj)
|
||||
{
|
||||
count = PyInt_AsLong (count_obj);
|
||||
if (PyErr_Occurred () || count < 0)
|
||||
{
|
||||
PyErr_SetString (PyExc_TypeError,
|
||||
_("Argument 'count' should be an non-negative "
|
||||
"integer."));
|
||||
{
|
||||
PyErr_SetString (PyExc_TypeError,
|
||||
_("Argument 'count' should be an non-negative "
|
||||
"integer."));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
gdbpy_ref<> result_list (PyList_New (0));
|
||||
|
@ -200,14 +200,14 @@ archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
|
|||
string_file stb;
|
||||
|
||||
try
|
||||
{
|
||||
insn_len = gdb_print_insn (gdbarch, pc, &stb, NULL);
|
||||
}
|
||||
{
|
||||
insn_len = gdb_print_insn (gdbarch, pc, &stb, NULL);
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
{
|
||||
gdbpy_convert_exception (except);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
gdbpy_ref<> pc_obj = gdb_py_object_from_ulongest (pc);
|
||||
if (pc_obj == nullptr)
|
||||
|
@ -224,8 +224,8 @@ archpy_disassemble (PyObject *self, PyObject *args, PyObject *kw)
|
|||
return nullptr;
|
||||
|
||||
if (PyDict_SetItemString (insn_dict.get (), "addr", pc_obj.get ())
|
||||
|| PyDict_SetItemString (insn_dict.get (), "asm", asm_obj.get ())
|
||||
|| PyDict_SetItemString (insn_dict.get (), "length", len_obj.get ()))
|
||||
|| PyDict_SetItemString (insn_dict.get (), "asm", asm_obj.get ())
|
||||
|| PyDict_SetItemString (insn_dict.get (), "length", len_obj.get ()))
|
||||
return NULL;
|
||||
|
||||
pc += insn_len;
|
||||
|
|
|
@ -33,12 +33,12 @@ create_breakpoint_event_object (PyObject *breakpoint_list, PyObject *first_bp)
|
|||
return NULL;
|
||||
|
||||
if (evpy_add_attribute (breakpoint_event_obj.get (),
|
||||
"breakpoint",
|
||||
first_bp) < 0)
|
||||
"breakpoint",
|
||||
first_bp) < 0)
|
||||
return NULL;
|
||||
if (evpy_add_attribute (breakpoint_event_obj.get (),
|
||||
"breakpoints",
|
||||
breakpoint_list) < 0)
|
||||
"breakpoints",
|
||||
breakpoint_list) < 0)
|
||||
return NULL;
|
||||
|
||||
return breakpoint_event_obj;
|
||||
|
|
|
@ -67,7 +67,7 @@ gdbpy_initialize_event (void)
|
|||
|
||||
int
|
||||
gdbpy_initialize_event_generic (PyTypeObject *type,
|
||||
const char *name)
|
||||
const char *name)
|
||||
{
|
||||
if (PyType_Ready (type) < 0)
|
||||
return -1;
|
||||
|
@ -81,7 +81,7 @@ gdbpy_initialize_event_generic (PyTypeObject *type,
|
|||
|
||||
int
|
||||
evpy_emit_event (PyObject *event,
|
||||
eventregistry_object *registry)
|
||||
eventregistry_object *registry)
|
||||
{
|
||||
Py_ssize_t i;
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
/* Declare all event types. */
|
||||
#define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
|
||||
extern PyTypeObject name##_event_object_type \
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object");
|
||||
#include "py-event-types.def"
|
||||
#undef GDB_PY_DEFINE_EVENT_TYPE
|
||||
|
||||
|
@ -56,10 +56,10 @@ typedef enum
|
|||
extern int emit_inferior_call_event (inferior_call_kind kind,
|
||||
ptid_t thread, CORE_ADDR addr);
|
||||
extern int emit_register_changed_event (struct frame_info *frame,
|
||||
int regnum);
|
||||
int regnum);
|
||||
extern int emit_memory_changed_event (CORE_ADDR addr, ssize_t len);
|
||||
extern int evpy_emit_event (PyObject *event,
|
||||
eventregistry_object *registry);
|
||||
eventregistry_object *registry);
|
||||
|
||||
extern gdbpy_ref<> create_event_object (PyTypeObject *py_type);
|
||||
|
||||
|
@ -78,7 +78,7 @@ extern int emit_clear_objfiles_event (void);
|
|||
|
||||
extern void evpy_dealloc (PyObject *self);
|
||||
extern int evpy_add_attribute (PyObject *event,
|
||||
const char *name, PyObject *attr)
|
||||
const char *name, PyObject *attr)
|
||||
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
||||
int gdbpy_initialize_event_generic (PyTypeObject *type, const char *name)
|
||||
CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
|
||||
|
|
|
@ -78,7 +78,7 @@ static void
|
|||
bpfinishpy_dealloc (PyObject *self)
|
||||
{
|
||||
struct finish_breakpoint_object *self_bpfinish =
|
||||
(struct finish_breakpoint_object *) self;
|
||||
(struct finish_breakpoint_object *) self;
|
||||
|
||||
Py_XDECREF (self_bpfinish->function_value);
|
||||
Py_XDECREF (self_bpfinish->return_type);
|
||||
|
@ -94,7 +94,7 @@ void
|
|||
bpfinishpy_pre_stop_hook (struct gdbpy_breakpoint_object *bp_obj)
|
||||
{
|
||||
struct finish_breakpoint_object *self_finishbp =
|
||||
(struct finish_breakpoint_object *) bp_obj;
|
||||
(struct finish_breakpoint_object *) bp_obj;
|
||||
|
||||
/* Can compute return_value only once. */
|
||||
gdb_assert (!self_finishbp->return_value);
|
||||
|
@ -105,22 +105,22 @@ bpfinishpy_pre_stop_hook (struct gdbpy_breakpoint_object *bp_obj)
|
|||
try
|
||||
{
|
||||
struct value *function =
|
||||
value_object_to_value (self_finishbp->function_value);
|
||||
value_object_to_value (self_finishbp->function_value);
|
||||
struct type *value_type =
|
||||
type_object_to_type (self_finishbp->return_type);
|
||||
type_object_to_type (self_finishbp->return_type);
|
||||
struct value *ret = get_return_value (function, value_type);
|
||||
|
||||
if (ret)
|
||||
{
|
||||
self_finishbp->return_value = value_to_value_object (ret);
|
||||
if (!self_finishbp->return_value)
|
||||
gdbpy_print_stack ();
|
||||
}
|
||||
{
|
||||
self_finishbp->return_value = value_to_value_object (ret);
|
||||
if (!self_finishbp->return_value)
|
||||
gdbpy_print_stack ();
|
||||
}
|
||||
else
|
||||
{
|
||||
Py_INCREF (Py_None);
|
||||
self_finishbp->return_value = Py_None;
|
||||
}
|
||||
{
|
||||
Py_INCREF (Py_None);
|
||||
self_finishbp->return_value = Py_None;
|
||||
}
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
|
@ -221,7 +221,7 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
|
|||
if (inferior_ptid == null_ptid)
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
_("No thread currently selected."));
|
||||
_("No thread currently selected."));
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -231,11 +231,11 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
|
|||
{
|
||||
internal_bp = PyObject_IsTrue (internal);
|
||||
if (internal_bp == -1)
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
_("The value of `internal' must be a boolean."));
|
||||
return -1;
|
||||
}
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
_("The value of `internal' must be a boolean."));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Find the function we will return from. */
|
||||
|
@ -245,28 +245,28 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
|
|||
try
|
||||
{
|
||||
if (get_frame_pc_if_available (frame, &pc))
|
||||
{
|
||||
function = find_pc_function (pc);
|
||||
if (function != NULL)
|
||||
{
|
||||
struct type *ret_type =
|
||||
{
|
||||
function = find_pc_function (pc);
|
||||
if (function != NULL)
|
||||
{
|
||||
struct type *ret_type =
|
||||
check_typedef (TYPE_TARGET_TYPE (SYMBOL_TYPE (function)));
|
||||
|
||||
/* Remember only non-void return types. */
|
||||
if (ret_type->code () != TYPE_CODE_VOID)
|
||||
{
|
||||
struct value *func_value;
|
||||
/* Remember only non-void return types. */
|
||||
if (ret_type->code () != TYPE_CODE_VOID)
|
||||
{
|
||||
struct value *func_value;
|
||||
|
||||
/* Ignore Python errors at this stage. */
|
||||
self_bpfinish->return_type = type_to_type_object (ret_type);
|
||||
PyErr_Clear ();
|
||||
func_value = read_var_value (function, NULL, frame);
|
||||
self_bpfinish->function_value =
|
||||
value_to_value_object (func_value);
|
||||
PyErr_Clear ();
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Ignore Python errors at this stage. */
|
||||
self_bpfinish->return_type = type_to_type_object (ret_type);
|
||||
PyErr_Clear ();
|
||||
func_value = read_var_value (function, NULL, frame);
|
||||
self_bpfinish->function_value =
|
||||
value_to_value_object (func_value);
|
||||
PyErr_Clear ();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
|
@ -294,14 +294,14 @@ bpfinishpy_init (PyObject *self, PyObject *args, PyObject *kwargs)
|
|||
event_location_up location
|
||||
= new_address_location (get_frame_pc (prev_frame), NULL, 0);
|
||||
create_breakpoint (python_gdbarch,
|
||||
location.get (), NULL, thread, NULL,
|
||||
0,
|
||||
1 /*temp_flag*/,
|
||||
bp_breakpoint,
|
||||
0,
|
||||
AUTO_BOOLEAN_TRUE,
|
||||
&bkpt_breakpoint_ops,
|
||||
0, 1, internal_bp, 0);
|
||||
location.get (), NULL, thread, NULL,
|
||||
0,
|
||||
1 /*temp_flag*/,
|
||||
bp_breakpoint,
|
||||
0,
|
||||
AUTO_BOOLEAN_TRUE,
|
||||
&bkpt_breakpoint_ops,
|
||||
0, 1, internal_bp, 0);
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
|
@ -353,24 +353,24 @@ bpfinishpy_detect_out_scope_cb (struct breakpoint *b,
|
|||
if (py_bp != NULL && b->py_bp_object->is_finish_bp)
|
||||
{
|
||||
struct finish_breakpoint_object *finish_bp =
|
||||
(struct finish_breakpoint_object *) py_bp;
|
||||
(struct finish_breakpoint_object *) py_bp;
|
||||
|
||||
/* Check scope if not currently stopped at the FinishBreakpoint. */
|
||||
if (b != bp_stopped)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (b->pspace == current_inferior ()->pspace
|
||||
&& (!target_has_registers ()
|
||||
|| frame_find_by_id (b->frame_id) == NULL))
|
||||
bpfinishpy_out_of_scope (finish_bp);
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
gdbpy_convert_exception (except);
|
||||
gdbpy_print_stack ();
|
||||
}
|
||||
}
|
||||
{
|
||||
try
|
||||
{
|
||||
if (b->pspace == current_inferior ()->pspace
|
||||
&& (!target_has_registers ()
|
||||
|| frame_find_by_id (b->frame_id) == NULL))
|
||||
bpfinishpy_out_of_scope (finish_bp);
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
gdbpy_convert_exception (except);
|
||||
gdbpy_print_stack ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -264,7 +264,7 @@ frapy_read_register (PyObject *self, PyObject *args)
|
|||
val = value_of_register (regnum, frame);
|
||||
|
||||
if (val == NULL)
|
||||
PyErr_SetString (PyExc_ValueError, _("Can't read register."));
|
||||
PyErr_SetString (PyExc_ValueError, _("Can't read register."));
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
|
|
|
@ -1013,8 +1013,8 @@ py_print_frame (PyObject *filter, frame_filter_flags flags,
|
|||
}
|
||||
}
|
||||
if (out->is_mi_like_p ())
|
||||
out->field_string ("arch",
|
||||
(gdbarch_bfd_arch_info (gdbarch))->printable_name);
|
||||
out->field_string ("arch",
|
||||
(gdbarch_bfd_arch_info (gdbarch))->printable_name);
|
||||
}
|
||||
|
||||
bool source_print
|
||||
|
|
|
@ -756,7 +756,7 @@ infpy_is_valid (PyObject *self, PyObject *args)
|
|||
}
|
||||
|
||||
/* Implementation of gdb.Inferior.thread_from_handle (self, handle)
|
||||
-> gdb.InferiorThread. */
|
||||
-> gdb.InferiorThread. */
|
||||
|
||||
static PyObject *
|
||||
infpy_thread_from_thread_handle (PyObject *self, PyObject *args, PyObject *kw)
|
||||
|
@ -801,7 +801,7 @@ infpy_thread_from_thread_handle (PyObject *self, PyObject *args, PyObject *kw)
|
|||
struct thread_info *thread_info;
|
||||
|
||||
thread_info = find_thread_by_handle
|
||||
(gdb::array_view<const gdb_byte> (bytes, bytes_len),
|
||||
(gdb::array_view<const gdb_byte> (bytes, bytes_len),
|
||||
inf_obj->inferior);
|
||||
if (thread_info != NULL)
|
||||
return thread_to_thread_object (thread_info).release ();
|
||||
|
|
|
@ -286,7 +286,7 @@ thpy_thread_handle (PyObject *self, PyObject *args)
|
|||
}
|
||||
|
||||
PyObject *object = PyBytes_FromStringAndSize ((const char *) hv.data (),
|
||||
hv.size());
|
||||
hv.size());
|
||||
return object;
|
||||
}
|
||||
|
||||
|
|
|
@ -453,7 +453,7 @@ objfpy_lookup_global_symbol (PyObject *self, PyObject *args, PyObject *kw)
|
|||
try
|
||||
{
|
||||
struct symbol *sym = lookup_global_symbol_from_objfile
|
||||
(obj->objfile, GLOBAL_BLOCK, symbol_name, (domain_enum) domain).symbol;
|
||||
(obj->objfile, GLOBAL_BLOCK, symbol_name, (domain_enum) domain).symbol;
|
||||
if (sym == nullptr)
|
||||
Py_RETURN_NONE;
|
||||
|
||||
|
@ -487,7 +487,7 @@ objfpy_lookup_static_symbol (PyObject *self, PyObject *args, PyObject *kw)
|
|||
try
|
||||
{
|
||||
struct symbol *sym = lookup_global_symbol_from_objfile
|
||||
(obj->objfile, STATIC_BLOCK, symbol_name, (domain_enum) domain).symbol;
|
||||
(obj->objfile, STATIC_BLOCK, symbol_name, (domain_enum) domain).symbol;
|
||||
if (sym == nullptr)
|
||||
Py_RETURN_NONE;
|
||||
|
||||
|
|
|
@ -438,10 +438,10 @@ print_children (PyObject *printer, const char *hint,
|
|||
3. Other. Always print a ",". */
|
||||
if (i == 0)
|
||||
{
|
||||
if (is_py_none)
|
||||
fputs_filtered ("{", stream);
|
||||
else
|
||||
fputs_filtered (" = {", stream);
|
||||
if (is_py_none)
|
||||
fputs_filtered ("{", stream);
|
||||
else
|
||||
fputs_filtered (" = {", stream);
|
||||
}
|
||||
|
||||
else if (! is_map || i % 2 == 0)
|
||||
|
|
|
@ -395,13 +395,13 @@ gdbpy_parse_register_id (struct gdbarch *gdbarch, PyObject *pyo_reg_id,
|
|||
{
|
||||
long value;
|
||||
if (gdb_py_int_as_long (pyo_reg_id, &value) && (int) value == value)
|
||||
{
|
||||
{
|
||||
if (user_reg_map_regnum_to_name (gdbarch, value) != NULL)
|
||||
{
|
||||
*reg_num = (int) value;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/* The register could be a gdb.RegisterDescriptor object. */
|
||||
else if (PyObject_IsInstance (pyo_reg_id,
|
||||
|
|
|
@ -35,8 +35,8 @@ create_signal_event_object (enum gdb_signal stop_signal)
|
|||
if (signal_name_obj == NULL)
|
||||
return NULL;
|
||||
if (evpy_add_attribute (signal_event_obj.get (),
|
||||
"stop_signal",
|
||||
signal_name_obj.get ()) < 0)
|
||||
"stop_signal",
|
||||
signal_name_obj.get ()) < 0)
|
||||
return NULL;
|
||||
|
||||
return signal_event_obj;
|
||||
|
|
|
@ -49,24 +49,24 @@ emit_stop_event (struct bpstats *bs, enum gdb_signal stop_signal)
|
|||
for (current_bs = bs; current_bs != NULL; current_bs = current_bs->next)
|
||||
{
|
||||
if (current_bs->breakpoint_at
|
||||
&& current_bs->breakpoint_at->py_bp_object)
|
||||
{
|
||||
PyObject *current_py_bp =
|
||||
(PyObject *) current_bs->breakpoint_at->py_bp_object;
|
||||
&& current_bs->breakpoint_at->py_bp_object)
|
||||
{
|
||||
PyObject *current_py_bp =
|
||||
(PyObject *) current_bs->breakpoint_at->py_bp_object;
|
||||
|
||||
if (list == NULL)
|
||||
{
|
||||
list.reset (PyList_New (0));
|
||||
if (list == NULL)
|
||||
if (list == NULL)
|
||||
{
|
||||
list.reset (PyList_New (0));
|
||||
if (list == NULL)
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (PyList_Append (list.get (), current_py_bp))
|
||||
if (PyList_Append (list.get (), current_py_bp))
|
||||
return -1;
|
||||
|
||||
if (first_bp == NULL)
|
||||
first_bp = current_py_bp;
|
||||
}
|
||||
if (first_bp == NULL)
|
||||
first_bp = current_py_bp;
|
||||
}
|
||||
}
|
||||
|
||||
if (list != NULL)
|
||||
|
|
|
@ -26,7 +26,7 @@ extern gdbpy_ref<> create_stop_event_object (PyTypeObject *py_type);
|
|||
extern void stop_evpy_dealloc (PyObject *self);
|
||||
|
||||
extern int emit_stop_event (struct bpstats *bs,
|
||||
enum gdb_signal stop_signal);
|
||||
enum gdb_signal stop_signal);
|
||||
|
||||
extern gdbpy_ref<> create_breakpoint_event_object (PyObject *breakpoint_list,
|
||||
PyObject *first_bp);
|
||||
|
|
|
@ -48,8 +48,8 @@ create_thread_event_object (PyTypeObject *py_type, PyObject *thread)
|
|||
return NULL;
|
||||
|
||||
if (evpy_add_attribute (thread_event_obj.get (),
|
||||
"inferior_thread",
|
||||
thread) < 0)
|
||||
"inferior_thread",
|
||||
thread) < 0)
|
||||
return NULL;
|
||||
|
||||
return thread_event_obj;
|
||||
|
|
|
@ -345,8 +345,8 @@ gdbpy_register_tui_window (PyObject *self, PyObject *args, PyObject *kw)
|
|||
#define REQUIRE_WINDOW(Window) \
|
||||
do { \
|
||||
if ((Window)->window == nullptr) \
|
||||
return PyErr_Format (PyExc_RuntimeError, \
|
||||
_("TUI window is invalid.")); \
|
||||
return PyErr_Format (PyExc_RuntimeError, \
|
||||
_("TUI window is invalid.")); \
|
||||
} while (0)
|
||||
|
||||
/* Python function which checks the validity of a TUI window
|
||||
|
|
|
@ -112,11 +112,11 @@ pyuw_value_obj_to_pointer (PyObject *pyo_value, CORE_ADDR *addr)
|
|||
try
|
||||
{
|
||||
if ((value = value_object_to_value (pyo_value)) != NULL)
|
||||
{
|
||||
*addr = unpack_pointer (value_type (value),
|
||||
value_contents (value));
|
||||
rc = 1;
|
||||
}
|
||||
{
|
||||
*addr = unpack_pointer (value_type (value),
|
||||
value_contents (value));
|
||||
rc = 1;
|
||||
}
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
|
@ -133,7 +133,7 @@ pyuw_value_obj_to_pointer (PyObject *pyo_value, CORE_ADDR *addr)
|
|||
|
||||
static int
|
||||
pyuw_object_attribute_to_pointer (PyObject *pyo, const char *attr_name,
|
||||
CORE_ADDR *addr)
|
||||
CORE_ADDR *addr)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
|
@ -142,14 +142,14 @@ pyuw_object_attribute_to_pointer (PyObject *pyo, const char *attr_name,
|
|||
gdbpy_ref<> pyo_value (PyObject_GetAttrString (pyo, attr_name));
|
||||
|
||||
if (pyo_value != NULL && pyo_value != Py_None)
|
||||
{
|
||||
rc = pyuw_value_obj_to_pointer (pyo_value.get (), addr);
|
||||
if (!rc)
|
||||
PyErr_Format (
|
||||
PyExc_ValueError,
|
||||
_("The value of the '%s' attribute is not a pointer."),
|
||||
attr_name);
|
||||
}
|
||||
{
|
||||
rc = pyuw_value_obj_to_pointer (pyo_value.get (), addr);
|
||||
if (!rc)
|
||||
PyErr_Format (
|
||||
PyExc_ValueError,
|
||||
_("The value of the '%s' attribute is not a pointer."),
|
||||
attr_name);
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
@ -173,24 +173,24 @@ unwind_infopy_str (PyObject *self)
|
|||
stb.printf ("\nSaved registers: (");
|
||||
for (const saved_reg ® : *unwind_info->saved_regs)
|
||||
{
|
||||
struct value *value = value_object_to_value (reg.value.get ());
|
||||
struct value *value = value_object_to_value (reg.value.get ());
|
||||
|
||||
stb.printf ("%s(%d, ", sep, reg.number);
|
||||
if (value != NULL)
|
||||
{
|
||||
try
|
||||
{
|
||||
value_print (value, &stb, &opts);
|
||||
stb.puts (")");
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
}
|
||||
else
|
||||
stb.puts ("<BAD>)");
|
||||
sep = ", ";
|
||||
stb.printf ("%s(%d, ", sep, reg.number);
|
||||
if (value != NULL)
|
||||
{
|
||||
try
|
||||
{
|
||||
value_print (value, &stb, &opts);
|
||||
stb.puts (")");
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
GDB_PY_HANDLE_EXCEPTION (except);
|
||||
}
|
||||
}
|
||||
else
|
||||
stb.puts ("<BAD>)");
|
||||
sep = ", ";
|
||||
}
|
||||
stb.puts (")");
|
||||
}
|
||||
|
@ -203,7 +203,7 @@ unwind_infopy_str (PyObject *self)
|
|||
|
||||
static PyObject *
|
||||
pyuw_create_unwind_info (PyObject *pyo_pending_frame,
|
||||
struct frame_id frame_id)
|
||||
struct frame_id frame_id)
|
||||
{
|
||||
unwind_info_object *unwind_info
|
||||
= PyObject_New (unwind_info_object, &unwind_info_object_type);
|
||||
|
@ -211,7 +211,7 @@ pyuw_create_unwind_info (PyObject *pyo_pending_frame,
|
|||
if (((pending_frame_object *) pyo_pending_frame)->frame_info == NULL)
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
"Attempting to use stale PendingFrame");
|
||||
"Attempting to use stale PendingFrame");
|
||||
return NULL;
|
||||
}
|
||||
unwind_info->frame_id = frame_id;
|
||||
|
@ -237,11 +237,11 @@ unwind_infopy_add_saved_register (PyObject *self, PyObject *args)
|
|||
if (pending_frame->frame_info == NULL)
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
"UnwindInfo instance refers to a stale PendingFrame");
|
||||
"UnwindInfo instance refers to a stale PendingFrame");
|
||||
return NULL;
|
||||
}
|
||||
if (!PyArg_UnpackTuple (args, "previous_frame_register", 2, 2,
|
||||
&pyo_reg_id, &pyo_reg_value))
|
||||
&pyo_reg_id, &pyo_reg_value))
|
||||
return NULL;
|
||||
if (!gdbpy_parse_register_id (pending_frame->gdbarch, pyo_reg_id, ®num))
|
||||
{
|
||||
|
@ -255,19 +255,19 @@ unwind_infopy_add_saved_register (PyObject *self, PyObject *args)
|
|||
if (pyo_reg_value == NULL
|
||||
|| (value = value_object_to_value (pyo_reg_value)) == NULL)
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError, "Bad register value");
|
||||
return NULL;
|
||||
PyErr_SetString (PyExc_ValueError, "Bad register value");
|
||||
return NULL;
|
||||
}
|
||||
data_size = register_size (pending_frame->gdbarch, regnum);
|
||||
if (data_size != TYPE_LENGTH (value_type (value)))
|
||||
{
|
||||
PyErr_Format (
|
||||
PyExc_ValueError,
|
||||
"The value of the register returned by the Python "
|
||||
"sniffer has unexpected size: %u instead of %u.",
|
||||
(unsigned) TYPE_LENGTH (value_type (value)),
|
||||
(unsigned) data_size);
|
||||
return NULL;
|
||||
PyErr_Format (
|
||||
PyExc_ValueError,
|
||||
"The value of the register returned by the Python "
|
||||
"sniffer has unexpected size: %u instead of %u.",
|
||||
(unsigned) TYPE_LENGTH (value_type (value)),
|
||||
(unsigned) data_size);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -275,12 +275,12 @@ unwind_infopy_add_saved_register (PyObject *self, PyObject *args)
|
|||
bool found = false;
|
||||
for (saved_reg ® : *unwind_info->saved_regs)
|
||||
{
|
||||
if (regnum == reg.number)
|
||||
{
|
||||
if (regnum == reg.number)
|
||||
{
|
||||
found = true;
|
||||
reg.value = std::move (new_value);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
unwind_info->saved_regs->emplace_back (regnum, std::move (new_value));
|
||||
|
@ -339,7 +339,7 @@ pending_framepy_read_register (PyObject *self, PyObject *args)
|
|||
if (pending_frame->frame_info == NULL)
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
"Attempting to read register from stale PendingFrame");
|
||||
"Attempting to read register from stale PendingFrame");
|
||||
return NULL;
|
||||
}
|
||||
if (!PyArg_UnpackTuple (args, "read_register", 1, 1, &pyo_reg_id))
|
||||
|
@ -359,9 +359,9 @@ pending_framepy_read_register (PyObject *self, PyObject *args)
|
|||
handle the user register case. */
|
||||
val = value_of_register (regnum, pending_frame->frame_info);
|
||||
if (val == NULL)
|
||||
PyErr_Format (PyExc_ValueError,
|
||||
"Cannot read register %d from frame.",
|
||||
regnum);
|
||||
PyErr_Format (PyExc_ValueError,
|
||||
"Cannot read register %d from frame.",
|
||||
regnum);
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
|
@ -387,7 +387,7 @@ pending_framepy_create_unwind_info (PyObject *self, PyObject *args)
|
|||
if (!pyuw_object_attribute_to_pointer (pyo_frame_id, "sp", &sp))
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
_("frame_id should have 'sp' attribute."));
|
||||
_("frame_id should have 'sp' attribute."));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -406,7 +406,7 @@ pending_framepy_create_unwind_info (PyObject *self, PyObject *args)
|
|||
return pyuw_create_unwind_info (self, frame_id_build (sp, pc));
|
||||
else
|
||||
return pyuw_create_unwind_info (self,
|
||||
frame_id_build_special (sp, pc, special));
|
||||
frame_id_build_special (sp, pc, special));
|
||||
}
|
||||
|
||||
/* Implementation of PendingFrame.architecture (self) -> gdb.Architecture. */
|
||||
|
@ -419,7 +419,7 @@ pending_framepy_architecture (PyObject *self, PyObject *args)
|
|||
if (pending_frame->frame_info == NULL)
|
||||
{
|
||||
PyErr_SetString (PyExc_ValueError,
|
||||
"Attempting to read register from stale PendingFrame");
|
||||
"Attempting to read register from stale PendingFrame");
|
||||
return NULL;
|
||||
}
|
||||
return gdbarch_to_arch_object (pending_frame->gdbarch);
|
||||
|
@ -429,7 +429,7 @@ pending_framepy_architecture (PyObject *self, PyObject *args)
|
|||
|
||||
static void
|
||||
pyuw_this_id (struct frame_info *this_frame, void **cache_ptr,
|
||||
struct frame_id *this_id)
|
||||
struct frame_id *this_id)
|
||||
{
|
||||
*this_id = ((cached_frame_info *) *cache_ptr)->frame_id;
|
||||
if (pyuw_debug >= 1)
|
||||
|
@ -444,18 +444,18 @@ pyuw_this_id (struct frame_info *this_frame, void **cache_ptr,
|
|||
|
||||
static struct value *
|
||||
pyuw_prev_register (struct frame_info *this_frame, void **cache_ptr,
|
||||
int regnum)
|
||||
int regnum)
|
||||
{
|
||||
cached_frame_info *cached_frame = (cached_frame_info *) *cache_ptr;
|
||||
cached_reg_t *reg_info = cached_frame->reg;
|
||||
cached_reg_t *reg_info_end = reg_info + cached_frame->reg_count;
|
||||
|
||||
TRACE_PY_UNWIND (1, "%s (frame=%p,...,reg=%d)\n", __FUNCTION__, this_frame,
|
||||
regnum);
|
||||
regnum);
|
||||
for (; reg_info < reg_info_end; ++reg_info)
|
||||
{
|
||||
if (regnum == reg_info->num)
|
||||
return frame_unwind_got_bytes (this_frame, regnum, reg_info->data);
|
||||
return frame_unwind_got_bytes (this_frame, regnum, reg_info->data);
|
||||
}
|
||||
|
||||
return frame_unwind_got_optimized (this_frame, regnum);
|
||||
|
@ -465,7 +465,7 @@ pyuw_prev_register (struct frame_info *this_frame, void **cache_ptr,
|
|||
|
||||
static int
|
||||
pyuw_sniffer (const struct frame_unwind *self, struct frame_info *this_frame,
|
||||
void **cache_ptr)
|
||||
void **cache_ptr)
|
||||
{
|
||||
struct gdbarch *gdbarch = (struct gdbarch *) (self->unwind_data);
|
||||
cached_frame_info *cached_frame;
|
||||
|
@ -473,8 +473,8 @@ pyuw_sniffer (const struct frame_unwind *self, struct frame_info *this_frame,
|
|||
gdbpy_enter enter_py (gdbarch, current_language);
|
||||
|
||||
TRACE_PY_UNWIND (3, "%s (SP=%s, PC=%s)\n", __FUNCTION__,
|
||||
paddress (gdbarch, get_frame_sp (this_frame)),
|
||||
paddress (gdbarch, get_frame_pc (this_frame)));
|
||||
paddress (gdbarch, get_frame_sp (this_frame)),
|
||||
paddress (gdbarch, get_frame_pc (this_frame)));
|
||||
|
||||
/* Create PendingFrame instance to pass to sniffers. */
|
||||
pending_frame_object *pfo = PyObject_New (pending_frame_object,
|
||||
|
@ -494,8 +494,8 @@ pyuw_sniffer (const struct frame_unwind *self, struct frame_info *this_frame,
|
|||
|| ! PyObject_HasAttrString (gdb_python_module, "_execute_unwinders"))
|
||||
{
|
||||
PyErr_SetString (PyExc_NameError,
|
||||
"Installation error: gdb._execute_unwinders function "
|
||||
"is missing");
|
||||
"Installation error: gdb._execute_unwinders function "
|
||||
"is missing");
|
||||
gdbpy_print_stack ();
|
||||
return 0;
|
||||
}
|
||||
|
@ -522,7 +522,7 @@ pyuw_sniffer (const struct frame_unwind *self, struct frame_info *this_frame,
|
|||
|
||||
/* Received UnwindInfo, cache data. */
|
||||
if (PyObject_IsInstance (pyo_unwind_info.get (),
|
||||
(PyObject *) &unwind_info_object_type) <= 0)
|
||||
(PyObject *) &unwind_info_object_type) <= 0)
|
||||
error (_("A Unwinder should return gdb.UnwindInfo instance."));
|
||||
|
||||
{
|
||||
|
@ -543,17 +543,17 @@ pyuw_sniffer (const struct frame_unwind *self, struct frame_info *this_frame,
|
|||
{
|
||||
saved_reg *reg = &(*unwind_info->saved_regs)[i];
|
||||
|
||||
struct value *value = value_object_to_value (reg->value.get ());
|
||||
size_t data_size = register_size (gdbarch, reg->number);
|
||||
struct value *value = value_object_to_value (reg->value.get ());
|
||||
size_t data_size = register_size (gdbarch, reg->number);
|
||||
|
||||
cached_frame->reg[i].num = reg->number;
|
||||
|
||||
/* `value' validation was done before, just assert. */
|
||||
gdb_assert (value != NULL);
|
||||
gdb_assert (data_size == TYPE_LENGTH (value_type (value)));
|
||||
/* `value' validation was done before, just assert. */
|
||||
gdb_assert (value != NULL);
|
||||
gdb_assert (data_size == TYPE_LENGTH (value_type (value)));
|
||||
|
||||
cached_frame->reg[i].data = (gdb_byte *) xmalloc (data_size);
|
||||
memcpy (cached_frame->reg[i].data, value_contents (value), data_size);
|
||||
memcpy (cached_frame->reg[i].data, value_contents (value), data_size);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -600,7 +600,7 @@ pyuw_on_new_gdbarch (struct gdbarch *newarch)
|
|||
if (!data->unwinder_registered)
|
||||
{
|
||||
struct frame_unwind *unwinder
|
||||
= GDBARCH_OBSTACK_ZALLOC (newarch, struct frame_unwind);
|
||||
= GDBARCH_OBSTACK_ZALLOC (newarch, struct frame_unwind);
|
||||
|
||||
unwinder->type = NORMAL_FRAME;
|
||||
unwinder->stop_reason = default_frame_unwind_stop_reason;
|
||||
|
@ -622,12 +622,12 @@ gdbpy_initialize_unwind (void)
|
|||
int rc;
|
||||
add_setshow_zuinteger_cmd
|
||||
("py-unwind", class_maintenance, &pyuw_debug,
|
||||
_("Set Python unwinder debugging."),
|
||||
_("Show Python unwinder debugging."),
|
||||
_("When non-zero, Python unwinder debugging is enabled."),
|
||||
NULL,
|
||||
NULL,
|
||||
&setdebuglist, &showdebuglist);
|
||||
_("Set Python unwinder debugging."),
|
||||
_("Show Python unwinder debugging."),
|
||||
_("When non-zero, Python unwinder debugging is enabled."),
|
||||
NULL,
|
||||
NULL,
|
||||
&setdebuglist, &showdebuglist);
|
||||
pyuw_gdbarch_data
|
||||
= gdbarch_data_register_post_init (pyuw_gdbarch_data_init);
|
||||
gdb::observers::architecture_changed.attach (pyuw_on_new_gdbarch);
|
||||
|
|
|
@ -122,7 +122,7 @@ convert_buffer_and_type_to_value (PyObject *obj, struct type *type)
|
|||
&& PyObject_GetBuffer (obj, &py_buf, PyBUF_SIMPLE) == 0)
|
||||
{
|
||||
/* Got a buffer, py_buf, out of obj. Cause it to be released
|
||||
when it goes out of scope. */
|
||||
when it goes out of scope. */
|
||||
buffer_up.reset (&py_buf);
|
||||
}
|
||||
else
|
||||
|
@ -161,7 +161,7 @@ valpy_new (PyTypeObject *subtype, PyObject *args, PyObject *kwargs)
|
|||
{
|
||||
type = type_object_to_type (type_obj);
|
||||
if (type == nullptr)
|
||||
{
|
||||
{
|
||||
PyErr_SetString (PyExc_TypeError,
|
||||
_("type argument must be a gdb.Type."));
|
||||
return nullptr;
|
||||
|
@ -252,18 +252,18 @@ valpy_referenced_value (PyObject *self, PyObject *args)
|
|||
|
||||
self_val = ((value_object *) self)->value;
|
||||
switch (check_typedef (value_type (self_val))->code ())
|
||||
{
|
||||
case TYPE_CODE_PTR:
|
||||
res_val = value_ind (self_val);
|
||||
break;
|
||||
case TYPE_CODE_REF:
|
||||
case TYPE_CODE_RVALUE_REF:
|
||||
res_val = coerce_ref (self_val);
|
||||
break;
|
||||
default:
|
||||
error(_("Trying to get the referenced value from a value which is "
|
||||
"neither a pointer nor a reference."));
|
||||
}
|
||||
{
|
||||
case TYPE_CODE_PTR:
|
||||
res_val = value_ind (self_val);
|
||||
break;
|
||||
case TYPE_CODE_REF:
|
||||
case TYPE_CODE_RVALUE_REF:
|
||||
res_val = coerce_ref (self_val);
|
||||
break;
|
||||
default:
|
||||
error(_("Trying to get the referenced value from a value which is "
|
||||
"neither a pointer nor a reference."));
|
||||
}
|
||||
|
||||
result = value_to_value_object (res_val);
|
||||
}
|
||||
|
@ -963,7 +963,7 @@ valpy_getitem (PyObject *self, PyObject *key)
|
|||
{
|
||||
PyErr_SetString (PyExc_AttributeError,
|
||||
_("gdb.Field object has no name and no "
|
||||
"'bitpos' attribute."));
|
||||
"'bitpos' attribute."));
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1001,10 +1001,10 @@ valpy_getitem (PyObject *self, PyObject *key)
|
|||
res_val = value_cast (lookup_pointer_type (base_class_type), tmp);
|
||||
else if (val_type->code () == TYPE_CODE_REF)
|
||||
res_val = value_cast (lookup_lvalue_reference_type (base_class_type),
|
||||
tmp);
|
||||
tmp);
|
||||
else if (val_type->code () == TYPE_CODE_RVALUE_REF)
|
||||
res_val = value_cast (lookup_rvalue_reference_type (base_class_type),
|
||||
tmp);
|
||||
tmp);
|
||||
else
|
||||
res_val = value_cast (base_class_type, tmp);
|
||||
}
|
||||
|
@ -1856,7 +1856,7 @@ convert_value_from_python (PyObject *obj)
|
|||
if (PyErr_Occurred ())
|
||||
{
|
||||
/* If the error was an overflow, we can try converting to
|
||||
ULONGEST instead. */
|
||||
ULONGEST instead. */
|
||||
if (PyErr_ExceptionMatches (PyExc_OverflowError))
|
||||
{
|
||||
gdbpy_err_fetch fetched_error;
|
||||
|
|
|
@ -435,7 +435,7 @@ python_xmethod_worker::do_get_result_type (value *obj,
|
|||
else if (TYPE_IS_REFERENCE (obj_type))
|
||||
{
|
||||
struct type *this_ref
|
||||
= lookup_reference_type (this_type, obj_type->code ());
|
||||
= lookup_reference_type (this_type, obj_type->code ());
|
||||
|
||||
if (!types_equal (obj_type, this_ref))
|
||||
obj = value_cast (this_ref, obj);
|
||||
|
|
|
@ -338,9 +338,9 @@ typedef struct gdbpy_breakpoint_object
|
|||
#define BPPY_REQUIRE_VALID(Breakpoint) \
|
||||
do { \
|
||||
if ((Breakpoint)->bp == NULL) \
|
||||
return PyErr_Format (PyExc_RuntimeError, \
|
||||
_("Breakpoint %d is invalid."), \
|
||||
(Breakpoint)->number); \
|
||||
return PyErr_Format (PyExc_RuntimeError, \
|
||||
_("Breakpoint %d is invalid."), \
|
||||
(Breakpoint)->number); \
|
||||
} while (0)
|
||||
|
||||
/* Require that BREAKPOINT be a valid breakpoint ID; throw a Python
|
||||
|
@ -348,11 +348,11 @@ typedef struct gdbpy_breakpoint_object
|
|||
#define BPPY_SET_REQUIRE_VALID(Breakpoint) \
|
||||
do { \
|
||||
if ((Breakpoint)->bp == NULL) \
|
||||
{ \
|
||||
PyErr_Format (PyExc_RuntimeError, _("Breakpoint %d is invalid."), \
|
||||
(Breakpoint)->number); \
|
||||
return -1; \
|
||||
} \
|
||||
{ \
|
||||
PyErr_Format (PyExc_RuntimeError, _("Breakpoint %d is invalid."), \
|
||||
(Breakpoint)->number); \
|
||||
return -1; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
|
@ -675,7 +675,7 @@ extern const struct language_defn *python_language;
|
|||
if (Exception.reason < 0) \
|
||||
{ \
|
||||
gdbpy_convert_exception (Exception); \
|
||||
return NULL; \
|
||||
return NULL; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
@ -684,7 +684,7 @@ extern const struct language_defn *python_language;
|
|||
#define GDB_PY_SET_HANDLE_EXCEPTION(Exception) \
|
||||
do { \
|
||||
if (Exception.reason < 0) \
|
||||
{ \
|
||||
{ \
|
||||
gdbpy_convert_exception (Exception); \
|
||||
return -1; \
|
||||
} \
|
||||
|
|
|
@ -380,7 +380,7 @@ python_run_simple_file (FILE *file, const char *filename)
|
|||
if (return_value == nullptr)
|
||||
{
|
||||
/* Use PyErr_PrintEx instead of gdbpy_print_stack to better match the
|
||||
behavior of the non-Windows codepath. */
|
||||
behavior of the non-Windows codepath. */
|
||||
PyErr_PrintEx(0);
|
||||
}
|
||||
|
||||
|
@ -1208,20 +1208,20 @@ gdbpy_write (PyObject *self, PyObject *args, PyObject *kw)
|
|||
try
|
||||
{
|
||||
switch (stream_type)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
fprintf_filtered (gdb_stderr, "%s", arg);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
fprintf_filtered (gdb_stdlog, "%s", arg);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
fprintf_filtered (gdb_stdout, "%s", arg);
|
||||
}
|
||||
}
|
||||
default:
|
||||
fprintf_filtered (gdb_stdout, "%s", arg);
|
||||
}
|
||||
}
|
||||
catch (const gdb_exception &except)
|
||||
{
|
||||
|
@ -2142,7 +2142,7 @@ struct PyModuleDef python_GdbModuleDef =
|
|||
/* Define all the event objects. */
|
||||
#define GDB_PY_DEFINE_EVENT_TYPE(name, py_name, doc, base) \
|
||||
PyTypeObject name##_event_object_type \
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
|
||||
CPYCHECKER_TYPE_OBJECT_FOR_TYPEDEF ("event_object") \
|
||||
= { \
|
||||
PyVarObject_HEAD_INIT (NULL, 0) \
|
||||
"gdb." py_name, /* tp_name */ \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue