# This shell script emits C code -*- C -*- # to keep track of the machine type of Z80 object files # It does some substitutions. # Copyright (C) 2005-2022 Free Software Foundation, Inc. # This file is part of the GNU Binutils. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, # MA 02110-1301, USA. if [ x"${EMULATION_NAME}" = x"elf32z80" ]; then fragment <<EOF #include "elf/z80.h" EOF else fragment <<EOF static void gld${EMULATION_NAME}_after_open (void) { } EOF fi fragment <<EOF /* --- \begin{z80.em} */ /* Set the machine type of the output file based on types of inputs. */ static void z80_after_open (void) { bfd *abfd; /* For now, make sure all object files are of the same architecture. We may try to merge object files with different architecture together. */ for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next) { const bfd_arch_info_type *info; info = bfd_arch_get_compatible (link_info.output_bfd, abfd, false); if (info == NULL) einfo (_("%F%P: %pB: Instruction sets of object files incompatible\n"), abfd); else bfd_set_arch_info (link_info.output_bfd, info); } /* Call the standard elf routine. */ gld${EMULATION_NAME}_after_open (); } /* --- \end{z80.em} */ EOF LDEMUL_AFTER_OPEN=z80_after_open |