git: cdfc673811ac - main - various: Fix nlist invocations
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 01 Sep 2026 12:50:08 UTC
The branch main has been updated by des:
URL: https://cgit.FreeBSD.org/src/commit/?id=cdfc673811aca2c6690f37bde9ef4896ea2e1d6b
commit cdfc673811aca2c6690f37bde9ef4896ea2e1d6b
Author: Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2026-09-01 12:49:24 +0000
Commit: Dag-Erling Smørgrav <des@FreeBSD.org>
CommitDate: 2026-09-01 12:49:24 +0000
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: 4617a6cb82a6 ("nlist: Handle multiple symbol tables")
Reviewed by: kib, jhb
Differential Revision: https://reviews.freebsd.org/D59254
---
lib/libkvm/kvm_amd64.c | 6 +--
lib/libkvm/kvm_cptime.c | 2 +-
lib/libkvm/kvm_getloadavg.c | 6 +--
lib/libkvm/kvm_getswapinfo.c | 4 +-
lib/libkvm/kvm_i386.c | 6 +--
lib/libkvm/kvm_pcpu.c | 16 +++----
lib/libkvm/kvm_proc.c | 18 ++++----
lib/libkvm/kvm_vnet.c | 4 +-
lib/libmemstat/memstat_malloc.c | 12 +++---
lib/libmemstat/memstat_uma.c | 10 ++---
sbin/ddb/ddb_capture.c | 12 +++---
usr.bin/ktrdump/ktrdump.c | 8 ++--
usr.bin/netstat/Makefile | 2 +-
usr.bin/netstat/nlist_symbols | 96 ++++++++++++++++++++---------------------
usr.bin/vmstat/vmstat.c | 22 +++++-----
usr.sbin/iostat/iostat.c | 6 +--
usr.sbin/pstat/pstat.c | 8 ++--
17 files changed, 119 insertions(+), 119 deletions(-)
diff --git a/lib/libkvm/kvm_amd64.c b/lib/libkvm/kvm_amd64.c
index acc7ac017a3c..5776be95fe59 100644
--- a/lib/libkvm/kvm_amd64.c
+++ b/lib/libkvm/kvm_amd64.c
@@ -140,7 +140,7 @@ _amd64_initvtop(kvm_t *kd)
if (found == 0) {
nl[0].n_name = "kernbase";
- nl[1].n_name = 0;
+ nl[1].n_name = NULL;
if (kvm_nlist2(kd, nl) != 0) {
_kvm_err(kd, kd->program, "bad namelist - no kernbase");
@@ -148,7 +148,7 @@ _amd64_initvtop(kvm_t *kd)
}
nl[0].n_name = "kernphys";
- nl[1].n_name = 0;
+ nl[1].n_name = NULL;
/* XXX
* Relocatable kernels can still be loaded at 2M.
@@ -163,7 +163,7 @@ _amd64_initvtop(kvm_t *kd)
}
nl[0].n_name = "KPML4phys";
- nl[1].n_name = 0;
+ nl[1].n_name = NULL;
if (kvm_nlist2(kd, nl) != 0) {
_kvm_err(kd, kd->program, "bad namelist - no KPML4phys");
diff --git a/lib/libkvm/kvm_cptime.c b/lib/libkvm/kvm_cptime.c
index bf6d10c0c620..73b7947f25a7 100644
--- a/lib/libkvm/kvm_cptime.c
+++ b/lib/libkvm/kvm_cptime.c
@@ -43,7 +43,7 @@
#include "kvm_private.h"
static struct nlist kvm_cp_time_nl[] = {
- { .n_name = "_cp_time" }, /* (deprecated) */
+ { .n_name = "cp_time" }, /* (deprecated) */
{ .n_name = NULL },
};
diff --git a/lib/libkvm/kvm_getloadavg.c b/lib/libkvm/kvm_getloadavg.c
index cbefa8f0064a..9d7370a89b32 100644
--- a/lib/libkvm/kvm_getloadavg.c
+++ b/lib/libkvm/kvm_getloadavg.c
@@ -42,11 +42,11 @@
#include "kvm_private.h"
static struct nlist nl[] = {
- { .n_name = "_averunnable" },
+ { .n_name = "averunnable" },
#define X_AVERUNNABLE 0
- { .n_name = "_fscale" },
+ { .n_name = "fscale" },
#define X_FSCALE 1
- { .n_name = "" },
+ { .n_name = NULL },
};
/*
diff --git a/lib/libkvm/kvm_getswapinfo.c b/lib/libkvm/kvm_getswapinfo.c
index a713c6752fa7..bb8746b5aefe 100644
--- a/lib/libkvm/kvm_getswapinfo.c
+++ b/lib/libkvm/kvm_getswapinfo.c
@@ -51,8 +51,8 @@
#include "kvm_private.h"
static struct nlist kvm_swap_nl[] = {
- { .n_name = "_swtailq" }, /* list of swap devices and sizes */
- { .n_name = "_dmmax" }, /* maximum size of a swap block */
+ { .n_name = "swtailq" }, /* list of swap devices and sizes */
+ { .n_name = "dmmax" }, /* maximum size of a swap block */
{ .n_name = NULL }
};
diff --git a/lib/libkvm/kvm_i386.c b/lib/libkvm/kvm_i386.c
index 776c486579a1..994f264a5907 100644
--- a/lib/libkvm/kvm_i386.c
+++ b/lib/libkvm/kvm_i386.c
@@ -132,7 +132,7 @@ _i386_initvtop(kvm_t *kd)
}
nl[0].n_name = "kernbase";
- nl[1].n_name = 0;
+ nl[1].n_name = NULL;
if (kvm_nlist2(kd, nl) != 0) {
#ifdef __i386__
@@ -145,7 +145,7 @@ _i386_initvtop(kvm_t *kd)
kernbase = nl[0].n_value;
nl[0].n_name = "IdlePDPT";
- nl[1].n_name = 0;
+ nl[1].n_name = NULL;
if (kvm_nlist2(kd, nl) == 0) {
i386_physaddr_pae_t pa64;
@@ -181,7 +181,7 @@ _i386_initvtop(kvm_t *kd)
kd->vmst->pae = 1;
} else {
nl[0].n_name = "IdlePTD";
- nl[1].n_name = 0;
+ nl[1].n_name = NULL;
if (kvm_nlist2(kd, nl) != 0) {
_kvm_err(kd, kd->program, "bad namelist");
diff --git a/lib/libkvm/kvm_pcpu.c b/lib/libkvm/kvm_pcpu.c
index a83d927bcfd9..c61ec6250348 100644
--- a/lib/libkvm/kvm_pcpu.c
+++ b/lib/libkvm/kvm_pcpu.c
@@ -52,11 +52,11 @@
#endif
static struct nlist kvm_pcpu_nl[] = {
- { .n_name = "_cpuid_to_pcpu" },
- { .n_name = "_mp_maxcpus" },
- { .n_name = "_mp_ncpus" },
+ { .n_name = "cpuid_to_pcpu" },
+ { .n_name = "mp_maxcpus" },
+ { .n_name = "mp_ncpus" },
#ifdef __OFFSET_BY_PCPU
- { .n_name = "___pcpu" },
+ { .n_name = "__pcpu" },
#endif
{ .n_name = NULL },
};
@@ -239,13 +239,13 @@ _kvm_dpcpu_init(kvm_t *kd)
{
struct kvm_nlist nl[] = {
#define NLIST_START_SET_PCPU 0
- { .n_name = "___start_" DPCPU_SETNAME },
+ { .n_name = "__start_" DPCPU_SETNAME },
#define NLIST_STOP_SET_PCPU 1
- { .n_name = "___stop_" DPCPU_SETNAME },
+ { .n_name = "__stop_" DPCPU_SETNAME },
#define NLIST_DPCPU_OFF 2
- { .n_name = "_dpcpu_off" },
+ { .n_name = "dpcpu_off" },
#define NLIST_MP_MAXCPUS 3
- { .n_name = "_mp_maxcpus" },
+ { .n_name = "mp_maxcpus" },
{ .n_name = NULL },
};
uintptr_t *dpcpu_off_buf;
diff --git a/lib/libkvm/kvm_proc.c b/lib/libkvm/kvm_proc.c
index a952888c9ef0..56b2c2c93613 100644
--- a/lib/libkvm/kvm_proc.c
+++ b/lib/libkvm/kvm_proc.c
@@ -609,15 +609,15 @@ liveout:
struct nlist nl[6], *p;
struct nlist nlz[2];
- nl[0].n_name = "_nprocs";
- nl[1].n_name = "_allproc";
- nl[2].n_name = "_ticks";
- nl[3].n_name = "_hz";
- nl[4].n_name = "_cpu_tick_frequency";
- nl[5].n_name = 0;
-
- nlz[0].n_name = "_zombproc";
- nlz[1].n_name = 0;
+ nl[0].n_name = "nprocs";
+ nl[1].n_name = "allproc";
+ nl[2].n_name = "ticks";
+ nl[3].n_name = "hz";
+ nl[4].n_name = "cpu_tick_frequency";
+ nl[5].n_name = NULL;
+
+ nlz[0].n_name = "zombproc";
+ nlz[1].n_name = NULL;
if (!kd->arch->ka_native(kd)) {
_kvm_err(kd, kd->program,
diff --git a/lib/libkvm/kvm_vnet.c b/lib/libkvm/kvm_vnet.c
index a60663d483e1..c4323eb80537 100644
--- a/lib/libkvm/kvm_vnet.c
+++ b/lib/libkvm/kvm_vnet.c
@@ -67,9 +67,9 @@ _kvm_vnet_selectpid(kvm_t *kd, pid_t pid)
* here to __{start,stop}_set_vnet.
*/
#define NLIST_START_VNET 0
- { .n_name = "___start_" VNET_SETNAME },
+ { .n_name = "__start_" VNET_SETNAME },
#define NLIST_STOP_VNET 1
- { .n_name = "___stop_" VNET_SETNAME },
+ { .n_name = "__stop_" VNET_SETNAME },
#define NLIST_VNET_HEAD 2
{ .n_name = "vnet_head" },
#define NLIST_ALLPROC 3
diff --git a/lib/libmemstat/memstat_malloc.c b/lib/libmemstat/memstat_malloc.c
index 81d51b81c5bd..091fe159436f 100644
--- a/lib/libmemstat/memstat_malloc.c
+++ b/lib/libmemstat/memstat_malloc.c
@@ -49,16 +49,16 @@ static int memstat_malloc_zone_init_kvm(kvm_t *kvm);
static struct nlist namelist[] = {
#define X_KMEMSTATISTICS 0
- { .n_name = "_kmemstatistics" },
+ { .n_name = "kmemstatistics" },
#define X_KMEMZONES 1
- { .n_name = "_kmemzones" },
+ { .n_name = "kmemzones" },
#define X_NUMZONES 2
- { .n_name = "_numzones" },
+ { .n_name = "numzones" },
#define X_VM_MALLOC_ZONE_COUNT 3
- { .n_name = "_vm_malloc_zone_count" },
+ { .n_name = "vm_malloc_zone_count" },
#define X_MP_MAXCPUS 4
- { .n_name = "_mp_maxcpus" },
- { .n_name = "" },
+ { .n_name = "mp_maxcpus" },
+ { .n_name = NULL },
};
/*
diff --git a/lib/libmemstat/memstat_uma.c b/lib/libmemstat/memstat_uma.c
index a125e7b7c4be..8c858c39ef09 100644
--- a/lib/libmemstat/memstat_uma.c
+++ b/lib/libmemstat/memstat_uma.c
@@ -51,14 +51,14 @@
static struct nlist namelist[] = {
#define X_UMA_KEGS 0
- { .n_name = "_uma_kegs" },
+ { .n_name = "uma_kegs" },
#define X_MP_MAXID 1
- { .n_name = "_mp_maxid" },
+ { .n_name = "mp_maxid" },
#define X_ALL_CPUS 2
- { .n_name = "_all_cpus" },
+ { .n_name = "all_cpus" },
#define X_VM_NDOMAINS 3
- { .n_name = "_vm_ndomains" },
- { .n_name = "" },
+ { .n_name = "vm_ndomains" },
+ { .n_name = NULL },
};
/*
diff --git a/sbin/ddb/ddb_capture.c b/sbin/ddb/ddb_capture.c
index ab8b2c1ed0bb..710737504dce 100644
--- a/sbin/ddb/ddb_capture.c
+++ b/sbin/ddb/ddb_capture.c
@@ -54,16 +54,16 @@
static struct nlist namelist[] = {
#define X_DB_CAPTURE_BUF 0
- { .n_name = "_db_capture_buf" },
+ { .n_name = "db_capture_buf" },
#define X_DB_CAPTURE_BUFSIZE 1
- { .n_name = "_db_capture_bufsize" },
+ { .n_name = "db_capture_bufsize" },
#define X_DB_CAPTURE_MAXBUFSIZE 2
- { .n_name = "_db_capture_maxbufsize" },
+ { .n_name = "db_capture_maxbufsize" },
#define X_DB_CAPTURE_BUFOFF 3
- { .n_name = "_db_capture_bufoff" },
+ { .n_name = "db_capture_bufoff" },
#define X_DB_CAPTURE_INPROGRESS 4
- { .n_name = "_db_capture_inprogress" },
- { .n_name = "" },
+ { .n_name = "db_capture_inprogress" },
+ { .n_name = NULL },
};
static int
diff --git a/usr.bin/ktrdump/ktrdump.c b/usr.bin/ktrdump/ktrdump.c
index 417c565022da..294b8699260b 100644
--- a/usr.bin/ktrdump/ktrdump.c
+++ b/usr.bin/ktrdump/ktrdump.c
@@ -53,10 +53,10 @@
static void usage(void) __dead2;
static struct nlist nl[] = {
- { .n_name = "_ktr_version" },
- { .n_name = "_ktr_entries" },
- { .n_name = "_ktr_idx" },
- { .n_name = "_ktr_buf" },
+ { .n_name = "ktr_version" },
+ { .n_name = "ktr_entries" },
+ { .n_name = "ktr_idx" },
+ { .n_name = "ktr_buf" },
{ .n_name = NULL }
};
diff --git a/usr.bin/netstat/Makefile b/usr.bin/netstat/Makefile
index 121911b8a18b..7ff6ca9ff564 100644
--- a/usr.bin/netstat/Makefile
+++ b/usr.bin/netstat/Makefile
@@ -22,7 +22,7 @@ nl_defs.h: nlist_symbols
print "extern struct nlist nl[];"; \
i = 0; \
} \
- !/^\#/ { printf("\#define\tN%s\t%s\n", toupper($$2), i++); }' \
+ !/^\#/ { 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}
diff --git a/usr.bin/netstat/nlist_symbols b/usr.bin/netstat/nlist_symbols
index 30cdd69bc54b..ef07f6bda7a7 100644
--- a/usr.bin/netstat/nlist_symbols
+++ b/usr.bin/netstat/nlist_symbols
@@ -1,50 +1,50 @@
#
# module_name symbol_name
-all _ahstat
-all _arpstat
-all _carpstats
-all _espstat
-all _icmp6stat
-all _icmpstat
-all _igmpstat
-all _ip6stat
-all _ipcompstat
-all _ipsec4stat
-all _ipsec6stat
-all _ipstat
-all _mf6ctable
-all _mfchashtbl
-all _mfctablesize
-all _mif6table
-all _mrt6stat
-all _mrtstat
-all _netisr_bindthreads
-all _netisr_defaultqlimit
-all _netisr_dispatch_policy
-all _netisr_maxprot
-all _netisr_maxqlimit
-all _netisr_maxthreads
-all _netisr_proto
-all _ngsocklist
-all _nws
-all _nws_array
-all _nws_count
-all _pfkeystat
-all _pfsyncstats
-all _pflowstats
-all _pim6stat
-all _pimstat
-all _rip6stat
-all _rtree
-all _rtstat
-all _sctpstat
-all _sfstat
-all _tcpstat
-all _tcps_states
-all _udpstat
-all _unp_count
-all _unp_dhead
-all _unp_gencnt
-all _unp_shead
-all _unp_sphead
-all _viftable
+all ahstat
+all arpstat
+all carpstats
+all espstat
+all icmp6stat
+all icmpstat
+all igmpstat
+all ip6stat
+all ipcompstat
+all ipsec4stat
+all ipsec6stat
+all ipstat
+all mf6ctable
+all mfchashtbl
+all mfctablesize
+all mif6table
+all mrt6stat
+all mrtstat
+all netisr_bindthreads
+all netisr_defaultqlimit
+all netisr_dispatch_policy
+all netisr_maxprot
+all netisr_maxqlimit
+all netisr_maxthreads
+all netisr_proto
+all ngsocklist
+all nws
+all nws_array
+all nws_count
+all pfkeystat
+all pfsyncstats
+all pflowstats
+all pim6stat
+all pimstat
+all rip6stat
+all rtree
+all rtstat
+all sctpstat
+all sfstat
+all tcpstat
+all tcps_states
+all udpstat
+all unp_count
+all unp_dhead
+all unp_gencnt
+all unp_shead
+all unp_sphead
+all viftable
diff --git a/usr.bin/vmstat/vmstat.c b/usr.bin/vmstat/vmstat.c
index 9b4d3a25ee07..d8d33cb3a3a5 100644
--- a/usr.bin/vmstat/vmstat.c
+++ b/usr.bin/vmstat/vmstat.c
@@ -73,15 +73,15 @@ enum x_stats { X_SUM, X_HZ, X_STATHZ, X_NCHSTATS, X_INTRNAMES, X_SINTRNAMES,
X_INTRCNT, X_SINTRCNT, X_NINTRCNT };
static struct nlist namelist[] = {
- [X_SUM] = { .n_name = "_vm_cnt", },
- [X_HZ] = { .n_name = "_hz", },
- [X_STATHZ] = { .n_name = "_stathz", },
- [X_NCHSTATS] = { .n_name = "_nchstats", },
- [X_INTRNAMES] = { .n_name = "_intrnames", },
- [X_SINTRNAMES] = { .n_name = "_sintrnames", },
- [X_INTRCNT] = { .n_name = "_intrcnt", },
- [X_SINTRCNT] = { .n_name = "_sintrcnt", },
- [X_NINTRCNT] = { .n_name = "_nintrcnt", },
+ [X_SUM] = { .n_name = "vm_cnt", },
+ [X_HZ] = { .n_name = "hz", },
+ [X_STATHZ] = { .n_name = "stathz", },
+ [X_NCHSTATS] = { .n_name = "nchstats", },
+ [X_INTRNAMES] = { .n_name = "intrnames", },
+ [X_SINTRNAMES] = { .n_name = "sintrnames", },
+ [X_INTRCNT] = { .n_name = "intrcnt", },
+ [X_SINTRCNT] = { .n_name = "sintrcnt", },
+ [X_NINTRCNT] = { .n_name = "nintrcnt", },
{ .n_name = NULL, },
};
@@ -305,8 +305,8 @@ retry_nlist:
* found try looking up older 'cnt' symbol.
* */
if (namelist[X_SUM].n_type == 0 &&
- strcmp(namelist[X_SUM].n_name, "_vm_cnt") == 0) {
- namelist[X_SUM].n_name = "_cnt";
+ strcmp(namelist[X_SUM].n_name, "vm_cnt") == 0) {
+ namelist[X_SUM].n_name = "cnt";
goto retry_nlist;
}
diff --git a/usr.sbin/iostat/iostat.c b/usr.sbin/iostat/iostat.c
index ec18f4fd35b3..1b6eec1be5f9 100644
--- a/usr.sbin/iostat/iostat.c
+++ b/usr.sbin/iostat/iostat.c
@@ -119,13 +119,13 @@
static struct nlist namelist[] = {
#define X_TTY_NIN 0
- { .n_name = "_tty_nin",
+ { .n_name = "tty_nin",
.n_type = 0, .n_other = 0, .n_desc = 0, .n_value = 0 },
#define X_TTY_NOUT 1
- { .n_name = "_tty_nout",
+ { .n_name = "tty_nout",
.n_type = 0, .n_other = 0, .n_desc = 0, .n_value = 0 },
#define X_BOOTTIME 2
- { .n_name = "_boottime",
+ { .n_name = "boottime",
.n_type = 0, .n_other = 0, .n_desc = 0, .n_value = 0 },
#define X_END 2
{ .n_name = NULL,
diff --git a/usr.sbin/pstat/pstat.c b/usr.sbin/pstat/pstat.c
index fd11c7666955..5a971499c6e6 100644
--- a/usr.sbin/pstat/pstat.c
+++ b/usr.sbin/pstat/pstat.c
@@ -72,10 +72,10 @@ static struct {
int order;
const char *name;
} namelist[] = {
- { NL_CONSTTY, "_constty" },
- { NL_MAXFILES, "_maxfiles" },
- { NL_NFILES, "_openfiles" },
- { NL_TTY_LIST, "_tty_list" },
+ { NL_CONSTTY, "constty" },
+ { NL_MAXFILES, "maxfiles" },
+ { NL_NFILES, "openfiles" },
+ { NL_TTY_LIST, "tty_list" },
{ NL_MARKER, "" },
};
#define NNAMES (sizeof(namelist) / sizeof(*namelist))