85c64bbee9
* configure: Regenerate. * configure.ac (--enable-as-accelerator-for) (--enable-offload-targets): New configure options. gcc/ * Makefile.in (real_target_noncanonical, accel_dir_suffix) (enable_as_accelerator): New variables substituted by configure. (libsubdir, libexecsubdir, unlibsubdir): Tweak for the possibility of being configured as an offload compiler. (DRIVER_DEFINES): Pass new defines DEFAULT_REAL_TARGET_MACHINE and ACCEL_DIR_SUFFIX. (install-cpp, install-common, install_driver, install-gcc-ar): Do not install for the offload compiler. * config.in: Regenerate. * configure: Regenerate. * configure.ac (real_target_noncanonical, accel_dir_suffix) (enable_as_accelerator): Compute new variables. (ACCEL_COMPILER): Define if the compiler is built as the accel compiler. (OFFLOAD_TARGETS): List of target names suitable for offloading. (ENABLE_OFFLOADING): Define if list of offload targets is not empty. gcc/cp/ * Make-lang.in (c++.install-common): Do not install for the offload compiler. gcc/doc/ * install.texi (Options specification): Document --enable-as-accelerator-for and --enable-offload-targets. gcc/fortran/ * Make-lang.in (fortran.install-common): Do not install for the offload compiler. libgcc/ * Makefile.in (crtoffloadbegin$(objext)): New rule. (crtoffloadend$(objext)): Likewise. * configure: Regenerate. * configure.ac (accel_dir_suffix): Compute new variable. (extra_parts): Add crtoffloadbegin.o and crtoffloadend.o if enable_offload_targets is not empty. * offloadstuff.c: New file. libgomp/ * config.h.in: Regenerate. * configure: Regenerate. * configure.ac: Check for libdl, required for plugin support. (PLUGIN_SUPPORT): Define if plugins are supported. (enable_offload_targets): Support Intel MIC targets. (OFFLOAD_TARGETS): List of target names suitable for offloading. lto-plugin/ * Makefile.am (libexecsubdir): Tweak for the possibility of being configured for offload compiler. (accel_dir_suffix, real_target_noncanonical): New variables substituted by configure. * Makefile.in: Regenerate. * configure: Regenerate. * configure.ac (accel_dir_suffix, real_target_noncanonical): Compute new variables. Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com> Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com> Co-Authored-By: Thomas Schwinge <thomas@codesourcery.com> From-SVN: r217485
81 lines
2.6 KiB
C
81 lines
2.6 KiB
C
/* Specialized bits of code needed for the offloading tables.
|
|
Copyright (C) 2014 Free Software Foundation, Inc.
|
|
|
|
This file is part of GCC.
|
|
|
|
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
|
|
Software Foundation; either version 3, or (at your option) any later
|
|
version.
|
|
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
Under Section 7 of GPL version 3, you are granted additional
|
|
permissions described in the GCC Runtime Library Exception, version
|
|
3.1, as published by the Free Software Foundation.
|
|
|
|
You should have received a copy of the GNU General Public License and
|
|
a copy of the GCC Runtime Library Exception along with this program;
|
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
/* Target machine header files require this define. */
|
|
#define IN_LIBGCC2
|
|
|
|
/* FIXME: Including auto-host is incorrect, but until we have
|
|
identified the set of defines that need to go into auto-target.h,
|
|
this will have to do. */
|
|
#include "auto-host.h"
|
|
#undef caddr_t
|
|
#undef pid_t
|
|
#undef rlim_t
|
|
#undef ssize_t
|
|
#undef vfork
|
|
#include "tconfig.h"
|
|
#include "tsystem.h"
|
|
#include "coretypes.h"
|
|
#include "tm.h"
|
|
#include "libgcc_tm.h"
|
|
|
|
#define OFFLOAD_FUNC_TABLE_SECTION_NAME ".gnu.offload_funcs"
|
|
#define OFFLOAD_VAR_TABLE_SECTION_NAME ".gnu.offload_vars"
|
|
|
|
#ifdef CRT_BEGIN
|
|
|
|
#if defined(HAVE_GAS_HIDDEN) && defined(ENABLE_OFFLOADING)
|
|
void *__offload_func_table[0]
|
|
__attribute__ ((__used__, visibility ("hidden"),
|
|
section (OFFLOAD_FUNC_TABLE_SECTION_NAME))) = { };
|
|
void *__offload_var_table[0]
|
|
__attribute__ ((__used__, visibility ("hidden"),
|
|
section (OFFLOAD_VAR_TABLE_SECTION_NAME))) = { };
|
|
#endif
|
|
|
|
#elif defined CRT_END
|
|
|
|
#if defined(HAVE_GAS_HIDDEN) && defined(ENABLE_OFFLOADING)
|
|
void *__offload_funcs_end[0]
|
|
__attribute__ ((__used__, visibility ("hidden"),
|
|
section (OFFLOAD_FUNC_TABLE_SECTION_NAME))) = { };
|
|
void *__offload_vars_end[0]
|
|
__attribute__ ((__used__, visibility ("hidden"),
|
|
section (OFFLOAD_VAR_TABLE_SECTION_NAME))) = { };
|
|
|
|
extern void *__offload_func_table[];
|
|
extern void *__offload_var_table[];
|
|
|
|
void *__OFFLOAD_TABLE__[]
|
|
__attribute__ ((__visibility__ ("hidden"))) =
|
|
{
|
|
&__offload_func_table, &__offload_funcs_end,
|
|
&__offload_var_table, &__offload_vars_end
|
|
};
|
|
#endif
|
|
|
|
#else /* ! CRT_BEGIN && ! CRT_END */
|
|
#error "One of CRT_BEGIN or CRT_END must be defined."
|
|
#endif
|