[PATCH 1/7] OpenMP 4.0 offloading infrastructure: configure and make
* 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
2014-11-13 21:28:56 +08:00
|
|
|
/* Specialized bits of code needed for the offloading tables.
|
2015-01-05 20:33:28 +08:00
|
|
|
Copyright (C) 2014-2015 Free Software Foundation, Inc.
|
[PATCH 1/7] OpenMP 4.0 offloading infrastructure: configure and make
* 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
2014-11-13 21:28:56 +08:00
|
|
|
|
|
|
|
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
|