2002-01-10 03:52:01 +00:00
|
|
|
# $FreeBSD$
|
|
|
|
|
|
|
|
# Read global symbols from object file.
|
|
|
|
BEGIN {
|
2021-11-07 09:00:07 +00:00
|
|
|
modname = ARGV[1]
|
2002-04-19 09:04:53 +00:00
|
|
|
while ("${NM:='nm'} -g " ARGV[1] | getline) {
|
2002-01-10 03:52:01 +00:00
|
|
|
if (match($0, /^[^[:space:]]+ [^AU] (.*)$/)) {
|
|
|
|
syms[$3] = $2
|
|
|
|
}
|
|
|
|
}
|
2002-08-06 19:31:04 +00:00
|
|
|
delete ARGV[1]
|
2002-01-10 03:52:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# De-list symbols from the export list.
|
2002-03-25 20:32:24 +00:00
|
|
|
{
|
2021-11-07 09:00:07 +00:00
|
|
|
smbl = $0
|
|
|
|
if (!(smbl in syms)) {
|
|
|
|
printf "Symbol %s is not present in %s\n", \
|
|
|
|
smbl, modname > "/dev/stderr"
|
|
|
|
}
|
|
|
|
delete syms[smbl]
|
2002-01-10 03:52:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# Strip commons, make everything else local.
|
|
|
|
END {
|
|
|
|
for (member in syms) {
|
|
|
|
if (syms[member] == "C")
|
|
|
|
print "-N" member
|
|
|
|
else
|
|
|
|
print "-L" member
|
|
|
|
}
|
|
|
|
}
|