1 /* Configuration for an i386 running MS-DOS with DJGPP. 2 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 3 2007 Free Software Foundation, Inc. 4 5 This file is part of GCC. 6 7 GCC is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3, or (at your option) 10 any later version. 11 12 GCC is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GCC; see the file COPYING3. If not see 19 <http://www.gnu.org/licenses/>. */ 20 21 /* Support generation of DWARF2 debugging info. */ 22 #define DWARF2_DEBUGGING_INFO 1 23 24 /* Don't assume anything about the header files. */ 25 #define NO_IMPLICIT_EXTERN_C 26 27 #define HANDLE_SYSV_PRAGMA 1 28 29 /* Enable parsing of #pragma pack(push,<n>) and #pragma pack(pop). */ 30 #define HANDLE_PRAGMA_PACK_PUSH_POP 1 31 32 /* If defined, a C expression whose value is a string containing the 33 assembler operation to identify the following data as 34 uninitialized global data. If not defined, and neither 35 `ASM_OUTPUT_BSS' nor `ASM_OUTPUT_ALIGNED_BSS' are defined, 36 uninitialized global data will be output in the data section if 37 `-fno-common' is passed, otherwise `ASM_OUTPUT_COMMON' will be 38 used. */ 39 #undef BSS_SECTION_ASM_OP 40 #define BSS_SECTION_ASM_OP "\t.section\t.bss" 41 42 /* Define the name of the .data section. */ 43 #undef DATA_SECTION_ASM_OP 44 #define DATA_SECTION_ASM_OP "\t.section .data" 45 46 /* Define the name of the .ident op. */ 47 #undef IDENT_ASM_OP 48 #define IDENT_ASM_OP "\t.ident\t" 49 50 /* Enable alias attribute support. */ 51 #ifndef SET_ASM_OP 52 #define SET_ASM_OP "\t.set\t" 53 #endif 54 55 /* Define the name of the .text section. */ 56 #undef TEXT_SECTION_ASM_OP 57 #define TEXT_SECTION_ASM_OP "\t.section .text" 58 59 /* Define standard DJGPP installation paths. */ 60 /* We override default /usr or /usr/local part with /dev/env/DJDIR which */ 61 /* points to actual DJGPP installation directory. */ 62 63 /* Standard include directory */ 64 #undef STANDARD_INCLUDE_DIR 65 #define STANDARD_INCLUDE_DIR "/dev/env/DJDIR/include/" 66 67 /* Search for as.exe and ld.exe in DJGPP's binary directory. */ 68 #undef MD_EXEC_PREFIX 69 #define MD_EXEC_PREFIX "/dev/env/DJDIR/bin/" 70 71 /* Standard DJGPP library and startup files */ 72 #undef MD_STARTFILE_PREFIX 73 #define MD_STARTFILE_PREFIX "/dev/env/DJDIR/lib/" 74 75 /* Correctly handle absolute filename detection in cp/xref.c */ 76 #define FILE_NAME_ABSOLUTE_P(NAME) \ 77 (((NAME)[0] == '/') || ((NAME)[0] == '\\') || \ 78 (((NAME)[0] >= 'A') && ((NAME)[0] <= 'z') && ((NAME)[1] == ':'))) 79 80 #define TARGET_OS_CPP_BUILTINS() \ 81 do \ 82 { \ 83 builtin_define_std ("MSDOS"); \ 84 builtin_define_std ("GO32"); \ 85 builtin_assert ("system=msdos"); \ 86 } \ 87 while (0) 88 89 /* Include <sys/version.h> so __DJGPP__ and __DJGPP_MINOR__ are defined. */ 90 #undef CPP_SPEC 91 #define CPP_SPEC "-remap %{posix:-D_POSIX_SOURCE} \ 92 -imacros %s../include/sys/version.h" 93 94 /* We need to override link_command_spec in gcc.c so support -Tdjgpp.djl. 95 This cannot be done in LINK_SPECS as that LINK_SPECS is processed 96 before library search directories are known by the linker. 97 This avoids problems when specs file is not available. An alternate way, 98 suggested by Robert Hoehne, is to use SUBTARGET_EXTRA_SPECS instead. 99 */ 100 101 #undef LINK_COMMAND_SPEC 102 #define LINK_COMMAND_SPEC \ 103 "%{!fsyntax-only: \ 104 %{!c:%{!M:%{!MM:%{!E:%{!S:%(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} \ 105 \t%{r} %{s} %{t} %{u*} %{x} %{z} %{Z}\ 106 \t%{!A:%{!nostdlib:%{!nostartfiles:%S}}}\ 107 \t%{static:} %{L*} %D %o\ 108 \t%{!nostdlib:%{!nodefaultlibs:%G %L %G}}\ 109 \t%{!A:%{!nostdlib:%{!nostartfiles:%E}}}\ 110 \t-Tdjgpp.djl %{T*}}}}}}}\n\ 111 %{!c:%{!M:%{!MM:%{!E:%{!S:stubify %{v} %{o*:%*} %{!o*:a.out} }}}}}" 112 113 /* Always just link in 'libc.a'. */ 114 #undef LIB_SPEC 115 #define LIB_SPEC "-lc" 116 117 /* Pick the right startup code depending on the -pg flag. */ 118 #undef STARTFILE_SPEC 119 #define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:crt0.o%s}" 120 121 /* Make sure that gcc will not look for .h files in /usr/local/include 122 unless user explicitly requests it. */ 123 #undef LOCAL_INCLUDE_DIR 124 125 /* Switch into a generic section. */ 126 #define TARGET_ASM_NAMED_SECTION default_coff_asm_named_section 127 128 /* This is how to output an assembler line 129 that says to advance the location counter 130 to a multiple of 2**LOG bytes. */ 131 132 #undef ASM_OUTPUT_ALIGN 133 #define ASM_OUTPUT_ALIGN(FILE,LOG) \ 134 if ((LOG) != 0) fprintf ((FILE), "\t.p2align %d\n", LOG) 135 136 /* This is how to output a global symbol in the BSS section. */ 137 #undef ASM_OUTPUT_ALIGNED_BSS 138 #define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ 139 asm_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN)) 140 141 /* This is how to tell assembler that a symbol is weak */ 142 #undef ASM_WEAKEN_LABEL 143 #define ASM_WEAKEN_LABEL(FILE,NAME) \ 144 do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \ 145 fputc ('\n', FILE); } while (0) 146 147 /* djgpp automatically calls its own version of __main, so don't define one 148 in libgcc, nor call one in main(). */ 149 #define HAS_INIT_SECTION 150 151 /* Definitions for types and sizes. Wide characters are 16-bits long so 152 Win32 compiler add-ons will be wide character compatible. */ 153 #undef WCHAR_TYPE_SIZE 154 #define WCHAR_TYPE_SIZE 16 155 156 #undef WCHAR_TYPE 157 #define WCHAR_TYPE "short unsigned int" 158 159 #undef WINT_TYPE 160 #define WINT_TYPE "int" 161 162 #undef SIZE_TYPE 163 #define SIZE_TYPE "long unsigned int" 164 165 #undef PTRDIFF_TYPE 166 #define PTRDIFF_TYPE "int" 167 168 /* Used to be defined in xm-djgpp.h, but moved here for cross-compilers. */ 169 #define LIBSTDCXX "-lstdcxx" 170 171 #define TARGET_VERSION fprintf (stderr, " (80386, MS-DOS DJGPP)"); 172 173 /* Warn that -mbnu210 is now obsolete. */ 174 #undef SUBTARGET_OVERRIDE_OPTIONS 175 #define SUBTARGET_OVERRIDE_OPTIONS \ 176 do \ 177 { \ 178 if (TARGET_BNU210) \ 179 { \ 180 warning (0, "-mbnu210 is ignored (option is obsolete)"); \ 181 } \ 182 } \ 183 while (0) 184 185 /* Support for C++ templates. */ 186 #undef MAKE_DECL_ONE_ONLY 187 #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1) 188