xref: /netbsd-src/external/gpl3/binutils.old/dist/ld/emultempl/z80.em (revision e992f068c547fd6e84b3f104dc2340adcc955732)
1# This shell script emits C code -*- C -*-
2# to keep track of the machine type of Z80 object files
3# It does some substitutions.
4#   Copyright (C) 2005-2022 Free Software Foundation, Inc.
5# This file is part of the GNU Binutils.
6#
7# This program is free software; you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation; either version 3 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program; if not, write to the Free Software
19# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
20# MA 02110-1301, USA.
21
22if [ x"${EMULATION_NAME}" = x"elf32z80" ]; then
23  fragment <<EOF
24#include "elf/z80.h"
25EOF
26else
27  fragment <<EOF
28static void
29gld${EMULATION_NAME}_after_open (void)
30{
31}
32EOF
33fi
34
35fragment <<EOF
36/* --- \begin{z80.em} */
37
38/* Set the machine type of the output file based on types of inputs.  */
39static void
40z80_after_open (void)
41{
42  bfd *abfd;
43
44  /* For now, make sure all object files are of the same architecture.
45     We may try to merge object files with different architecture together.  */
46  for (abfd = link_info.input_bfds; abfd != NULL; abfd = abfd->link.next)
47    {
48      const bfd_arch_info_type *info;
49      info = bfd_arch_get_compatible (link_info.output_bfd, abfd, false);
50      if (info == NULL)
51	einfo (_("%F%P: %pB: Instruction sets of object files incompatible\n"),
52	       abfd);
53      else
54        bfd_set_arch_info (link_info.output_bfd, info);
55    }
56
57  /* Call the standard elf routine.  */
58  gld${EMULATION_NAME}_after_open ();
59}
60
61/* --- \end{z80.em} */
62EOF
63
64LDEMUL_AFTER_OPEN=z80_after_open
65