blob: ebdc18cee2a15ece8e79abf1cb7ad76f9cd1694d [file] [log] [blame]
/* Definitions of target machine of Andes NDS32 cpu for GNU compiler
Copyright (C) 2012-2022 Free Software Foundation, Inc.
Contributed by Andes Technology Corporation.
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.
You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
/* ------------------------------------------------------------------------ */
#define TARGET_LINUX_ABI 0
/* In the configure stage we may use options --enable-default-relax,
--enable-Os-default-ifc and --enable-Os-default-ex9. They effect
the default spec of passing --relax, --mifc, and --mex9 to linker.
We use NDS32_RELAX_SPEC, NDS32_IFC_SPEC, and NDS32_EX9_SPEC
so that we can customize them conveniently. */
#define LINK_SPEC \
" %{G*}" \
" %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
" %{shared:-shared}" \
NDS32_RELAX_SPEC
#define LIB_SPEC \
" -lc -lgloss"
#define LIBGCC_SPEC \
" -lgcc"
/* The option -mno-ctor-dtor can disable constructor/destructor feature
by applying different crt stuff. In the convention, crt0.o is the
startup file without constructor/destructor;
crt1.o, crti.o, crtbegin.o, crtend.o, and crtn.o are the
startup files with constructor/destructor.
Note that crt0.o, crt1.o, crti.o, and crtn.o are provided
by newlib/mculib/glibc/ublic, while crtbegin.o and crtend.o are
currently provided by GCC for nds32 target.
For nds32 target so far:
If -mno-ctor-dtor, we are going to link
"crt0.o [user objects]".
If -mctor-dtor, we are going to link
"crt1.o crtbegin1.o [user objects] crtend1.o".
Note that the TARGET_DEFAULT_CTOR_DTOR would effect the
default behavior. Check gcc/config.gcc for more information. */
#ifdef TARGET_DEFAULT_CTOR_DTOR
#define STARTFILE_SPEC \
" %{!mno-ctor-dtor:crt1.o%s;:crt0.o%s}" \
" %{!mno-ctor-dtor:crtbegin1.o%s}" \
" %{mcrt-arg:crtarg.o%s}"
#define ENDFILE_SPEC \
" %{!mno-ctor-dtor:crtend1.o%s}"
#else
#define STARTFILE_SPEC \
" %{mctor-dtor|coverage:crt1.o%s;:crt0.o%s}" \
" %{mctor-dtor|coverage:crtbegin1.o%s}" \
" %{mcrt-arg:crtarg.o%s}"
#define ENDFILE_SPEC \
" %{mctor-dtor|coverage:crtend1.o%s}"
#endif
#define STARTFILE_CXX_SPEC \
" %{!mno-ctor-dtor:crt1.o%s;:crt0.o%s}" \
" %{!mno-ctor-dtor:crtbegin1.o%s}" \
" %{mcrt-arg:crtarg.o%s}"
#define ENDFILE_CXX_SPEC \
" %{!mno-ctor-dtor:crtend1.o%s}"