1/* Base configuration file for all FreeBSD targets. 2 Copyright (C) 1999-2020 Free Software Foundation, Inc. 3 4This file is part of GCC. 5 6GCC is free software; you can redistribute it and/or modify 7it under the terms of the GNU General Public License as published by 8the Free Software Foundation; either version 3, or (at your option) 9any later version. 10 11GCC is distributed in the hope that it will be useful, 12but WITHOUT ANY WARRANTY; without even the implied warranty of 13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14GNU General Public License for more details. 15 16You should have received a copy of the GNU General Public License 17along 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/* Follow FreeBSD's standard headers (<sys/_types.h> etc...). */ 72 73#undef WCHAR_TYPE 74#define WCHAR_TYPE "int" 75 76#undef WINT_TYPE 77#define WINT_TYPE "int" 78 79#define MATH_LIBRARY_PROFILE "m_p" 80 81/* Code generation parameters. */ 82 83/* Use periods rather than dollar signs in special g++ assembler names. 84 This ensures the configuration knows our system correctly so we can link 85 with libraries compiled with the native cc. */ 86#undef NO_DOLLAR_IN_LABEL 87 88/* Used by libgcc2.c. We support file locking with fcntl / F_SETLKW. 89 This enables the test coverage code to use file locking when exiting a 90 program, which avoids race conditions if the program has forked. */ 91#define TARGET_POSIX_IO 92