Skip site navigation (1)Skip section navigation (2)
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=>