[gst-devel] saving relocation entries

Stefan Kost ensonic at hora-obscura.de
Mon May 14 12:21:17 CEST 2007


hi,

time for an update. For the clarification (JMPREL) and (REL) are  
section addresses and not sizes. The gst_type_register_static_full()  
is a full win, here the summary for libgstcoreelements.so

PLTRELSZ=+8
RELSZ=-312
RELCOUNT=-39
size=-64

I now also applied the GstElementDetails change to all elements in  
libgstcoreelements.so, previously there was a small size increment,  
because the use of both gst_element_class_set_details() and  
gst_element_class_set_details_simple(). Now the result summary is the  
following:

PLTRELSZ=-0
RELSZ=-384
RELCOUNT=-52
size=+1664

There is quite some saving on the relocs as expected. the thing I  
don't understand is that the resulting new binary is 1664 bytes  
bigger. If I use readelf -S and sum up the section-sizes the new  
version is 533 bytes shorter.

I am not that much concerned about +/-1kbyte, the saved relocs are  
more important, but I am curios and would like to understand where it  
comes from.

Stefan

Quoting Stefan Kost <ensonic at hora-obscura.de>:

> 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=337058
>
> 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=437457). 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
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
>






More information about the gstreamer-devel mailing list