1326938Sdim/* Configuration for an i386 running MS-DOS with DJGPP. 2326938Sdim Copyright (C) 1997-2015 Free Software Foundation, Inc. 3353358Sdim 4353358SdimThis file is part of GCC. 5353358Sdim 6326938SdimGCC is free software; you can redistribute it and/or modify 7326938Sdimit under the terms of the GNU General Public License as published by 8326938Sdimthe Free Software Foundation; either version 3, or (at your option) 9326938Sdimany later version. 10326938Sdim 11326938SdimGCC is distributed in the hope that it will be useful, 12326938Sdimbut WITHOUT ANY WARRANTY; without even the implied warranty of 13326938SdimMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14326938SdimGNU General Public License for more details. 15326938Sdim 16326938SdimYou should have received a copy of the GNU General Public License 17326938Sdimalong with GCC; see the file COPYING3. If not see 18326938Sdim<http://www.gnu.org/licenses/>. */ 19326938Sdim 20326938Sdim/* Support generation of DWARF2 debugging info. */ 21326938Sdim#define DWARF2_DEBUGGING_INFO 1 22326938Sdim 23326938Sdim/* Don't assume anything about the header files. */ 24326938Sdim#define NO_IMPLICIT_EXTERN_C 25326938Sdim 26326938Sdim#undef BSS_SECTION_ASM_OP 27326938Sdim#define BSS_SECTION_ASM_OP "\t.section\t.bss" 28326938Sdim 29326938Sdim/* Define the name of the .data section. */ 30326938Sdim#undef DATA_SECTION_ASM_OP 31326938Sdim#define DATA_SECTION_ASM_OP "\t.section .data" 32326938Sdim 33326938Sdim/* Enable alias attribute support. */ 34326938Sdim#ifndef SET_ASM_OP 35326938Sdim#define SET_ASM_OP "\t.set\t" 36326938Sdim#endif 37326938Sdim 38326938Sdim/* Define the name of the .text section. */ 39326938Sdim#undef TEXT_SECTION_ASM_OP 40326938Sdim#define TEXT_SECTION_ASM_OP "\t.section .text" 41326938Sdim 42326938Sdim/* Define standard DJGPP installation paths. */ 43326938Sdim/* We override default /usr or /usr/local part with /dev/env/DJDIR which */ 44326938Sdim/* points to actual DJGPP installation directory. */ 45326938Sdim 46326938Sdim/* Search for as.exe and ld.exe in DJGPP's binary directory. */ 47326938Sdim#undef MD_EXEC_PREFIX 48326938Sdim#define MD_EXEC_PREFIX "/dev/env/DJDIR/bin/" 49326938Sdim 50326938Sdim/* Standard DJGPP library and startup files */ 51326938Sdim#undef MD_STARTFILE_PREFIX 52326938Sdim#define MD_STARTFILE_PREFIX "/dev/env/DJDIR/lib/" 53326938Sdim 54326938Sdim/* Correctly handle absolute filename detection in cp/xref.c */ 55326938Sdim#define FILE_NAME_ABSOLUTE_P(NAME) \ 56326938Sdim (((NAME)[0] == '/') || ((NAME)[0] == '\\') || \ 57326938Sdim (((NAME)[0] >= 'A') && ((NAME)[0] <= 'z') && ((NAME)[1] == ':'))) 58326938Sdim 59326938Sdim#define TARGET_OS_CPP_BUILTINS() \ 60326938Sdim do \ 61326938Sdim { \ 62326938Sdim builtin_define_std ("MSDOS"); \ 63326938Sdim builtin_define_std ("GO32"); \ 64 builtin_assert ("system=msdos"); \ 65 } \ 66 while (0) 67 68/* Include <sys/version.h> so __DJGPP__ and __DJGPP_MINOR__ are defined. */ 69#undef CPP_SPEC 70#define CPP_SPEC "-remap %{posix:-D_POSIX_SOURCE} \ 71 -imacros %s../include/sys/version.h" 72 73/* We need to override link_command_spec in gcc.c so support -Tdjgpp.djl. 74 This cannot be done in LINK_SPECS as that LINK_SPECS is processed 75 before library search directories are known by the linker. 76 This avoids problems when specs file is not available. An alternate way, 77 suggested by Robert Hoehne, is to use SUBTARGET_EXTRA_SPECS instead. 78*/ 79 80#undef LINK_COMMAND_SPEC 81#define LINK_COMMAND_SPEC \ 82"%{!fsyntax-only: \ 83%{!c:%{!M:%{!MM:%{!E:%{!S:%(linker) %l " LINK_COMPRESS_DEBUG_SPEC \ 84"%X %{o*} %{e*} %{N} %{n} \ 85\t%{r} %{s} %{t} %{u*} %{z} %{Z}\ 86\t%{!nostdlib:%{!nostartfiles:%S}}\ 87\t%{static:} %{L*} %D %o\ 88\t%{!nostdlib:%{!nodefaultlibs:%G %L %G}}\ 89\t%{!nostdlib:%{!nostartfiles:%E}}\ 90\t-Tdjgpp.djl %{T*}}}}}}}\n\ 91%{!c:%{!M:%{!MM:%{!E:%{!S:stubify %{v} %{o*:%*} %{!o*:a.out} }}}}}" 92 93/* Always just link in 'libc.a'. */ 94#undef LIB_SPEC 95#define LIB_SPEC "-lc" 96 97/* Pick the right startup code depending on the -pg flag. */ 98#undef STARTFILE_SPEC 99#define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:crt0.o%s}" 100 101/* Make sure that gcc will not look for .h files in /usr/local/include 102 unless user explicitly requests it. */ 103#undef LOCAL_INCLUDE_DIR 104 105/* Switch into a generic section. */ 106#define TARGET_ASM_NAMED_SECTION default_coff_asm_named_section 107 108/* This is how to output an assembler line 109 that says to advance the location counter 110 to a multiple of 2**LOG bytes. */ 111 112#undef ASM_OUTPUT_ALIGN 113#define ASM_OUTPUT_ALIGN(FILE,LOG) \ 114 if ((LOG) != 0) fprintf ((FILE), "\t.p2align %d\n", LOG) 115 116/* This is how to output a global symbol in the BSS section. */ 117#undef ASM_OUTPUT_ALIGNED_BSS 118#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ 119 asm_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN)) 120 121/* Write the extra assembler code needed to declare a function properly. */ 122 123#ifndef ASM_DECLARE_FUNCTION_NAME 124#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ 125 do \ 126 { \ 127 ASM_OUTPUT_FUNCTION_LABEL (FILE, NAME, DECL); \ 128 } \ 129 while (0) 130#endif 131 132/* This is how to tell assembler that a symbol is weak */ 133#undef ASM_WEAKEN_LABEL 134#define ASM_WEAKEN_LABEL(FILE,NAME) \ 135 do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \ 136 fputc ('\n', FILE); } while (0) 137 138/* djgpp automatically calls its own version of __main, so don't define one 139 in libgcc, nor call one in main(). */ 140#define HAS_INIT_SECTION 141 142#undef TARGET_LIBC_HAS_FUNCTION 143#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function 144 145/* Definitions for types and sizes. Wide characters are 16-bits long so 146 Win32 compiler add-ons will be wide character compatible. */ 147#undef WCHAR_TYPE_SIZE 148#define WCHAR_TYPE_SIZE 16 149 150#undef WCHAR_TYPE 151#define WCHAR_TYPE "short unsigned int" 152 153#undef WINT_TYPE 154#define WINT_TYPE "int" 155 156#undef SIZE_TYPE 157#define SIZE_TYPE "long unsigned int" 158 159#undef PTRDIFF_TYPE 160#define PTRDIFF_TYPE "int" 161 162/* Used to be defined in xm-djgpp.h, but moved here for cross-compilers. */ 163#define LIBSTDCXX "stdcxx" 164 165/* Warn that -mbnu210 is now obsolete. */ 166#undef SUBTARGET_OVERRIDE_OPTIONS 167#define SUBTARGET_OVERRIDE_OPTIONS \ 168do \ 169 { \ 170 if (TARGET_BNU210) \ 171 { \ 172 warning (0, "-mbnu210 is ignored (option is obsolete)"); \ 173 } \ 174 } \ 175while (0) 176 177/* Support for C++ templates. */ 178#undef MAKE_DECL_ONE_ONLY 179#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1) 180 181#define IX86_MAYBE_NO_LIBGCC_TFMODE 182