1 /* Base configuration file for all FreeBSD targets. 2 Copyright (C) 1999-2018 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 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3, or (at your option) 9 any later version. 10 11 GCC is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public 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 /* Common FreeBSD configuration. 21 All FreeBSD architectures should include this file, which will specify 22 their commonalities. 23 Adapted from gcc/config/i386/freebsd-elf.h by 24 David O'Brien <obrien@FreeBSD.org>. 25 Further work by David O'Brien <obrien@FreeBSD.org> and 26 Loren J. Rittle <ljrittle@acm.org>. */ 27 28 29 /* In case we need to know. */ 30 #define USING_CONFIG_FREEBSD 1 31 32 #undef TARGET_OS_CPP_BUILTINS 33 #define TARGET_OS_CPP_BUILTINS() FBSD_TARGET_OS_CPP_BUILTINS() 34 35 #undef CPP_SPEC 36 #define CPP_SPEC FBSD_CPP_SPEC 37 38 #undef STARTFILE_SPEC 39 #define STARTFILE_SPEC FBSD_STARTFILE_SPEC 40 41 #undef ENDFILE_SPEC 42 #define ENDFILE_SPEC FBSD_ENDFILE_SPEC 43 44 #undef LIB_SPEC 45 #define LIB_SPEC FBSD_LIB_SPEC 46 47 #if defined(HAVE_LD_EH_FRAME_HDR) 48 #define LINK_EH_SPEC "%{!static|static-pie:--eh-frame-hdr} " 49 #endif 50 51 #ifdef TARGET_LIBC_PROVIDES_SSP 52 #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ 53 "|fstack-protector-strong|fstack-protector-explicit" \ 54 ":-lssp_nonshared}" 55 #endif 56 57 #undef TARGET_LIBC_HAS_FUNCTION 58 #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function 59 60 /* Use --as-needed -lgcc_s for eh support. */ 61 #ifdef HAVE_LD_AS_NEEDED 62 #define USE_LD_AS_NEEDED 1 63 #endif 64 65 /************************[ Target stuff ]***********************************/ 66 67 /* All FreeBSD Architectures support the ELF object file format. */ 68 #undef OBJECT_FORMAT_ELF 69 #define OBJECT_FORMAT_ELF 70 71 /* Don't assume anything about the header files. */ 72 #undef NO_IMPLICIT_EXTERN_C 73 #define NO_IMPLICIT_EXTERN_C 1 74 75 /* Follow FreeBSD's standard headers (<sys/_types.h> etc...). */ 76 77 #undef WCHAR_TYPE 78 #define WCHAR_TYPE "int" 79 80 #undef WINT_TYPE 81 #define WINT_TYPE "int" 82 83 #define MATH_LIBRARY_PROFILE "m_p" 84 85 /* Code generation parameters. */ 86 87 /* Use periods rather than dollar signs in special g++ assembler names. 88 This ensures the configuration knows our system correctly so we can link 89 with libraries compiled with the native cc. */ 90 #undef NO_DOLLAR_IN_LABEL 91 92 /* Used by libgcc2.c. We support file locking with fcntl / F_SETLKW. 93 This enables the test coverage code to use file locking when exiting a 94 program, which avoids race conditions if the program has forked. */ 95 #define TARGET_POSIX_IO 96