From 69e70d305635c2caacc43c2744b455ca84f8e322 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Thu, 19 Aug 1999 13:04:45 +0000 Subject: Add code to emit relocs into a base file. --- bfd/coff-mcore.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'bfd/coff-mcore.c') diff --git a/bfd/coff-mcore.c b/bfd/coff-mcore.c index 199a5ab..48f1525 100644 --- a/bfd/coff-mcore.c +++ b/bfd/coff-mcore.c @@ -1,5 +1,5 @@ /* BFD back-end for Motorolla MCore COFF/PE - Copyright 1999 Free Software Foundation, Inc. + Copyright (C) 1999 Free Software Foundation, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -248,6 +248,25 @@ coff_mcore_link_hash_table_create (abfd) return & ret->root.root; } +/* Add an entry to the base file. */ +static void +mcore_emit_base_file_entry (info, output_bfd, input_section, reloc_offset) + struct bfd_link_info * info; + bfd * output_bfd; + asection * input_section; + bfd_vma reloc_offset; +{ + bfd_vma addr = reloc_offset + - input_section->vma + + input_section->output_offset + + input_section->output_section->vma; + + if (coff_data (output_bfd)->pe) + addr -= pe_data (output_bfd)->pe_opthdr.ImageBase; + + fwrite (&addr, 1, sizeof (addr), (FILE *) info->base_file); +} + /*ARGSUSED*/ static bfd_reloc_status_type mcore_coff_unsupported_reloc (abfd, reloc_entry, symbol, data, input_section, @@ -512,6 +531,13 @@ coff_mcore_relocate_section (output_bfd, info, input_bfd, input_section, break; } + if (info->base_file) + { + /* Emit a reloc if the backend thinks it needs it. */ + if (sym && pe_data (output_bfd)->in_reloc_p (output_bfd, howto)) + mcore_emit_base_file_entry (info, output_bfd, input_section, rel->r_vaddr); + } + switch (rstat) { default: -- cgit v1.1