[U-Boot] [PATCH 2/2] README.arm-relocation: get relocated address in gdb

Heiko Schocher hs at denx.de
Thu Apr 28 19:22:40 CEST 2011


Hello Ben,

Ben Gardiner wrote:
> When your emulator is connected at reset (or is used to load u-boot)
> it is possible to get the relocation address from the parameter
> passed to relocate_code() instead of building with -DDEBUG and
> extracting from the console messages.
> 
> Document this alternate method following the style of the original
> method written by Heiko Schocher.
> 
> Signed-off-by: Ben Gardiner <bengardiner at nanometrics.ca>
> CC: Heiko Schocher <hs at denx.de>
> CC: Wolfgang Denk <wd at denx.de>
> 
> ---
> 
> Changes since V1:
>   * update to reflect proposed changes to existing debug instructions:
>     renumber seteps, remove note about -DDEBUG
> 
> ---
>  doc/README.arm-relocation |   51 +++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 51 insertions(+), 0 deletions(-)

Thanks!

> diff --git a/doc/README.arm-relocation b/doc/README.arm-relocation
> index 8bfb500..c5aef55 100644
> --- a/doc/README.arm-relocation
> +++ b/doc/README.arm-relocation
> @@ -183,3 +183,54 @@ sp start    = XXXXXXXXXX
>  FB base     = XXXXXXXXXX
>  
>  Now you can use gdb as usual :-)
> +
> +An alternative to retrieving the relocated base address from the bdinfo command
> +is to evaluate the 'addr' parameter of relocate_code() and use its value as the
> +argument to add-symbol-file. This method is only available when your emulator
> +is connected to the target on reset.
> +
> +-----------------
> +a) [same as above] start debugger
> +b) [same as above] connect to target
> +[remainder is different than above]
> +-----------------
> +
> +c) set breakpoint on relocate_code
> +
> +(gdb) b relocate_code
> +Breakpoint 1 at 0xc1080078: file start.S, line 196.
> +
> +-----------------
> +
> +d) run target until relocate_code
> +
> +(gdb) c
> +Breakpoint 2, relocate_code () at start.S:197
> +197             mov     r5, r1  /* save addr of gd */
> +(gdb) d
> +Delete all breakpoints? (y or n) y
> +
> +-----------------
> +
> +e) discard symbol file
> +
> +(gdb) symbol-file
> +Discard symbol table from `/home/bengardiner/src/u-boot/u-boot'? (y or n) y
> +No symbol file now.
> +(gdb)
> +
> +-----------------
> +
> +f) load new symbol table using the addr parameter (aka $r2)
> +

Maybe we can add here also the info, that we can get this
address through the bdinfo command?

> +(gdb) add-symbol-file u-boot $r2
> +add symbol table from file "u-boot" at
> +	.text_addr = 0xc7f53000
> +(y or n) y
> +Reading symbols from /home/bengardiner/src/u-boot/u-boot...done.
> +
> +-----------------
> +
> +g) set breakpoints for any function after (and including) board_init_r.
> +"Now you can use gdb as usual :-)"
> +

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list