On Tue, Nov 17, 2020 at 6:51 AM Kjell Ahlstedt <kjellahlst...@gmail.com>
wrote:

> 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)
_______________________________________________
gtkmm-list mailing list
gtkmm-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to