How to compile u-boot with debug option?
Jaehoon Chung
jh80.chung at samsung.com
Tue Oct 19 09:01:55 CEST 2021
Hi,
On 10/19/21 2:01 PM, Chan Kim wrote:
>
> Hello, Jaehoon and all,
>
> I tried setting in menuconfig TOOLS_DEBUG but no change. It's strainge, when I add "V=1" in the make command, I can see the commands run during the make. The cc command has -g options, a typical command being like this :
>
> aarch64-none-elf-gcc -Wp,-MD,lib/.asm-offsets.s.d -nostdinc -isystem /home/ckim/prj/abdsn/ab21cv/tools/cc_zeus/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin/../lib/gcc/aarch64-none-elf/9.2.1/include -Iinclude -I./arch/arm/include -include ./include/linux/kconfig.h -D__KERNEL__ -D__UBOOT__ -Wall -Wstrict-prototypes -Wno-format-security -fno-builtin -ffreestanding -std=gnu11 -fshort-wchar -fno-strict-aliasing -fno-PIE -Os -fno-stack-protector -fno-delete-null-pointer-checks -Wno-pointer-sign -Wno-stringop-truncation -Wno-array-bounds -Wno-stringop-overflow -Wno-maybe-uninitialized -fmacro-prefix-map=./= -g -fstack-usage -Wno-format-nonliteral -Wno-address-of-packed-member -Wno-unused-but-set-variable -Werror=date-time -Wno-packed-not-aligned -D__ARM__ -fno-pic -mstrict-align -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -mgeneral-regs-only -fno-common -ffixed-x18 -pipe -march=armv8-a+crc -D__LINUX_ARM_ARCH__=8 -DDO_DEPS_ONLY -DKBUILD_BASENAME='"asm_offsets"' -DKBUILD_MODNAME='"asm_offsets"' -fverbose-asm -S -o lib/asm-offsets.s lib/asm-offsets.c
>
> (you can see -g option near the middle place)
> I don't know why the final .elf file doesn't contain debuginfo.
Actually, i didn't run u-boot on qemu with gdb. But I followed the below step..
$make ARCH=arm64 qemu_arm64_defconfig
$make CROSS_COMPILE=aarch64-none-elf-
$qemu-system-aarch64 -curses -machine virt -cpu cortex-a57 -bios u-boot.bin -S -s
$aarch64-none-elf-gdb u-boot -ex "target remote tcp::1234"
Then I can run u-boot step-by-step.
─── Output/messages ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
reset () at arch/arm/cpu/armv8/start.S:57
57 b save_boot_params
─── Assembly ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
0x0000000000000028 ? b 0x174 <save_boot_params>
0x000000000000002c ? adr x0, 0x0 <_start>
0x0000000000000030 ? ands x0, x0, #0xfff
0x0000000000000034 ? b.eq 0x40 <pie_fixup> // b.none
0x0000000000000038 ? wfi
0x000000000000003c ? b 0x38 <save_boot_params_ret+12>
0x0000000000000040 ? adr x0, 0x0 <_start>
0x0000000000000044 ? ldr x1, 0x8 <_TEXT_BASE>
0x0000000000000048 ? subs x9, x0, x1
0x000000000000004c ? b.eq 0x84 <pie_fixup_done> // b.none
─── Breakpoints ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Expressions ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── History ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Memory ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─── Registers ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
x0 0x0000000000000000 x1 0x0000000000000000 x2 0x0000000000000000 x3 0x0000000000000000 x4 0x0000000000000000 x5 0x0000000000000000 x6 0x0000000000000000 x7 0x0000000000000000 x8 0x0000000000000000
x9 0x0000000000000000 x10 0x0000000000000000 x11 0x0000000000000000 x12 0x0000000000000000 x13 0x0000000000000000 x14 0x0000000000000000 x15 0x0000000000000000 x16 0x0000000000000000 x17 0x0000000000000000
x18 0x0000000000000000 x19 0x0000000000000000 x20 0x0000000000000000 x21 0x0000000000000000 x22 0x0000000000000000 x23 0x0000000000000000 x24 0x0000000000000000 x25 0x0000000000000000 x26 0x0000000000000000
x27 0x0000000000000000 x28 0x0000000000000000 x29 0x0000000000000000 x30 0x0000000000000000 sp 0x0000000000000000 pc 0x0000000000000028 cpsr 0x400003c5 fpsr 0x00000000 fpcr 0x00000000
─── Source ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
52 _bss_end_ofs:
53 .quad __bss_end - _start
54
55 reset:
56 /* Allow the board to save important registers */
57 b save_boot_params
58 .globl save_boot_params_ret
59 save_boot_params_ret:
60
61 #if CONFIG_POSITION_INDEPENDENT
─── Stack ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[0] from 0x0000000000000028 in reset at arch/arm/cpu/armv8/start.S:57
─── Threads ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[1] id 1 from 0x0000000000000028 in reset at arch/arm/cpu/armv8/start.S:57
─── Variables ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
>>>
I'm not sure whether it's your wanted or not.
Best Regards,
Jaehoon Chung
>
> ckim at ckim-ubuntu:~/U-BOOT/u-boot$ readelf -S u-boot.elf
> There are 5 section headers, starting at offset 0xc8950:
>
> Section Headers:
> [Nr] Name Type Address Offset
> Size EntSize Flags Link Info Align
> [ 0] NULL 0000000000000000 00000000
> 0000000000000000 0000000000000000 0 0 0
> [ 1] .data PROGBITS 0000000000000000 00010000
> 00000000000b8850 0000000000000000 WA 0 0 1
> [ 2] .symtab SYMTAB 0000000000000000 000c8850
> 0000000000000090 0000000000000018 3 2 8
> [ 3] .strtab STRTAB 0000000000000000 000c88e0
> 0000000000000049 0000000000000000 0 0 1
> [ 4] .shstrtab STRTAB 0000000000000000 000c8929
> 0000000000000021 0000000000000000 0 0 1
> Key to Flags:
> W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
> L (link order), O (extra OS processing required), G (group), T (TLS),
> C (compressed), x (unknown), o (OS specific), E (exclude),
> p (processor specific)
>
> And there are many configs including pattern "DEBUG" like CONFIG_DEBUG_UART_SANDBOX but it seems they are adding special debug features in the program behavior. What I want is to run the u-boot program itself in debug mode so that I can attach gdb and follow the program steps. (continue, step-in, step-out things..)
>
> Any comment will be very much appreciated.
> Thank you, and best regards,
>
> Chan Kim
>
>> -----Original Message-----
>> From: Jaehoon Chung <jh80.chung at samsung.com>
>> Sent: Tuesday, October 19, 2021 12:26 PM
>> To: Chan Kim <ckim at etri.re.kr>; U-Boot Mailing List <u-boot at lists.denx.de>
>> Subject: Re: How to compile u-boot with debug option?
>>
>> On 10/19/21 11:21 AM, Chan Kim wrote:
>>> Hello,
>>>
>>>
>>>
>>> With these commands,
>>>
>>> make ARCH=arm CROSS_COMPILE=aarch64-none-elf- qemu_arm64_defconfig
>>>
>>> make ARCH=arm CROSS_COMPILE=aarch64-none-elf-
>>>
>>> I see only u-boot.bin. How can I make u-boot.elf with debug info?
>>>
>>> I found
>>> https://protect2.fireeye.com/v1/url?k=126d5a6e-4df662a4-126cd121-0cc47
>>> a31bee8-8e6c8ef0c2793943&q=1&e=4928b69d-166a-4647-b6c5-88bc2f73a780&u=
>>> https%3A%2F%2Flists.denx.de%2Fpipermail%2Fu-boot%2F2005-May%2F010240.h
>>> tml and tried adding
>>
>> It's too old patch. It's not proper to current u-boot.
>>
>> make ARCH=arm menucofig and check config relevant to DEBUG option.
>>
>> Best Regards,
>> Jaehoon Chung
>>
>>>
>>> -DDEBUG to CFLAGS_NON_EFI in arch/arm/config.mk and adding CFLAGS +=
>>> -DDEBUG in arch/arm/cpu/armv8/config.mk
>>>
>>> But after doing "make ARCH=arm CROSS_COMPILE=aarch64-none-elf-
>>> u-boot.elf", when I give file command for the u-boot.elf, it says
>>>
>>>
>>>
>>> u-boot.elf: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV),
>>> statically linked, not stripped
>>>
>>>
>>>
>>> I think I should see "with debug_info, not stripped". With connecting
>>> gdb, I can't see the source file. The run responds to 'continue' command
>> though.
>>>
>>> Could any tell me what I can do?
>>>
>>>
>>>
>>> Thank you,
>>>
>>> Chan Kim
>>>
>>>
>>>
>>>
>>
>
>
>
>
>
More information about the U-Boot
mailing list