1 /* Definitions of target support for Altera Nios II systems
2    running GNU/Linux with ELF format.
3    Copyright (C) 2012-2020 Free Software Foundation, Inc.
4    Contributed by Mentor Graphics, Inc.
5 
6    This file is part of GCC.
7 
8    GCC is free software; you can redistribute it and/or modify it
9    under the terms of the GNU General Public License as published
10    by the Free Software Foundation; either version 3, or (at your
11    option) any later version.
12 
13    GCC is distributed in the hope that it will be useful, but WITHOUT
14    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
16    License for more details.
17 
18    You should have received a copy of the GNU General Public License
19    along with GCC; see the file COPYING3.  If not see
20    <http://www.gnu.org/licenses/>.  */
21 
22 #define TARGET_OS_CPP_BUILTINS()                \
23   do                                            \
24     {                                           \
25       GNU_USER_TARGET_OS_CPP_BUILTINS();           \
26     }                                           \
27   while (0)
28 
29 #undef CPP_SPEC
30 #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
31 
32 #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-nios2.so.1"
33 
34 #undef LINK_SPEC
35 #define LINK_SPEC LINK_SPEC_ENDIAN \
36  "%{shared:-shared} \
37   %{!shared: \
38     %{!static: \
39       %{rdynamic:-export-dynamic} \
40       -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \
41     %{static:-static}}"
42 
43 /* This toolchain implements the ABI for Linux Systems documented in the
44    Nios II Processor Reference Handbook.  */
45 #define TARGET_LINUX_ABI 1
46 
47 /* For Linux, we have access to kernel support for atomic operations,
48    add initialization for __sync_* builtins.  */
49 #undef TARGET_INIT_LIBFUNCS
50 #define TARGET_INIT_LIBFUNCS nios2_init_libfuncs
51