mate-desktop / caja

Caja, the file manager for the MATE desktop
https://mate-desktop.org/
Other
265 stars 143 forks source link

Build fails with strict-aliasing violations #1774

Open eli-schwartz opened 3 months ago

eli-schwartz commented 3 months ago

I tried to compile with LTO: -flto=4 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing

The -Werror=* flags are important to detect cases where the compiler can try to optimize based on assuming UB cannot happen, and miscompile code that has UB in it. strict-aliasing issues are always bad but LTO can make them even worse.

I got this error:

make[5]: Entering directory '/tmp/caja/src/file-manager'
/bin/sh ../../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I../..  -I../.. -I../../mate-submodules -I/usr/include/mate-desktop-2.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/startup-notification-1.0 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/gail-3.0 -I/usr/include/atk-1.0 -I/usr/include/libxml2 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libpng16 -I/usr/include/pixman-1 -I/usr/lib64/libffi/include -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/fribidi -I/usr/include/dconf -Wall -Wmissing-prototypes -DCAJA_DATADIR=\""/usr/share/caja"\" -DDATADIR=\""/usr/share"\" -DICONDIR=\""/usr/share/icons"\" -DPIXMAPDIR=\""/usr/share/pixmaps"\" -DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED    -march=native -fstack-protector-all -O2 -pipe -fdiagnostics-color=always -frecord-gcc-switches -flto=4 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing  -Wformat -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Werror=int-conversion -Werror=incompatible-pointer-types -MT fm-directory-view.lo -MD -MP -MF .deps/fm-directory-view.Tpo -c -o fm-directory-view.lo fm-directory-view.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../mate-submodules -I/usr/include/mate-desktop-2.0 -I/usr/include/gtk-3.0 -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/startup-notification-1.0 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/gio-unix-2.0 -I/usr/include/gail-3.0 -I/usr/include/atk-1.0 -I/usr/include/libxml2 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/libpng16 -I/usr/include/pixman-1 -I/usr/lib64/libffi/include -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/fribidi -I/usr/include/dconf -Wall -Wmissing-prototypes -DCAJA_DATADIR=\"/usr/share/caja\" -DDATADIR=\"/usr/share\" -DICONDIR=\"/usr/share/icons\" -DPIXMAPDIR=\"/usr/share/pixmaps\" -DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -march=native -fstack-protector-all -O2 -pipe -fdiagnostics-color=always -frecord-gcc-switches -flto=4 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing -Wformat -Werror=format-security -Werror=implicit-function-declaration -Werror=implicit-int -Werror=int-conversion -Werror=incompatible-pointer-types -MT fm-directory-view.lo -MD -MP -MF .deps/fm-directory-view.Tpo -c fm-directory-view.c  -fPIC -DPIC -o .libs/fm-directory-view.o
fm-directory-view.c: In function 'add_submenu':
fm-directory-view.c:4453:17: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 4453 |                 gtk_ui_manager_add_ui (ui_manager,
      |                 ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:284,
                 from fm-directory-view.c:35:
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'add_application_to_open_with_menu':
fm-directory-view.c:4532:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 4532 |         gtk_ui_manager_add_ui (caja_window_info_get_ui_manager (view->details->window),
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4541:9: warning: 'gtk_ui_manager_get_widget' is deprecated [-Wdeprecated-declarations]
 4541 |         menuitem = gtk_ui_manager_get_widget (
      |         ^~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:149:16: note: declared here
  149 | GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4544:9: warning: 'gtk_image_menu_item_set_always_show_image' is deprecated [-Wdeprecated-declarations]
 4544 |         gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-3.0/gtk/gtk.h:269:
/usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:87:12: note: declared here
   87 | void       gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4547:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 4547 |         gtk_ui_manager_add_ui (caja_window_info_get_ui_manager (view->details->window),
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4556:9: warning: 'gtk_ui_manager_get_widget' is deprecated [-Wdeprecated-declarations]
 4556 |         menuitem = gtk_ui_manager_get_widget (
      |         ^~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:149:16: note: declared here
  149 | GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4559:9: warning: 'gtk_image_menu_item_set_always_show_image' is deprecated [-Wdeprecated-declarations]
 4559 |         gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:87:12: note: declared here
   87 | void       gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'add_parent_folder_to_open_menu':
fm-directory-view.c:4612:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 4612 |         gtk_ui_manager_add_ui (caja_window_info_get_ui_manager (view->details->window),
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4621:9: warning: 'gtk_ui_manager_get_widget' is deprecated [-Wdeprecated-declarations]
 4621 |         menuitem = gtk_ui_manager_get_widget (
      |         ^~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:149:16: note: declared here
  149 | GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4624:9: warning: 'gtk_image_menu_item_set_always_show_image' is deprecated [-Wdeprecated-declarations]
 4624 |         gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:87:12: note: declared here
   87 | void       gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4627:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 4627 |         gtk_ui_manager_add_ui (caja_window_info_get_ui_manager (view->details->window),
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4636:9: warning: 'gtk_ui_manager_get_widget' is deprecated [-Wdeprecated-declarations]
 4636 |         menuitem = gtk_ui_manager_get_widget (
      |         ^~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:149:16: note: declared here
  149 | GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:4639:9: warning: 'gtk_image_menu_item_set_always_show_image' is deprecated [-Wdeprecated-declarations]
 4639 |         gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), TRUE);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:87:12: note: declared here
   87 | void       gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'reset_open_with_menu':
fm-directory-view.c:4770:17: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 4770 |                 gtk_ui_manager_add_ui (caja_window_info_get_ui_manager (view->details->window),
      |                 ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'add_extension_menu_items':
fm-directory-view.c:5067:17: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 5067 |                 gtk_ui_manager_add_ui (ui_manager,
      |                 ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:5077:17: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 5077 |                 gtk_ui_manager_add_ui (ui_manager,
      |                 ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'add_script_to_scripts_menus':
fm-directory-view.c:5502:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 5502 |         gtk_ui_manager_add_ui (ui_manager,
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:5509:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 5509 |         gtk_ui_manager_add_ui (ui_manager,
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:5516:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 5516 |         gtk_ui_manager_add_ui (ui_manager,
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'add_template_to_templates_menus':
fm-directory-view.c:5760:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 5760 |         gtk_ui_manager_add_ui (ui_manager,
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:5768:9: warning: 'gtk_ui_manager_add_ui' is deprecated [-Wdeprecated-declarations]
 5768 |         gtk_ui_manager_add_ui (ui_manager,
      |         ^~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:171:16: note: declared here
  171 | void           gtk_ui_manager_add_ui              (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'create_popup_menu':
fm-directory-view.c:6009:9: warning: 'gtk_ui_manager_get_widget' is deprecated [-Wdeprecated-declarations]
 6009 |         menu = gtk_ui_manager_get_widget (caja_window_info_get_ui_manager (view->details->window),
      |         ^~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:149:16: note: declared here
  149 | GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'connect_proxy':
fm-directory-view.c:7691:13: warning: 'gtk_image_menu_item_get_type' is deprecated: Use 'gtk_menu_item_get_type' instead [-Wdeprecated-declarations]
 7691 |             GTK_IS_IMAGE_MENU_ITEM (proxy)) {
      |             ^~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:76:12: note: declared here
   76 | GType      gtk_image_menu_item_get_type          (void) G_GNUC_CONST;
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:7700:25: warning: 'gtk_image_menu_item_set_image' is deprecated [-Wdeprecated-declarations]
 7700 |                         gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (proxy), image);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:92:12: note: declared here
   92 | void       gtk_image_menu_item_set_image         (GtkImageMenuItem *image_menu_item,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'real_merge_menus':
fm-directory-view.c:7786:9: warning: 'gtk_ui_manager_insert_action_group' is deprecated [-Wdeprecated-declarations]
 7786 |         gtk_ui_manager_insert_action_group (ui_manager, action_group, -1);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:138:16: note: declared here
  138 | void           gtk_ui_manager_insert_action_group (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:7790:9: warning: 'gtk_ui_manager_add_ui_from_string' is deprecated [-Wdeprecated-declarations]
 7790 |         view->details->dir_merge_id = gtk_ui_manager_add_ui_from_string (ui_manager, ui, -1, NULL);
      |         ^~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:158:16: note: declared here
  158 | guint          gtk_ui_manager_add_ui_from_string  (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c: In function 'real_update_menus':
fm-directory-view.c:8956:9: warning: 'gtk_ui_manager_get_widget' is deprecated [-Wdeprecated-declarations]
 8956 |         menuitem = gtk_ui_manager_get_widget (
      |         ^~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:149:16: note: declared here
  149 | GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:8961:9: warning: 'gtk_image_menu_item_set_always_show_image' is deprecated [-Wdeprecated-declarations]
 8961 |         gtk_image_menu_item_set_always_show_image (
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:87:12: note: declared here
   87 | void       gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:8964:9: warning: 'gtk_ui_manager_get_widget' is deprecated [-Wdeprecated-declarations]
 8964 |         menuitem = gtk_ui_manager_get_widget (
      |         ^~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkuimanager.h:149:16: note: declared here
  149 | GtkWidget     *gtk_ui_manager_get_widget          (GtkUIManager          *manager,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:8969:9: warning: 'gtk_image_menu_item_set_always_show_image' is deprecated [-Wdeprecated-declarations]
 8969 |         gtk_image_menu_item_set_always_show_image (
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/gtk-3.0/gtk/deprecated/gtkimagemenuitem.h:87:12: note: declared here
   87 | void       gtk_image_menu_item_set_always_show_image (GtkImageMenuItem *image_menu_item,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from fm-directory-view.c:47:
fm-directory-view.c: In function 'fm_directory_view_class_init':
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11226:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11226 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, add_file);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11227:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11227 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, bump_zoom_level);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11228:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11228 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, can_zoom_in);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11229:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11229 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, can_zoom_out);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11230:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11230 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, clear);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11231:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11231 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, file_changed);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11232:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11232 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, get_background_widget);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11233:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11233 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, get_selection);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11234:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11234 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, get_selection_for_file_transfer);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11235:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11235 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, get_item_count);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11236:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11236 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, is_empty);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11237:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11237 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, reset_to_defaults);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11238:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11238 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, restore_default_zoom_level);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11239:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11239 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, select_all);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11240:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11240 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, set_selection);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11241:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11241 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, invert_selection);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11242:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11242 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, zoom_to_level);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../eel/eel-gtk-macros.h:136:3: error: dereferencing type-punned pointer will break strict-aliasing rules [-Werror=strict-aliasing]
  136 | * (void (**)(void)) & (class_pointer)->signal = prefix##_unimplemented_##signal
fm-directory-view.c:11243:9: note: in expansion of macro 'EEL_ASSIGN_MUST_OVERRIDE_SIGNAL'
11243 |         EEL_ASSIGN_MUST_OVERRIDE_SIGNAL (klass, fm_directory_view, get_zoom_level);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/giochannel.h:36,
                 from /usr/include/glib-2.0/glib.h:56,
                 from /usr/include/gtk-3.0/gdk/gdkconfig.h:8,
                 from /usr/include/gtk-3.0/gdk/gdk.h:30,
                 from /usr/include/gtk-3.0/gdk/gdkx.h:28,
                 from fm-directory-view.c:34:
fm-directory-view.c: In function 'get_file_paths_or_uris_as_newline_delimited_string':
/usr/include/glib-2.0/glib/gstring.h:74:5: warning: ignoring return value of 'g_string_free_and_steal' declared with attribute 'warn_unused_result' [-Wunused-result]
   70 |   (__builtin_constant_p (free_segment) ?        \
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   71 |     ((free_segment) ?                           \
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   72 |       (g_string_free) ((str), (free_segment)) : \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   73 |       g_string_free_and_steal (str))            \
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   74 |     :                                           \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   75 |     (g_string_free) ((str), (free_segment)))
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fm-directory-view.c:5242:9: note: in expansion of macro 'g_string_free'
 5242 |         g_string_free (expanding_string, FALSE);
      |         ^~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[5]: *** [Makefile:592: fm-directory-view.lo] Error 1

Downstream report: https://bugs.gentoo.org/926751 Reproduced against git master.

eli-schwartz commented 3 months ago

eel-gtk-macros.h was removed from nautilus in 2011, and likewise doesn't appear to exist for nemo. It may be worth looking into what nautilus did to get rid of this code.