Commit | Line | Data |
---|---|---|
f197d75f KB |
1 | /* |
2 | * gdb helper commands and functions for Linux kernel debugging | |
3 | * | |
4 | * Kernel constants derived from include files. | |
5 | * | |
6 | * Copyright (c) 2016 Linaro Ltd | |
7 | * | |
8 | * Authors: | |
9 | * Kieran Bingham <kieran.bingham@linaro.org> | |
10 | * | |
11 | * This work is licensed under the terms of the GNU GPL version 2. | |
12 | * | |
13 | */ | |
14 | ||
e7e6f462 | 15 | #include <linux/clk-provider.h> |
c1a15399 | 16 | #include <linux/fs.h> |
442284a8 | 17 | #include <linux/hrtimer.h> |
b0969d76 | 18 | #include <linux/irq.h> |
c1a15399 | 19 | #include <linux/mount.h> |
821f7440 | 20 | #include <linux/of_fdt.h> |
2f060190 | 21 | #include <linux/page_ext.h> |
b7235d6b | 22 | #include <linux/radix-tree.h> |
79939c4a | 23 | #include <linux/slab.h> |
442284a8 | 24 | #include <linux/threads.h> |
852622bf | 25 | #include <linux/vmalloc.h> |
c1a15399 | 26 | |
f197d75f | 27 | /* We need to stringify expanded macros so that they can be parsed */ |
c1a15399 | 28 | |
f197d75f KB |
29 | #define STRING(x) #x |
30 | #define XSTRING(x) STRING(x) | |
31 | ||
32 | #define LX_VALUE(x) LX_##x = x | |
33 | #define LX_GDBPARSED(x) LX_##x = gdb.parse_and_eval(XSTRING(x)) | |
34 | ||
35 | /* | |
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 | |
39 | */ | |
40 | #define LX_CONFIG(x) LX_##x = IS_BUILTIN(x) | |
41 | ||
42 | /* The build system will take care of deleting everything above this marker */ | |
43 | <!-- end-c-headers --> | |
44 | ||
45 | import gdb | |
c1a15399 | 46 | |
8af055ae FF |
47 | LX_CONFIG(CONFIG_DEBUG_INFO_REDUCED) |
48 | ||
e7e6f462 | 49 | /* linux/clk-provider.h */ |
ef7a77c6 FR |
50 | if IS_BUILTIN(CONFIG_COMMON_CLK): |
51 | LX_GDBPARSED(CLK_GET_RATE_NOCACHE) | |
e7e6f462 | 52 | |
c1a15399 | 53 | /* linux/fs.h */ |
6a59cb51 FF |
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) | |
c1a15399 | 60 | |
442284a8 SB |
61 | /* linux/htimer.h */ |
62 | LX_GDBPARSED(hrtimer_resolution) | |
63 | ||
b0969d76 FF |
64 | /* linux/irq.h */ |
65 | LX_GDBPARSED(IRQD_LEVEL) | |
66 | LX_GDBPARSED(IRQ_HIDDEN) | |
67 | ||
b4aff751 | 68 | /* linux/module.h */ |
16501630 CL |
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) | |
b4aff751 | 74 | |
c1a15399 KB |
75 | /* linux/mount.h */ |
76 | LX_VALUE(MNT_NOSUID) | |
77 | LX_VALUE(MNT_NODEV) | |
78 | LX_VALUE(MNT_NOEXEC) | |
79 | LX_VALUE(MNT_NOATIME) | |
80 | LX_VALUE(MNT_NODIRATIME) | |
81 | LX_VALUE(MNT_RELATIME) | |
821f7440 | 82 | |
442284a8 SB |
83 | /* linux/threads.h */ |
84 | LX_VALUE(NR_CPUS) | |
85 | ||
821f7440 PG |
86 | /* linux/of_fdt.h> */ |
87 | LX_VALUE(OF_DT_HEADER) | |
88 | ||
b7235d6b KB |
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) | |
95 | ||
852622bf KYL |
96 | /* linux/vmalloc.h */ |
97 | LX_VALUE(VM_IOREMAP) | |
98 | LX_VALUE(VM_ALLOC) | |
99 | LX_VALUE(VM_MAP) | |
100 | LX_VALUE(VM_USERMAP) | |
101 | LX_VALUE(VM_DMA_COHERENT) | |
102 | ||
2f060190 KYL |
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) | |
107 | ||
79939c4a KYL |
108 | /* linux/slab.h */ |
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) | |
117 | ||
821f7440 | 118 | /* Kernel Configs */ |
442284a8 SB |
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) | |
821f7440 | 123 | LX_CONFIG(CONFIG_OF) |
442284a8 | 124 | LX_CONFIG(CONFIG_TICK_ONESHOT) |
b0969d76 FF |
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) | |
133 | LX_CONFIG(CONFIG_HAVE_KVM) | |
eb985b5d KYL |
134 | LX_CONFIG(CONFIG_NUMA) |
135 | LX_CONFIG(CONFIG_ARM64) | |
136 | LX_CONFIG(CONFIG_ARM64_4K_PAGES) | |
137 | LX_CONFIG(CONFIG_ARM64_16K_PAGES) | |
138 | LX_CONFIG(CONFIG_ARM64_64K_PAGES) | |
139 | if IS_BUILTIN(CONFIG_ARM64): | |
140 | LX_VALUE(CONFIG_ARM64_PA_BITS) | |
141 | LX_VALUE(CONFIG_ARM64_VA_BITS) | |
d3e5bab9 | 142 | LX_VALUE(CONFIG_PAGE_SHIFT) |
eb985b5d KYL |
143 | LX_VALUE(CONFIG_ARCH_FORCE_MAX_ORDER) |
144 | LX_CONFIG(CONFIG_SPARSEMEM) | |
145 | LX_CONFIG(CONFIG_SPARSEMEM_EXTREME) | |
146 | LX_CONFIG(CONFIG_SPARSEMEM_VMEMMAP) | |
147 | LX_CONFIG(CONFIG_KASAN) | |
148 | LX_CONFIG(CONFIG_KASAN_GENERIC) | |
149 | LX_CONFIG(CONFIG_KASAN_SW_TAGS) | |
150 | LX_CONFIG(CONFIG_KASAN_HW_TAGS) | |
151 | if IS_BUILTIN(CONFIG_KASAN_GENERIC) or IS_BUILTIN(CONFIG_KASAN_SW_TAGS): | |
152 | LX_VALUE(CONFIG_KASAN_SHADOW_OFFSET) | |
153 | LX_CONFIG(CONFIG_VMAP_STACK) | |
154 | if IS_BUILTIN(CONFIG_NUMA): | |
155 | LX_VALUE(CONFIG_NODES_SHIFT) | |
156 | LX_CONFIG(CONFIG_DEBUG_VIRTUAL) | |
0e1b240a | 157 | LX_CONFIG(CONFIG_STACKDEPOT) |
2f060190 | 158 | LX_CONFIG(CONFIG_PAGE_OWNER) |
79939c4a KYL |
159 | LX_CONFIG(CONFIG_SLUB_DEBUG) |
160 | LX_CONFIG(CONFIG_SLAB_FREELIST_HARDENED) | |
6620999f | 161 | LX_CONFIG(CONFIG_MMU) |