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

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc2/] [gcc/] [config/] [vxworks.h] - Diff between revs 282 and 384

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

Rev 282 Rev 384
/* Common VxWorks target definitions for GNU compiler.
/* Common VxWorks target definitions for GNU compiler.
   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007
   Free Software Foundation, Inc.
   Free Software Foundation, Inc.
   Contributed by Wind River Systems.
   Contributed by Wind River Systems.
   Rewritten by CodeSourcery, LLC.
   Rewritten by CodeSourcery, LLC.
 
 
This file is part of GCC.
This file is part of GCC.
 
 
GCC is free software; you can redistribute it and/or modify it under
GCC 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
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 3, or (at your option) any later
Software Foundation; either version 3, or (at your option) any later
version.
version.
 
 
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.
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/>.  */
 
 
/* Assert that we are targetting VxWorks.  */
/* Assert that we are targetting VxWorks.  */
#undef TARGET_VXWORKS
#undef TARGET_VXWORKS
#define TARGET_VXWORKS 1
#define TARGET_VXWORKS 1
 
 
/* In kernel mode, VxWorks provides all the libraries itself, as well as
/* In kernel mode, VxWorks provides all the libraries itself, as well as
   the functionality of startup files, etc.  In RTP mode, it behaves more
   the functionality of startup files, etc.  In RTP mode, it behaves more
   like a traditional Unix, with more external files.  Most of our specs
   like a traditional Unix, with more external files.  Most of our specs
   must be aware of the difference.  */
   must be aware of the difference.  */
 
 
/* We look for the VxWorks header files using the environment
/* We look for the VxWorks header files using the environment
   variables that are set in VxWorks to indicate the location of the
   variables that are set in VxWorks to indicate the location of the
   system header files.  We use -idirafter so that the GCC's own
   system header files.  We use -idirafter so that the GCC's own
   header-file directories (containing <stddef.h>, etc.) come before
   header-file directories (containing <stddef.h>, etc.) come before
   the VxWorks system header directories.  */
   the VxWorks system header directories.  */
 
 
/* Since we provide a default -isystem, expand -isystem on the command
/* Since we provide a default -isystem, expand -isystem on the command
   line early.  */
   line early.  */
#undef VXWORKS_ADDITIONAL_CPP_SPEC
#undef VXWORKS_ADDITIONAL_CPP_SPEC
#define VXWORKS_ADDITIONAL_CPP_SPEC             \
#define VXWORKS_ADDITIONAL_CPP_SPEC             \
 "%{!nostdinc:                                  \
 "%{!nostdinc:                                  \
    %{isystem*} -idirafter                      \
    %{isystem*} -idirafter                      \
    %{mrtp: %:getenv(WIND_USR /h)               \
    %{mrtp: %:getenv(WIND_USR /h)               \
      ;:    %:getenv(WIND_BASE /target/h)}}"
      ;:    %:getenv(WIND_BASE /target/h)}}"
 
 
/* The references to __init and __fini will be satisfied by
/* The references to __init and __fini will be satisfied by
   libc_internal.a.  */
   libc_internal.a.  */
#undef VXWORKS_LIB_SPEC
#undef VXWORKS_LIB_SPEC
#define VXWORKS_LIB_SPEC                                                \
#define VXWORKS_LIB_SPEC                                                \
"%{mrtp:%{shared:-u " USER_LABEL_PREFIX "__init -u " USER_LABEL_PREFIX "__fini} \
"%{mrtp:%{shared:-u " USER_LABEL_PREFIX "__init -u " USER_LABEL_PREFIX "__fini} \
        %{!shared:%{non-static:-u " USER_LABEL_PREFIX "_STI__6__rtld -ldl} \
        %{!shared:%{non-static:-u " USER_LABEL_PREFIX "_STI__6__rtld -ldl} \
                  --start-group -lc -lgcc -lc_internal -lnet -ldsi      \
                  --start-group -lc -lgcc -lc_internal -lnet -ldsi      \
                  --end-group}}"
                  --end-group}}"
 
 
/* The no-op spec for "-shared" below is present because otherwise GCC
/* The no-op spec for "-shared" below is present because otherwise GCC
   will treat it as an unrecognized option.  */
   will treat it as an unrecognized option.  */
#undef VXWORKS_LINK_SPEC
#undef VXWORKS_LINK_SPEC
#define VXWORKS_LINK_SPEC                               \
#define VXWORKS_LINK_SPEC                               \
"%{!mrtp:-r}                                            \
"%{!mrtp:-r}                                            \
 %{!shared:                                             \
 %{!shared:                                             \
   %{mrtp:-q %{h*}                                      \
   %{mrtp:-q %{h*}                                      \
          %{R*} %{!Wl,-T*: %{!T*: %(link_start) }}      \
          %{R*} %{!Wl,-T*: %{!T*: %(link_start) }}      \
          %(link_target) %(link_os)}}                   \
          %(link_target) %(link_os)}}                   \
 %{v:-v}                                                \
 %{v:-v}                                                \
 %{shared:-shared}                                      \
 %{shared:-shared}                                      \
 %{Bstatic:-Bstatic}                                    \
 %{Bstatic:-Bstatic}                                    \
 %{Bdynamic:-Bdynamic}                                  \
 %{Bdynamic:-Bdynamic}                                  \
 %{!Xbind-lazy:-z now}                                  \
 %{!Xbind-lazy:-z now}                                  \
 %{Xbind-now:%{Xbind-lazy:                              \
 %{Xbind-now:%{Xbind-lazy:                              \
   %e-Xbind-now and -Xbind-lazy are incompatible}}      \
   %e-Xbind-now and -Xbind-lazy are incompatible}}      \
 %{mrtp:%{!shared:%{!non-static:-static}                \
 %{mrtp:%{!shared:%{!non-static:-static}                \
                  %{non-static:--force-dynamic --export-dynamic}}}"
                  %{non-static:--force-dynamic --export-dynamic}}}"
 
 
/* For VxWorks, the system provides libc_internal.a.  This is a superset
/* For VxWorks, the system provides libc_internal.a.  This is a superset
   of libgcc.a; we want to use it.  Make sure not to dynamically export
   of libgcc.a; we want to use it.  Make sure not to dynamically export
   any of its symbols, though.  Always look for libgcc.a first so that
   any of its symbols, though.  Always look for libgcc.a first so that
   we get the latest versions of the GNU intrinsics during our builds.  */
   we get the latest versions of the GNU intrinsics during our builds.  */
#undef VXWORKS_LIBGCC_SPEC
#undef VXWORKS_LIBGCC_SPEC
#define VXWORKS_LIBGCC_SPEC \
#define VXWORKS_LIBGCC_SPEC \
  "-lgcc %{mrtp:--exclude-libs=libc_internal,libgcc -lc_internal}"
  "-lgcc %{mrtp:--exclude-libs=libc_internal,libgcc -lc_internal}"
 
 
#undef VXWORKS_STARTFILE_SPEC
#undef VXWORKS_STARTFILE_SPEC
#define VXWORKS_STARTFILE_SPEC "%{mrtp:%{!shared:-l:crt0.o}}"
#define VXWORKS_STARTFILE_SPEC "%{mrtp:%{!shared:-l:crt0.o}}"
#define VXWORKS_ENDFILE_SPEC ""
#define VXWORKS_ENDFILE_SPEC ""
 
 
/* Do VxWorks-specific parts of OVERRIDE_OPTIONS.  */
/* Do VxWorks-specific parts of OVERRIDE_OPTIONS.  */
#undef VXWORKS_OVERRIDE_OPTIONS
#undef VXWORKS_OVERRIDE_OPTIONS
#define VXWORKS_OVERRIDE_OPTIONS vxworks_override_options ()
#define VXWORKS_OVERRIDE_OPTIONS vxworks_override_options ()
extern void vxworks_override_options (void);
extern void vxworks_override_options (void);
 
 
/* Only RTPs support prioritized constructors and destructors:
/* Only RTPs support prioritized constructors and destructors:
   the implementation relies on numbered .ctors* sections.  */
   the implementation relies on numbered .ctors* sections.  */
#define SUPPORTS_INIT_PRIORITY TARGET_VXWORKS_RTP
#define SUPPORTS_INIT_PRIORITY TARGET_VXWORKS_RTP
 
 
/* VxWorks requires special handling of constructors and destructors.
/* VxWorks requires special handling of constructors and destructors.
   All VxWorks configurations must use these functions.  */
   All VxWorks configurations must use these functions.  */
#undef TARGET_ASM_CONSTRUCTOR
#undef TARGET_ASM_CONSTRUCTOR
#define TARGET_ASM_CONSTRUCTOR vxworks_asm_out_constructor
#define TARGET_ASM_CONSTRUCTOR vxworks_asm_out_constructor
#undef TARGET_ASM_DESTRUCTOR
#undef TARGET_ASM_DESTRUCTOR
#define TARGET_ASM_DESTRUCTOR vxworks_asm_out_destructor
#define TARGET_ASM_DESTRUCTOR vxworks_asm_out_destructor
extern void vxworks_asm_out_constructor (rtx symbol, int priority);
extern void vxworks_asm_out_constructor (rtx symbol, int priority);
extern void vxworks_asm_out_destructor (rtx symbol, int priority);
extern void vxworks_asm_out_destructor (rtx symbol, int priority);
 
 
/* Override the vxworks-dummy.h definitions.  TARGET_VXWORKS_RTP
/* Override the vxworks-dummy.h definitions.  TARGET_VXWORKS_RTP
   is defined by vxworks.opt.  */
   is defined by vxworks.opt.  */
#undef VXWORKS_GOTT_BASE
#undef VXWORKS_GOTT_BASE
#define VXWORKS_GOTT_BASE "__GOTT_BASE__"
#define VXWORKS_GOTT_BASE "__GOTT_BASE__"
#undef VXWORKS_GOTT_INDEX
#undef VXWORKS_GOTT_INDEX
#define VXWORKS_GOTT_INDEX "__GOTT_INDEX__"
#define VXWORKS_GOTT_INDEX "__GOTT_INDEX__"
 
 
/* As for svr4.h (which not all VxWorks targets include). */
/* As for svr4.h (which not all VxWorks targets include). */
#undef PTRDIFF_TYPE
#undef PTRDIFF_TYPE
#define PTRDIFF_TYPE "int"
#define PTRDIFF_TYPE "int"
 
 
#undef SIZE_TYPE
#undef SIZE_TYPE
#define SIZE_TYPE "unsigned int"
#define SIZE_TYPE "unsigned int"
 
 
/* Both kernels and RTPs have the facilities required by this macro.  */
/* Both kernels and RTPs have the facilities required by this macro.  */
#define TARGET_POSIX_IO
#define TARGET_POSIX_IO
 
 
/* A VxWorks implementation of TARGET_OS_CPP_BUILTINS.  */
/* A VxWorks implementation of TARGET_OS_CPP_BUILTINS.  */
#define VXWORKS_OS_CPP_BUILTINS()                                       \
#define VXWORKS_OS_CPP_BUILTINS()                                       \
  do                                                                    \
  do                                                                    \
    {                                                                   \
    {                                                                   \
      builtin_define ("__vxworks");                                     \
      builtin_define ("__vxworks");                                     \
      builtin_define ("__VXWORKS__");                                   \
      builtin_define ("__VXWORKS__");                                   \
      builtin_assert ("system=unix");                                   \
      builtin_assert ("system=unix");                                   \
      if (TARGET_VXWORKS_RTP)                                           \
      if (TARGET_VXWORKS_RTP)                                           \
        builtin_define ("__RTP__");                                     \
        builtin_define ("__RTP__");                                     \
      else                                                              \
      else                                                              \
        builtin_define ("_WRS_KERNEL");                                 \
        builtin_define ("_WRS_KERNEL");                                 \
    }                                                                   \
    }                                                                   \
  while (0)
  while (0)
 
 
#define VXWORKS_KIND VXWORKS_KIND_NORMAL
#define VXWORKS_KIND VXWORKS_KIND_NORMAL
 
 
/* The diab linker does not handle .gnu_attribute sections.  */
/* The diab linker does not handle .gnu_attribute sections.  */
#undef HAVE_AS_GNU_ATTRIBUTE
#undef HAVE_AS_GNU_ATTRIBUTE
 
 

powered by: WebSVN 2.1.0

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