From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964893AbcATLRl (ORCPT ); Wed, 20 Jan 2016 06:17:41 -0500 Received: from mail-wm0-f51.google.com ([74.125.82.51]:35598 "EHLO mail-wm0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935031AbcATLQ0 (ORCPT ); Wed, 20 Jan 2016 06:16:26 -0500 From: Kieran Bingham To: jan.kiszka@siemens.com Cc: Kieran Bingham , linux-kernel@vger.kernel.org, maxime.coquelin@st.com, peter.griffin@linaro.org, lee.jones@linaro.org Subject: [PATCH 1/5] scripts/gdb: Provide linux constants Date: Wed, 20 Jan 2016 11:15:46 +0000 Message-Id: <1453288550-4706-2-git-send-email-kieran.bingham@linaro.org> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1453288550-4706-1-git-send-email-kieran.bingham@linaro.org> References: <1453288550-4706-1-git-send-email-kieran.bingham@linaro.org> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some macro's and defines are needed when parsing memory, and without compiling the kernel as -g3 they are not available in the debug-symbols. We use the pre-processor here to extract constants to a dedicated module for the linux debugger extensions Signed-off-by: Kieran Bingham --- I've added a 'constants.py' which is automatically generated. This allows values not available to the debugger, through #defines to be provided to our scripts. The alternative method for this is to create a c-object file to obtain values through symbols instead, and compile segments with -g3 to include macro definitions in the debug-info. I'd appreciate your thoughts on these options. scripts/gdb/linux/Makefile | 9 +++++++-- scripts/gdb/linux/constants.py.in | 22 ++++++++++++++++++++++ scripts/gdb/vmlinux-gdb.py | 1 + 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 scripts/gdb/linux/constants.py.in diff --git a/scripts/gdb/linux/Makefile b/scripts/gdb/linux/Makefile index 6cf1ecf61057..50864f408ca8 100644 --- a/scripts/gdb/linux/Makefile +++ b/scripts/gdb/linux/Makefile @@ -2,10 +2,15 @@ always := gdb-scripts SRCTREE := $(shell cd $(srctree) && /bin/pwd) -$(obj)/gdb-scripts: +$(obj)/gdb-scripts: $(obj)/constants.py ifneq ($(KBUILD_SRC),) $(Q)ln -fsn $(SRCTREE)/$(obj)/*.py $(objtree)/$(obj) endif @: -clean-files := *.pyc *.pyo $(if $(KBUILD_SRC),*.py) +$(obj)/constants.py: $(SRCTREE)/$(obj)/constants.py.in + @echo " GDB PP $@" + @$(CPP) -E -x c -P $(c_flags) $< > $@ + @sed -i '1,//d;' $@ + +clean-files := *.pyc *.pyo $(if $(KBUILD_SRC),*.py) $(obj)/constants.py diff --git a/scripts/gdb/linux/constants.py.in b/scripts/gdb/linux/constants.py.in new file mode 100644 index 000000000000..d84084ac945b --- /dev/null +++ b/scripts/gdb/linux/constants.py.in @@ -0,0 +1,22 @@ +/* + * gdb helper commands and functions for Linux kernel debugging + * + * Kernel constants derived from include files. + * + * Copyright (c) 2016 Linaro Ltd + * + * Authors: + * Kieran Bingham + * + * This work is licensed under the terms of the GNU GPL version 2. + * + */ + +/* We need to stringify expanded macros so that they can be parsed */ +#define STRING(x) #x +#define XSTRING(x) STRING(x) + +/* The build system will take care of deleting everything above this marker */ + + +import gdb diff --git a/scripts/gdb/vmlinux-gdb.py b/scripts/gdb/vmlinux-gdb.py index d5943eca19cd..6e0b0afd888a 100644 --- a/scripts/gdb/vmlinux-gdb.py +++ b/scripts/gdb/vmlinux-gdb.py @@ -30,3 +30,4 @@ else: import linux.cpus import linux.lists import linux.proc + import linux.constants -- 2.5.0