wrap_init.cc contains the following lines:
#undef G_GNUC_CONST
#define G_GNUC_CONST /* empty */
Oh, right. I see this in Fedora's rpm debug source. I also see the calls to Gtk::TextView::get_type in the debug source. However, when I objdump -C -S /usr/lib64/libgtkmm-3.0.so.1.1.0 I see the calls are definitely not made from Gtk::wrap_init (I've included a snippet of the end of the objdump below.
I split the TVDerived class into a separate source and header file and made an init() function that calls TVDerived::get_type(), undef'd G_GNU_CONST and compiled it to a shared library... but actually the undef is working; when undef'd the get_type() call is made and the gtkmm type gets printed out. If I don't undef then the get_type call is not made and only GtkTextView gets printed.
So... I guess this isn't a simple problem to verify the root cause. I think I'll need to build gtkmm from source, capture the exact compiler and linker parameters etc... I'll try this weekend.
objdump output, the tail end of Gtk::wrap_init has the last wrap_register, but no e.g. jmpq 60e0 <Gtk::TextView::get_type()@plt>:
Glib::wrap_register(gtk_window_group_get_type(), &WindowGroup_Class::wrap_new);
32d1d1: e8 9a cd ed ff callq 209f70 <gtk_window_group_get_type@plt>
32d1d6: 48 8b 35 1b 7e 11 00 mov 0x117e1b(%rip),%rsi # 444ff8 <Gtk::WindowGroup_Class::wrap_new(_GObject*)@@Base+0x13b0c8>
VolumeButton::get_type();
Widget::get_type();
Window::get_type();
WindowGroup::get_type();
} // wrap_init()
32d1dd: 48 83 c4 08 add $0x8,%rsp
Glib::wrap_register(gtk_window_group_get_type(), &WindowGroup_Class::wrap_new);
32d1e1: 48 89 c7 mov %rax,%rdi
32d1e4: e9 a7 75 ee ff jmpq 214790 <Glib::wrap_register(unsigned long, Glib::ObjectBase* (*)(_GObject*))@plt>
32d1e9: 90 nop
32d1ea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
000000000032d1f0 <Gtk::AccelKey::AccelKey(Glib::ustring const&, Glib::ustring const&)@@Base>:
AccelKey::AccelKey(const Glib::ustring& accelerator, const Glib::ustring& accel_path)
32d1f0: 41 55 push %r13
: path_(accel_path)
32d1f2: 4c 8d 6f 08 lea 0x8(%rdi),%r13
AccelKey::AccelKey(const Glib::ustring& accelerator, const Glib::ustring& accel_path)