OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [binutils-2.18.50/] [ld/] [emultempl/] [linux.em] - Diff between revs 156 and 816

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

Rev 156 Rev 816
# This shell script emits a C file. -*- C -*-
# This shell script emits a C file. -*- C -*-
# It does some substitutions.
# It does some substitutions.
if [ -z "$MACHINE" ]; then
if [ -z "$MACHINE" ]; then
  OUTPUT_ARCH=${ARCH}
  OUTPUT_ARCH=${ARCH}
else
else
  OUTPUT_ARCH=${ARCH}:${MACHINE}
  OUTPUT_ARCH=${ARCH}:${MACHINE}
fi
fi
fragment <
fragment <
/* This file is is generated by a shell script.  DO NOT EDIT! */
/* This file is is generated by a shell script.  DO NOT EDIT! */
/* Linux a.out emulation code for ${EMULATION_NAME}
/* Linux a.out emulation code for ${EMULATION_NAME}
   Copyright 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002,
   Copyright 1991, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002,
   2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
   2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
   Written by Steve Chamberlain 
   Written by Steve Chamberlain 
   Linux support by Eric Youngdale 
   Linux support by Eric Youngdale 
   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.  */
#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 "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 void
static void
gld${EMULATION_NAME}_before_parse (void)
gld${EMULATION_NAME}_before_parse (void)
{
{
  ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
  ldfile_set_output_arch ("${OUTPUT_ARCH}", bfd_arch_`echo ${ARCH} | sed -e 's/:.*//'`);
  config.dynamic_link = TRUE;
  config.dynamic_link = TRUE;
  config.has_shared = TRUE;
  config.has_shared = TRUE;
}
}
/* Try to open a dynamic archive.  This is where we know that Linux
/* Try to open a dynamic archive.  This is where we know that Linux
   dynamic libraries have an extension of .sa.  */
   dynamic libraries have an extension of .sa.  */
static bfd_boolean
static bfd_boolean
gld${EMULATION_NAME}_open_dynamic_archive
gld${EMULATION_NAME}_open_dynamic_archive
  (const char *arch, search_dirs_type *search, lang_input_statement_type *entry)
  (const char *arch, search_dirs_type *search, lang_input_statement_type *entry)
{
{
  char *string;
  char *string;
  if (! entry->is_archive)
  if (! entry->is_archive)
    return FALSE;
    return FALSE;
  string = (char *) xmalloc (strlen (search->name)
  string = (char *) xmalloc (strlen (search->name)
                             + strlen (entry->filename)
                             + strlen (entry->filename)
                             + strlen (arch)
                             + strlen (arch)
                             + sizeof "/lib.sa");
                             + sizeof "/lib.sa");
  sprintf (string, "%s/lib%s%s.sa", search->name, entry->filename, arch);
  sprintf (string, "%s/lib%s%s.sa", search->name, entry->filename, arch);
  if (! ldfile_try_open_bfd (string, entry))
  if (! ldfile_try_open_bfd (string, entry))
    {
    {
      free (string);
      free (string);
      return FALSE;
      return FALSE;
    }
    }
  entry->filename = string;
  entry->filename = string;
  return TRUE;
  return TRUE;
}
}
/* This is called by the create_output_section_statements routine via
/* This is called by the create_output_section_statements routine via
   lang_for_each_statement.  It locates any address assignment to
   lang_for_each_statement.  It locates any address assignment to
   .text, and modifies it to include the size of the headers.  This
   .text, and modifies it to include the size of the headers.  This
   causes -Ttext to mean the starting address of the header, rather
   causes -Ttext to mean the starting address of the header, rather
   than the starting address of .text, which is compatible with other
   than the starting address of .text, which is compatible with other
   Linux tools.  */
   Linux tools.  */
static void
static void
gld${EMULATION_NAME}_find_address_statement (lang_statement_union_type *s)
gld${EMULATION_NAME}_find_address_statement (lang_statement_union_type *s)
{
{
  if (s->header.type == lang_address_statement_enum
  if (s->header.type == lang_address_statement_enum
      && strcmp (s->address_statement.section_name, ".text") == 0)
      && strcmp (s->address_statement.section_name, ".text") == 0)
    {
    {
      ASSERT (s->address_statement.address->type.node_class == etree_value);
      ASSERT (s->address_statement.address->type.node_class == etree_value);
      s->address_statement.address->value.value += 0x20;
      s->address_statement.address->value.value += 0x20;
    }
    }
}
}
/* This is called before opening the input BFD's.  */
/* This is called before opening the input BFD's.  */
static void
static void
gld${EMULATION_NAME}_create_output_section_statements (void)
gld${EMULATION_NAME}_create_output_section_statements (void)
{
{
  lang_for_each_statement (gld${EMULATION_NAME}_find_address_statement);
  lang_for_each_statement (gld${EMULATION_NAME}_find_address_statement);
}
}
/* This is called after the sections have been attached to output
/* This is called after the sections have been attached to output
   sections, but before any sizes or addresses have been set.  */
   sections, but before any sizes or addresses have been set.  */
static void
static void
gld${EMULATION_NAME}_before_allocation (void)
gld${EMULATION_NAME}_before_allocation (void)
{
{
  if (link_info.relocatable)
  if (link_info.relocatable)
    return;
    return;
  /* Let the backend work out the sizes of any sections required by
  /* Let the backend work out the sizes of any sections required by
     dynamic linking.  */
     dynamic linking.  */
  if (! bfd_${EMULATION_NAME}_size_dynamic_sections (link_info.output_bfd,
  if (! bfd_${EMULATION_NAME}_size_dynamic_sections (link_info.output_bfd,
                                                     &link_info))
                                                     &link_info))
    einfo ("%P%F: failed to set dynamic section sizes: %E\n");
    einfo ("%P%F: failed to set dynamic section sizes: %E\n");
  before_allocation_default ();
  before_allocation_default ();
}
}
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="-f stringify.sed"
sc="-f stringify.sed"
fragment <
fragment <
{
{
  *isfile = 0;
  *isfile = 0;
  if (link_info.relocatable && config.build_constructors)
  if (link_info.relocatable && config.build_constructors)
    return
    return
EOF
EOF
sed $sc ldscripts/${EMULATION_NAME}.xu                 >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xu                 >> e${EMULATION_NAME}.c
echo '  ; else if (link_info.relocatable) return'     >> e${EMULATION_NAME}.c
echo '  ; else if (link_info.relocatable) return'     >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xr                 >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xr                 >> e${EMULATION_NAME}.c
echo '  ; else if (!config.text_read_only) return'     >> e${EMULATION_NAME}.c
echo '  ; else if (!config.text_read_only) return'     >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xbn                >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xbn                >> e${EMULATION_NAME}.c
echo '  ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c
echo '  ; else if (!config.magic_demand_paged) return' >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xn                 >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.xn                 >> e${EMULATION_NAME}.c
echo '  ; else return'                                 >> e${EMULATION_NAME}.c
echo '  ; else return'                                 >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.x                  >> e${EMULATION_NAME}.c
sed $sc ldscripts/${EMULATION_NAME}.x                  >> e${EMULATION_NAME}.c
echo '; }'                                             >> e${EMULATION_NAME}.c
echo '; }'                                             >> e${EMULATION_NAME}.c
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,
  gld${EMULATION_NAME}_before_allocation,
  gld${EMULATION_NAME}_before_allocation,
  gld${EMULATION_NAME}_get_script,
  gld${EMULATION_NAME}_get_script,
  "${EMULATION_NAME}",
  "${EMULATION_NAME}",
  "${OUTPUT_FORMAT}",
  "${OUTPUT_FORMAT}",
  finish_default,
  finish_default,
  gld${EMULATION_NAME}_create_output_section_statements,
  gld${EMULATION_NAME}_create_output_section_statements,
  gld${EMULATION_NAME}_open_dynamic_archive,
  gld${EMULATION_NAME}_open_dynamic_archive,
  NULL, /* place orphan */
  NULL, /* place orphan */
  NULL, /* set symbols */
  NULL, /* set symbols */
  NULL, /* parse args */
  NULL, /* parse args */
  NULL, /* add_options */
  NULL, /* add_options */
  NULL, /* handle_option */
  NULL, /* handle_option */
  NULL, /* unrecognized file */
  NULL, /* unrecognized file */
  NULL, /* list options */
  NULL, /* 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.