OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [binutils-2.18.50/] [ld/] [emultempl/] [ticoff.em] - Diff between revs 38 and 156

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 38 Rev 156
# This shell script emits a C file. -*- C -*-
# This shell script emits a C file. -*- C -*-
# It does some substitutions.
# It does some substitutions.
(echo;echo;echo;echo)>e${EMULATION_NAME}.c # there, now line numbers match ;-)
(echo;echo;echo;echo)>e${EMULATION_NAME}.c # there, now line numbers match ;-)
fragment <
fragment <
/* This file is part of GLD, the Gnu Linker.
/* This file is part of GLD, the Gnu Linker.
   Copyright 1999, 2000, 2002, 2003, 2004, 2007
   Copyright 1999, 2000, 2002, 2003, 2004, 2007
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
   This file is part of the GNU Binutils.
   This file is part of the GNU Binutils.
   This program is free software; you can redistribute it and/or modify
   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
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.
   (at your option) any later version.
   This program is distributed in the hope that it will be useful,
   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
   GNU General Public License for more details.
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
   MA 02110-1301, USA.  */
   MA 02110-1301, USA.  */
/* For TI COFF */
/* For TI COFF */
/* Need to determine load and run pages for output sections */
/* Need to determine load and run pages for output sections */
#define TARGET_IS_${EMULATION_NAME}
#define TARGET_IS_${EMULATION_NAME}
#include "sysdep.h"
#include "sysdep.h"
#include "bfd.h"
#include "bfd.h"
#include "bfdlink.h"
#include "bfdlink.h"
#include "getopt.h"
#include "getopt.h"
#include "ld.h"
#include "ld.h"
#include "ldmain.h"
#include "ldmain.h"
#include "ldmisc.h"
#include "ldmisc.h"
#include "ldexp.h"
#include "ldexp.h"
#include "ldlang.h"
#include "ldlang.h"
#include "ldfile.h"
#include "ldfile.h"
#include "ldemul.h"
#include "ldemul.h"
static int coff_version;
static int coff_version;
/* TI COFF extra command line options */
/* TI COFF extra command line options */
#define OPTION_COFF_FORMAT              (300 + 1)
#define OPTION_COFF_FORMAT              (300 + 1)
static void
static void
gld${EMULATION_NAME}_add_options
gld${EMULATION_NAME}_add_options
  (int ns ATTRIBUTE_UNUSED, char **shortopts ATTRIBUTE_UNUSED, int nl,
  (int ns ATTRIBUTE_UNUSED, char **shortopts ATTRIBUTE_UNUSED, int nl,
   struct option **longopts, int nrl ATTRIBUTE_UNUSED,
   struct option **longopts, int nrl ATTRIBUTE_UNUSED,
   struct option **really_longopts ATTRIBUTE_UNUSED)
   struct option **really_longopts ATTRIBUTE_UNUSED)
{
{
  static const struct option xtra_long[] = {
  static const struct option xtra_long[] = {
    /* TI COFF options */
    /* TI COFF options */
    {"format", required_argument, NULL, OPTION_COFF_FORMAT },
    {"format", required_argument, NULL, OPTION_COFF_FORMAT },
    {NULL, no_argument, NULL, 0}
    {NULL, no_argument, NULL, 0}
  };
  };
  *longopts = (struct option *)
  *longopts = (struct option *)
    xrealloc (*longopts, nl * sizeof (struct option) + sizeof (xtra_long));
    xrealloc (*longopts, nl * sizeof (struct option) + sizeof (xtra_long));
  memcpy (*longopts + nl, &xtra_long, sizeof (xtra_long));
  memcpy (*longopts + nl, &xtra_long, sizeof (xtra_long));
}
}
static void
static void
gld_${EMULATION_NAME}_list_options (FILE * file)
gld_${EMULATION_NAME}_list_options (FILE * file)
{
{
  fprintf (file, _("  --format 0|1|2              Specify which COFF version to use\n"));
  fprintf (file, _("  --format 0|1|2              Specify which COFF version to use\n"));
}
}
static bfd_boolean
static bfd_boolean
gld${EMULATION_NAME}_handle_option (int optc)
gld${EMULATION_NAME}_handle_option (int optc)
{
{
  switch (optc)
  switch (optc)
    {
    {
    default:
    default:
      return FALSE;
      return FALSE;
    case OPTION_COFF_FORMAT:
    case OPTION_COFF_FORMAT:
      if ((*optarg == '0' || *optarg == '1' || *optarg == '2')
      if ((*optarg == '0' || *optarg == '1' || *optarg == '2')
          && optarg[1] == '\0')
          && optarg[1] == '\0')
      {
      {
        static char buf[] = "coffX-${OUTPUT_FORMAT_TEMPLATE}";
        static char buf[] = "coffX-${OUTPUT_FORMAT_TEMPLATE}";
        coff_version = *optarg - '0';
        coff_version = *optarg - '0';
        buf[4] = *optarg;
        buf[4] = *optarg;
        lang_add_output_format (buf, NULL, NULL, 0);
        lang_add_output_format (buf, NULL, NULL, 0);
      }
      }
      else
      else
        {
        {
          einfo (_("%P%F: invalid COFF format version %s\n"), optarg);
          einfo (_("%P%F: invalid COFF format version %s\n"), optarg);
        }
        }
      break;
      break;
    }
    }
  return FALSE;
  return FALSE;
}
}
static void
static void
gld_${EMULATION_NAME}_before_parse(void)
gld_${EMULATION_NAME}_before_parse(void)
{
{
#ifndef TARGET_                 /* I.e., if not generic.  */
#ifndef TARGET_                 /* I.e., if not generic.  */
  ldfile_set_output_arch ("`echo ${ARCH}`", bfd_arch_unknown);
  ldfile_set_output_arch ("`echo ${ARCH}`", bfd_arch_unknown);
#endif /* not TARGET_ */
#endif /* not TARGET_ */
}
}
static char *
static char *
gld_${EMULATION_NAME}_get_script (int *isfile)
gld_${EMULATION_NAME}_get_script (int *isfile)
EOF
EOF
if test -n "$COMPILE_IN"
if test -n "$COMPILE_IN"
then
then
# Scripts compiled in.
# Scripts compiled in.
# sed commands to quote an ld script as a C string.
# sed commands to quote an ld script as a C string.
sc='s/["\\]/\\&/g
sc='s/["\\]/\\&/g
s/$/\\n\\/
s/$/\\n\\/
1s/^/"/
1s/^/"/
$s/$/n"/
$s/$/n"/
'
'
fragment <
fragment <
{
{
  *isfile = 0;
  *isfile = 0;
  if (link_info.relocatable && config.build_constructors)
  if (link_info.relocatable && config.build_constructors)
    return `sed "$sc" ldscripts/${EMULATION_NAME}.xu`;
    return `sed "$sc" ldscripts/${EMULATION_NAME}.xu`;
  else if (link_info.relocatable)
  else if (link_info.relocatable)
    return `sed "$sc" ldscripts/${EMULATION_NAME}.xr`;
    return `sed "$sc" ldscripts/${EMULATION_NAME}.xr`;
  else if (!config.text_read_only)
  else if (!config.text_read_only)
    return `sed "$sc" ldscripts/${EMULATION_NAME}.xbn`;
    return `sed "$sc" ldscripts/${EMULATION_NAME}.xbn`;
  else if (!config.magic_demand_paged)
  else if (!config.magic_demand_paged)
    return `sed "$sc" ldscripts/${EMULATION_NAME}.xn`;
    return `sed "$sc" ldscripts/${EMULATION_NAME}.xn`;
  else
  else
    return `sed "$sc" ldscripts/${EMULATION_NAME}.x`;
    return `sed "$sc" ldscripts/${EMULATION_NAME}.x`;
}
}
EOF
EOF
else
else
# Scripts read from the filesystem.
# Scripts read from the filesystem.
fragment <
fragment <
{
{
  *isfile = 1;
  *isfile = 1;
  if (link_info.relocatable && config.build_constructors)
  if (link_info.relocatable && config.build_constructors)
    return "ldscripts/${EMULATION_NAME}.xu";
    return "ldscripts/${EMULATION_NAME}.xu";
  else if (link_info.relocatable)
  else if (link_info.relocatable)
    return "ldscripts/${EMULATION_NAME}.xr";
    return "ldscripts/${EMULATION_NAME}.xr";
  else if (!config.text_read_only)
  else if (!config.text_read_only)
    return "ldscripts/${EMULATION_NAME}.xbn";
    return "ldscripts/${EMULATION_NAME}.xbn";
  else if (!config.magic_demand_paged)
  else if (!config.magic_demand_paged)
    return "ldscripts/${EMULATION_NAME}.xn";
    return "ldscripts/${EMULATION_NAME}.xn";
  else
  else
    return "ldscripts/${EMULATION_NAME}.x";
    return "ldscripts/${EMULATION_NAME}.x";
}
}
EOF
EOF
fi
fi
fragment <
fragment <
struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation =
{
{
  gld_${EMULATION_NAME}_before_parse,
  gld_${EMULATION_NAME}_before_parse,
  syslib_default,
  syslib_default,
  hll_default,
  hll_default,
  after_parse_default,
  after_parse_default,
  after_open_default,
  after_open_default,
  after_allocation_default,
  after_allocation_default,
  set_output_arch_default,
  set_output_arch_default,
  ldemul_default_target,
  ldemul_default_target,
  before_allocation_default,
  before_allocation_default,
  gld_${EMULATION_NAME}_get_script,
  gld_${EMULATION_NAME}_get_script,
  "${EMULATION_NAME}",
  "${EMULATION_NAME}",
  "${OUTPUT_FORMAT}",
  "${OUTPUT_FORMAT}",
  finish_default,
  finish_default,
  NULL, /* create output section statements */
  NULL, /* create output section statements */
  NULL, /* open dynamic archive */
  NULL, /* open dynamic archive */
  NULL, /* place orphan */
  NULL, /* place orphan */
  NULL, /* set_symbols */
  NULL, /* set_symbols */
  NULL, /* parse_args */
  NULL, /* parse_args */
  gld${EMULATION_NAME}_add_options,
  gld${EMULATION_NAME}_add_options,
  gld${EMULATION_NAME}_handle_option,
  gld${EMULATION_NAME}_handle_option,
  NULL, /* unrecognized_file */
  NULL, /* unrecognized_file */
  gld_${EMULATION_NAME}_list_options,
  gld_${EMULATION_NAME}_list_options,
  NULL, /* recognized file */
  NULL, /* recognized file */
  NULL, /* find_potential_libraries */
  NULL, /* find_potential_libraries */
  NULL  /* new_vers_pattern */
  NULL  /* new_vers_pattern */
};
};
EOF
EOF
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.