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