The branch main has been updated by des:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=cdfc673811aca2c6690f37bde9ef4896ea2e1d6b

commit cdfc673811aca2c6690f37bde9ef4896ea2e1d6b
Author:     Dag-Erling Smørgrav <[email protected]>
AuthorDate: 2026-09-01 12:49:24 +0000
Commit:     Dag-Erling Smørgrav <[email protected]>
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))

Reply via email to