Move 'temporary' bits so they don't conflict with windows/cygwin/dgux bits
[official-gcc.git] / gcc / config / i386 / isc.h
blob6c1c4c7271804ab25152b584b49a6f6d23dc8b79
1 /* Assembler-independent definitions for an Intel 386 running
2 Interactive Unix System V. Specifically, this is for recent versions
3 that support POSIX. */
5 /* Use crt1.o, not crt0.o, as a startup file, and crtn.o as a closing file. */
6 #undef STARTFILE_SPEC
7 #define STARTFILE_SPEC \
8 "%{!shlib:%{posix:%{pg:mcrtp1.o%s}%{!pg:%{p:mcrtp1.o%s}%{!p:crtp1.o%s}}}\
9 %{Xp:%{pg:mcrtp1.o%s}%{!pg:%{p:mcrtp1.o%s}%{!p:crtp1.o%s}}}\
10 %{!posix:%{!Xp:%{pg:mcrt1.o%s}%{!pg:%{p:mcrt1.o%s}%{!p:crt1.o%s}}\
11 %{p:-L/lib/libp} %{pg:-L/lib/libp}}}}\
12 %{shlib:%{Xp:crtp1.o%s}%{posix:crtp1.o%s}%{!posix:%{!Xp:crt1.o%s}}}\
13 crtbegin.o%s"
15 #define ENDFILE_SPEC "crtend.o%s crtn.o%s"
17 /* Library spec */
18 #undef LIB_SPEC
19 #define LIB_SPEC "%{shlib:-lc_s} %{posix:-lcposix} %{Xp:-lcposix} -lc -lg"
21 #undef CPP_SPEC
22 #define CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} %{Xp:-D_POSIX_SOURCE}"
24 /* ISC 2.2 uses `char' for `wchar_t'. */
25 #undef WCHAR_TYPE
26 #define WCHAR_TYPE "char"
28 #undef WCHAR_TYPE_SIZE
29 #define WCHAR_TYPE_SIZE BITS_PER_UNIT
31 #if 0
32 /* This is apparently not true: ISC versions up to 3.0, at least, use
33 the standard calling sequence in which the called function pops the
34 extra arg. */
35 /* caller has to pop the extra argument passed to functions that return
36 structures. */
38 #undef RETURN_POPS_ARGS
39 #define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) \
40 ((FUNDECL) && TREE_CODE (FUNDECL) == IDENTIFIER_NODE ? 0 \
41 : (TARGET_RTD \
42 && (TYPE_ARG_TYPES (FUNTYPE) == 0 \
43 || (TREE_VALUE (tree_last (TYPE_ARG_TYPES (FUNTYPE))) \
44 == void_type_node))) ? (SIZE) \
45 : 0)
46 /* On other 386 systems, the last line looks like this:
47 : (aggregate_value_p (TREE_TYPE (FUNTYPE))) ? GET_MODE_SIZE (Pmode) : 0) */
48 #endif
50 /* Handle #pragma pack and #pragma weak. */
51 #define HANDLE_SYSV_PRAGMA
53 /* By default, target has a 80387, uses IEEE compatible arithmetic,
54 and returns float values in the 387, ie,
55 (TARGET_80387 | TARGET_FLOAT_RETURNS_IN_80387)
57 ISC's software emulation of a 387 fails to handle the `fucomp'
58 opcode. fucomp is only used when generating IEEE compliant code.
59 So don't make TARGET_IEEE_FP default for ISC. */
61 #undef TARGET_DEFAULT
62 #define TARGET_DEFAULT (MASK_80387 | MASK_FLOAT_RETURNS)
64 /* The ISC 2.0.2 software FPU emulator apparently can't handle
65 80-bit XFmode insns, so don't generate them. */
66 #undef LONG_DOUBLE_TYPE_SIZE
67 #define LONG_DOUBLE_TYPE_SIZE 64
69 /* The ISC assembler does not like a .file directive with a name
70 longer than 14 characters. Truncating it will not permit
71 debugging to work properly, but at least we won't get an error
72 message. */
74 #undef ASM_FILE_START
75 #define ASM_FILE_START(FILE) \
76 do { \
77 int len = strlen (main_input_filename); \
78 char *na = main_input_filename + len; \
79 char shorter[15]; \
80 /* NA gets MAIN_INPUT_FILENAME sans directory names. */\
81 while (na > main_input_filename) \
82 { \
83 if (na[-1] == '/') \
84 break; \
85 na--; \
86 } \
87 strncpy (shorter, na, 14); \
88 shorter[14] = 0; \
89 fprintf (FILE, "\t.file\t"); \
90 output_quoted_string (FILE, shorter); \
91 fprintf (FILE, "\n"); \
92 } while (0)
94 /* Work around assembler forward label references generated in exception
95 handling code. */
96 #define DWARF2_UNWIND_INFO 0