2 * gdb helper commands
and functions
for Linux kernel debugging
4 * Kernel constants derived
from include files
.
6 * Copyright (c
) 2016 Linaro Ltd
9 * Kieran Bingham
<kieran
.bingham
@linaro.org
>
11 * This work
is licensed under the terms of the GNU GPL version
2.
15 #include <linux/clk-provider.h>
17 #include <linux/hrtimer.h>
18 #include <linux/irq.h>
19 #include <linux/mount.h>
20 #include <linux/of_fdt.h>
21 #include <linux/page_ext.h>
22 #include <linux/radix-tree.h>
23 #include <linux/slab.h>
24 #include <linux/threads.h>
25 #include <linux/vmalloc.h>
27 /* We need to stringify expanded macros so that they can be parsed
*/
30 #define XSTRING(x) STRING(x)
32 #define LX_VALUE(x) LX_##x = x
33 #define LX_GDBPARSED(x) LX_##x = gdb.parse_and_eval(XSTRING(x))
36 * IS_ENABLED
generates (a || b
) which
is not compatible with python
37 * We can only switch on configuration items we know are available
38 * Therefore
- IS_BUILTIN() is more appropriate
40 #define LX_CONFIG(x) LX_##x = IS_BUILTIN(x)
42 /* The build system will take care of deleting everything above this marker
*/
43 <!-- end
-c
-headers
-->
47 LX_CONFIG(CONFIG_DEBUG_INFO_REDUCED
)
49 /* linux
/clk
-provider
.h
*/
50 if IS_BUILTIN(CONFIG_COMMON_CLK
):
51 LX_GDBPARSED(CLK_GET_RATE_NOCACHE
)
54 LX_GDBPARSED(SB_RDONLY
)
55 LX_GDBPARSED(SB_SYNCHRONOUS
)
56 LX_GDBPARSED(SB_MANDLOCK
)
57 LX_GDBPARSED(SB_DIRSYNC
)
58 LX_GDBPARSED(SB_NOATIME
)
59 LX_GDBPARSED(SB_NODIRATIME
)
62 LX_GDBPARSED(hrtimer_resolution
)
65 LX_GDBPARSED(IRQD_LEVEL
)
66 LX_GDBPARSED(IRQ_HIDDEN
)
69 if IS_BUILTIN(CONFIG_MODULES
):
70 LX_GDBPARSED(MOD_TEXT
)
71 LX_GDBPARSED(MOD_DATA
)
72 LX_GDBPARSED(MOD_RODATA
)
73 LX_GDBPARSED(MOD_RO_AFTER_INIT
)
80 LX_VALUE(MNT_NODIRATIME
)
81 LX_VALUE(MNT_RELATIME
)
87 LX_VALUE(OF_DT_HEADER
)
89 /* linux
/radix
-tree
.h
*/
90 LX_GDBPARSED(RADIX_TREE_ENTRY_MASK
)
91 LX_GDBPARSED(RADIX_TREE_INTERNAL_NODE
)
92 LX_GDBPARSED(RADIX_TREE_MAP_SIZE
)
93 LX_GDBPARSED(RADIX_TREE_MAP_SHIFT
)
94 LX_GDBPARSED(RADIX_TREE_MAP_MASK
)
101 LX_VALUE(VM_DMA_COHERENT
)
103 /* linux
/page_ext
.h
*/
104 if IS_BUILTIN(CONFIG_PAGE_OWNER
):
105 LX_GDBPARSED(PAGE_EXT_OWNER
)
106 LX_GDBPARSED(PAGE_EXT_OWNER_ALLOCATED
)
109 LX_GDBPARSED(SLAB_RED_ZONE
)
110 LX_GDBPARSED(SLAB_POISON
)
111 LX_GDBPARSED(SLAB_KMALLOC
)
112 LX_GDBPARSED(SLAB_HWCACHE_ALIGN
)
113 LX_GDBPARSED(SLAB_CACHE_DMA
)
114 LX_GDBPARSED(SLAB_CACHE_DMA32
)
115 LX_GDBPARSED(SLAB_STORE_USER
)
116 LX_GDBPARSED(SLAB_PANIC
)
119 LX_CONFIG(CONFIG_GENERIC_CLOCKEVENTS
)
120 LX_CONFIG(CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
)
121 LX_CONFIG(CONFIG_HIGH_RES_TIMERS
)
122 LX_CONFIG(CONFIG_NR_CPUS
)
124 LX_CONFIG(CONFIG_TICK_ONESHOT
)
125 LX_CONFIG(CONFIG_GENERIC_IRQ_SHOW_LEVEL
)
126 LX_CONFIG(CONFIG_X86_LOCAL_APIC
)
127 LX_CONFIG(CONFIG_SMP
)
128 LX_CONFIG(CONFIG_X86_THERMAL_VECTOR
)
129 LX_CONFIG(CONFIG_X86_MCE_THRESHOLD
)
130 LX_CONFIG(CONFIG_X86_MCE_AMD
)
131 LX_CONFIG(CONFIG_X86_MCE
)
132 LX_CONFIG(CONFIG_X86_IO_APIC
)
134 * CONFIG_KVM can be
"m" but it affects common code too
. Use CONFIG_KVM_COMMON
135 * as a proxy
for IS_ENABLED(CONFIG_KVM
).
137 LX_CONFIG_KVM
= IS_BUILTIN(CONFIG_KVM_COMMON
)
138 LX_CONFIG(CONFIG_NUMA
)
139 LX_CONFIG(CONFIG_ARM64
)
140 LX_CONFIG(CONFIG_ARM64_4K_PAGES
)
141 LX_CONFIG(CONFIG_ARM64_16K_PAGES
)
142 LX_CONFIG(CONFIG_ARM64_64K_PAGES
)
143 if IS_BUILTIN(CONFIG_ARM64
):
144 LX_VALUE(CONFIG_ARM64_PA_BITS
)
145 LX_VALUE(CONFIG_ARM64_VA_BITS
)
146 LX_VALUE(CONFIG_PAGE_SHIFT
)
147 LX_VALUE(CONFIG_ARCH_FORCE_MAX_ORDER
)
148 LX_CONFIG(CONFIG_SPARSEMEM
)
149 LX_CONFIG(CONFIG_SPARSEMEM_EXTREME
)
150 LX_CONFIG(CONFIG_SPARSEMEM_VMEMMAP
)
151 LX_CONFIG(CONFIG_KASAN
)
152 LX_CONFIG(CONFIG_KASAN_GENERIC
)
153 LX_CONFIG(CONFIG_KASAN_SW_TAGS
)
154 LX_CONFIG(CONFIG_KASAN_HW_TAGS
)
155 if IS_BUILTIN(CONFIG_KASAN_GENERIC
) or IS_BUILTIN(CONFIG_KASAN_SW_TAGS
):
156 LX_VALUE(CONFIG_KASAN_SHADOW_OFFSET
)
157 LX_CONFIG(CONFIG_VMAP_STACK
)
158 if IS_BUILTIN(CONFIG_NUMA
):
159 LX_VALUE(CONFIG_NODES_SHIFT
)
160 LX_CONFIG(CONFIG_DEBUG_VIRTUAL
)
161 LX_CONFIG(CONFIG_STACKDEPOT
)
162 LX_CONFIG(CONFIG_PAGE_OWNER
)
163 LX_CONFIG(CONFIG_SLUB_DEBUG
)
164 LX_CONFIG(CONFIG_SLAB_FREELIST_HARDENED
)
165 LX_CONFIG(CONFIG_MMU
)