Re: nvme.c:2012:2: error: call to undeclared function 'memmove'
- In reply to: Minsoo Choo : "Re: nvme.c:2012:2: error: call to undeclared function 'memmove'"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 20 Nov 2025 02:12:46 UTC
On November 19, 2025 21:04:28 Minsoo Choo <minsoochoo0122@proton.me> wrote: > On Wednesday, November 19th, 2025 at 5:24 PM, Ian FREISLICH > <ianfreislich@gmail.com> wrote: > >> On 11/19/25 15:42, Minsoo Choo wrote: >> >>> On Wednesday, November 19th, 2025 at 2:51 PM, Ian FREISLICH >>> ianfreislich@gmail.com wrote: >>> >>>> On 11/19/25 14:24, Minsoo Choo wrote: >>>> >>>>> On Wednesday, November 19th, 2025 at 2:19 PM, Ian FREISLICH >>>>> ianfreislich@gmail.com wrote: >>>>> >>>>>> My kernel build started failing recently with the following error. I use >>>>>> a custom kernel config but looking at NOTES, it's not clear that I've >>>>>> missed an option that would make it compile. >>>>>> >>>>>> In file included from /usr/src/sys/dev/nvme/nvme_util.c:34: >>>>>> /usr/src/sys/dev/nvme/nvme.h:2012:2: error: call to undeclared function >>>>>> 'memmove'; ISO C99 and later do not support implicit function >>>>>> declarations [-Werror,-Wimplicit-function-declaration] >>>>>> 2012 | memmove(sn, cdata->sn, NVME_SERIAL_NUMBER_LENGTH); >>>>>> >>>>>> | ^ >>>>>> 1 error generated. >>>>>> *** Error code 1 >>>>>> >>>>>> I've also tried compiling after blowing away usr/obj. >>>>>> >>>>>> Ian >>>>> >>>>> memmove is declared in systm.h, but I don't see include statement for >>>>> systm.h in nvme.h. Could you try including <sys/systm.h> in >>>>> sys/dev/nvme/nvme.h and build again? >>>> >>>> It builds with that, but coincidentally GENERIC builds without that change. >>>> >>>> Ian >>> >>> Could you send your kernel config? Maybe sys/systm.h is included under >>> GENERIC but not under some configs. >> >> >> --X-- >> cpu HAMMER >> ident ROUTER >> >> makeoptions DEBUG=-g # Build kernel with gdb(1) debug >> symbols >> >> options SCHED_ULE # ULE scheduler >> options NUMA # Non-Uniform Memory >> Architecture support >> options PREEMPTION # Enable kernel thread preemption >> >> options INET # IPv6 communications protocols >> options INET6 # IPv6 communications protocols >> options IPSEC >> options IPSEC_OFFLOAD # Inline ipsec offload infra >> options ROUTE_MPATH # Multipath routing support >> options FIB_ALGO # Modular fib lookups >> options TCP_OFFLOAD # TCP offload >> options TCP_BLACKBOX # Enhanced TCP event logging >> options TCP_HHOOK # hhook(9) framework for TCP >> options TCP_RFC7413 # TCP Fast Open >> options SCTP_SUPPORT # Allow kldload of SCTP >> options KERN_TLS # TLS transmit & receive offload >> options MAC >> options MAC_NTPD >> options MAC_PORTACL >> >> options FFS # Berkeley Fast Filesystem >> options SOFTUPDATES # Enable FFS soft updates support >> options UFS_ACL # Support for access control lists >> options UFS_DIRHASH # Improve performance on big >> directories >> options UFS_GJOURNAL # Enable gjournal-based UFS >> journaling >> options ZFS >> options ZSTDIO >> options PROCFS # Process filesystem (requires >> PSEUDOFS) >> options PSEUDOFS # Pseudo-filesystem framework >> options TMPFS # Efficient memory filesystem >> options GEOM_LABEL # Provides labelization >> options GEOM_PART_GPT >> options EFIRT # EFI Runtime Services support >> options COMPAT_FREEBSD32 # Compatible with i386 binaries >> options COMPAT_FREEBSD4 # Compatible with FreeBSD4 >> options COMPAT_FREEBSD5 # Compatible with FreeBSD5 >> options COMPAT_FREEBSD6 # Compatible with FreeBSD6 >> options COMPAT_FREEBSD7 # Compatible with FreeBSD7 >> options COMPAT_FREEBSD9 # Compatible with FreeBSD9 >> options COMPAT_FREEBSD10 # Compatible with FreeBSD10 >> options COMPAT_FREEBSD11 # Compatible with FreeBSD11 >> options COMPAT_FREEBSD12 # Compatible with FreeBSD12 >> options COMPAT_FREEBSD13 # Compatible with FreeBSD13 >> options COMPAT_FREEBSD14 # Compatible with FreeBSD14 >> #options COMPAT_FREEBSD15 # Compatible with FreeBSD15 >> options KTRACE # ktrace(1) support >> options STACK # stack(9) support >> options SYSVSHM # SYSV-style shared memory >> options SYSVMSG # SYSV-style message queues >> options SYSVSEM # SYSV-style semaphores >> >> options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time >> extensions >> options PRINTF_BUFR_SIZE=128 # Prevent printf output being >> interspersed. >> options KBD_INSTALL_CDEV # install a CDEV entry in /dev >> options HWPMC_HOOKS # Necessary kernel hooks for >> hwpmc(4) >> options INCLUDE_CONFIG_FILE # Include this file in kernel >> >> # Debugging support. Always need this: >> options KDB >> options KDB_UNATTENDED >> options DDB >> options GDB >> options KDB_TRACE >> options ALT_BREAK_TO_DEBUGGER >> >> # Kernel dump features. >> options EKCD # Support for encrypted kernel dumps >> options GZIO # gzip-compressed kernel and >> user dumps >> options ZSTDIO # zstd-compressed kernel and >> user dumps >> options DEBUGNET # debugnet networking >> options NETDUMP # netdump(4) client support >> options NETGDB # netgdb(4) client support >> >> device pf >> device pflog >> device pfsync >> >> # Make an SMP-capable kernel by default >> options SMP # Symmetric MultiProcessor Kernel >> device cpufreq >> >> # Bus support. >> device acpi >> device acpi_wmi >> device smbios >> device smbus >> device ichsmb >> device iicbus >> device ig4 >> options IOMMU >> device pci >> options PCI_HP # PCI-Express native HotPlug >> options PCI_IOV # PCI SR-IOV support >> >> >> # ATA controllers >> device ahci # AHCI-compatible SATA controllers >> device scbus # SCSI bus (required for ATA/SCSI) >> device ch # SCSI media changers >> device da # Direct Access (disks) >> device sa # Sequential Access (tape etc) >> device cd # CD >> device pass # Passthrough device (direct >> ATA/SCSI access) >> device ses # Enclosure Services (SES and >> SAF-TE) >> >> # NVM Express (NVMe) support >> device nvme # base NVMe driver >> device nvd # expose NVMe namespaces as >> disks, depends on nvme >> >> # atkbdc0 controls both the keyboard and the PS/2 mouse >> device atkbdc # AT keyboard controller >> device atkbd # AT keyboard >> device kbdmux # keyboard multiplexer >> >> # syscons is the legacy console driver, resembling an SCO console >> #device vga # VGA video card driver >> #device splash # Splash screen and screen saver >> support >> #device sc >> #options SC_PIXEL_MODE # add support for the raster >> text mode >> >> # vt is the default video console driver >> device vt >> device vt_vga >> device vt_efifb >> device vt_vbefb >> >> device agp # support several AGP chipsets >> >> options PPS_SYNC >> device uart # Generic UART driver >> >> device superio >> device gpio >> device gpiopps >> >> # PCI/PCI-X/PCIe Ethernet NICs that use iflib infrastructure >> device iflib >> device igc # Intel I225 2.5G Ethernet >> device ix # Intel PRO/10GbE PCIE PF Ethernet >> >> # Pseudo devices. >> device crypto # core crypto support >> device cryptodev >> device aesni # AES-NI OpenCrypto module >> device ossl >> device loop # Network loopback >> device rdrand_rng # Intel Bull Mountain RNG >> device ether # Ethernet support >> device vlan # 802.1Q VLAN support >> device tuntap # Packet tunnel. >> device md # Memory "disks" >> device gif # IPv6 and IPv4 tunneling >> device firmware # firmware assist module >> device xz # lzma decompression >> >> options EVDEV_SUPPORT >> device evdev >> device uinput >> >> # The `bpf' device enables the Berkeley Packet Filter. >> # Be aware of the administrative consequences of enabling this! >> # Note that 'bpf' is required for DHCP. >> device bpf # Berkeley packet filter >> >> # USB support >> options USB_DEBUG # enable debug msgs >> device uhci # UHCI PCI->USB interface >> >> device ohci # OHCI PCI->USB interface >> >> device ehci # EHCI PCI->USB interface (USB 2.0) >> >> device xhci # XHCI PCI->USB interface (USB 3.0) >> >> device usb # USB Bus (required) >> device usbhid # USB HID Transport >> device hkbd # HID Keyboard >> device ukbd # USB Keyboard >> device umass # Disks/Mass storage - Requires >> scbus and da >> >> # Sound support >> device sound # Generic sound driver (required) >> device snd_hda # Intel High Definition Audio >> >> # Netmap provides direct access to TX/RX rings on supported NICs >> device netmap # netmap(4) support >> >> device hid # Generic HID support >> device hidbus # Generic HID Bus >> >> # EFI devices >> device efidev # EFI pseudo-device >> device efirtc # EFI RTC >> --X-- > > Could you `make cleankernel` and run `make buildkernel` again? And if it > fails for the same reason, could you add `#include <sys/systm.h>` and `make > cleankernel` then `make buildkernel` again? I did rm -rf /usr/obj/* and rebuilt before reporting.