qemu-x86_64: debugging after relocation: breakpoints not working
Matwey V. Kornilov
matwey.kornilov at gmail.com
Sun Aug 1 19:47:14 CEST 2021
вс, 1 авг. 2021 г. в 20:41, Matwey V. Kornilov <matwey.kornilov at gmail.com>:
>
> вс, 1 авг. 2021 г. в 18:49, Matwey V. Kornilov <matwey.kornilov at gmail.com>:
> >
> > Hi,
> >
> > I failed to find the correct answer in this list. I am trying to debug
> > u-boot from the master running inside of QEMU 5.2.0:
> >
> > I start QEMU as the following:
> >
> > > qemu-system-x86_64 -bios u-boot.rom -serial stdio -hda sda -net none -S -s
> >
> > And then attach to it using gdb 10.1:
> >
> > > target remote 127.0.0.1:1234
> > > add-symbol-file /build/u-boot 0x06f49000
>
> I figured out that the 0x06f49f78 offset works fine, breakpoints work fine now.
> But how should I figure out this 0xf78 in advance?
Ok, it is the difference between .text and .text.start sections:
[ 1] .text.start PROGBITS 0000000001110000 00110000
[ 7] .text PROGBITS 0000000001110f78 00110f78
>
> > > break board_init_r
> > > info break
> > Num Type Disp Enb Address What
> > 1 breakpoint keep y 0x0000000006f5adfa in board_init_r at
> > /home/matwey/lab/u-boot/common/board_r.c:807
> > > cont
> >
> > U-boot is running, however the breakpoint has never been triggered. I
> > also tried to use hardware assisted break instead of regular.
> > Breaking before the relocation works fine, so I suppose I am doing
> > something wrong with relocation addresses.
> >
> > Address 0x06f49000 is taken from `bdinfo` output:
> >
> > => bdinfo
> > boot_params = 0x0000000000000000
> > DRAM bank = 0x0000000000000000
> > -> start = 0x0000000000000000
> > -> size = 0x0000000008000000
> > flashstart = 0x0000000000000000
> > flashsize = 0x0000000000000000
> > flashoffset = 0x0000000000000000
> > baudrate = 115200 bps
> > relocaddr = 0x0000000006f49000
> > reloc off = 0x0000000005e39000
> > Build = 64-bit
> > current eth = unknown
> > ethaddr = (not set)
> > IP addr = <NULL>
> > fdt_blob = 0x0000000006d07e30
> > new_fdt = 0x0000000006d07e30
> > fdt_size = 0x0000000000000bc0
> > Video = vesa_video inactive
> > lmb_dump_all:
> > memory.cnt = 0x1
> > memory[0] [0x0-0x7ffffff], 0x08000000 bytes flags: 0
> > reserved.cnt = 0x0
> >
> > Could somebody please point out to me what I do wrong? Thank you in advance.
> >
> >
> > --
> > With best regards,
> > Matwey V. Kornilov
>
>
>
> --
> With best regards,
> Matwey V. Kornilov
--
With best regards,
Matwey V. Kornilov
More information about the U-Boot
mailing list