|
|
1.1 root 1: /* Assembler-independent definitions for an Intel 386 running
2: Interactive Unix System V. Specifically, this is for recent versions
3: that support POSIX. */
4:
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}}}\
1.1.1.3 ! root 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"
1.1 root 14:
15: #define ENDFILE_SPEC "crtend.o%s crtn.o%s"
16:
17: /* Library spec */
18: #undef LIB_SPEC
1.1.1.3 ! root 19: #define LIB_SPEC "%{shlib:-lc_s} %{posix:-lcposix} %{Xp:-lcposix} -lc -lg"
! 20:
! 21: #undef CPP_SPEC
! 22: #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{Xp:-D_POSIX_SOURCE}"
1.1 root 23:
24: /* ISC 2.2 uses `char' for `wchar_t'. */
25: #undef WCHAR_TYPE
26: #define WCHAR_TYPE "char"
27:
28: #undef WCHAR_TYPE_SIZE
29: #define WCHAR_TYPE_SIZE BITS_PER_UNIT
30:
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. */
37:
38: #undef RETURN_POPS_ARGS
1.1.1.3 ! root 39: #define RETURN_POPS_ARGS(FUNDECL,FUNTYPE,SIZE) \
1.1 root 40: (TREE_CODE (FUNTYPE) == 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:
1.1.1.2 root 47: : (aggregate_value_p (TREE_TYPE (FUNTYPE))) ? GET_MODE_SIZE (Pmode) : 0) */
1.1 root 48: #endif
49:
50: /* Handle #pragma pack and #pragma weak. */
51: #define HANDLE_SYSV_PRAGMA
52:
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)
56:
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. */
60:
61: #undef TARGET_DEFAULT
62: #define TARGET_DEFAULT 0201
1.1.1.2 root 63:
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
1.1.1.3 ! root 68:
! 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. */
! 73:
! 74: #undef ASM_FILE_START
! 75: #define ASM_FILE_START(FILE) \
! 76: do { \
! 77: char c; \
! 78: int max = 0; \
! 79: char *string = dump_base_name; \
! 80: \
! 81: fputs ("\t.file\t\"", FILE); \
! 82: \
! 83: while ((c = *string++) != 0 && max++ < 14) { \
! 84: if (c == '\"' || c == '\\') \
! 85: putc ('\\', FILE); \
! 86: putc (c, FILE); \
! 87: } \
! 88: fputs ("\"\n", FILE); \
! 89: } while (0)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.