[quote user="calvin xu"]by compare the link object, with using "--no_demangle", there is other difference[/quote]
You are saying that merely adding --no_demangle resulted in additional differences? That does not make sense. The option --no_demangle only affects diagnostics emitted by the linker, not the binary .out file.
[quote user="calvin xu"]======================================================================
Comparing File Headers : elf32_ehdr
======================================================================
Differences: DlCpu3.out DlCpu3.out
e_entry: 0x860e52a0 0x860e52c0[/quote]
That means the entry point is different.
[quote user="calvin xu"]======================================================================
Comparing Sections : section = .cinit
======================================================================
Raw data is different[/quote]
That means the bits loaded to the target (called the raw data) in the section .cinit are different. This happens with several of the sections.
[quote user="calvin xu"]======================================================================
Comparing Sections : section = .text : elf32_shdr
======================================================================
Differences: DlCpu3.out DlCpu3.out
sh_size: 0x71280 0x712a0[/quote]
This means the .text section has changed sizes.
Generally speaking, these two files are quite different.
Thanks and regards,
-George