diff options
| -rw-r--r-- | Makefile | 5 | ||||
| -rw-r--r-- | lib/Kconfig.debug | 11 | ||||
| -rw-r--r-- | scripts/Makefile | 1 | ||||
| -rw-r--r-- | scripts/gdb/Makefile | 1 | ||||
| -rw-r--r-- | scripts/gdb/linux/Makefile | 11 | ||||
| -rw-r--r-- | scripts/gdb/vmlinux-gdb.py | 23 |
6 files changed, 51 insertions, 1 deletions
| @@ -927,6 +927,9 @@ endif | |||
| 927 | ifdef CONFIG_BUILD_DOCSRC | 927 | ifdef CONFIG_BUILD_DOCSRC |
| 928 | $(Q)$(MAKE) $(build)=Documentation | 928 | $(Q)$(MAKE) $(build)=Documentation |
| 929 | endif | 929 | endif |
| 930 | ifdef CONFIG_GDB_SCRIPTS | ||
| 931 | $(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py | ||
| 932 | endif | ||
| 930 | +$(call if_changed,link-vmlinux) | 933 | +$(call if_changed,link-vmlinux) |
| 931 | 934 | ||
| 932 | # The actual objects are generated when descending, | 935 | # The actual objects are generated when descending, |
| @@ -1181,7 +1184,7 @@ MRPROPER_FILES += .config .config.old .version .old_version $(version_h) \ | |||
| 1181 | Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ | 1184 | Module.symvers tags TAGS cscope* GPATH GTAGS GRTAGS GSYMS \ |
| 1182 | signing_key.priv signing_key.x509 x509.genkey \ | 1185 | signing_key.priv signing_key.x509 x509.genkey \ |
| 1183 | extra_certificates signing_key.x509.keyid \ | 1186 | extra_certificates signing_key.x509.keyid \ |
| 1184 | signing_key.x509.signer | 1187 | signing_key.x509.signer vmlinux-gdb.py |
| 1185 | 1188 | ||
| 1186 | # clean - Delete most, but leave enough to build external modules | 1189 | # clean - Delete most, but leave enough to build external modules |
| 1187 | # | 1190 | # |
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index ecb3516f6546..c5cefb3c009c 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug | |||
| @@ -167,6 +167,17 @@ config DEBUG_INFO_DWARF4 | |||
| 167 | But it significantly improves the success of resolving | 167 | But it significantly improves the success of resolving |
| 168 | variables in gdb on optimized code. | 168 | variables in gdb on optimized code. |
| 169 | 169 | ||
| 170 | config GDB_SCRIPTS | ||
| 171 | bool "Provide GDB scripts for kernel debugging" | ||
| 172 | depends on DEBUG_INFO | ||
| 173 | help | ||
| 174 | This creates the required links to GDB helper scripts in the | ||
| 175 | build directory. If you load vmlinux into gdb, the helper | ||
| 176 | scripts will be automatically imported by gdb as well, and | ||
| 177 | additional functions are available to analyze a Linux kernel | ||
| 178 | instance. See Documentation/gdb-kernel-debugging.txt for further | ||
| 179 | details. | ||
| 180 | |||
| 170 | config ENABLE_WARN_DEPRECATED | 181 | config ENABLE_WARN_DEPRECATED |
| 171 | bool "Enable __deprecated logic" | 182 | bool "Enable __deprecated logic" |
| 172 | default y | 183 | default y |
diff --git a/scripts/Makefile b/scripts/Makefile index 72902b5f2721..2016a64497ab 100644 --- a/scripts/Makefile +++ b/scripts/Makefile | |||
| @@ -36,6 +36,7 @@ subdir-$(CONFIG_MODVERSIONS) += genksyms | |||
| 36 | subdir-y += mod | 36 | subdir-y += mod |
| 37 | subdir-$(CONFIG_SECURITY_SELINUX) += selinux | 37 | subdir-$(CONFIG_SECURITY_SELINUX) += selinux |
| 38 | subdir-$(CONFIG_DTC) += dtc | 38 | subdir-$(CONFIG_DTC) += dtc |
| 39 | subdir-$(CONFIG_GDB_SCRIPTS) += gdb | ||
| 39 | 40 | ||
| 40 | # Let clean descend into subdirs | 41 | # Let clean descend into subdirs |
| 41 | subdir- += basic kconfig package | 42 | subdir- += basic kconfig package |
diff --git a/scripts/gdb/Makefile b/scripts/gdb/Makefile new file mode 100644 index 000000000000..62f5f65becfd --- /dev/null +++ b/scripts/gdb/Makefile | |||
| @@ -0,0 +1 @@ | |||
| subdir-y := linux | |||
diff --git a/scripts/gdb/linux/Makefile b/scripts/gdb/linux/Makefile new file mode 100644 index 000000000000..6cf1ecf61057 --- /dev/null +++ b/scripts/gdb/linux/Makefile | |||
| @@ -0,0 +1,11 @@ | |||
| 1 | always := gdb-scripts | ||
| 2 | |||
| 3 | SRCTREE := $(shell cd $(srctree) && /bin/pwd) | ||
| 4 | |||
| 5 | $(obj)/gdb-scripts: | ||
| 6 | ifneq ($(KBUILD_SRC),) | ||
| 7 | $(Q)ln -fsn $(SRCTREE)/$(obj)/*.py $(objtree)/$(obj) | ||
| 8 | endif | ||
| 9 | @: | ||
| 10 | |||
| 11 | clean-files := *.pyc *.pyo $(if $(KBUILD_SRC),*.py) | ||
diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py new file mode 100644 index 000000000000..c1d90cea5288 --- /dev/null +++ b/scripts/gdb/vmlinux-gdb.py | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | # | ||
| 2 | # gdb helper commands and functions for Linux kernel debugging | ||
| 3 | # | ||
| 4 | # loader module | ||
| 5 | # | ||
| 6 | # Copyright (c) Siemens AG, 2012, 2013 | ||
| 7 | # | ||
| 8 | # Authors: | ||
| 9 | # Jan Kiszka <jan.kiszka@siemens.com> | ||
| 10 | # | ||
| 11 | # This work is licensed under the terms of the GNU GPL version 2. | ||
| 12 | # | ||
| 13 | |||
| 14 | import os | ||
| 15 | |||
| 16 | sys.path.insert(0, os.path.dirname(__file__) + "/scripts/gdb") | ||
| 17 | |||
| 18 | try: | ||
| 19 | gdb.parse_and_eval("0") | ||
| 20 | gdb.execute("", to_string=True) | ||
| 21 | except: | ||
| 22 | gdb.write("NOTE: gdb 7.2 or later required for Linux helper scripts to " | ||
| 23 | "work.\n") | ||
