Warnings

From vice-emu
Revision as of 18:57, 27 April 2021 by Compyx (talk | contribs) (→‎GCC)
Jump to navigation Jump to search

GCC

  • Compyx, Debian x64 Gtk3, r39941 (after adding -Wmissing-prototypes)
Making all in src
Making all in resid
ar: `u' modifier ignored since `D' is the default (see `U')
Making all in resid-dtv
ar: `u' modifier ignored since `D' is the default (see `U')
Making all in samplerdrv
Making all in joyport
Making all in sounddrv
Making all in mididrv
Making all in socketdrv
Making all in hwsiddrv
Making all in iodrv
Making all in drive
Making all in iec
Making all in c64exp
Making all in plus4exp
../../../../vice/src/drive/iec/cmdhd.c:144:6: warning: no previous prototype for ‘my_debug_iec_drv_write’ [-Wmissing-prototypes]
 void my_debug_iec_drv_write(unsigned int data)
      ^~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/drive/iec/cmdhd.c:162:6: warning: no previous prototype for ‘my_debug_iec_drv_read’ [-Wmissing-prototypes]
 void my_debug_iec_drv_read(unsigned int data)
      ^~~~~~~~~~~~~~~~~~~~~
Making all in iec128dcr
Making all in iecieee
Making all in ieee
Making all in tcbm
Making all in vdrive
../../../vice/src/vdrive/vdrive-bam.c:349:5: warning: no previous prototype for ‘vdrive_bam_alloc_add_interleave’ [-Wmissing-prototypes]
 int vdrive_bam_alloc_add_interleave(vdrive_t *vdrive,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Making all in fsdevice
Making all in diskimage
Making all in iecbus
Making all in serial
Making all in parallel
Making all in tape
Making all in imagecontents
Making all in fileio
Making all in video
Making all in raster
Making all in vicii
Making all in viciisc
Making all in viciivsid
Making all in vdc
Making all in crtc
Making all in gfxoutputdrv
Making all in printerdrv
Making all in rs232drv
Making all in sid
Making all in monitor
../../../vice/src/monitor/monitor.c:818:11: warning: no previous prototype for ‘mon_get_current_bank_index’ [-Wmissing-prototypes]
 const int mon_get_current_bank_index(MEMSPACE mem)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../vice/src/monitor/monitor_binary.c:372:6: warning: no previous prototype for ‘monitor_binary_response_register_info’ [-Wmissing-prototypes]
 void monitor_binary_response_register_info(uint32_t request_id, MEMSPACE memspace)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Making all in core
../../../vice/src/core/scsi.c:242:6: warning: no previous prototype for ‘scsi_format_sector0’ [-Wmissing-prototypes]
 void scsi_format_sector0(struct scsi_context_s *context)
      ^~~~~~~~~~~~~~~~~~~
Making all in rtc
Making all in userport
Making all in tapeport
Making all in diag
Making all in c64
Making all in cart
../../../vice/src/c64/vsidstubs.c:481:19: warning: no previous prototype for ‘diskcontents_block_read’ [-Wmissing-prototypes]
 image_contents_t *diskcontents_block_read(struct vdrive_s *vdrive, int part)
                   ^~~~~~~~~~~~~~~~~~~~~~~
../../../vice/src/c64/vsidstubs.c:553:5: warning: no previous prototype for ‘fsdevice_limit_namelength’ [-Wmissing-prototypes]
 int fsdevice_limit_namelength(vdrive_t *vdrive, uint8_t *name)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
../../../vice/src/c64/c64memsc.c:943:6: warning: no previous prototype for ‘poke_bank_io’ [-Wmissing-prototypes]
 void poke_bank_io(uint16_t addr, uint8_t byte)
      ^~~~~~~~~~~~
Making all in scpu64
Making all in c64dtv
../../../vice/src/c64dtv/c64dtvcpu.c:537:2: warning: #warning "CPUMEMHISTORY implementation for x64dtv is incomplete" [-Wcpp]
 #warning "CPUMEMHISTORY implementation for x64dtv is incomplete"
  ^~~~~~~
Making all in c128
../../../vice/src/c128/c128cpu.c:123:2: warning: #warning "CPUMEMHISTORY implementation for x128 is incomplete" [-Wcpp]
 #warning "CPUMEMHISTORY implementation for x128 is incomplete"
  ^~~~~~~
Making all in vic20
Making all in cart
Making all in pet
../../../vice/src/pet/petcpu.c:69:2: warning: #warning "CPUMEMHISTORY implementation for xpet is incomplete" [-Wcpp]
 #warning "CPUMEMHISTORY implementation for xpet is incomplete"
  ^~~~~~~
Making all in plus4
Making all in cart
../../../../vice/src/plus4/cart/plus4cart.c:534:5: warning: no previous prototype for ‘cart_bin_attach’ [-Wmissing-prototypes]
 int cart_bin_attach(int type, const char *filename, uint8_t *rawcart)
     ^~~~~~~~~~~~~~~
../../../vice/src/plus4/plus4cpu.c:40:2: warning: #warning "CPUMEMHISTORY implementation for xplus4 is incomplete" [-Wcpp]
 #warning "CPUMEMHISTORY implementation for xplus4 is incomplete"
  ^~~~~~~
Making all in cbm2
../../../vice/src/cbm2/cbm2cpu.c:68:2: warning: #warning "CPUMEMHISTORY implementation for xcbm2 is incomplete" [-Wcpp]
 #warning "CPUMEMHISTORY implementation for xcbm2 is incomplete"
  ^~~~~~~
Making all in arch
Making all in shared
../../../../vice/src/arch/shared/archdep_exit.c:68:6: warning: no previous prototype for ‘archdep_is_exiting’ [-Wmissing-prototypes]
 bool archdep_is_exiting(void) {
      ^~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/archdep_is_haiku.c:54:5: warning: no previous prototype for ‘archdep_is_haiku’ [-Wmissing-prototypes]
 int archdep_is_haiku(void)
     ^~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/archdep_is_windows_nt.c:60:5: warning: no previous prototype for ‘archdep_is_windows_nt’ [-Wmissing-prototypes]
 int archdep_is_windows_nt(void)
     ^~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/archdep_is_macos_bindist.c:34:5: warning: no previous prototype for ‘archdep_is_macos_bindist’ [-Wmissing-prototypes]
 int archdep_is_macos_bindist(void) {
     ^~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/archdep_rtc_get_centisecond.c:53:5: warning: no previous prototype for ‘archdep_rtc_get_centisecond’ [-Wmissing-prototypes]
 int archdep_rtc_get_centisecond(void)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:114:5: warning: no previous prototype for ‘rawnet_arch_pcap_enumadapter_open’ [-Wmissing-prototypes]
 int rawnet_arch_pcap_enumadapter_open(void)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:148:5: warning: no previous prototype for ‘rawnet_arch_pcap_enumadapter’ [-Wmissing-prototypes]
 int rawnet_arch_pcap_enumadapter(char **ppname, char **ppdescription)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:176:5: warning: no previous prototype for ‘rawnet_arch_pcap_enumadapter_close’ [-Wmissing-prototypes]
 int rawnet_arch_pcap_enumadapter_close(void)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:228:6: warning: no previous prototype for ‘rawnet_arch_pcap_pre_reset’ [-Wmissing-prototypes]
 void rawnet_arch_pcap_pre_reset(void)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:232:6: warning: no previous prototype for ‘rawnet_arch_pcap_post_reset’ [-Wmissing-prototypes]
 void rawnet_arch_pcap_post_reset(void)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:236:5: warning: no previous prototype for ‘rawnet_arch_pcap_activate’ [-Wmissing-prototypes]
 int rawnet_arch_pcap_activate(const char *interface_name)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:244:6: warning: no previous prototype for ‘rawnet_arch_pcap_deactivate’ [-Wmissing-prototypes]
 void rawnet_arch_pcap_deactivate( void )
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:248:6: warning: no previous prototype for ‘rawnet_arch_pcap_set_mac’ [-Wmissing-prototypes]
 void rawnet_arch_pcap_set_mac( const uint8_t mac[6] )
      ^~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:252:6: warning: no previous prototype for ‘rawnet_arch_pcap_set_hashfilter’ [-Wmissing-prototypes]
 void rawnet_arch_pcap_set_hashfilter(const uint32_t hash_mask[2])
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:263:6: warning: no previous prototype for ‘rawnet_arch_pcap_recv_ctl’ [-Wmissing-prototypes]
 void rawnet_arch_pcap_recv_ctl(int bBroadcast, int bIA, int bMulticast, int bCorrect, int bPromiscuous, int bIAHash)
      ^~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:267:6: warning: no previous prototype for ‘rawnet_arch_pcap_line_ctl’ [-Wmissing-prototypes]
 void rawnet_arch_pcap_line_ctl(int bEnableTransmitter, int bEnableReceiver )
      ^~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:443:6: warning: no previous prototype for ‘rawnet_arch_pcap_transmit’ [-Wmissing-prototypes]
 void rawnet_arch_pcap_transmit(int force, int onecoll, int inhibit_crc,
      ^~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:489:5: warning: no previous prototype for ‘rawnet_arch_pcap_receive’ [-Wmissing-prototypes]
 int rawnet_arch_pcap_receive(uint8_t *pbuffer, int *plen, int  *phashed,
     ^~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_unix.c:546:7: warning: no previous prototype for ‘rawnet_arch_pcap_get_standard_interface’ [-Wmissing-prototypes]
 char *rawnet_arch_pcap_get_standard_interface(void)
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:68:5: warning: no previous prototype for ‘rawnet_arch_tuntap_enumadapter_open’ [-Wmissing-prototypes]
 int rawnet_arch_tuntap_enumadapter_open(void)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:91:5: warning: no previous prototype for ‘rawnet_arch_tuntap_enumadapter’ [-Wmissing-prototypes]
 int rawnet_arch_tuntap_enumadapter(char **ppname, char **ppdescription)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:108:5: warning: no previous prototype for ‘rawnet_arch_tuntap_enumadapter_close’ [-Wmissing-prototypes]
 int rawnet_arch_tuntap_enumadapter_close(void)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:149:6: warning: no previous prototype for ‘rawnet_arch_tuntap_pre_reset’ [-Wmissing-prototypes]
 void rawnet_arch_tuntap_pre_reset(void)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:153:6: warning: no previous prototype for ‘rawnet_arch_tuntap_post_reset’ [-Wmissing-prototypes]
 void rawnet_arch_tuntap_post_reset(void)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:157:5: warning: no previous prototype for ‘rawnet_arch_tuntap_activate’ [-Wmissing-prototypes]
 int rawnet_arch_tuntap_activate(const char *interface_name)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:165:6: warning: no previous prototype for ‘rawnet_arch_tuntap_deactivate’ [-Wmissing-prototypes]
 void rawnet_arch_tuntap_deactivate(void)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:171:6: warning: no previous prototype for ‘rawnet_arch_tuntap_set_mac’ [-Wmissing-prototypes]
 void rawnet_arch_tuntap_set_mac(const uint8_t mac[6])
      ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:175:6: warning: no previous prototype for ‘rawnet_arch_tuntap_set_hashfilter’ [-Wmissing-prototypes]
 void rawnet_arch_tuntap_set_hashfilter(const uint32_t hash_mask[2])
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:186:6: warning: no previous prototype for ‘rawnet_arch_tuntap_recv_ctl’ [-Wmissing-prototypes]
 void rawnet_arch_tuntap_recv_ctl(int bBroadcast, int bIA, int bMulticast, int bCorrect, int bPromiscuous, int bIAHash)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:190:6: warning: no previous prototype for ‘rawnet_arch_tuntap_line_ctl’ [-Wmissing-prototypes]
 void rawnet_arch_tuntap_line_ctl(int bEnableTransmitter, int bEnableReceiver )
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:203:6: warning: no previous prototype for ‘rawnet_arch_tuntap_transmit’ [-Wmissing-prototypes]
 void rawnet_arch_tuntap_transmit(int force, int onecoll, int inhibit_crc,
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:253:5: warning: no previous prototype for ‘rawnet_arch_tuntap_receive’ [-Wmissing-prototypes]
 int rawnet_arch_tuntap_receive(uint8_t *pbuffer, int *plen, int  *phashed,
     ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/shared/rawnetarch_tuntap.c:311:7: warning: no previous prototype for ‘rawnet_arch_tuntap_get_standard_interface’ [-Wmissing-prototypes]
 char *rawnet_arch_tuntap_get_standard_interface(void)
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Making all in gtk3
Making all in data
Making all in macos
Making all in unix
Making all in win32
Making all in novte
Making all in widgets
Making all in base
../../../../../../vice/src/arch/gtk3/widgets/base/resourcecheckbutton.c:340:10: warning: no previous prototype for ‘vice_gtk3_resource_check_button_apply’ [-Wmissing-prototypes]
 gboolean vice_gtk3_resource_check_button_apply(GtkWidget *widget)
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/dirmenupopup.c:140:6: warning: no previous prototype for ‘dir_item_apply_style’ [-Wmissing-prototypes]
 void dir_item_apply_style(GtkWidget *item)
      ^~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/petramawidget.c:67:12: warning: no previous prototype for ‘pet_rama_widget_create’ [-Wmissing-prototypes]
 GtkWidget *pet_rama_widget_create(void)
            ^~~~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/petramawidget.c:92:6: warning: no previous prototype for ‘pet_rama_widget_set_callback’ [-Wmissing-prototypes]
 void pet_rama_widget_set_callback(GtkWidget *widget,
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/petramawidget.c:103:6: warning: no previous prototype for ‘pet_rama_widget_sync’ [-Wmissing-prototypes]
 void pet_rama_widget_sync(GtkWidget *widget)
      ^~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/petram9widget.c:66:12: warning: no previous prototype for ‘pet_ram9_widget_create’ [-Wmissing-prototypes]
 GtkWidget *pet_ram9_widget_create(void)
            ^~~~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/petram9widget.c:90:6: warning: no previous prototype for ‘pet_ram9_widget_set_callback’ [-Wmissing-prototypes]
 void pet_ram9_widget_set_callback(GtkWidget *widget,
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/petram9widget.c:101:6: warning: no previous prototype for ‘pet_ram9_widget_sync’ [-Wmissing-prototypes]
 void pet_ram9_widget_sync(GtkWidget *widget)
      ^~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/settings_fsdevice.c:65:12: warning: no previous prototype for ‘create_stack_child_widget’ [-Wmissing-prototypes]
 GtkWidget *create_stack_child_widget(int unit)
            ^~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/settings_host_display.c:152:12: warning: no previous prototype for ‘settings_host_display_widget_create’ [-Wmissing-prototypes]
 GtkWidget *settings_host_display_widget_create(GtkWidget *widget)
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../vice/src/arch/gtk3/widgets/sidcartwidget.c:220:12: warning: no previous prototype for ‘create_sidcart_joy_widget’ [-Wmissing-prototypes]
 GtkWidget *create_sidcart_joy_widget(void)
            ^~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/gtk3/ui.c:1872:10: warning: no previous prototype for ‘ui_jam_dialog_impl’ [-Wmissing-prototypes]
 gboolean ui_jam_dialog_impl(gpointer user_data)
          ^~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/gtk3/ui.c:1979:10: warning: no previous prototype for ‘ui_extendimage_dialog_impl’ [-Wmissing-prototypes]
 gboolean ui_extendimage_dialog_impl(gpointer user_data)
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/gtk3/uisettings.c:2792:10: warning: no previous prototype for ‘ui_settings_dialog_create’ [-Wmissing-prototypes]
 gboolean ui_settings_dialog_create(GtkWidget *widget, gpointer user_data)
          ^~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/gtk3/uisettings.c:2933:10: warning: no previous prototype for ‘ui_settings_dialog_create_and_activate_node_impl’ [-Wmissing-prototypes]
 gboolean ui_settings_dialog_create_and_activate_node_impl(gpointer user_data)
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../vice/src/arch/gtk3/vice_gtk3_locking.c:37:6: warning: no previous prototype for ‘vice_gtk3_lock’ [-Wmissing-prototypes]
 void vice_gtk3_lock(gpointer data, GClosure *closure)
      ^~~~~~~~~~~~~~
../../../../vice/src/arch/gtk3/vice_gtk3_locking.c:46:6: warning: no previous prototype for ‘vice_gtk3_unlock’ [-Wmissing-prototypes]
 void vice_gtk3_unlock(gpointer data, GClosure *closure)
      ^~~~~~~~~~~~~~~~
Making all in lib
Making all in p64
Making all in linenoise-ng
Making all in hvsc
Making all in datasette
../../../vice/src/datasette/datasette-sound.c:55:6: warning: no previous prototype for ‘datasette_sound_set_halfwaves’ [-Wmissing-prototypes]
 void datasette_sound_set_halfwaves(char halfwaves)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../vice/src/datasette/datasette-sound.c:60:6: warning: no previous prototype for ‘datasette_sound_add_to_circular_buffer’ [-Wmissing-prototypes]
 void datasette_sound_add_to_circular_buffer(CLOCK gap)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../vice/src/datasette/datasette-sound.c:200:6: warning: no previous prototype for ‘datasette_sound_init’ [-Wmissing-prototypes]
 void datasette_sound_init(void)
      ^~~~~~~~~~~~~~~~~~~~
Making all in tools
Making all in cartconv
Making all in petcat
../../vice/src/c1541.c:228:18: warning: no previous prototype for ‘file_system_get_vdrive’ [-Wmissing-prototypes]
 struct vdrive_s *file_system_get_vdrive(unsigned int unit)
                  ^~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:47:6: warning: no previous prototype for ‘cartridge_detach_image’ [-Wmissing-prototypes]
 void cartridge_detach_image(int type)
      ^~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:52:6: warning: no previous prototype for ‘cartridge_unset_default’ [-Wmissing-prototypes]
 void cartridge_unset_default(void)
      ^~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:61:5: warning: no previous prototype for ‘network_connected’ [-Wmissing-prototypes]
 int network_connected(void)
     ^~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:66:5: warning: no previous prototype for ‘network_get_mode’ [-Wmissing-prototypes]
 int network_get_mode(void)
     ^~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:75:6: warning: no previous prototype for ‘network_event_record’ [-Wmissing-prototypes]
 void network_event_record(unsigned int type, void *data, unsigned int size)
      ^~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:86:6: warning: no previous prototype for ‘ui_error’ [-Wmissing-prototypes]
 void ui_error(const char *format, ...)
      ^~~~~~~~
../../vice/src/c1541-stubs.c:91:6: warning: no previous prototype for ‘main_exit’ [-Wmissing-prototypes]
 void main_exit(void)
      ^~~~~~~~~
../../vice/src/c1541-stubs.c:96:6: warning: no previous prototype for ‘mainlock_is_vice_thread’ [-Wmissing-prototypes]
 bool mainlock_is_vice_thread(void)
      ^~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:102:6: warning: no previous prototype for ‘mainlock_initiate_shutdown’ [-Wmissing-prototypes]
 void mainlock_initiate_shutdown(void)
      ^~~~~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:107:6: warning: no previous prototype for ‘enable_text’ [-Wmissing-prototypes]
 void enable_text(void)
      ^~~~~~~~~~~
../../vice/src/c1541-stubs.c:111:6: warning: no previous prototype for ‘disable_text’ [-Wmissing-prototypes]
 void disable_text(void)
      ^~~~~~~~~~~~
../../vice/src/c1541-stubs.c:115:5: warning: no previous prototype for ‘machine_bus_device_attach’ [-Wmissing-prototypes]
 int machine_bus_device_attach(unsigned int device, const char *name,
     ^~~~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:153:6: warning: no previous prototype for ‘ui_error_string’ [-Wmissing-prototypes]
 void ui_error_string(const char *text)
      ^~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:157:6: warning: no previous prototype for ‘vsync_suspend_speed_eval’ [-Wmissing-prototypes]
 void vsync_suspend_speed_eval(void)
      ^~~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:166:5: warning: no previous prototype for ‘machine_bus_lib_directory’ [-Wmissing-prototypes]
 int machine_bus_lib_directory(unsigned int unit, const char *pattern, uint8_t **buf)
     ^~~~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:171:5: warning: no previous prototype for ‘machine_bus_lib_read_sector’ [-Wmissing-prototypes]
 int machine_bus_lib_read_sector(unsigned int unit, unsigned int track, unsigned int sector, uint8_t *buf)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:176:5: warning: no previous prototype for ‘machine_bus_lib_write_sector’ [-Wmissing-prototypes]
 int machine_bus_lib_write_sector(unsigned int unit, unsigned int track, unsigned int sector, uint8_t *buf)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:181:14: warning: no previous prototype for ‘machine_bus_device_type_get’ [-Wmissing-prototypes]
 unsigned int machine_bus_device_type_get(unsigned int unit)
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:186:5: warning: no previous prototype for ‘machine_drive_rom_check_loaded’ [-Wmissing-prototypes]
 int machine_drive_rom_check_loaded(unsigned int type)
     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:191:6: warning: no previous prototype for ‘machine_drive_flush’ [-Wmissing-prototypes]
 void machine_drive_flush(void)
      ^~~~~~~~~~~~~~~~~~~
../../vice/src/c1541-stubs.c:213:7: warning: no previous prototype for ‘kbd_get_menu_keyname’ [-Wmissing-prototypes]
 char *kbd_get_menu_keyname(void)
       ^~~~~~~~~~~~~~~~~~~~
Making all in build
...
  • 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)

clang

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