
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@nanometrics.ca CC: Heiko Schocher hs@denx.de CC: Wolfgang Denk wd@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