Date: Thu, 20 Nov 2025 02:04:21 +0000 From: Minsoo Choo <minsoochoo0122@proton.me> To: Ian FREISLICH <ianfreislich@gmail.com> Cc: FreeBSD Current <current@freebsd.org> Subject: Re: nvme.c:2012:2: error: call to undeclared function 'memmove' Message-ID: <XwJ6SSJdbLM81ArdNZm0HkGpz5gKrS79InXxD5qEOlRhx5yB_GLx5k7ZNmjf4491OE80KlcNXrypANmkMIeD7RNR4Hk5Uhb3L3VaLn_AtCQ=@proton.me> In-Reply-To: <531224d3-acaf-4f97-b39c-02b09dcd297c@gmail.com> References: <814ce2bc-2a95-444b-9ab7-7e680a024c68@gmail.com> <M3bbYahqeDlLQCLnCmns8l9CbUCowcNRDFhkazE3oMEkZIQk9PZSJGHipQeEwSERs285Tqez72g5lK0iVmITrxQHnLJiBouXyuKWgK3lUtE=@proton.me> <60449f55-58e7-4f8b-aa0e-3f288dab5146@gmail.com> <vSrD5BIXbG60VzaarV7hIxm2KqHRowF2D-OaxFIbpcTc83TOvjibwjvl9o7mEU46ZofIAsmmZqoMyDQy5vzZNr9Ng8mv_hZMiZC33wrSyhE=@proton.me> <531224d3-acaf-4f97-b39c-02b09dcd297c@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XwJ6SSJdbLM81ArdNZm0HkGpz5gKrS79InXxD5qEOlRhx5yB_GLx5k7ZNmjf4491OE80KlcNXrypANmkMIeD7RNR4Hk5Uhb3L3VaLn_AtCQ=>
