From: Stefan K. <en...@ho...> - 2007-05-14 10:22:03
|
hi, time for an update. For the clarification (JMPREL) and (REL) are =20 section addresses and not sizes. The gst_type_register_static_full() =20 is a full win, here the summary for libgstcoreelements.so PLTRELSZ=3D+8 RELSZ=3D-312 RELCOUNT=3D-39 size=3D-64 I now also applied the GstElementDetails change to all elements in =20 libgstcoreelements.so, previously there was a small size increment, =20 because the use of both gst_element_class_set_details() and =20 gst_element_class_set_details_simple(). Now the result summary is the =20 following: PLTRELSZ=3D-0 RELSZ=3D-384 RELCOUNT=3D-52 size=3D+1664 There is quite some saving on the relocs as expected. the thing I =20 don't understand is that the resulting new binary is 1664 bytes =20 bigger. If I use readelf -S and sum up the section-sizes the new =20 version is 533 bytes shorter. I am not that much concerned about +/-1kbyte, the saved relocs are =20 more important, but I am curios and would like to understand where it =20 comes from. Stefan Quoting Stefan Kost <en...@ho...>: > hi, > > after reading > http://people.redhat.com/drepper/dsohowto.pdf > and studying the gobject change described here > http://bugzilla.gnome.org/show_bug.cgi?id=3D337058 > > I did something simillar for gstreamer. First I added > gst_type_register_static_full() to utils.c and change GST_BOILERPLATE > macro to use it. This is the before and after for the coreelements > > $ readelf -d /usr/lib/gstreamer-0.10/libgstcoreelements.so | grep REL > 0x00000002 (PLTRELSZ) 1912 (bytes) > 0x00000014 (PLTREL) REL > 0x00000017 (JMPREL) 0x3550 > 0x00000011 (REL) 0x2e38 > 0x00000012 (RELSZ) 1816 (bytes) > 0x00000013 (RELENT) 8 (bytes) > 0x6ffffffa (RELCOUNT) 214 > > $ readelf -d /usr/lib/gstreamer-0.10/libgstcoreelements.so | grep REL > 0x00000002 (PLTRELSZ) 1920 (bytes) > 0x00000014 (PLTREL) REL > 0x00000017 (JMPREL) 0x344c > 0x00000011 (REL) 0x2e6c > 0x00000012 (RELSZ) 1504 (bytes) > 0x00000013 (RELENT) 8 (bytes) > 0x6ffffffa (RELCOUNT) 175 > > So its saves 39 relocations there (should be 48, need to check). > > The same scheme can be initialized to other datastructures like e.g. > GstElementDetails (see > http://bugzilla.gnome.org/show_bug.cgi?id=3D437457). What do you think? > > Next I will do the same for Interfaces and proprose > g_type_register_static_full(), g_type_add_interface_static_simple|full(). > > Ciao > Stefan > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > gstreamer-devel mailing list > gst...@li... > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel > |