176 lines
5.8 KiB
C
176 lines
5.8 KiB
C
/* Configuration for an i386 running MS-DOS with DJGPP.
|
|
Copyright (C) 1997-2021 Free Software Foundation, Inc.
|
|
|
|
This file is part of GCC.
|
|
|
|
GCC is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3, or (at your option)
|
|
any later version.
|
|
|
|
GCC is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with GCC; see the file COPYING3. If not see
|
|
<http://www.gnu.org/licenses/>. */
|
|
|
|
/* Support generation of DWARF2 debugging info. */
|
|
#define DWARF2_DEBUGGING_INFO 1
|
|
|
|
#undef PREFERRED_DEBUGGING_TYPE
|
|
#define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
|
|
|
|
#undef BSS_SECTION_ASM_OP
|
|
#define BSS_SECTION_ASM_OP "\t.section\t.bss"
|
|
|
|
/* Define the name of the .data section. */
|
|
#undef DATA_SECTION_ASM_OP
|
|
#define DATA_SECTION_ASM_OP "\t.section .data"
|
|
|
|
/* Define the name of the .ident op. */
|
|
#undef TARGET_ASM_OUTPUT_IDENT
|
|
#define TARGET_ASM_OUTPUT_IDENT default_asm_output_ident_directive
|
|
|
|
/* Enable alias attribute support. */
|
|
#ifndef SET_ASM_OP
|
|
#define SET_ASM_OP "\t.set\t"
|
|
#endif
|
|
|
|
/* Define the name of the .text section. */
|
|
#undef TEXT_SECTION_ASM_OP
|
|
#define TEXT_SECTION_ASM_OP "\t.section .text"
|
|
|
|
#define TARGET_OS_CPP_BUILTINS() \
|
|
do \
|
|
{ \
|
|
if (!flag_iso) \
|
|
builtin_define_with_int_value ("DJGPP",2); \
|
|
builtin_define_with_int_value ("__DJGPP",2); \
|
|
builtin_define_with_int_value ("__DJGPP__",2); \
|
|
builtin_define_std ("MSDOS"); \
|
|
builtin_define_std ("GO32"); \
|
|
builtin_define_std ("unix"); \
|
|
builtin_assert ("system=msdos"); \
|
|
} \
|
|
while (0)
|
|
|
|
#undef CPP_SPEC
|
|
#define CPP_SPEC "-remap %{posix:-D_POSIX_SOURCE}"
|
|
|
|
#undef POST_LINK_SPEC
|
|
#define POST_LINK_SPEC "stubify %{v} %{o*:%*} %{!o*:a.out}"
|
|
|
|
/* Always just link in 'libc.a'. */
|
|
#undef LIB_SPEC
|
|
#define LIB_SPEC "-lc"
|
|
|
|
/* Pick the right startup code depending on the -pg flag. */
|
|
#undef STARTFILE_SPEC
|
|
#define STARTFILE_SPEC "%{pg:gcrt0.o%s}%{!pg:crt0.o%s}"
|
|
|
|
/* Switch into a generic section. */
|
|
#define TARGET_ASM_NAMED_SECTION i386_djgpp_asm_named_section
|
|
|
|
/* This is how to output an assembler line
|
|
that says to advance the location counter
|
|
to a multiple of 2**LOG bytes. */
|
|
|
|
#undef ASM_OUTPUT_ALIGN
|
|
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
|
|
if ((LOG) != 0) fprintf ((FILE), "\t.p2align %d\n", LOG)
|
|
|
|
/* This is how to output a global symbol in the BSS section. */
|
|
#undef ASM_OUTPUT_ALIGNED_BSS
|
|
#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \
|
|
asm_output_aligned_bss ((FILE), (DECL), (NAME), (SIZE), (ALIGN))
|
|
|
|
/* Write the extra assembler code needed to declare a function properly. */
|
|
|
|
#ifndef ASM_DECLARE_FUNCTION_NAME
|
|
#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \
|
|
do \
|
|
{ \
|
|
ASM_OUTPUT_FUNCTION_LABEL (FILE, NAME, DECL); \
|
|
} \
|
|
while (0)
|
|
#endif
|
|
|
|
/* This is how to tell assembler that a symbol is weak */
|
|
#undef ASM_WEAKEN_LABEL
|
|
#define ASM_WEAKEN_LABEL(FILE,NAME) \
|
|
do { fputs ("\t.weak\t", FILE); assemble_name (FILE, NAME); \
|
|
fputc ('\n', FILE); } while (0)
|
|
|
|
/* djgpp automatically calls its own version of __main, so don't define one
|
|
in libgcc, nor call one in main(). */
|
|
#define HAS_INIT_SECTION
|
|
|
|
#undef TARGET_LIBC_HAS_FUNCTION
|
|
#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
|
|
|
|
/* Definitions for types and sizes. Wide characters are 16-bits long so
|
|
Win32 compiler add-ons will be wide character compatible. */
|
|
#undef WCHAR_TYPE_SIZE
|
|
#define WCHAR_TYPE_SIZE 16
|
|
|
|
#undef WCHAR_TYPE
|
|
#define WCHAR_TYPE "short unsigned int"
|
|
|
|
#undef WINT_TYPE
|
|
#define WINT_TYPE "int"
|
|
|
|
#undef SIZE_TYPE
|
|
#define SIZE_TYPE "long unsigned int"
|
|
|
|
#undef PTRDIFF_TYPE
|
|
#define PTRDIFF_TYPE "int"
|
|
|
|
#undef DBX_REGISTER_NUMBER
|
|
#define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n]
|
|
|
|
/* Default to pcc-struct-return. */
|
|
#define DEFAULT_PCC_STRUCT_RETURN 1
|
|
|
|
/* Ignore (with warning) -fPIC for DJGPP */
|
|
#undef SUBTARGET_OVERRIDE_OPTIONS
|
|
#define SUBTARGET_OVERRIDE_OPTIONS \
|
|
do { \
|
|
if (flag_pic) \
|
|
{ \
|
|
fnotice(stdout, "-f%s ignored (not supported for DJGPP)\n", \
|
|
(flag_pic > 1) ? "PIC" : "pic"); \
|
|
flag_pic = 0; \
|
|
} \
|
|
\
|
|
/* Don't emit DWARF3/4 unless specifically selected. */ \
|
|
/* DWARF3/4 currently does not work for DJGPP. */ \
|
|
if (!global_options_set.x_dwarf_version) \
|
|
dwarf_version = 2; \
|
|
\
|
|
} \
|
|
while (0)
|
|
|
|
/* Support for C++ templates. */
|
|
#undef MAKE_DECL_ONE_ONLY
|
|
#define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
|
|
|
|
#undef TARGET_COFF
|
|
#define TARGET_COFF 1
|
|
|
|
/* Kludge because of missing COFF support for early LTO debug. */
|
|
#undef TARGET_ASM_LTO_START
|
|
#define TARGET_ASM_LTO_START i386_djgpp_asm_lto_start
|
|
#undef TARGET_ASM_LTO_END
|
|
#define TARGET_ASM_LTO_END i386_djgpp_asm_lto_end
|
|
|
|
/* Function protypes for gcc/i386/djgpp.c */
|
|
|
|
void
|
|
i386_djgpp_asm_named_section(const char *name, unsigned int flags,
|
|
tree decl);
|
|
void i386_djgpp_asm_lto_start (void);
|
|
void i386_djgpp_asm_lto_end (void);
|