git: 6c8a50c9196d - stable/14 - various: Fix nlist invocations
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 03 Sep 2026 11:57:11 UTC
The branch stable/14 has been updated by des:
URL: https://cgit.FreeBSD.org/src/commit/?id=6c8a50c9196d0d81550fe4ce755f8ff900137e10
commit 6c8a50c9196d0d81550fe4ce755f8ff900137e10
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-03 11:56:44 +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
(cherry picked from commit cdfc673811aca2c6690f37bde9ef4896ea2e1d6b)
---
lib/libkvm/kvm_amd64.c | 4 +-
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 | 94 ++++++++++++++++++++---------------------
usr.bin/vmstat/vmstat.c | 22 +++++-----
usr.sbin/iostat/iostat.c | 6 +--
usr.sbin/pstat/pstat.c | 8 ++--
17 files changed, 117 insertions(+), 117 deletions(-)
diff --git a/lib/libkvm/kvm_amd64.c b/lib/libkvm/kvm_amd64.c
index cc41d3c8c5c8..71e843b51624 100644
--- a/lib/libkvm/kvm_amd64.c
+++ b/lib/libkvm/kvm_amd64.c
@@ -128,7 +128,7 @@ _amd64_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) {
_kvm_err(kd, kd->program, "bad namelist - no kernbase");
@@ -137,7 +137,7 @@ _amd64_initvtop(kvm_t *kd)
kernbase = nl[0].n_value;
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 5e92b565486c..8961f7c954ab 100644
--- a/lib/libkvm/kvm_cptime.c
+++ b/lib/libkvm/kvm_cptime.c
@@ -44,7 +44,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 b3b810752979..ef622c7f5b66 100644
--- a/lib/libkvm/kvm_getloadavg.c
+++ b/lib/libkvm/kvm_getloadavg.c
@@ -44,11 +44,11 @@ __SCCSID("@(#)kvm_getloadavg.c 8.1 (Berkeley) 6/4/93");
#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 3c5019977d50..5091c7af5197 100644
--- a/lib/libkvm/kvm_getswapinfo.c
+++ b/lib/libkvm/kvm_getswapinfo.c
@@ -52,8 +52,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 f63d6888b686..3f02043614ea 100644
--- a/lib/libkvm/kvm_i386.c
+++ b/lib/libkvm/kvm_i386.c
@@ -134,7 +134,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__
@@ -147,7 +147,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;
@@ -183,7 +183,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 613fadffe435..8db55ea5ad7b 100644
--- a/lib/libkvm/kvm_pcpu.c
+++ b/lib/libkvm/kvm_pcpu.c
@@ -53,11 +53,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 },
};
@@ -240,13 +240,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 6ad5d4a7cea6..3c1cfeca971e 100644
--- a/lib/libkvm/kvm_proc.c
+++ b/lib/libkvm/kvm_proc.c
@@ -602,15 +602,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 03e80d0458f3..6690a84a064e 100644
--- a/lib/libkvm/kvm_vnet.c
+++ b/lib/libkvm/kvm_vnet.c
@@ -68,9 +68,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 9bc281e1c2b3..156f6b753f21 100644
--- a/lib/libmemstat/memstat_malloc.c
+++ b/lib/libmemstat/memstat_malloc.c
@@ -50,16 +50,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 fcff16e292ea..12e7497d2484 100644
--- a/sbin/ddb/ddb_capture.c
+++ b/sbin/ddb/ddb_capture.c
@@ -55,16 +55,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 f1c49cbbd418..596c3cd569d6 100644
--- a/usr.bin/ktrdump/ktrdump.c
+++ b/usr.bin/ktrdump/ktrdump.c
@@ -54,10 +54,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 98bc7b866d9d..ba008be98abb 100644
--- a/usr.bin/netstat/Makefile
+++ b/usr.bin/netstat/Makefile
@@ -24,7 +24,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 7d7fcdc4c249..f81941e3bdf7 100644
--- a/usr.bin/netstat/nlist_symbols
+++ b/usr.bin/netstat/nlist_symbols
@@ -1,49 +1,49 @@
#
# 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 _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 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 3ae34c0219c6..59dacbc92d9b 100644
--- a/usr.bin/vmstat/vmstat.c
+++ b/usr.bin/vmstat/vmstat.c
@@ -87,15 +87,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, },
};
@@ -318,8 +318,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 4b31947f6c46..9f94d9aae9a5 100644
--- a/usr.sbin/pstat/pstat.c
+++ b/usr.sbin/pstat/pstat.c
@@ -84,10 +84,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))