I pulled and rebuilt the plugin today on F15 x86-64.
Then I used it to build the gdb 7.4 branch with CC=gcc-with-cpychecker.
I didn't modify the plugin at all.
I can file bugs for these if you'd prefer, just let me know.
I got the appended Python exception trace.
For this:
../../src/gdb/arm-tdep.c:6798:22: error: Unhandled Python exception raised calling 'execute' method
The line in question is:
regmask &= ~(1 << regno);
Also:
../../src/gdb/arm-tdep.c:6464:6: error: comparison against uninitialized data: gcc.VarDecl(32844) at ../../src/gdb/arm-tdep.c:6464
The VarDecl bit seems like a formatting bug.
I wouldn't mind a mode where cpychecker doesn't emit any diagnostics for
functions unrelated to the use of Python. E.g., arm-tdep.c does not
call into Python at all, analyzing most of it seems like a waste of
time.
Finally, while compiling arm-tdep.c, cc1 started using lots and lots of
memory, enough that my machine noticeably slowed down. I C-c'd the
build, and this killed make and gcc -- but not cc1. In the end I had to
resort to kill. So, I surmise that there is some issue with C-c
handling in the plugin.
Tom
/home/tromey/Space/Trunk/gcc-python-plugin/gcc-with-cpychecker -g3 -gdwarf-4 -I. -I../../src/gdb -I../../src/gdb/common -I../../src/gdb/config -DLOCALEDIR="\"/home/tromey/Space/gdb/7.4/install/share/locale\"" -DHAVE_CONFIG_H -I../../src/gdb/../include/opcode -I../../src/gdb/../opcodes/.. -I../../src/gdb/../readline/.. -I../bfd -I../../src/gdb/../bfd -I../../src/gdb/../include -I../libdecnumber -I../../src/gdb/../libdecnumber -I../../src/gdb/gnulib -Ignulib -DTUI=1 -g3 -gdwarf-4 -I/usr/include/python2.7 -I/usr/include/python2.7 -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wunused-value -Wunused-function -Wno-switch -Wno-char-subscripts -c -o arm-tdep.o -MT arm-tdep.o -MMD -MP -MF .deps/arm-tdep.Tpo ../../src/gdb/arm-tdep.c
../../src/gdb/arm-tdep.c: In function ‘arm_gdbarch_init’:
../../src/gdb/arm-tdep.c:9672:1: note: this function is too complicated for the reference-count checker to analyze
../../src/gdb/arm-tdep.c: In function ‘arm_record_special_symbol’:
../../src/gdb/arm-tdep.c:9408:1: note: this function is too complicated for the reference-count checker to analyze
../../src/gdb/arm-tdep.c: In function ‘arm_decode_svc_copro’:
../../src/gdb/arm-tdep.c:7694:1: note: this function is too complicated for the reference-count checker to analyze
../../src/gdb/arm-tdep.c: In function ‘arm_decode_ld_st_word_ubyte’:
../../src/gdb/arm-tdep.c:7500:1: note: this function is too complicated for the reference-count checker to analyze
../../src/gdb/arm-tdep.c: In function ‘arm_decode_dp_misc’:
../../src/gdb/arm-tdep.c:7454:1: note: this function is too complicated for the reference-count checker to analyze
../../src/gdb/arm-tdep.c: In function ‘cleanup_block_load_all’:
../../src/gdb/arm-tdep.c:6798:22: error: Unhandled Python exception raised calling 'execute' method
Traceback (most recent call last):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/__init__.py", line 52, in execute
self.show_possible_null_derefs)
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/refcounts.py", line 2706, in check_refcounts
limits=limits)
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2633, in iter_traces
for trace in iter_traces(fun, facets, newprefix, limits):
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2601, in iter_traces
transitions = curstate.get_transitions()
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 1766, in get_transitions
return self._get_transitions_for_stmt(stmt)
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 1793, in _get_transitions_for_stmt
return self._get_transitions_for_GimpleAssign(stmt)
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2243, in _get_transitions_for_GimpleAssign
value = self.eval_rhs(stmt)
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 2186, in eval_rhs
c = a.eval_binop(stmt.exprcode, b, stmt.lhs.type, stmt.loc)
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 402, in eval_binop
newvalue = eval_binop(exprcode, self.value, rhs.value)
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 314, in eval_binop
result = inner()
File "/home/tromey/Space/Trunk/gcc-python-plugin/libcpychecker/absinterp.py", line 303, in inner
return a << b
ValueError: negative shift count
../../src/gdb/arm-tdep.c: In function ‘arm_copy_ldr_str_ldrb_strb’:
../../src/gdb/arm-tdep.c:6667:1: note: this function is too complicated for the reference-count checker to analyze
../../src/gdb/arm-tdep.c: In function ‘arm_copy_extra_ld_st’:
../../src/gdb/arm-tdep.c:6464:6: error: comparison against uninitialized data: gcc.VarDecl(32844) at ../../src/gdb/arm-tdep.c:6464
../../src/gdb/arm-tdep.c:6443:6: note: when taking False path at: if (!insn_references_pc (insn, 0x000ff00ful))
../../src/gdb/arm-tdep.c:6446:7: note: reaching: if (debug_displaced)
../../src/gdb/arm-tdep.c:6446:6: note: when taking True path at: if (debug_displaced)
../../src/gdb/arm-tdep.c:6447:24: note: reaching: fprintf_unfiltered (gdb_stdlog, "displaced: copying %sextra load/store "
../../src/gdb/arm-tdep.c:6447:24: note: when taking True path at: fprintf_unfiltered (gdb_stdlog, "displaced: copying %sextra load/store "
../../src/gdb/arm-tdep.c:6447:24: note: reaching: fprintf_unfiltered (gdb_stdlog, "displaced: copying %sextra load/store "
../../src/gdb/arm-tdep.c:6453:6: note: taking False path at: if (opcode < 0)
../../src/gdb/arm-tdep.c:6457:36: note: reaching: dsc->tmp[0] = displaced_read_reg (regs, dsc, 0);
../../src/gdb/arm-tdep.c:6457:15: note: when treating unknown struct displaced_step_closure * from ../../src/gdb/arm-tdep.c:6430 as non-NULL at: dsc->tmp[0] = displaced_read_reg (regs, dsc, 0);
../../src/gdb/arm-tdep.c:6460:6: note: taking False path at: if (!immed)
../../src/gdb/arm-tdep.c:6463:31: note: reaching: rt_val = displaced_read_reg (regs, dsc, rt);
../../src/gdb/arm-tdep.c:6464:6: note: found 2 similar trace(s) to this
../../src/gdb/arm-tdep.c:6431:1: note: graphical error report for function 'arm_copy_extra_ld_st' written out to 'arm-tdep.c.arm_copy_extra_ld_st-refcount-errors.html'