1*672981f4SAlan Maguire // SPDX-License-Identifier: GPL-2.0 2*672981f4SAlan Maguire /* Copyright (c) 2026, Oracle and/or its affiliates. */ 3*672981f4SAlan Maguire /* 4*672981f4SAlan Maguire * Provide kernel BTF inline function information for use by BPF tools. 5*672981f4SAlan Maguire */ 6*672981f4SAlan Maguire #include <linux/btf.h> 7*672981f4SAlan Maguire #include <linux/init.h> 8*672981f4SAlan Maguire #include <linux/kernel.h> 9*672981f4SAlan Maguire #include <linux/module.h> 10*672981f4SAlan Maguire 11*672981f4SAlan Maguire #if IS_BUILTIN(CONFIG_DEBUG_INFO_BTF_INLINE) 12*672981f4SAlan Maguire extern char __start_BTF_inline[]; 13*672981f4SAlan Maguire extern char __stop_BTF_inline[]; 14*672981f4SAlan Maguire #endif 15*672981f4SAlan Maguire 16*672981f4SAlan Maguire static int __init btf_vmlinux_inline_init(void) 17*672981f4SAlan Maguire { 18*672981f4SAlan Maguire #if IS_BUILTIN(CONFIG_DEBUG_INFO_BTF_INLINE) 19*672981f4SAlan Maguire size_t data_size = __stop_BTF_inline - __start_BTF_inline; 20*672981f4SAlan Maguire 21*672981f4SAlan Maguire if (data_size) 22*672981f4SAlan Maguire sysfs_btf_add("vmlinux.inline", __start_BTF_inline, data_size, true, NULL); 23*672981f4SAlan Maguire #endif 24*672981f4SAlan Maguire return 0; 25*672981f4SAlan Maguire } 26*672981f4SAlan Maguire subsys_initcall(btf_vmlinux_inline_init); 27*672981f4SAlan Maguire 28*672981f4SAlan Maguire MODULE_DESCRIPTION("BTF inline information for vmlinux"); 29*672981f4SAlan Maguire MODULE_LICENSE("GPL"); 30