Centos-kernel-stream-9/scripts/gdb/linux/constants.py.in

123 lines
3.2 KiB
Python
Raw Normal View History

/*
* gdb helper commands and functions for Linux kernel debugging
*
* Kernel constants derived from include files.
*
* Copyright (c) 2016 Linaro Ltd
*
* Authors:
* Kieran Bingham <kieran.bingham@linaro.org>
*
* This work is licensed under the terms of the GNU GPL version 2.
*
*/
#include <linux/clk-provider.h>
#include <linux/fs.h>
#include <linux/hrtimer.h>
#include <linux/mount.h>
#include <linux/of_fdt.h>
#include <linux/threads.h>
/* We need to stringify expanded macros so that they can be parsed */
#define STRING(x) #x
#define XSTRING(x) STRING(x)
#define LX_VALUE(x) LX_##x = x
#define LX_GDBPARSED(x) LX_##x = gdb.parse_and_eval(XSTRING(x))
/*
* IS_ENABLED generates (a || b) which is not compatible with python
* We can only switch on configuration items we know are available
* Therefore - IS_BUILTIN() is more appropriate
*/
#define LX_CONFIG(x) LX_##x = IS_BUILTIN(x)
/* The build system will take care of deleting everything above this marker */
<!-- end-c-headers -->
import gdb
/* linux/clk-provider.h */
if IS_BUILTIN(CONFIG_COMMON_CLK):
LX_GDBPARSED(CLK_GET_RATE_NOCACHE)
/* linux/fs.h */
scripts/gdb: fix SB_* constants parsing JIRA: https://issues.redhat.com/browse/RHEL-29262 commit 6a59cb5158bff13b80f116305155fbe4967a5010 Author: Florian Fainelli <florian.fainelli@broadcom.com> Date: Wed Jun 7 15:13:35 2023 -0700 scripts/gdb: fix SB_* constants parsing --0000000000009a0c9905fd9173ad Content-Transfer-Encoding: 8bit After f15afbd34d8f ("fs: fix undefined behavior in bit shift for SB_NOUSER") the constants were changed from plain integers which LX_VALUE() can parse to constants using the BIT() macro which causes the following: Reading symbols from build/linux-custom/vmlinux...done. Traceback (most recent call last): File "/home/fainelli/work/buildroot/output/arm64/build/linux-custom/vmlinux-gdb.py", line 25, in <module> import linux.constants File "/home/fainelli/work/buildroot/output/arm64/build/linux-custom/scripts/gdb/linux/constants.py", line 5 LX_SB_RDONLY = ((((1UL))) << (0)) Use LX_GDBPARSED() which does not suffer from that issue. f15afbd34d8f ("fs: fix undefined behavior in bit shift for SB_NOUSER") Link: https://lkml.kernel.org/r/20230607221337.2781730-1-florian.fainelli@broadcom.com Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com> Acked-by: Christian Brauner <brauner@kernel.org> Cc: Hao Ge <gehao@kylinos.cn> Cc: Jan Kiszka <jan.kiszka@siemens.com> Cc: Kieran Bingham <kbingham@kernel.org> Cc: Luis Chamberlain <mcgrof@kernel.org> Cc: Pankaj Raghav <p.raghav@samsung.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Ming Lei <ming.lei@redhat.com>
2023-06-07 22:13:35 +00:00
LX_GDBPARSED(SB_RDONLY)
LX_GDBPARSED(SB_SYNCHRONOUS)
LX_GDBPARSED(SB_MANDLOCK)
LX_GDBPARSED(SB_DIRSYNC)
LX_GDBPARSED(SB_NOATIME)
LX_GDBPARSED(SB_NODIRATIME)
/* linux/htimer.h */
LX_GDBPARSED(hrtimer_resolution)
/* linux/module.h */
if IS_BUILTIN(CONFIG_MODULES):
LX_GDBPARSED(MOD_TEXT)
LX_GDBPARSED(MOD_DATA)
LX_GDBPARSED(MOD_RODATA)
LX_GDBPARSED(MOD_RO_AFTER_INIT)
/* linux/mount.h */
LX_VALUE(MNT_NOSUID)
LX_VALUE(MNT_NODEV)
LX_VALUE(MNT_NOEXEC)
LX_VALUE(MNT_NOATIME)
LX_VALUE(MNT_NODIRATIME)
LX_VALUE(MNT_RELATIME)
/* linux/threads.h */
LX_VALUE(NR_CPUS)
/* linux/of_fdt.h> */
LX_VALUE(OF_DT_HEADER)
/* Kernel Configs */
LX_CONFIG(CONFIG_GENERIC_CLOCKEVENTS)
LX_CONFIG(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST)
LX_CONFIG(CONFIG_HIGH_RES_TIMERS)
LX_CONFIG(CONFIG_NR_CPUS)
LX_CONFIG(CONFIG_OF)
LX_CONFIG(CONFIG_TICK_ONESHOT)
/*
* CONFIG_KVM can be "m" but it affects common code too. Use CONFIG_KVM_COMMON
* as a proxy for IS_ENABLED(CONFIG_KVM).
*/
LX_CONFIG_KVM = IS_BUILTIN(CONFIG_KVM_COMMON)
LX_CONFIG(CONFIG_GENERIC_IRQ_SHOW_LEVEL)
LX_CONFIG(CONFIG_X86_LOCAL_APIC)
LX_CONFIG(CONFIG_SMP)
LX_CONFIG(CONFIG_X86_THERMAL_VECTOR)
LX_CONFIG(CONFIG_X86_MCE_THRESHOLD)
LX_CONFIG(CONFIG_X86_MCE_AMD)
LX_CONFIG(CONFIG_X86_MCE)
LX_CONFIG(CONFIG_X86_IO_APIC)
LX_CONFIG(CONFIG_HAVE_KVM)
LX_CONFIG(CONFIG_NUMA)
LX_CONFIG(CONFIG_ARM64)
LX_CONFIG(CONFIG_ARM64_4K_PAGES)
LX_CONFIG(CONFIG_ARM64_16K_PAGES)
LX_CONFIG(CONFIG_ARM64_64K_PAGES)
if IS_BUILTIN(CONFIG_ARM64):
LX_VALUE(CONFIG_ARM64_PA_BITS)
LX_VALUE(CONFIG_ARM64_VA_BITS)
LX_VALUE(CONFIG_ARM64_PAGE_SHIFT)
LX_VALUE(CONFIG_ARCH_FORCE_MAX_ORDER)
LX_CONFIG(CONFIG_SPARSEMEM)
LX_CONFIG(CONFIG_SPARSEMEM_EXTREME)
LX_CONFIG(CONFIG_SPARSEMEM_VMEMMAP)
LX_CONFIG(CONFIG_KASAN)
LX_CONFIG(CONFIG_KASAN_GENERIC)
LX_CONFIG(CONFIG_KASAN_SW_TAGS)
LX_CONFIG(CONFIG_KASAN_HW_TAGS)
if IS_BUILTIN(CONFIG_KASAN_GENERIC) or IS_BUILTIN(CONFIG_KASAN_SW_TAGS):
LX_VALUE(CONFIG_KASAN_SHADOW_OFFSET)
LX_CONFIG(CONFIG_VMAP_STACK)
if IS_BUILTIN(CONFIG_NUMA):
LX_VALUE(CONFIG_NODES_SHIFT)
LX_CONFIG(CONFIG_DEBUG_VIRTUAL)