/* Definitions of target machine of Andes NDS32 cpu for GNU compiler Copyright (C) 2012-2024 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 . */ /* ------------------------------------------------------------------------ */ #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}"