
wang baohua wrote:
Dear all, I study the U-boot.bin file using the objdump command, I don't know how the CPU can find the right string address when puts() string. For example, In my binary file, the string "Call backtrace: " in func "print_backtrace()" address is :0x0002b280, the func address is 0xfff03564, How the CPU can find the 0x0002b280 when call puts ("Call backtrace: "); ? I find the SMC serial driver "serial_putc()" but cannot know how to find the char address in binary file.
Below is the objdump result, can anyone explain to me ? thanks!
Please don't post HTML, use plain text.
I don't understand your question, why are you asking it? Are you trying to figure out a problem or are you just trying to understand the linking processes?
Using objdump on u-boot.bin is not valid. U-boot.bin is a binary file, objdump works on ELF (linker formatted) files.
http://en.wikipedia.org/wiki/Executable_and_Linkable_Format
When you link the ELF files, the linker fixes up all the addresses so the linker sets the proper address in the instruction that the CPU ultimately executes. The u-boot.bin file is a raw binary dump of the result.
Was that your question???
Best regards, gvb