diff options
Diffstat (limited to 'extra')
-rwxr-xr-x | extra/libstrip/libstrip | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/extra/libstrip/libstrip b/extra/libstrip/libstrip deleted file mode 100755 index 69a10438a..000000000 --- a/extra/libstrip/libstrip +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/perl -w -# vi: set ts=4: - -# Libstrip - A utility to optimize libraries for specific executables -# Copyright (C) 2001 David A. Schleef <ds@schleef.org> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of version 2 of the GNU General Public License as -# published by the Free Software Foundation. -# -# This is a surprisingly simple script that gets a list of -# unresolved symbols in a list of executables specified on the -# command line, and then relinks the uClibc shared object file -# with only the those symbols and their dependencies. This -# results in a shared object that is optimized for the executables -# listed, and thus may not work with other executables. -# -# Example: optimizing uClibc for BusyBox -# Compile uClibc and BusyBox as normal. Then, in this -# directory, run: -# libstrip path/to/busybox -# After the script completes, there should be a new -# libuClibc-0.9.5.so in the current directory, which -# is optimized for busybox. -# -# How it works: -# The uClibc Makefiles create libuClibc.so by first creating -# the ar archive libc.a with all the object files, then links -# the final libuClibc.so by using 'ld --shared --whole-archive'. -# We take advantage of the linker command line option --undefined, -# which pulls in a symbol and all its dependencies, and so relink -# the library using --undefined for each symbol in place of -# --whole-archive. The linker script is used only to avoid -# having very long command lines. - -$topdir="../.."; - -# This is the name of the default ldscript for shared libs. The -# file name will be different for other architectures. -$ldscript="/usr/lib/ldscripts/elf_i386.xs"; - -my @syms; -my @allsyms; -my $s; - -while($exec = shift @ARGV){ - #print "$exec\n"; - @syms=`nm --dynamic $exec`; - for $s (@syms){ - chomp $s; - if($s =~ m/^.{8} [BUV] (.+)/){ - my $x = $1; - if(!grep { m/^$x$/; } @allsyms){ - unshift @allsyms, $x; - } - } - } -} - -open(LDSCRIPT, ">ldscript"); -print LDSCRIPT "INCLUDE $ldscript\n"; -for $s (@allsyms) { - print LDSCRIPT "EXTERN($s)\n"; -} - - -`gcc -s -nostdlib -Wl,-warn-common -shared \\ - -o libuClibc-0.9.5.so \\ - -Wl,-soname,libc.so.0 -Wl,--script=ldscript \\ - $topdir/libc/libc.a \\ - $topdir/libc/tmp/libgcc-need.a` - |