From 9a5334e5905194876a799a2af08d7a0d9c885a0c Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Sun, 10 Apr 1994 08:12:33 +0000 Subject: [PATCH] * elfcode.h (write_relocs): For rela relocations, adjust the addend for relocations involving section symbols to account for the lossage of 1:1 mapping from input section symbols to output section symbols. --- bfd/ChangeLog | 7 +++++++ bfd/elfcode.h | 11 +++++++++++ 2 files changed, 18 insertions(+) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8c19a1081bb..29dcd293087 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +Sun Apr 10 01:02:24 1994 Jeffrey A. Law (law@snake.cs.utah.edu) + + * elfcode.h (write_relocs): For rela relocations, adjust the + addend for relocations involving section symbols to account + for the lossage of 1:1 mapping from input section symbols to + output section symbols. + Fri Apr 8 12:22:02 1994 Ian Lance Taylor (ian@tweedledumb.cygnus.com) * aoutx.h (NAME(aout,make_sections)): New function. diff --git a/bfd/elfcode.h b/bfd/elfcode.h index 5fd42992092..50878fc17bd 100644 --- a/bfd/elfcode.h +++ b/bfd/elfcode.h @@ -1171,6 +1171,17 @@ write_relocs (abfd, sec, xxx) dst_rela.r_offset = ptr->address; sym = *ptr->sym_ptr_ptr; + + /* If SYM is a section symbol for an input section, which + has been combined with other similar input sections (ld -r), + then adjust the addend by the output_offset of sym->section. + + Apparently elf_symbol_from_bfd_symbol doesn't provide a 1:1 + mapping from bfd symbol to elf symbols in this case. */ + if ((sym->flags & BSF_SECTION_SYM) + && sym->section) + ptr->addend += sym->section->output_offset; + if (sym == last_sym) n = last_sym_idx; else -- 2.30.2