Re: DragonFly added DT_GNU_HASH support to rtld

2012-04-29 Thread Alexander Kabaev
On Sun, 15 Apr 2012 17:43:22 +0300
Konstantin Belousov kostik...@gmail.com wrote:

 On Sun, Mar 11, 2012 at 10:59:00AM +0100, John Marino wrote:
  Hi Konstantin,
  
  It seems that no BSD supported DT_GNU_HASH despite this option
  being available on the base binutils (FreeBSD's 2.17.50 binutils
  supports it). This gnu extension is a big performance improvement
  over the specified SysV hash.
  
  The guy porting libreoffice to pkgsrc was finding
  -Wl,--hash-style=gnu to be the default build for that package.
  Indeed, using the standard hash results in very long startup times
  for something like Writer ( 8 seconds launched from a SSD)
  
  The result is that we brought in DT_GNU_HASH support to our
  real-time linker this weekend.  We're still waiting to see how that
  improves libreoffice startup times.
  
  full commit:
  http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7629c6317998f850ebca23c296822ba08af09e5b
  
  
  Modification to base compiler so all system libs and binaries can
  take advantage of it:
  http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4687ecd9561d76f3d02ccb4f7adeecd5e3afdd8f
  
  
  For a while, binaries with dynamic symbol tables will have both
  types of hashes embedded.  At some point in the future, we may
  switch over to only generating the GNU hash.  This will break
  forward compatibility, but that happens rather frequently for other
  reasons anyway.
  
  I was a bit surprised FreeBSD didn't already have this
  functionality given the performance benefits, so hopefully these
  DragonFly commits will be interesting for you.
  
 
 I finally ported the Dragonfly commit to FreeBSD. There were several
 changes reverted in dragonfly version of the extracted
 matched_symbol() function which were restored. I also blindly
 converted all non-x86 arches.
 
 The matched_symbol() extraction is the good opportunity to apply the
 style(9) formatting to the large chunk of rtld code.
 
 Any testers, esp. on non-x86 architectures, are welcome. You would
 need to modify gcc spec file for you architecture, see corresponding
 x86 changes in contrib/gcc/config/i386.
 
 For me, patch successfully worked on the machine were I disabled sysv
 hashes at all.
 
 http://people.freebsd.org/~kib/misc/rtld-gnu_hash.1.patch


Nothing jumps out, looks good. I am not a fan of mixing and matching
different styles within the same file though. 



-- 
Alexander Kabaev


signature.asc
Description: PGP signature


Re: DragonFly added DT_GNU_HASH support to rtld

2012-04-15 Thread Konstantin Belousov
On Sun, Mar 11, 2012 at 10:59:00AM +0100, John Marino wrote:
 Hi Konstantin,
 
 It seems that no BSD supported DT_GNU_HASH despite this option being 
 available on the base binutils (FreeBSD's 2.17.50 binutils supports it). 
  This gnu extension is a big performance improvement over the specified 
 SysV hash.
 
 The guy porting libreoffice to pkgsrc was finding -Wl,--hash-style=gnu 
 to be the default build for that package.  Indeed, using the standard 
 hash results in very long startup times for something like Writer ( 8 
 seconds launched from a SSD)
 
 The result is that we brought in DT_GNU_HASH support to our real-time 
 linker this weekend.  We're still waiting to see how that improves 
 libreoffice startup times.
 
 full commit:
 http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/7629c6317998f850ebca23c296822ba08af09e5b
 
 
 Modification to base compiler so all system libs and binaries can take 
 advantage of it:
 http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4687ecd9561d76f3d02ccb4f7adeecd5e3afdd8f
 
 
 For a while, binaries with dynamic symbol tables will have both types of 
 hashes embedded.  At some point in the future, we may switch over to 
 only generating the GNU hash.  This will break forward compatibility, 
 but that happens rather frequently for other reasons anyway.
 
 I was a bit surprised FreeBSD didn't already have this functionality 
 given the performance benefits, so hopefully these DragonFly commits 
 will be interesting for you.
 

I finally ported the Dragonfly commit to FreeBSD. There were several
changes reverted in dragonfly version of the extracted matched_symbol()
function which were restored. I also blindly converted all non-x86
arches.

The matched_symbol() extraction is the good opportunity to apply the
style(9) formatting to the large chunk of rtld code.

Any testers, esp. on non-x86 architectures, are welcome. You would need
to modify gcc spec file for you architecture, see corresponding x86
changes in contrib/gcc/config/i386.

For me, patch successfully worked on the machine were I disabled sysv
hashes at all.

http://people.freebsd.org/~kib/misc/rtld-gnu_hash.1.patch


pgpzIUBZ4SqUl.pgp
Description: PGP signature