kvm_nlist(3)

kvm_nlist3

Retrieve symbol table names from a kernel image

Usage

#include <kvm.h>

#include <nlist.h>

int

kvm_nlist(kvm_t *kd, struct nlist *nl);

int

kvm_nlist2(kvm_t *kd, struct kvm_nlist *nl);

Library

Kernel Data Access Library (libkvm, -lkvm)

Overview

The kvm_nlist() function retrieves the symbol table entries indicated by the name list argument nl. This argument points to an array of nlist structures, terminated by an entry whose n_name field is NULL (see nlist(3)). Each symbol is looked up using the n_name field, and if found, the corresponding n_type and n_value fields are filled in. These fields are set to 0 if the symbol is not found.

The kldsym(2) system call is used to locate symbols in live kernels. This is a less than perfect emulation of the nlist values but has the advantage of being aware of kernel modules and is reasonably fast.

The kvm_nlist2() function retrieves the symbol table entries indicated by the name list argument nl. This argument points to an array of struct kvm_nlist structures, terminated by an entry whose n_name field is NULL These structures are similar to the nlist structures used by kvm_nlist() except that the n_value field uses a different type (kvaddr_t) to avoid truncation when examining non-native kernel images.

Return values

The kvm_nlist() and kvm_nlist2() functions return the number of invalid entries found. If the kernel symbol table was unreadable, -1 is returned.

Releases

87 releases since FreeBSD 2.0.5-RELEASE; the text changed 41 times.

  1. 2.0.5–3.4
  2. 3.5–3.5.1
  3. 4.0
  4. 4.1–4.4
  5. 4.5–4.11
  6. 5.0
  7. 5.1–5.2.1
  8. 5.3–6.3
  9. 6.4
  10. 7.0
  11. 7.1
  12. 7.2
  13. 7.3
  14. 7.4
  15. 8.0
  16. 8.1
  17. 8.2
  18. 8.3
  19. 8.4
  20. 9.0
  21. 9.1
  22. 9.2
  23. 9.3
  24. 10.0
  25. 10.1
  26. 10.2
  27. 10.3
  28. 10.4
  29. 11.0
  30. 11.1
  31. 11.2
  32. 11.3
  33. 11.4
  34. 12.0
  35. 12.1
  36. 12.2
  37. 12.3
  38. 12.4
  39. 13.0–13.2
  40. 13.3–13.5
  41. 14.0–14.5
  42. 15.0–16.0

History

The kvm_nlist2() function first appeared in FreeBSD 11.0.

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.