#1719: 'Chapter 6.61. Stripping Again' is wrong, --strip-all could be used on
shared lib, not on kernel modules
------------------------------+---------------------------------------------
 Reporter:  Gilles Espinasse  |       Owner:  [email protected]
     Type:  defect            |      Status:  new                          
 Priority:  normal            |   Milestone:                               
Component:  Book              |     Version:  SVN                          
 Severity:  normal            |    Keywords:  strip                        
------------------------------+---------------------------------------------
 Chapter '6.61. Stripping Again' stable and devel LSF book state that:

 "If disk space is very tight, the --strip-all option can be used on the
 binaries in /{,usr/}{bin,sbin} to gain several more megabytes. Do not use
 this option on libraries—they will be destroyed."

 --strip-all can't be used on kernel modules, but can be used on shared
 lib.

 So the rule can't be the compact /tools/bin/find /{,usr/}{bin,lib,sbin}
 and need some rewrite.

 I do
 /tools/bin/find /lib /usr/lib /usr/share/rrdtool-* \
         -type f \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
         -ls -exec /tools/bin/strip --strip-all {} \; #2>/dev/null

 /tools/bin/find /{,s}bin /usr/{,s}bin /usr/local/{,s}bin \
         -type f \
         -exec /tools/bin/strip --strip-all {} \; 2>/dev/null

 2>/dev/null allow to suppress the warning on .so scripts
 -ls allow to see what files are stripped

 Those stripping instructions work with LFS5.1 derivated build (using strip
 2.15.90.0.3 20040415)
 But it sometime fail with LFS6 derivated build (but using a different
 binutils with strip 2.16.91.0.5 ). In this case, it rarely fail during
 libc stripping with this log ( I had to repeat the strip script in a loop
 to reproduce the problem).

 /tools/bin/find /lib /usr/lib /usr/share/rrdtool-* /install/initrd/lib \
         -type f \( -name '*.so' -o -name '*.so[\.0-9]*' \) \
         -ls -exec /tools/bin/strip --strip-all {} \; #2>/dev/null
 1126081 1028 -rwxr-xr-x   1 root     root      1044920 Feb 25 10:28
 /lib/libc-2.3.5.so
 /tools/bin/find: /tools/bin/strip terminated by signal 11
 1126087   84 -rwxr-xr-x   1 root     root        80716 Feb 25 10:30
 /lib/ld-2.3.5.so
 1126088    8 -rwxr-xr-x   1 root     root         5528 Feb 25 10:30
 /lib/libBrokenLocale-2.3.5.so
 1126084  140 -rwxr-xr-x   1 root     root       137848 Feb 25 10:30
 /lib/libm-2.3.5.so
 1126085   12 -rwxr-xr-x   1 root     root         9828 Feb 25 10:30
 /lib/libdl-2.3.5.so
 ...

 So all files but libc-2.3.5.so are correclty stripped.
 Any later attempt to strip again fail on libc-2.3.5.so the file look
 corrupted as I have to rebuild the lib to suppress the error.

 I had supposed this is because a running binary can't be stripped
 As find and strip are not statically build, they use shared lib.
 Could it be the reason sometime strip fail to work on libc with signal 11?
 Alernately, as it work on LFS5.1, it may be a bug in strip 2.16.91.0.5.

-- 
Ticket URL: <http://wiki.linuxfromscratch.org/lfs/ticket/1719>
LFS Trac <http://wiki.linuxfromscratch.org/lfs/>
Linux From Scratch: Your Distro, Your Rules.
--
http://linuxfromscratch.org/mailman/listinfo/lfs-book
FAQ: http://www.linuxfromscratch.org/lfs/faq.html
Unsubscribe: See the above information page

Reply via email to