From patchwork Mon Feb 27 22:00:44 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Barada X-Patchwork-Id: 143298 X-Patchwork-Delegate: albert.aribaud@free.fr Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 1FAC4B6EE8 for ; Tue, 28 Feb 2012 09:50:38 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 0F667283FB; Mon, 27 Feb 2012 23:02:09 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id o1D1Izn9SAXR; Mon, 27 Feb 2012 23:02:08 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 13EFE283CA; Mon, 27 Feb 2012 23:02:05 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 09EFB283CA for ; Mon, 27 Feb 2012 23:02:00 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id JfR-CKUX9Rvy for ; Mon, 27 Feb 2012 23:01:57 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from edprlnx06.logicpd.com (unknown [174.46.170.154]) by theia.denx.de (Postfix) with SMTP id B50C8283C0 for ; Mon, 27 Feb 2012 23:01:52 +0100 (CET) Received: from turbo.logicpd.com (unknown [172.16.10.2]) by edprlnx06.logicpd.com (Postfix) with ESMTP id 45F21600095; Mon, 27 Feb 2012 16:00:54 -0600 (CST) From: Peter Barada To: u-boot@lists.denx.de Date: Mon, 27 Feb 2012 17:00:44 -0500 Message-Id: <1330380044-8305-1-git-send-email-peter.barada@logicpd.com> X-Mailer: git-send-email 1.7.1 Cc: trini@ti.com, albert.u.boot@airbaud.net Subject: [U-Boot] [PATCH] ARM: Add .data/.rodata/.bss section starts to gd_t X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de When debugging u-boot, after relocation its tedious to calculate positions of the various sections (.data, .rodata, .bss). To make it easier, add the structure "sections" to gd_t that contains the relocated start of those sections. Then the gdb command "add-symbol-file" can by used with "-s
" that corresponds to the values in gd_t->sections. Signed-off-by: Peter Barada --- README | 6 ++++++ arch/arm/cpu/arm1136/start.S | 10 ++++++++++ arch/arm/cpu/arm1136/u-boot.lds | 6 +++++- arch/arm/cpu/arm1176/start.S | 10 ++++++++++ arch/arm/cpu/arm1176/u-boot.lds | 6 +++++- arch/arm/cpu/arm720t/start.S | 10 ++++++++++ arch/arm/cpu/arm720t/u-boot.lds | 6 +++++- arch/arm/cpu/arm920t/ep93xx/u-boot.lds | 10 ++++++++-- arch/arm/cpu/arm920t/start.S | 10 ++++++++++ arch/arm/cpu/arm920t/u-boot.lds | 6 +++++- arch/arm/cpu/arm925t/start.S | 10 ++++++++++ arch/arm/cpu/arm925t/u-boot.lds | 6 +++++- arch/arm/cpu/arm926ejs/mx28/start.S | 10 ++++++++++ arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds | 6 +++++- arch/arm/cpu/arm926ejs/start.S | 10 ++++++++++ arch/arm/cpu/arm926ejs/u-boot.lds | 6 +++++- arch/arm/cpu/arm946es/start.S | 10 ++++++++++ arch/arm/cpu/arm946es/u-boot.lds | 6 +++++- arch/arm/cpu/arm_intcm/start.S | 10 ++++++++++ arch/arm/cpu/arm_intcm/u-boot.lds | 6 +++++- arch/arm/cpu/armv7/omap-common/u-boot-spl.lds | 11 +++++++++-- arch/arm/cpu/armv7/start.S | 10 ++++++++++ arch/arm/cpu/armv7/u-boot.lds | 6 +++++- arch/arm/cpu/ixp/start.S | 10 ++++++++++ arch/arm/cpu/ixp/u-boot.lds | 6 +++++- arch/arm/cpu/lh7a40x/start.S | 10 ++++++++++ arch/arm/cpu/lh7a40x/u-boot.lds | 6 +++++- arch/arm/cpu/pxa/start.S | 10 ++++++++++ arch/arm/cpu/pxa/u-boot.lds | 6 +++++- arch/arm/cpu/s3c44b0/start.S | 10 ++++++++++ arch/arm/cpu/s3c44b0/u-boot.lds | 6 +++++- arch/arm/cpu/sa1100/start.S | 10 ++++++++++ arch/arm/cpu/sa1100/u-boot.lds | 6 +++++- arch/arm/include/asm/config.h | 3 +++ arch/arm/include/asm/global_data.h | 13 +++++++++++++ arch/arm/include/asm/u-boot-arm.h | 4 ++++ arch/arm/lib/board.c | 7 +++++++ board/ait/cam_enc_4xx/u-boot-spl.lds | 11 +++++++++-- board/davinci/da8xxevm/u-boot-spl-da850evm.lds | 10 ++++++++-- board/davinci/da8xxevm/u-boot-spl-hawk.lds | 6 +++++- board/vpac270/u-boot-spl.lds | 6 +++++- common/cmd_bdinfo.c | 5 +++++ nand_spl/board/freescale/mx31pdk/u-boot.lds | 6 +++++- nand_spl/board/karo/tx25/u-boot.lds | 6 +++++- 44 files changed, 317 insertions(+), 27 deletions(-) diff --git a/README b/README index eba6378..0d7a7a0 100644 --- a/README +++ b/README @@ -426,6 +426,12 @@ The following options need to be configured: Select high exception vectors of the ARM core, e.g., do not clear the V bit of the c1 register of CP15. + CONFIG_GDB_SECTIONS_START + + Add to gd_t "sections" structure containing starting addresses + of .bss, .data, and .rodata sections to allow + "gdb add-symbol-file" to work once u-boot is relocated. + - Linux Kernel Interface: CONFIG_CLOCKS_IN_MHZ diff --git a/arch/arm/cpu/arm1136/start.S b/arch/arm/cpu/arm1136/start.S index c0db96c..9ab4351 100644 --- a/arch/arm/cpu/arm1136/start.S +++ b/arch/arm/cpu/arm1136/start.S @@ -108,6 +108,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm1136/u-boot.lds b/arch/arm/cpu/arm1136/u-boot.lds index d1e2851..751fa21 100644 --- a/arch/arm/cpu/arm1136/u-boot.lds +++ b/arch/arm/cpu/arm1136/u-boot.lds @@ -45,10 +45,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/arm1176/start.S b/arch/arm/cpu/arm1176/start.S index 848144a..0f8f368 100644 --- a/arch/arm/cpu/arm1176/start.S +++ b/arch/arm/cpu/arm1176/start.S @@ -127,6 +127,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + /* IRQ stack memory (calculated at run-time) + 8 bytes */ .globl IRQ_STACK_START_IN IRQ_STACK_START_IN: diff --git a/arch/arm/cpu/arm1176/u-boot.lds b/arch/arm/cpu/arm1176/u-boot.lds index 27d6638..91bea89 100644 --- a/arch/arm/cpu/arm1176/u-boot.lds +++ b/arch/arm/cpu/arm1176/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/arm720t/start.S b/arch/arm/cpu/arm720t/start.S index 540e3c2..947deb8 100644 --- a/arch/arm/cpu/arm720t/start.S +++ b/arch/arm/cpu/arm720t/start.S @@ -97,6 +97,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm720t/u-boot.lds b/arch/arm/cpu/arm720t/u-boot.lds index 9370fad..308862b 100644 --- a/arch/arm/cpu/arm720t/u-boot.lds +++ b/arch/arm/cpu/arm720t/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; } . = ALIGN(4); diff --git a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds index dc6ba34..29a8c9e 100644 --- a/arch/arm/cpu/arm920t/ep93xx/u-boot.lds +++ b/arch/arm/cpu/arm920t/ep93xx/u-boot.lds @@ -39,10 +39,16 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(.rodata) } + .rodata : { + __rodata_start = .; + *(.rodata) + } . = ALIGN(4); - .data : { *(.data) } + .data : { + __data_start = .; + *(.data) + } . = ALIGN(4); .got : { *(.got) } diff --git a/arch/arm/cpu/arm920t/start.S b/arch/arm/cpu/arm920t/start.S index 8c5612c..be364f1 100644 --- a/arch/arm/cpu/arm920t/start.S +++ b/arch/arm/cpu/arm920t/start.S @@ -93,6 +93,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm920t/u-boot.lds b/arch/arm/cpu/arm920t/u-boot.lds index 17ba604..3999a3b 100644 --- a/arch/arm/cpu/arm920t/u-boot.lds +++ b/arch/arm/cpu/arm920t/u-boot.lds @@ -44,10 +44,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/arm925t/start.S b/arch/arm/cpu/arm925t/start.S index dbb93ef..9d01f19 100644 --- a/arch/arm/cpu/arm925t/start.S +++ b/arch/arm/cpu/arm925t/start.S @@ -103,6 +103,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm925t/u-boot.lds b/arch/arm/cpu/arm925t/u-boot.lds index 64e76f5..dac4e97 100644 --- a/arch/arm/cpu/arm925t/u-boot.lds +++ b/arch/arm/cpu/arm925t/u-boot.lds @@ -39,10 +39,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/arm926ejs/mx28/start.S b/arch/arm/cpu/arm926ejs/mx28/start.S index 2cd4d73..645987d 100644 --- a/arch/arm/cpu/arm926ejs/mx28/start.S +++ b/arch/arm/cpu/arm926ejs/mx28/start.S @@ -139,6 +139,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds b/arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds index 0fccd52..4ed5014 100644 --- a/arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds +++ b/arch/arm/cpu/arm926ejs/mx28/u-boot-spl.lds @@ -42,10 +42,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/arm926ejs/start.S b/arch/arm/cpu/arm926ejs/start.S index 6f05f1a..c87a99b 100644 --- a/arch/arm/cpu/arm926ejs/start.S +++ b/arch/arm/cpu/arm926ejs/start.S @@ -160,6 +160,16 @@ _end: .word __bss_end__ #endif +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm926ejs/u-boot.lds b/arch/arm/cpu/arm926ejs/u-boot.lds index 1480e0c..9edaaab 100644 --- a/arch/arm/cpu/arm926ejs/u-boot.lds +++ b/arch/arm/cpu/arm926ejs/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/arm946es/start.S b/arch/arm/cpu/arm946es/start.S index 89ba558..af1f9c4 100644 --- a/arch/arm/cpu/arm946es/start.S +++ b/arch/arm/cpu/arm946es/start.S @@ -109,6 +109,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm946es/u-boot.lds b/arch/arm/cpu/arm946es/u-boot.lds index ff938e4..a3608ba 100644 --- a/arch/arm/cpu/arm946es/u-boot.lds +++ b/arch/arm/cpu/arm946es/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/arm_intcm/start.S b/arch/arm/cpu/arm_intcm/start.S index 2033b36..27b2c3c 100644 --- a/arch/arm/cpu/arm_intcm/start.S +++ b/arch/arm/cpu/arm_intcm/start.S @@ -105,6 +105,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/arm_intcm/u-boot.lds b/arch/arm/cpu/arm_intcm/u-boot.lds index f4a146c..0fbe17c 100644 --- a/arch/arm/cpu/arm_intcm/u-boot.lds +++ b/arch/arm/cpu/arm_intcm/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __rodata_start = .; *(.data) } diff --git a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds index 8867e06..fccd824 100644 --- a/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds +++ b/arch/arm/cpu/armv7/omap-common/u-boot-spl.lds @@ -43,10 +43,17 @@ SECTIONS } >.sram . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(.rodata*)) + } >.sram . = ALIGN(4); - .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram + .data : { + __data_start = .; + *(SORT_BY_ALIGNMENT(.data*)) + } >.sram + . = ALIGN(4); __image_copy_end = .; _end = .; diff --git a/arch/arm/cpu/armv7/start.S b/arch/arm/cpu/armv7/start.S index ef08a55..c29a1d3 100644 --- a/arch/arm/cpu/armv7/start.S +++ b/arch/arm/cpu/armv7/start.S @@ -101,6 +101,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/armv7/u-boot.lds b/arch/arm/cpu/armv7/u-boot.lds index 40ecf78..45011f6 100644 --- a/arch/arm/cpu/armv7/u-boot.lds +++ b/arch/arm/cpu/armv7/u-boot.lds @@ -39,10 +39,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/ixp/start.S b/arch/arm/cpu/ixp/start.S index cb32121..452f093 100644 --- a/arch/arm/cpu/ixp/start.S +++ b/arch/arm/cpu/ixp/start.S @@ -118,6 +118,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/ixp/u-boot.lds b/arch/arm/cpu/ixp/u-boot.lds index 7199de4..3f875f6 100644 --- a/arch/arm/cpu/ixp/u-boot.lds +++ b/arch/arm/cpu/ixp/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data*) } diff --git a/arch/arm/cpu/lh7a40x/start.S b/arch/arm/cpu/lh7a40x/start.S index 62de8b8..a66a089 100644 --- a/arch/arm/cpu/lh7a40x/start.S +++ b/arch/arm/cpu/lh7a40x/start.S @@ -93,6 +93,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/lh7a40x/u-boot.lds b/arch/arm/cpu/lh7a40x/u-boot.lds index 30934ff..f73a6e0 100644 --- a/arch/arm/cpu/lh7a40x/u-boot.lds +++ b/arch/arm/cpu/lh7a40x/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/pxa/start.S b/arch/arm/cpu/pxa/start.S index ba0de8f..f7aa19e 100644 --- a/arch/arm/cpu/pxa/start.S +++ b/arch/arm/cpu/pxa/start.S @@ -126,6 +126,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/pxa/u-boot.lds b/arch/arm/cpu/pxa/u-boot.lds index e86e781..f250876 100644 --- a/arch/arm/cpu/pxa/u-boot.lds +++ b/arch/arm/cpu/pxa/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/s3c44b0/start.S b/arch/arm/cpu/s3c44b0/start.S index a29d5b4..11879d7 100644 --- a/arch/arm/cpu/s3c44b0/start.S +++ b/arch/arm/cpu/s3c44b0/start.S @@ -84,6 +84,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/s3c44b0/u-boot.lds b/arch/arm/cpu/s3c44b0/u-boot.lds index 74a259c..0facaaf 100644 --- a/arch/arm/cpu/s3c44b0/u-boot.lds +++ b/arch/arm/cpu/s3c44b0/u-boot.lds @@ -36,10 +36,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/cpu/sa1100/start.S b/arch/arm/cpu/sa1100/start.S index 92546d8..4b1f2fb 100644 --- a/arch/arm/cpu/sa1100/start.S +++ b/arch/arm/cpu/sa1100/start.S @@ -94,6 +94,16 @@ _bss_end_ofs: _end_ofs: .word _end - _start +#ifdef CONFIG_GDB_SECTIONS_START +.globl _data_start_ofs +_data_start_ofs: + .word __data_start - _start + +.globl _rodata_start_ofs +_rodata_start_ofs: + .word __rodata_start - _start +#endif + #ifdef CONFIG_USE_IRQ /* IRQ stack memory (calculated at run-time) */ .globl IRQ_STACK_START diff --git a/arch/arm/cpu/sa1100/u-boot.lds b/arch/arm/cpu/sa1100/u-boot.lds index e6381da..3cbae0d 100644 --- a/arch/arm/cpu/sa1100/u-boot.lds +++ b/arch/arm/cpu/sa1100/u-boot.lds @@ -39,10 +39,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/arch/arm/include/asm/config.h b/arch/arm/include/asm/config.h index c60dba2..6297be9 100644 --- a/arch/arm/include/asm/config.h +++ b/arch/arm/include/asm/config.h @@ -21,6 +21,9 @@ #ifndef _ASM_CONFIG_H_ #define _ASM_CONFIG_H_ +/* Include section starts for .bss, .data, .rodata for "gdb add-symbol-file" */ +#define CONFIG_GDB_SECTIONS_START + #define CONFIG_LMB #define CONFIG_SYS_BOOT_RAMDISK_HIGH #endif diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h index c3ff789..5f28bbf 100644 --- a/arch/arm/include/asm/global_data.h +++ b/arch/arm/include/asm/global_data.h @@ -68,6 +68,19 @@ typedef struct global_data { unsigned long timestamp; #endif unsigned long relocaddr; /* Start address of U-Boot in RAM */ +#ifdef CONFIG_GDB_SECTIONS_START + /* Section start information. Used with GDB command: + * add-symbol-file u-boot $gd->relocaddr \ + * -s .data $gd->sections.data \ + * -s .rodata $gd->sections.rodata \ + * -s .bss $gd->sections.bss + */ + struct { + unsigned long data; + unsigned long rodata; + unsigned long bss; + } sections; +#endif phys_size_t ram_size; /* RAM size */ unsigned long mon_len; /* monitor len */ unsigned long irq_sp; /* irq stack pointer */ diff --git a/arch/arm/include/asm/u-boot-arm.h b/arch/arm/include/asm/u-boot-arm.h index 4ca75f9..99f05bd 100644 --- a/arch/arm/include/asm/u-boot-arm.h +++ b/arch/arm/include/asm/u-boot-arm.h @@ -33,6 +33,10 @@ extern ulong _bss_start_ofs; /* BSS start relative to _start */ extern ulong _bss_end_ofs; /* BSS end relative to _start */ extern ulong _end_ofs; /* end of image relative to _start */ +#ifdef CONFIG_GDB_SECTIONS_START +extern ulong _data_start_ofs; /* .data start relative to _start */ +extern ulong _rodata_start_ofs; /* .rodata start relative to _start */ +#endif extern ulong IRQ_STACK_START; /* top of IRQ stack */ extern ulong FIQ_STACK_START; /* top of FIQ stack */ extern ulong _TEXT_BASE; /* code start */ diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 500e216..3fdc33e 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -422,6 +422,13 @@ void board_init_f(ulong bootflag) gd->relocaddr = addr; gd->start_addr_sp = addr_sp; gd->reloc_off = addr - _TEXT_BASE; +#ifdef CONFIG_GDB_SECTIONS_START + /* Save secitons starts of bss, data, rodata for + * gdb "add-symbol-file" command */ + gd->sections.bss = addr + _bss_start_ofs; + gd->sections.data = addr + _data_start_ofs; + gd->sections.rodata = addr + _rodata_start_ofs; +#endif debug("relocation Offset is: %08lx\n", gd->reloc_off); memcpy(id, (void *)gd, sizeof(gd_t)); diff --git a/board/ait/cam_enc_4xx/u-boot-spl.lds b/board/ait/cam_enc_4xx/u-boot-spl.lds index 6f6e065..25b583b 100644 --- a/board/ait/cam_enc_4xx/u-boot-spl.lds +++ b/board/ait/cam_enc_4xx/u-boot-spl.lds @@ -43,10 +43,17 @@ SECTIONS } >.sram . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(.rodata*)) + } >.sram . = ALIGN(4); - .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram + .data : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(.data*)) + } >.sram + . = ALIGN(4); .rel.dyn : { __rel_dyn_start = .; diff --git a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds index 6f6e065..a48eaf6 100644 --- a/board/davinci/da8xxevm/u-boot-spl-da850evm.lds +++ b/board/davinci/da8xxevm/u-boot-spl-da850evm.lds @@ -43,10 +43,16 @@ SECTIONS } >.sram . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(.rodata*)) } >.sram + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(.rodata*)) + } >.sram . = ALIGN(4); - .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram + .data : { + __data_start = .; + *(SORT_BY_ALIGNMENT(.data*)) + } >.sram . = ALIGN(4); .rel.dyn : { __rel_dyn_start = .; diff --git a/board/davinci/da8xxevm/u-boot-spl-hawk.lds b/board/davinci/da8xxevm/u-boot-spl-hawk.lds index b3a41af..bf29859 100644 --- a/board/davinci/da8xxevm/u-boot-spl-hawk.lds +++ b/board/davinci/da8xxevm/u-boot-spl-hawk.lds @@ -42,10 +42,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(.rodata) } + .rodata : { + __rodata_start = .; + *(.rodata) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) __datarel_start = .; *(.data.rel) diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds index 1958c2f..2363fbd 100644 --- a/board/vpac270/u-boot-spl.lds +++ b/board/vpac270/u-boot-spl.lds @@ -50,10 +50,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) } + .rodata : { + __rodata_start = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c index 5359a47..8993a33 100644 --- a/common/cmd_bdinfo.c +++ b/common/cmd_bdinfo.c @@ -367,6 +367,11 @@ int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) #endif print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); +#ifdef CONFIG_GDB_SECTIONS_START + print_num("data_start", gd->sections.data); + print_num("rodata_start", gd->sections.rodata); + print_num("bss_start", gd->sections.bss); +#endif print_num("irq_sp", gd->irq_sp); /* irq stack pointer */ print_num("sp start ", gd->start_addr_sp); print_num("FB base ", gd->fb_base); diff --git a/nand_spl/board/freescale/mx31pdk/u-boot.lds b/nand_spl/board/freescale/mx31pdk/u-boot.lds index d2b08f6..b743b07 100644 --- a/nand_spl/board/freescale/mx31pdk/u-boot.lds +++ b/nand_spl/board/freescale/mx31pdk/u-boot.lds @@ -38,10 +38,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(.rodata) } + .rodata : { + __rodata_start = .; + *(.rodata) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) } diff --git a/nand_spl/board/karo/tx25/u-boot.lds b/nand_spl/board/karo/tx25/u-boot.lds index d2b08f6..b743b07 100644 --- a/nand_spl/board/karo/tx25/u-boot.lds +++ b/nand_spl/board/karo/tx25/u-boot.lds @@ -38,10 +38,14 @@ SECTIONS } . = ALIGN(4); - .rodata : { *(.rodata) } + .rodata : { + __rodata_start = .; + *(.rodata) + } . = ALIGN(4); .data : { + __data_start = .; *(.data) }