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/] [gcc-4.2.2/] [gcc/] [config/] [i386/] [netware-crt0.c] - Diff between revs 38 and 154

Only display areas with differences | Details | Blame | View Log

Rev 38 Rev 154
/* Startup routines for NetWare.
/* Startup routines for NetWare.
   Contributed by Jan Beulich (jbeulich@novell.com)
   Contributed by Jan Beulich (jbeulich@novell.com)
   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
   Copyright (C) 2004, 2007 Free Software Foundation, Inc.
 
 
This file is part of GCC.
This file is part of GCC.
 
 
GCC is free software; you can redistribute it and/or modify
GCC 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, or (at your option)
the Free Software Foundation; either version 3, or (at your option)
any later version.
any later version.
 
 
GCC is distributed in the hope that it will be useful,
GCC 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 GCC; see the file COPYING3.  If not see
along with GCC; see the file COPYING3.  If not see
<http://www.gnu.org/licenses/>.  */
<http://www.gnu.org/licenses/>.  */
 
 
#include <stddef.h>
#include <stddef.h>
#include <stdint.h>
#include <stdint.h>
#include "unwind-dw2-fde.h"
#include "unwind-dw2-fde.h"
 
 
int __init_environment (void *);
int __init_environment (void *);
int __deinit_environment (void *);
int __deinit_environment (void *);
 
 
 
 
#define SECTION_DECL(name, decl) decl __attribute__((__section__(name)))
#define SECTION_DECL(name, decl) decl __attribute__((__section__(name)))
 
 
SECTION_DECL(".ctors",   void(*const __CTOR_LIST__)(void))
SECTION_DECL(".ctors",   void(*const __CTOR_LIST__)(void))
  = (void(*)(void))(intptr_t)-1;
  = (void(*)(void))(intptr_t)-1;
SECTION_DECL(".ctors$_", void(*const __CTOR_END__)(void)) = NULL;
SECTION_DECL(".ctors$_", void(*const __CTOR_END__)(void)) = NULL;
 
 
SECTION_DECL(".dtors",   void(*const __DTOR_LIST__)(void))
SECTION_DECL(".dtors",   void(*const __DTOR_LIST__)(void))
  = (void(*)(void))(intptr_t)-1;
  = (void(*)(void))(intptr_t)-1;
SECTION_DECL(".dtors$_", void(*const __DTOR_END__)(void)) = NULL;
SECTION_DECL(".dtors$_", void(*const __DTOR_END__)(void)) = NULL;
 
 
/* No need to use the __[de]register_frame_info_bases functions since
/* No need to use the __[de]register_frame_info_bases functions since
   for us the bases are NULL always anyway. */
   for us the bases are NULL always anyway. */
void __register_frame_info (const void *, struct object *)
void __register_frame_info (const void *, struct object *)
  __attribute__((__weak__));
  __attribute__((__weak__));
void *__deregister_frame_info (const void *) __attribute__((__weak__));
void *__deregister_frame_info (const void *) __attribute__((__weak__));
 
 
SECTION_DECL(".eh_frame", /*const*/ uint32_t __EH_FRAME_BEGIN__[]) = { };
SECTION_DECL(".eh_frame", /*const*/ uint32_t __EH_FRAME_BEGIN__[]) = { };
SECTION_DECL(".eh_frame$_", /*const*/ uint32_t __EH_FRAME_END__[]) = {0};
SECTION_DECL(".eh_frame$_", /*const*/ uint32_t __EH_FRAME_END__[]) = {0};
 
 
int
int
__init_environment (void *unused __attribute__((__unused__)))
__init_environment (void *unused __attribute__((__unused__)))
{
{
  void (* const * pctor)(void);
  void (* const * pctor)(void);
  static struct object object;
  static struct object object;
 
 
  if (__register_frame_info)
  if (__register_frame_info)
    __register_frame_info (__EH_FRAME_BEGIN__, &object);
    __register_frame_info (__EH_FRAME_BEGIN__, &object);
 
 
  for (pctor = &__CTOR_END__ - 1; pctor > &__CTOR_LIST__; --pctor)
  for (pctor = &__CTOR_END__ - 1; pctor > &__CTOR_LIST__; --pctor)
    if (*pctor != NULL)
    if (*pctor != NULL)
      (*pctor)();
      (*pctor)();
 
 
  return 0;
  return 0;
}
}
 
 
int
int
__deinit_environment (void *unused __attribute__((__unused__)))
__deinit_environment (void *unused __attribute__((__unused__)))
{
{
  /* This should be static to prevent calling the same destructor
  /* This should be static to prevent calling the same destructor
     twice (just in case where we get here multiple times).  */
     twice (just in case where we get here multiple times).  */
  static void (* const * pdtor)(void) = &__DTOR_LIST__ + 1;
  static void (* const * pdtor)(void) = &__DTOR_LIST__ + 1;
 
 
  while (pdtor < &__DTOR_END__)
  while (pdtor < &__DTOR_END__)
    if (*pdtor++ != NULL)
    if (*pdtor++ != NULL)
      pdtor[-1] ();
      pdtor[-1] ();
 
 
  if (__deregister_frame_info)
  if (__deregister_frame_info)
    __deregister_frame_info(__EH_FRAME_BEGIN__);
    __deregister_frame_info(__EH_FRAME_BEGIN__);
 
 
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

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