Warnings

From vice-emu
Revision as of 14:52, 17 September 2020 by Compyx (talk | contribs) (→‎clang)
Jump to navigation Jump to search

GCC

  • Strobe, MSYS2 x64 Gtk3, r38482
magicvoice.c: In function 'magicvoice_mmu_translate':
magicvoice.c:1269:27: warning: array subscript -49152 is outside array bounds of 'uint8_t[16384]' {aka 'unsigned char[16384]'} [-Warray-bounds]
 1269 |                     *base = (uint8_t *)(mv_rom - (uint8_t *)0xc000);
      |                     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
magicvoice.c:132:16: note: while referencing 'mv_rom'
  132 | static uint8_t mv_rom[MV_ROM_SIZE];
      |                ^~~~~~
magicvoice.c:1289:27: warning: array subscript -40960 is outside array bounds of 'uint8_t[16384]' {aka 'unsigned char[16384]'} [-Warray-bounds]
 1289 |                     *base = (uint8_t *)(mv_rom - (uint8_t *)0xa000);
      |                     ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
magicvoice.c:132:16: note: while referencing 'mv_rom'
  132 | static uint8_t mv_rom[MV_ROM_SIZE];
      |                ^~~~~~

....

vsidmem.c: In function 'mem_initialize_memory':
vsidmem.c:532:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  532 |         mem_read_base_tab[1][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
vsidmem.c:533:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  533 |         mem_read_base_tab[2][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
vsidmem.c:534:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  534 |         mem_read_base_tab[3][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
vsidmem.c:535:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  535 |         mem_read_base_tab[9][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
vsidmem.c:536:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  536 |         mem_read_base_tab[10][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
vsidmem.c:537:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  537 |         mem_read_base_tab[11][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
vsidmem.c:538:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  538 |         mem_read_base_tab[25][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
vsidmem.c:539:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  539 |         mem_read_base_tab[26][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
vsidmem.c:540:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  540 |         mem_read_base_tab[27][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vsidmem.c:81:9: note: while referencing 'mem_chargen_rom'
   81 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~

....

c64mem.c: In function 'mem_initialize_memory':
c64mem.c:769:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  769 |         mem_read_base_tab[1][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64mem.c:87:9: note: while referencing 'mem_chargen_rom'
   87 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64mem.c:770:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  770 |         mem_read_base_tab[2][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64mem.c:87:9: note: while referencing 'mem_chargen_rom'
   87 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64mem.c:771:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  771 |         mem_read_base_tab[3][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64mem.c:87:9: note: while referencing 'mem_chargen_rom'
   87 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64mem.c:772:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  772 |         mem_read_base_tab[9][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64mem.c:87:9: note: while referencing 'mem_chargen_rom'
   87 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64mem.c:773:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  773 |         mem_read_base_tab[10][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64mem.c:87:9: note: while referencing 'mem_chargen_rom'
   87 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64mem.c:774:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  774 |         mem_read_base_tab[11][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64mem.c:87:9: note: while referencing 'mem_chargen_rom'
   87 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64mem.c:775:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  775 |         mem_read_base_tab[26][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64mem.c:87:9: note: while referencing 'mem_chargen_rom'
   87 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64mem.c:776:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  776 |         mem_read_base_tab[27][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64mem.c:87:9: note: while referencing 'mem_chargen_rom'
   87 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~

....

c64memsc.c: In function 'mem_initialize_memory':
c64memsc.c:718:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  718 |         mem_read_base_tab[1][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64memsc.c:90:9: note: while referencing 'mem_chargen_rom'
   90 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64memsc.c:719:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  719 |         mem_read_base_tab[2][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64memsc.c:90:9: note: while referencing 'mem_chargen_rom'
   90 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64memsc.c:720:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  720 |         mem_read_base_tab[3][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64memsc.c:90:9: note: while referencing 'mem_chargen_rom'
   90 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64memsc.c:721:33: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  721 |         mem_read_base_tab[9][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64memsc.c:90:9: note: while referencing 'mem_chargen_rom'
   90 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64memsc.c:722:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  722 |         mem_read_base_tab[10][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64memsc.c:90:9: note: while referencing 'mem_chargen_rom'
   90 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64memsc.c:723:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  723 |         mem_read_base_tab[11][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64memsc.c:90:9: note: while referencing 'mem_chargen_rom'
   90 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64memsc.c:724:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  724 |         mem_read_base_tab[26][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64memsc.c:90:9: note: while referencing 'mem_chargen_rom'
   90 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~
c64memsc.c:725:34: warning: array subscript -53248 is outside array bounds of 'uint8_t[4096]' {aka 'unsigned char[4096]'} [-Warray-bounds]
  725 |         mem_read_base_tab[27][i] = (uint8_t *)(mem_chargen_rom - (uint8_t *)0xd000);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
c64memsc.c:90:9: note: while referencing 'mem_chargen_rom'
   90 | uint8_t mem_chargen_rom[C64_CHARGEN_ROM_SIZE];
      |         ^~~~~~~~~~~~~~~

NOTE remaining warnings are expected as Compyx describes below

c64dtvcpu.c:537:2: warning: #warning "CPUMEMHISTORY implementation for x64dtv is incomplete" [-Wcpp]
  537 | #warning "CPUMEMHISTORY implementation for x64dtv is incomplete"
      |  ^~~~~~~

c128cpu.c:123:2: warning: #warning "CPUMEMHISTORY implementation for x128 is incomplete" [-Wcpp]
  123 | #warning "CPUMEMHISTORY implementation for x128 is incomplete"
      |  ^~~~~~~

petcpu.c:69:2: warning: #warning "CPUMEMHISTORY implementation for xpet is incomplete" [-Wcpp]
   69 | #warning "CPUMEMHISTORY implementation for xpet is incomplete"
      |  ^~~~~~~

plus4cpu.c:40:2: warning: #warning "CPUMEMHISTORY implementation for xplus4 is incomplete" [-Wcpp]
   40 | #warning "CPUMEMHISTORY implementation for xplus4 is incomplete"
      |  ^~~~~~~

cbm2cpu.c:68:2: warning: #warning "CPUMEMHISTORY implementation for xcbm2 is incomplete" [-Wcpp]
   68 | #warning "CPUMEMHISTORY implementation for xcbm2 is incomplete"
      |  ^~~~~~~

This is normal behaviour when configuring with --enable-cpuhistory, serves as a reminder to us that CPU history recording hasn't been properly implemented for those machines. (Compyx, 2019-11-19)

  • Compyx, MSYS2 x64, Gtk3, r37554M (updated Gtk3 to 3.24.14, GDK to 2.24.3, GLib to 2.64.1)
make[6]: Entering directory '/home/compyx/vice-trunk/win64-build/src/arch/gtk3/novte'
  CXX      debug.o
  CXX      iso2022.o
  CXX      keymap.o
  CXX      matcher.o
  CXX      ring.o
  CXX      table.o
  CXX      vte.o
  CXX      vteaccess.o
  CXX      vteconv.o
  CXX      vtedraw.o
  CXX      vtegtk.o
  CXX      vterowdata.o
  CXX      vteseq.o
  CXX      vtestream.o
In file included from C:/msys64/mingw64/lib/glib-2.0/include/glibconfig.h:9,
                 from C:/msys64/mingw64/include/glib-2.0/glib/gtypes.h:32,
                 from C:/msys64/mingw64/include/glib-2.0/glib/galloca.h:32,
                 from C:/msys64/mingw64/include/glib-2.0/glib.h:30,
                 from ../../../../../vice/src/arch/gtk3/novte/vtegtk.cc:42:
../../../../../vice/src/arch/gtk3/novte/vtegtk.cc: In function 'void vte_terminal_set_color_background(NoVteTerminal*, const GdkRGBA*)':
C:/msys64/mingw64/include/glib-2.0/glib/gmacros.h:928:4: warning: nonnull argument 'background' compared to NULL [-Wnonnull-compare]
  928 |    if (expr)                                    \
      |    ^~
C:/msys64/mingw64/include/glib-2.0/glib/gmacros.h:934:43: note: in expansion of macro '_G_BOOLEAN_EXPR'
  934 | #define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
      |                                           ^~~~~~~~~~~~~~~
C:/msys64/mingw64/include/glib-2.0/glib/gmessages.h:624:9: note: in expansion of macro 'G_LIKELY'
  624 |     if (G_LIKELY (expr)) \
      |         ^~~~~~~~
../../../../../vice/src/arch/gtk3/novte/vtegtk.cc:2333:5: note: in expansion of macro 'g_return_if_fail'
 2333 |     g_return_if_fail(background != NULL);
      |     ^~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/novte/vtegtk.cc: In function 'void vte_terminal_get_geometry_hints(NoVteTerminal*, GdkGeometry*, int, int)':
C:/msys64/mingw64/include/glib-2.0/glib/gmacros.h:928:4: warning: nonnull argument 'hints' compared to NULL [-Wnonnull-compare]
  928 |    if (expr)                                    \
      |    ^~
C:/msys64/mingw64/include/glib-2.0/glib/gmacros.h:934:43: note: in expansion of macro '_G_BOOLEAN_EXPR'
  934 | #define G_LIKELY(expr) (__builtin_expect (_G_BOOLEAN_EXPR(expr), 1))
      |                                           ^~~~~~~~~~~~~~~
C:/msys64/mingw64/include/glib-2.0/glib/gmessages.h:624:9: note: in expansion of macro 'G_LIKELY'
  624 |     if (G_LIKELY (expr)) \
      |         ^~~~~~~~
../../../../../vice/src/arch/gtk3/novte/vtegtk.cc:2901:5: note: in expansion of macro 'g_return_if_fail'
 2901 |     g_return_if_fail(hints != NULL);
      |     ^~~~~~~~~~~~~~~~

clang

  • Compyx, (x86_64 Linux/Debian, Gtk3, clang 11.0.0-++20200708115139+fb75451775f-1~exp1~20200708095758.879), rev 38552
Making all in monitor
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:786:34: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
    switch (resources_query_type(resource_name)) {
                                 ^~~~~~~~~~~~~
/home/compyx/vice-trunk/vice/src/resources.h:153:57: note: passing argument to parameter 'name' here
extern resource_type_t resources_query_type(const char *name);
                                                        ^
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:788:56: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
            str_value = resources_write_item_to_string(resource_name, "");
                                                       ^~~~~~~~~~~~~
/home/compyx/vice-trunk/vice/src/resources.h:160:57: note: passing argument to parameter 'name' here
extern char *resources_write_item_to_string(const char *name, const char *delim);
                                                        ^
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:796:45: warning: passing 'char *' to parameter of type 'unsigned char *' converts between pointers to integer types with different sign [-Wpointer-sign]
            write_string(strlen(str_value), str_value, &response[1]);
                                            ^~~~~~~~~
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:266:67: note: passing argument to parameter 'input' here
static unsigned char *write_string(uint8_t length, unsigned char *input, unsigned char *output) {
                                                                  ^
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:799:34: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
            if(resources_get_int(resource_name, &int_value) < 0) {
                                 ^~~~~~~~~~~~~
/home/compyx/vice-trunk/vice/src/resources.h:148:42: note: passing argument to parameter 'name' here
extern int resources_get_int(const char *name, int *value_return);
                                         ^
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:793:33: warning: implicit conversion loses integer precision: 'unsigned long' to 'uint32_t' (aka 'unsigned int') [-Wshorten-64-to-32]
            response_length = 2 + strlen(str_value);
                            ~ ~~^~~~~~~~~~~~~~~~~~~
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:841:38: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        switch (resources_query_type(resource_name)) {
                                     ^~~~~~~~~~~~~
/home/compyx/vice-trunk/vice/src/resources.h:153:57: note: passing argument to parameter 'name' here
extern resource_type_t resources_query_type(const char *name);
                                                        ^
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:844:48: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
                if (resources_set_value_string(resource_name, resource_value) < 0) {
                                               ^~~~~~~~~~~~~
/home/compyx/vice-trunk/vice/src/resources.h:144:51: note: passing argument to parameter 'name' here
extern int resources_set_value_string(const char *name, const char *value);
                                                  ^
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:844:63: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
                if (resources_set_value_string(resource_name, resource_value) < 0) {
                                                              ^~~~~~~~~~~~~~
/home/compyx/vice-trunk/vice/src/resources.h:144:69: note: passing argument to parameter 'value' here
extern int resources_set_value_string(const char *name, const char *value);
                                                                    ^
/home/compyx/vice-trunk/vice/src/monitor/monitor_binary.c:866:30: warning: passing 'unsigned char *' to parameter of type 'const char *' converts between pointers to integer types with different sign [-Wpointer-sign]
        if(resources_set_int(resource_name, value) < 0) {
                             ^~~~~~~~~~~~~
/home/compyx/vice-trunk/vice/src/resources.h:139:42: note: passing argument to parameter 'name' here
extern int resources_set_int(const char *name, int value);
                                         ^
9 warnings generated.

Other diagnostic tools

IWYU - include-what-you-use

IWYU (https://github.com/include-what-you-use/include-what-you-use) is a tool that scans a codebase and reports on #include's that are used, might be missing and may not be needed. It should also report on forward declarations and maybe suggest using those (haven't figured that out yet).

It requires clang/llvm and building the actual tool from source using CMake. The instructions could be better and some stuff doesn't work quite right when following the instructions, but it can built and used (TODO: add instructions on how to properly build and use it (the instructions on copying clang's include/ are wrong and few deps on Debian are missing)).

Currently it has some false positives when using it on Gtk3-VICE: especially when it scans any Gtk3 code, it outputs a lot of extra #include's that aren't required, just #include'ing <gtk/gtk.h> will pull in all of the Glib, GIO, GObject, Atk, Pango, Cairo headers our Gtk3 UI requires.

As an example, here's a run on Gtk3-VICE on Linux which was configured with:

$ ../vice/configure --enable-native-gtk3ui --enable-debug-gtk3ui --enable-debug --enable-ethernet --with-pulse --with-alsa --with-jpeg --with-png --with-gif --enable-x64

The resulting report is 1.7MB of plain text, so I put it on my DropBox: https://www.dropbox.com/s/rr0v8nz3xyx8dn7/iwyu-clang6-vice-r36405.log?dl=0