Confused about how to apply add-symbol-file in gdb

Chan Kim ckim at etri.re.kr
Mon Jul 18 04:56:49 EDT 2022


Hello,
I found from the manual,
(https://sourceware.org/gdb/onlinedocs/gdb/Files.html#:~:text=The%20add%2Dsy
mbol%2Dfile%20command,text%20section%20has%20been%20loaded.)
By giving "-o 0x10000" I can follow the kernel source in the virtual
address. (and follow sources after start_kernel)
Thank you.
Chan Kim

>-----Original Message-----
>From: Chan Kim <ckim at etri.re.kr>
>Sent: Monday, July 18, 2022 5:43 PM
>To: kernelnewbies at kernelnewbies.org
>Subject: Confused about how to apply add-symbol-file in gdb
>
>Hello all,
>
>I thought I know how to apply add-symbol-file command in gdb but now I'm
>confused.
>I'm using qemu to test booting linux using u-boot. (arm64) I've loaded u-
>boot at 0x4000000 and loaded linux Image (binary, not elf) at 0x80010000.
>The dtb is loaded at 0x80000000.
>(because qemu loads the dtb file at the first address of RAM (which is
>0x80000000) I moved kernel image to 0x80010000) After the PC jumps to
linux,
>I can follow the source while the PC value uses physical address.
>I think this is possible that I gave gdb this command.
>add-symbol-file vmlinux -s .head.text 0x80010000 -s .text 0x80020000 (using
>readelf -e vmlinux command, I can see the section offsets relative to the
>start of the Image file. The output starts like this.
>Section Headers:
>  [Nr] Name              Type             Address           Offset
>       Size              EntSize          Flags  Link  Info  Align
>  [ 0]                   NULL             0000000000000000  00000000
>       0000000000000000  0000000000000000           0     0     0
>  [ 1] .head.text        PROGBITS         ffffffc010000000  00010000
>       0000000000010000  0000000000000000  AX       0     0     65536
>  [ 2] .text             PROGBITS         ffffffc010010000  00020000
>       0000000000aa4dc8  0000000000000008  AX       0     0     2048
>  [ 3] .got.plt          PROGBITS         ffffffc010ab4dc8  00ac4dc8
>       0000000000000018  0000000000000008  WA       0     0     8
>  [ 4] .rodata           PROGBITS         ffffffc010ac0000  00ad0000
>       0000000000645018  0000000000000000  WA       0     0     4096
>  [ 5] .pci_fixup        PROGBITS         ffffffc011105020  01115020
>       00000000000025e0  0000000000000000   A       0     0     16
>  [ 6] __ksymtab         PROGBITS         ffffffc011107600  01117600
>       000000000000b3b8  0000000000000000   A       0     0     4
>  [ 7] __ksymtab_gpl     PROGBITS         ffffffc0111129b8  011229b8
>...
>
>Now, at the end of __primary_switch function, the PC value becomes virtual.
>But I can't follow kernel source from that point.
>Until now, I have placed kernel Image at 0x80000000 and dtb was at
>0x82800000 and just by giving "add-symbol-file vmlinux" again, there was no
>problem following the kernel source in virtual address.
>How should I give the add-symbol-file command when the Image is now at
>0x80010000??
>Any comment welcome.
>Thank you.
>
>Chan Kim







More information about the Kernelnewbies mailing list