From 7ad34365726a22e728f4508049ac3ac9c63401c6 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 18 May 2000 17:12:31 +0000 Subject: [PATCH] Force relocs emited for an executable to contain virtual addresses. --- bfd/ChangeLog | 5 +++++ bfd/elflink.h | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index f386002ff6..795ba54ded 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2000-05-18 Momchil Velikov + + * elflink.h (elf_bfd_final_link, elf_link_input_bfd): When emiting + relocs for an executable, ensure that they are virtual addresses. + Thu May 18 10:55:47 2000 Jeffrey A Law (law@cygnus.com) * config.bfd (hppa*64*-*-hpux11*): New target triplet. diff --git a/bfd/elflink.h b/bfd/elflink.h index 749d13981c..5d86bbc533 100644 --- a/bfd/elflink.h +++ b/bfd/elflink.h @@ -4323,7 +4323,7 @@ elf_bfd_final_link (abfd, info) if (o != NULL) o->target_index = bfd_get_symcount (abfd); elfsym.st_shndx = i; - if (info->relocateable || info->emitrelocations || o == NULL) + if (info->relocateable || o == NULL) elfsym.st_value = 0; else elfsym.st_value = o->vma; @@ -5514,6 +5514,10 @@ elf_link_input_bfd (finfo, input_bfd) irela->r_offset += o->output_offset; + /* Relocs in an executable have to be virtual addresses. */ + if (finfo->info->emitrelocations) + irela->r_offset += o->output_section->vma; + r_symndx = ELF_R_SYM (irela->r_info); if (r_symndx == 0)