Files
Dag-Erling Smørgrav cdfc673811 various: Fix nlist invocations
Fix nlist(3) consumers that either expected our toolchain to prepend an
underscore to symbol names or expected nlist(3) to ignore the mismatch,
as it did until we overhauled it back in May.

While here, also fix cases where the last element in the list had an
empty string instead of NULL as sentinel.

MFC after:	3 days
Fixes:		4617a6cb82 ("nlist: Handle multiple symbol tables")
Reviewed by:	kib, jhb
Differential Revision:	https://reviews.freebsd.org/D59254
2026-09-01 14:49:24 +02:00

73 lines
1.4 KiB
Makefile

.include <src.opts.mk>
PROG= netstat
SRCS= if.c inet.c main.c mbuf.c mroute.c netisr.c nl_symbols.c route.c \
unix.c mroute6.c ipsec.c bpf.c pfkey.c sctp.c common.c nhops.c nhgrp.c \
nl_defs.h
nl_symbols.c: nlist_symbols
awk '\
BEGIN { \
print "#include <sys/param.h>"; \
print "#include <nlist.h>"; \
print "struct nlist nl[] = {"; \
} \
!/^\#/ { printf("\t{ .n_name = \"%s\" },\n", $$2); } \
END { print "\t{ .n_name = NULL },\n};" } \
' < ${.ALLSRC} > ${.TARGET} || rm -f ${.TARGET}
nl_defs.h: nlist_symbols
awk '\
BEGIN { \
print "#include <nlist.h>"; \
print "extern struct nlist nl[];"; \
i = 0; \
} \
!/^\#/ { printf("\#define\tN_%s\t%s\n", toupper($$2), i++); }' \
< ${.ALLSRC} > ${.TARGET} || rm -f ${.TARGET}
CLEANFILES+= nl_symbols.c nl_defs.h
CFLAGS+= -I${.OBJDIR}
WARNS?= 3
CFLAGS+=-fno-strict-aliasing
CFLAGS+=-DIPSEC
CFLAGS+=-DSCTP
.if ${MK_INET_SUPPORT} != "no"
CFLAGS+=-DINET
.endif
.if ${MK_INET6_SUPPORT} != "no"
SRCS+= inet6.c
CFLAGS+=-DINET6
.endif
.if ${MK_OFED} != "no"
CFLAGS+=-DSDP
.endif
.if ${MK_PF} != "no"
CFLAGS+=-DPF
.endif
LIBADD= kvm memstat xo util
.if ${MK_NETGRAPH_SUPPORT} != "no"
SRCS+= netgraph.c
LIBADD+= netgraph
CFLAGS+=-DNETGRAPH
.endif
.if ${MK_NETLINK_SUPPORT} != "no"
SRCS+= route_netlink.c
.else
CFLAGS+=-DWITHOUT_NETLINK
.endif
.if ${MK_JAIL} != "no" && !defined(RESCUE)
CFLAGS+= -DJAIL
LIBADD+= jail
.endif
.include <bsd.prog.mk>