diff options
author | Miles Bader <miles@gnu.org> | 1997-06-24 21:08:52 +0000 |
---|---|---|
committer | Miles Bader <miles@gnu.org> | 1997-06-24 21:08:52 +0000 |
commit | ffac30068cf108c8de91643607d7ad581eb8f345 (patch) | |
tree | 69b34a77db827ec42a529962d3d8bd4eb9e22c26 /release | |
parent | 8d1d903a9a2f6822d9cbf701b611389205a752c4 (diff) |
Renamed from mksmallso
Diffstat (limited to 'release')
-rwxr-xr-x | release/mksmallso.sh | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/release/mksmallso.sh b/release/mksmallso.sh new file mode 100755 index 00000000..2f147bd0 --- /dev/null +++ b/release/mksmallso.sh @@ -0,0 +1,48 @@ +# Usage: +# $1 : Destination merged, stripped, small shared library +# $2 : lib*_pic.a files from which to produce the final small library +# $3 : .so files that this library should depend on +# ${4:$} : executables and shared libraries whos dependencies we care about + +while :; do + case "$1" in + -*) LDARGS="$1"; shift;; + *) break;; + esac +done + +MERGED_SO="$1"; shift +PIC_LIBS="$1"; shift +DEPS="$1"; shift + +GCC=${GCC-gcc} +LD=${LD-ld} +OBJDUMP=${OBJDUMP-objdump} +OBJCOPY=${OBJCOPY-objcopy} + +DEP_FLAGS_FILE=/tmp/,depflags.$$ +NEED_DSYMS_FILE=/tmp/,need.dyn.syms.$$ +HAVE_DSYMS_FILE=/tmp/,have.dyn.syms.$$ +MERGED_PIC_LIB=/tmp/,libmerged_pic.a.$$ + +#trap "rm -f $DEP_FLAGS_FILE $MERGED_PIC_LIB $NEED_DSYMS_FILE $HAVE_DSYMS_FILE" 0 + + +$OBJDUMP --dynamic-syms "$@" 2>/dev/null \ + | sed -n 's/^.*\*UND\*.* \([^ ]*\)$/\1/p' \ + | sort -u > $NEED_DSYMS_FILE + +# 00000000 w F .text 00000000 syscall_device_write_request +# 00000000 g F .text 0000056c __strtoq_internal +$OBJDUMP --syms $PIC_LIBS 2>/dev/null \ + | sed -n 's/^........ \(g \| w\) .. .* [0-9a-f]....... \([^ ]*\)$/\2/p' \ + | sort -u > $HAVE_DSYMS_FILE + +# This had better be gnu diff... +diff --unchanged-l='%L' --old-l= --new-l= $NEED_DSYMS_FILE $HAVE_DSYMS_FILE \ + | sed 's/^/-u/' > $DEP_FLAGS_FILE + +$GCC $LDARGS -nostdlib -nostartfiles -shared -Wl,-soname=`basename $MERGED_SO` `cat $DEP_FLAGS_FILE` \ + -o $MERGED_SO.uns $PIC_LIBS $DEPS \ +&& $OBJCOPY --strip-debug $MERGED_SO.uns $MERGED_SO \ +&& rm -f $MERGED_SO.uns |