u-boot/arch
Alexey Brodkin 4c8c485ad9 arc: introduce "mdbtrick" target
MetaWare debugger (MDB) is still used as a primary tool for interaction
with target via JTAG. Moreover some very advanced features are not yet
implemented in GDB for ARC (and not sure if they will be implemnted
sometime soon given complexity and rare need for those features for
common user).

So if we're talking about development process when U-Boot is loaded in
target memory not by low-level boot-loader but manually through JTAG
chances are high developer uses MDB for it.

But MDB doesn't support PIE (position-independent executable) - it will
refuse to even start - that means no chance to load elf contents on
target.
Then the only way to load U-Boot in MDB is to fake it by:
  1. Reset PIE flag in ELF header
     This is simpe - on attempt to open elf MDB checks header and if it
doesn't match its expectation refuces to use provided elf.
  2. Strip all debug information from elf
     If (1) is done then MDB will open elf but on parsing of elf's debug
info it will refuse to process due to debug info it cannot understand
(symbols with PIE relocation).

Even though it could be done manually (I got it documented quite a while
ago here http://www.denx.de/wiki/U-Boot/ARCNotes) having this automated
way is very convenient. User may build U-Boot that will be loaded on
target via MDB saying "make mdbtrick".

Then if we now apply the manipulation MDB will happily start and will
load all required sections into the target.

Indeed there will be no source-level debug info available. But still MDB
will do its work on showing disassembly, global symbols, registers,
accessing low-level debug facilities etc.

As a summary - this is a pretty dirty hack but it simplifies life a lot
for us ARc developers.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Tom Rini <trini@ti.com>
Cc: Wolfgang Denk <wd@denx.de>
2015-01-09 23:59:54 +03:00
..
arc arc: introduce "mdbtrick" target 2015-01-09 23:59:54 +03:00
arm arm: build arch memset/memcpy in Thumb2 mode 2015-01-09 10:20:22 -05:00
avr32 Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
blackfin blackfin: include <linux/compiler.h> rather than define __iomem 2014-12-08 09:35:46 -05:00
m68k Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
microblaze Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
mips Replace <compiler.h> with <linux/compiler.h> 2014-12-08 09:35:46 -05:00
nds32 Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
nios2 Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
openrisc Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
powerpc powerpc: mpc824x: remove MPC824X cpu support 2015-01-05 12:08:55 -05:00
sandbox dm: i2c: dts: Add an I2C bus for sandbox 2014-12-11 13:18:43 -07:00
sh Replace <compiler.h> with <linux/compiler.h> 2014-12-08 09:35:46 -05:00
sparc Kbuild: introduce Makefile in arch/$ARCH/ 2014-12-08 09:35:45 -05:00
x86 x86: Clean up the FSP support codes 2014-12-18 17:26:08 -07:00
.gitignore .gitignore: drop include/asm/proc from ignore pattern 2014-06-19 11:18:54 -04:00
Kconfig kconfig: move CONFIG_USE_PRIVATE_LIBGCC to Kconfig 2014-10-23 13:19:09 -04:00