]> Zhao Yanbai Git Server - minix.git/commitdiff
unstack: add shared libraries symbols
authorBen Gras <ben@minix3.org>
Thu, 3 Jan 2013 21:32:14 +0000 (21:32 +0000)
committerBen Gras <ben@minix3.org>
Fri, 4 Jan 2013 09:46:12 +0000 (09:46 +0000)
commands/unstack/unstack.sh

index 118913216108577f992459d0c2e25f5811c939b7..c7ea41a4c714403823e1b0392377e8ee8e45f92a 100644 (file)
@@ -48,7 +48,17 @@ fi
 SYMLIST=/tmp/unstack.$$
 
 # store sorted, filtered nm output once
-( $NM $executable ; $EXTRANM ) | sed 's/^/0x/' | sort -x | grep ' [Tt] [^.]' >$SYMLIST
+(
+$NM $executable | sed 's/^/0x/'
+$EXTRANM
+
+# Add shared libraries
+ldd -f"%p %x\n" $executable 2>/dev/null | while read lib addr
+do     echo >&2 "Adding $lib at $addr"
+       nm -n $lib | sed 's/^/0x/' | grep ' [Tt] ' | \
+gawk -v liboffset=$addr -v libname=$lib --non-decimal-data '{ printf "0x%lx %s %s[%s]\n", $1+liboffset, $2, $3, libname }'
+done
+) | sort -x | grep ' [Tt] [^.]' >$SYMLIST
 
 while [ $# -gt 0 ]
 do      gawk <$SYMLIST --non-decimal-data -v symoffset=$1 '