diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-10-22 01:12:47 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-10-22 01:12:47 -0400 |
commit | e30f2a09f1e8e5b368dc8f9210b491a3a4579329 (patch) | |
tree | e56998de78903e38b20d33e244b8e5005d5369ca /test/plt/check-plt.sh | |
parent | e0ac4efbdb498319f03a2a95d75d061ab6c68491 (diff) |
test/plt: add a script to find PLT usage
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'test/plt/check-plt.sh')
-rwxr-xr-x | test/plt/check-plt.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/test/plt/check-plt.sh b/test/plt/check-plt.sh new file mode 100755 index 000000000..bedc8fd35 --- /dev/null +++ b/test/plt/check-plt.sh @@ -0,0 +1,38 @@ +#!/bin/sh +allowed=" +calloc +free +malloc +memalign +realloc +" + +${OBJDUMP:-objdump} -d ${top_builddir:-../..}/lib/libc.so.? | \ +gawk -v allowed="${allowed}" ' +BEGIN { + COUNT = split(" " allowed, ALLOWED); +} + +# Strip away the noise. The name will be like: +# <brk>: +# <foo@plt> +function symstrip(name) { + return gensub(/.*<([^>@]*).*/, "\\1", "", name); +} + +{ +# Match the start of the symbol disassembly +# 00009720 <brk>: +if ($2 ~ />:$/) { + f = symstrip($2); + +} else if ($NF ~ /@plt>/) { + rf = symstrip($NF); + for (a in ALLOWED) { + a = ALLOWED[a]; + if (a == rf) + next; + } + print "Func " f " references " rf; +} +}' | sort -u |