diff options
author | Nick Clifton <nickc@redhat.com> | 1999-08-19 13:04:45 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 1999-08-19 13:04:45 +0000 |
commit | 69e70d305635c2caacc43c2744b455ca84f8e322 (patch) | |
tree | a2be8de8de1739dcdaa81d9704d4b771247d068c /bfd/coff-mcore.c | |
parent | 98c1d4aab729f61101ac21f24f0c946cb5ceac23 (diff) | |
download | binutils-gdb-69e70d305635c2caacc43c2744b455ca84f8e322.tar.gz |
Add code to emit relocs into a base file.
Diffstat (limited to 'bfd/coff-mcore.c')
-rw-r--r-- | bfd/coff-mcore.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/bfd/coff-mcore.c b/bfd/coff-mcore.c index 199a5ab70f0..48f15259fc7 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: |