PR16867, linking object with separate debug file
authorAlan Modra <amodra@gmail.com>
Thu, 24 Apr 2014 12:29:56 +0000 (21:59 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 24 Apr 2014 12:34:05 +0000 (22:04 +0930)
commit93ee1e3683a12f4774b8beb4f821910982e21ce2
treeb98ee67b8b76663f5e048a0188aaa1835f4d830b
parentaaca88efb450bff71523d7d6f23a67f47a4d5fb3
PR16867, linking object with separate debug file

This teaches the DWARF2 find_line functions how to deal with separate
debug relocatable object files.  Also fixes a major bug:
When _bfd_dwarf2_slurp_debug_info was split out, place_sections ran
after .debug_info was relocated.  This defeated the whole purpose of
place_sections.  See the comment I added before place_sections.
Fixes some minor bugs too:
- place_sections didn't set VMA for alloc but non-load sections (bss).
- zero size sections can have symbols, so they need their VMA set too.
- last_vma was incorrectly adjusted.
- my last change to place_sections left VMA unchanged for .debug_info
  when the linker has mapped input to output sections, but this is
  wrong since bfd_simple_get_relocated_section_contents unmaps debug
  sections.

PR 16867
* dwarf2.c: Formatting.
(struct dwarf2_debug): Make adjusted_section_count signed.
(unset_sections): Make i signed.
(set_debug_vma): New function.
(place_sections): Handle separate debug object file.  Set VMA
on debug sections, even if they have an output section.  Also
set VMA on zero size sections, and non-load but alloc sections.
Set adjusted_section_count to -1 when no section adjustment.
Malloc adjusted_sections.  Don't double last_vma.  Transfer
alloc section VMAs to separate debug file.
(_bfd_dwarf2_cleanup_debug_info): Free adjusted_sections.
(_bfd_dwarf2_slurp_debug_info): Add do_place parameter.  Drop
test on symbols being the same before using old stash.  Read
and use separate debug file symbols.  Call place_sections.
(find_line): Don't call place_sections here.
* libbfd-in.h (_bfd_dwarf2_slurp_debug_info): Update proto.
* libbfd.h: Regenerate.
* mach-o.c (bfd_mach_o_find_nearest_line): Adjust
_bfd_dwarf2_slurp_debug_info call.
* simple.c (simple_save_output_info): Clarify comment.
bfd/ChangeLog
bfd/dwarf2.c
bfd/libbfd-in.h
bfd/libbfd.h
bfd/mach-o.c
bfd/simple.c
This page took 0.034952 seconds and 4 git commands to generate.