Slow linking for ARM

Titus von Boxberg titus@v9g.de
Mon Dec 27 16:01:00 GMT 2010


Am 26.12.2010 um 01:24 schrieb Richard Earnshaw:

> It would really help if you could obtain some execution profiles of the linker for the case that is taking so long.  Especially if you can get them for both ARM and another target. It might be something really dumb going on.
Here is some profiling output for the most used functions.
It is generated for the application that takes so long to link.
Again, please note that this problem is gone in binutils-HEAD.

Regards
Titus

----------------------------------------------
ld-2.20 ARM:
# Report 1 - Session 1 - Time Profile of ld
SharkProfileViewer
# Generated from the visible portion of the outline view
+ 96.0%, find_arm_elf_section_entry, ld-220
| + 96.0%, get_arm_elf_section_data, ld-220
| | + 81.2%, elf32_arm_fix_exidx_coverage, ld-220
| | | + 81.2%, gldarmelf_linux_eabi_after_allocation, ld-220
| | | | + 81.2%, lang_process, ld-220
| | | | | + 81.2%, main, ld-220
| | | | | |   81.2%, start, ld-220
| | - 14.8%, elf32_arm_write_section, ld-220
| - 0.0%, unrecord_section_with_arm_elf_section_data, ld-220
- 0.2%, sec_merge_hash_lookup, ld-220
- 0.2%, ml_set_interrupts_enabled, mach_kernel
- 0.2%, bfd_elf_final_link, ld-220
- 0.2%, bfd_hash_lookup, ld-220
- 0.2%, elf32_arm_relocate_section, ld-220
- 0.2%, strcmp, libSystem.B.dylib
  0.1%, lo_alltraps, mach_kernel
- 0.1%, elf32_arm_final_link_relocate, ld-220
  0.1%, lo_unix_scall, mach_kernel
- 0.1%, bfd_elf_sym_name, ld-220
- 0.1%, elf32_arm_fix_exidx_coverage, ld-220
- 0.1%, bcmp, libSystem.B.dylib
- 0.1%, copyout_kern, mach_kernel
- 0.1%, _qsort, libSystem.B.dylib
- 0.1%, bfd_elf_match_symbols_in_sections, ld-220
- 0.1%, bfd_getl32, ld-220
- 0.1%, elf_link_output_extsym, ld-220
- 0.0%, elf_sort_elf_symbol, ld-220
- 0.0%, elf32_arm_size_stubs, ld-220
- 0.0%, copyin_kern, mach_kernel

-----------------------------------
ld-2.20 PPC:
# Report 3 - Session 2 - Time Profile of ld
SharkProfileViewer
# Generated from the visible portion of the outline view
- 9.3%, walk_wild_section_specs3_wild2, ld-220
- 8.7%, sec_merge_hash_lookup, ld-220
- 8.2%, strpbrk, libSystem.B.dylib
+ 4.7%, match_simple_wild, ld-220
| + 3.1%, walk_wild_section_specs3_wild2, ld-220
| | + 3.1%, walk_wild_section, ld-220
| | | + 3.1%, walk_wild, ld-220
| | | | - 1.6%, lang_gc_sections_1, ld-220
| | | | + 1.5%, map_input_to_output_sections, ld-220
| | | | | + 1.5%, map_input_to_output_sections, ld-220
| | | | | | + 1.5%, lang_process, ld-220
| | | | | | | + 1.5%, main, ld-220
| | | | | | | |   1.5%, start, ld-220
| - 0.9%, walk_wild_section_specs1_wild1, ld-220
| - 0.5%, walk_wild_section_specs2_wild1, ld-220
| - 0.1%, walk_wild_section, ld-220
| - 0.1%, walk_wild_section_specs4_wild2, ld-220
- 2.7%, bcmp, libSystem.B.dylib
- 2.6%, fnmatch, ld-220
- 2.4%, bfd_hash_lookup, ld-220
- 2.4%, ppc_elf_relocate_section, ld-220
- 2.2%, bfd_elf_final_link, ld-220
- 2.1%, walk_wild_section_specs1_wild1, ld-220
- 2.0%, bfd_elf_sym_name, ld-220
- 1.8%, strrevcmp, ld-220
- 1.8%, _bfd_relocate_contents, ld-220
- 1.8%, copyout_kern, mach_kernel

-------------------------------------
ld-HEAD ARM:
# Report 1 - Session 1 - Time Profile of ld
SharkProfileViewer
# Generated from the visible portion of the outline view
+ 33.4%, strpbrk, libSystem.B.dylib
| + 33.0%, name_match, ld-head
| | + 33.0%, walk_wild_section_general, ld-head
| | | + 33.0%, walk_wild_section, ld-head
| | | | + 33.0%, walk_wild, ld-head
| | | | | + 23.9%, map_input_to_output_sections, ld-head
| | | | | | + 23.9%, map_input_to_output_sections, ld-head
| | | | | | | + 23.9%, lang_process, ld-head
| | | | | | | | + 23.9%, main, ld-head
| | | | | | | | |   23.9%, start, ld-head
| | | | | - 9.2%, lang_gc_sections_1, ld-head
| - 0.3%, walk_wild_section_general, ld-head
- 6.4%, strcmp, libSystem.B.dylib
- 4.0%, sec_merge_hash_lookup, ld-head
- 3.7%, walk_wild_section_general, ld-head
- 3.6%, walk_wild_section_specs3_wild2, ld-head
- 2.9%, match_simple_wild, ld-head
- 2.4%, name_match, ld-head
- 2.0%, fnmatch, ld-head
- 1.7%, bfd_elf_final_link, ld-head
- 1.7%, elf32_arm_relocate_section, ld-head
- 1.5%, bcmp, libSystem.B.dylib
- 1.2%, elf32_arm_final_link_relocate, ld-head
- 1.0%, walk_wild_section_specs1_wild1, ld-head
- 1.0%, walk_wild_section_specs2_wild1, ld-head
  1.0%, lo_unix_scall, mach_kernel
- 1.0%, copyout_kern, mach_kernel

---------------------------------------
ld-HEAD PPC:
# Report 3 - Session 2 - Time Profile of ld
SharkProfileViewer
# Generated from the visible portion of the outline view
+ 21.4%, strpbrk, libSystem.B.dylib
| + 21.3%, name_match, ld-head
| | + 21.3%, walk_wild_section_general, ld-head
| | | + 21.3%, walk_wild_section, ld-head
| | | | + 21.3%, walk_wild, ld-head
| | | | | + 21.3%, map_input_to_output_sections, ld-head
| | | | | | + 21.3%, map_input_to_output_sections, ld-head
| | | | | | | + 21.3%, lang_process, ld-head
| | | | | | | | + 21.3%, main, ld-head
| | | | | | | | |   21.3%, start, ld-head
| - 0.1%, walk_wild_section_general, ld-head
- 8.7%, sec_merge_hash_lookup, ld-head
- 5.0%, strcmp, libSystem.B.dylib
- 3.8%, walk_wild_section_specs3_wild2, ld-head
- 2.9%, walk_wild_section_general, ld-head
- 2.9%, match_simple_wild, ld-head
- 2.6%, bcmp, libSystem.B.dylib
- 2.5%, ppc_elf_relocate_section, ld-head
- 2.1%, bfd_elf_sym_name, ld-head
- 2.1%, strrevcmp, ld-head
- 2.0%, bfd_elf_final_link, ld-head
- 1.7%, _bfd_relocate_contents, ld-head
- 1.6%, fnmatch, ld-head
- 1.6%, copyout_kern, mach_kernel



--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list