Skip to content

Instantly share code, notes, and snippets.

@patstew
Created September 15, 2016 13:10
Show Gist options
  • Save patstew/416b74c28f88a3e81637c84db125c06e to your computer and use it in GitHub Desktop.
Save patstew/416b74c28f88a3e81637c84db125c06e to your computer and use it in GitHub Desktop.
#!/bin/bash
for lib in libc.so.6 libm.so.6 libpthread.so.0 libdl.so.2 libresolv.so.2 librt.so.1; do
objdump -T /usr/lib/$lib
done | awk -v maxver=2.5 -f <(cat - <<'EOF'
BEGIN {
split(maxver, ver, /\./)
limit_ver = ver[1] * 10000 + ver[2]*100 + ver[3]
}
/GLIBC_/ {
gsub(/\(|\)/, "",$(NF-1))
split($(NF-1), ver, /GLIBC_|\./)
vers = ver[2] * 10000 + ver[3]*100 + ver[4]
if (vers > 0) {
if (symvertext[$(NF)] != $(NF-1))
count[$(NF)]++
if (vers <= limit_ver && vers > symvers[$(NF)]) {
symvers[$(NF)] = vers
symvertext[$(NF)] = $(NF-1)
}
}
}
END {
for (s in symvers) {
if (count[s] > 1)
printf("__asm__(\".symver %s,%s@%s\");\n", s, s, symvertext[s])
}
}
EOF
) | sort
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment