1# $FreeBSD$ 2 3# Read global symbols from object file. 4BEGIN { 5 modname = ARGV[1] 6 while ("${NM:='nm'} -g " ARGV[1] | getline) { 7 if (match($0, /^[^[:space:]]+ [^AU] (.*)$/)) { 8 syms[$3] = $2 9 } 10 } 11 delete ARGV[1] 12} 13 14# De-list symbols from the export list. 15{ 16 smbl = $0 17 if (!(smbl in syms)) { 18 printf "Symbol %s is not present in %s\n", \ 19 smbl, modname > "/dev/stderr" 20 } 21 delete syms[smbl] 22} 23 24# Strip commons, make everything else local. 25END { 26 for (member in syms) { 27 if (syms[member] == "C") 28 print "-N" member 29 else 30 print "-L" member 31 } 32} 33