Annotation of gcc/config/i386/win-nt.h, revision 1.1

1.1     ! root        1: /* Operating system specific defines to be used when targeting GCC for
        !             2:    Windows NT 3.x on an i386.
        !             3:    Copyright (C) 1994, 1995 Free Software Foundation, Inc.
        !             4:    Contributed by Douglas B. Rupp ([email protected]).
        !             5: 
        !             6: This file is part of GNU CC.
        !             7: 
        !             8: GNU CC is free software; you can redistribute it and/or modify
        !             9: it under the terms of the GNU General Public License as published by
        !            10: the Free Software Foundation; either version 2, or (at your option)
        !            11: any later version.
        !            12: 
        !            13: GNU CC is distributed in the hope that it will be useful,
        !            14: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            15: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            16: GNU General Public License for more details.
        !            17: 
        !            18: You should have received a copy of the GNU General Public License
        !            19: along with GNU CC; see the file COPYING.  If not, write to
        !            20: the Free Software Foundation, 59 Temple Place - Suite 330,
        !            21: Boston, MA 02111-1307, USA. */
        !            22: 
        !            23: #define YES_UNDERSCORES
        !            24: 
        !            25: #include "i386/gas.h"
        !            26: 
        !            27: #ifdef CPP_PREDEFINES
        !            28: #undef CPP_PREDEFINES
        !            29: #endif
        !            30: #define CPP_PREDEFINES "-Dunix -Di386 -DWIN32 -D_WIN32 \
        !            31:   -DWINNT -D_M_IX86=300 -D_X86_=1 -D__STDC__=0 -DALMOST_STDC -D_MSC_VER=800 \
        !            32:   -D__stdcall=__attribute__((__stdcall__)) \
        !            33:   -D__cdecl=__attribute__((__cdecl__)) \
        !            34:   -D_cdecl=__attribute__((__cdecl__)) \
        !            35:   -Asystem(unix) -Asystem(winnt) -Acpu(i386) -Amachine(i386)"
        !            36: 
        !            37: #define SIZE_TYPE "unsigned int"
        !            38: #define PTRDIFF_TYPE "int"
        !            39: #define WCHAR_UNSIGNED 1
        !            40: #define WCHAR_TYPE_SIZE 16
        !            41: #define WCHAR_TYPE "short unsigned int"
        !            42: #undef LONG_DOUBLE_TYPE_SIZE
        !            43: #define LONG_DOUBLE_TYPE_SIZE 64
        !            44: #define HAVE_ATEXIT 1
        !            45: 
        !            46: #undef EXTRA_SECTIONS
        !            47: #define EXTRA_SECTIONS in_ctor, in_dtor
        !            48: 
        !            49: #undef EXTRA_SECTION_FUNCTIONS
        !            50: #define EXTRA_SECTION_FUNCTIONS                                        \
        !            51:   CTOR_SECTION_FUNCTION                                                \
        !            52:   DTOR_SECTION_FUNCTION
        !            53: 
        !            54: #define CTOR_SECTION_FUNCTION                                  \
        !            55: void                                                           \
        !            56: ctor_section ()                                                        \
        !            57: {                                                              \
        !            58:   if (in_section != in_ctor)                                   \
        !            59:     {                                                          \
        !            60:       fprintf (asm_out_file, "\t.section .ctor\n");            \
        !            61:       in_section = in_ctor;                                    \
        !            62:     }                                                          \
        !            63: }
        !            64: 
        !            65: #define DTOR_SECTION_FUNCTION                                  \
        !            66: void                                                           \
        !            67: dtor_section ()                                                        \
        !            68: {                                                              \
        !            69:   if (in_section != in_dtor)                                   \
        !            70:     {                                                          \
        !            71:       fprintf (asm_out_file, "\t.section .dtor\n");            \
        !            72:       in_section = in_dtor;                                    \
        !            73:     }                                                          \
        !            74: }
        !            75: 
        !            76: #define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME)      \
        !            77:   do {                                         \
        !            78:     ctor_section ();                           \
        !            79:     fprintf (FILE, "%s\t", ASM_LONG);          \
        !            80:     assemble_name (FILE, NAME);                        \
        !            81:     fprintf (FILE, "\n");                      \
        !            82:   } while (0)
        !            83: 
        !            84: #define ASM_OUTPUT_DESTRUCTOR(FILE,NAME)               \
        !            85:   do {                                         \
        !            86:     dtor_section ();                                   \
        !            87:     fprintf (FILE, "%s\t", ASM_LONG);          \
        !            88:     assemble_name (FILE, NAME);                \
        !            89:     fprintf (FILE, "\n");                      \
        !            90:   } while (0)
        !            91: 
        !            92: /* Define this macro if references to a symbol must be treated
        !            93:    differently depending on something about the variable or
        !            94:    function named by the symbol (such as what section it is in).
        !            95: 
        !            96:    On i386, if using PIC, mark a SYMBOL_REF for a non-global symbol
        !            97:    so that we may access it directly in the GOT.
        !            98: 
        !            99:    On i386 running Windows NT, modify the assembler name with a suffix 
        !           100:    consisting of an atsign (@) followed by string of digits that represents
        !           101:    the number of bytes of arguments passed to the function, if it has the 
        !           102:    attribute STDCALL. */
        !           103: 
        !           104: #ifdef ENCODE_SECTION_INFO
        !           105: #undef ENCODE_SECTION_INFO
        !           106: #define ENCODE_SECTION_INFO(DECL)                                      \
        !           107: do                                                                     \
        !           108:   {                                                                    \
        !           109:     if (flag_pic)                                                      \
        !           110:       {                                                                        \
        !           111:        rtx rtl = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd'            \
        !           112:                   ? TREE_CST_RTL (DECL) : DECL_RTL (DECL));            \
        !           113:        SYMBOL_REF_FLAG (XEXP (rtl, 0))                                 \
        !           114:          = (TREE_CODE_CLASS (TREE_CODE (DECL)) != 'd'                  \
        !           115:             || ! TREE_PUBLIC (DECL));                                  \
        !           116:       }                                                                        \
        !           117:     if (TREE_CODE (DECL) == FUNCTION_DECL)                             \
        !           118:       if (lookup_attribute ("stdcall",                                 \
        !           119:                            TYPE_ATTRIBUTES (TREE_TYPE (DECL))))        \
        !           120:         XEXP (DECL_RTL (DECL), 0) =                                    \
        !           121:           gen_rtx (SYMBOL_REF, Pmode, gen_stdcall_suffix (DECL));      \
        !           122:   }                                                                    \
        !           123: while (0)
        !           124: #endif
        !           125: 
        !           126: /* The global __fltused is necessary to cause the printf/scanf routines
        !           127:    for outputting/inputting floating point numbers to be loaded.  Since this
        !           128:    is kind of hard to detect, we just do it all the time. */
        !           129: 
        !           130: #ifdef ASM_FILE_START
        !           131: #undef ASM_FILE_START
        !           132: #endif
        !           133: #define ASM_FILE_START(FILE) \
        !           134:   do { fprintf (FILE, "\t.file\t");                            \
        !           135:        output_quoted_string (FILE, dump_base_name);            \
        !           136:        fprintf (FILE, "\n");                                   \
        !           137:         fprintf (FILE, ".global\t__fltused\n");                        \
        !           138:   } while (0)
        !           139: 
        !           140: /* if the switch "-mwindows" is passed to ld, then specify to the Microsoft
        !           141:    linker the proper switches and libraries to build a graphical program */
        !           142: 
        !           143: #undef LIB_SPEC
        !           144: #define LIB_SPEC "%{mwindows:-subsystem windows -e _WinMainCRTStartup \
        !           145:   USER32.LIB%s GDI32.LIB%s COMDLG32.LIB%s WINSPOOL.LIB%s} \
        !           146:  %{!mwindows:-subsystem console -e _mainCRTStartup} \
        !           147:  %{mcrtmt:LIBCMT.LIB%s KERNEL32.LIB%s ADVAPI32.LIB%s} \
        !           148:  %{!mcrtmt:LIBC.LIB%s KERNEL32.LIB%s ADVAPI32.LIB%s} \
        !           149:  %{v}"
        !           150: 
        !           151: #include "winnt/win-nt.h"
        !           152: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.