[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug ld/16867] linking object with separate debug file results in "reloc
From: |
cvs-commit at gcc dot gnu.org |
Subject: |
[Bug ld/16867] linking object with separate debug file results in "relocation .. has invalid symbol index" |
Date: |
Thu, 24 Apr 2014 12:35:16 +0000 |
https://sourceware.org/bugzilla/show_bug.cgi?id=16867
--- Comment #1 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot
gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gdb and binutils".
The branch, master has been updated
via 93ee1e3683a12f4774b8beb4f821910982e21ce2 (commit)
from aaca88efb450bff71523d7d6f23a67f47a4d5fb3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=93ee1e3683a12f4774b8beb4f821910982e21ce2
commit 93ee1e3683a12f4774b8beb4f821910982e21ce2
Author: Alan Modra <address@hidden>
Date: Thu Apr 24 21:59:56 2014 +0930
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.
-----------------------------------------------------------------------
Summary of changes:
bfd/ChangeLog | 24 +++++
bfd/dwarf2.c | 306 +++++++++++++++++++++++++++++++------------------------
bfd/libbfd-in.h | 3 +-
bfd/libbfd.h | 3 +-
bfd/mach-o.c | 3 +-
bfd/simple.c | 25 +++--
6 files changed, 217 insertions(+), 147 deletions(-)
--
You are receiving this mail because:
You are on the CC list for the bug.