1/* Definitions for Renesas M32R running Linux-based GNU systems using ELF. 2 Copyright (C) 2003-2020 Free Software Foundation, Inc. 3 4 This file is part of GCC. 5 6 GCC is free software; you can redistribute it and/or modify it 7 under the terms of the GNU General Public License as published 8 by the Free Software Foundation; either version 3, or (at your 9 option) any later version. 10 11 GCC is distributed in the hope that it will be useful, but WITHOUT 12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 13 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 14 License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GCC; see the file COPYING3. If not see 18 <http://www.gnu.org/licenses/>. */ 19 20#undef SIZE_TYPE 21#define SIZE_TYPE "unsigned int" 22 23#undef PTRDIFF_TYPE 24#define PTRDIFF_TYPE "int" 25 26#undef WCHAR_TYPE 27#define WCHAR_TYPE "long int" 28 29#undef WCHAR_TYPE_SIZE 30#define WCHAR_TYPE_SIZE BITS_PER_WORD 31 32/* Provide a LINK_SPEC appropriate for Linux. Here we provide support 33 for the special GCC options -static and -shared, which allow us to 34 link things in one of these three modes by applying the appropriate 35 combinations of options at link-time. 36 37 When the -shared link option is used a final link is not being 38 done. */ 39 40#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" 41 42#undef LINK_SPEC 43#if TARGET_LITTLE_ENDIAN 44#define LINK_SPEC "%(link_cpu) -m m32rlelf_linux %{shared:-shared} \ 45 %{!shared: \ 46 %{!static: \ 47 %{rdynamic:-export-dynamic} \ 48 -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ 49 %{static:-static}}" 50#else 51#define LINK_SPEC "%(link_cpu) -m m32relf_linux %{shared:-shared} \ 52 %{!shared: \ 53 %{!static: \ 54 %{rdynamic:-export-dynamic} \ 55 -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ 56 %{static:-static}}" 57#endif 58 59#undef LIB_SPEC 60#define LIB_SPEC \ 61 "%{pthread:-lpthread} \ 62 %{shared: -lc} \ 63 %{!shared: \ 64 %{mieee-fp:-lieee} \ 65 %{profile:-lc_p} %{!profile: -lc}}" 66 67#undef STARTFILE_SPEC 68#if defined HAVE_LD_PIE 69#define STARTFILE_SPEC \ 70 "%{!shared: %{pg|p|profile:gcrt1.o%s;pie:Scrt1.o%s;:crt1.o%s}} \ 71 crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}" 72#else 73#define STARTFILE_SPEC \ 74 "%{!shared: \ 75 %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}\ 76 crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" 77#endif 78 79#undef ENDFILE_SPEC 80#define ENDFILE_SPEC \ 81 "%{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s" 82 83#undef SUBTARGET_CPP_SPEC 84#define SUBTARGET_CPP_SPEC "\ 85 %{posix:-D_POSIX_SOURCE} \ 86 %{pthread:-D_REENTRANT -D_PTHREADS} \ 87" 88 89#define TARGET_OS_CPP_BUILTINS() GNU_USER_TARGET_OS_CPP_BUILTINS() 90 91#define TARGET_ASM_FILE_END file_end_indicate_exec_stack 92