xref: /freebsd/sys/conf/kmod_syms.awk (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
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