diff options
Diffstat (limited to 'gcc/config/rs6000/sysv4.h')
-rwxr-xr-x | gcc/config/rs6000/sysv4.h | 1770 |
1 files changed, 0 insertions, 1770 deletions
diff --git a/gcc/config/rs6000/sysv4.h b/gcc/config/rs6000/sysv4.h deleted file mode 100755 index c0564c3..0000000 --- a/gcc/config/rs6000/sysv4.h +++ /dev/null @@ -1,1770 +0,0 @@ -/* Target definitions for GNU compiler for PowerPC running System V.4 - Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. - Contributed by Cygnus Support. - -This file is part of GNU CC. - -GNU CC 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 2, or (at your option) -any later version. - -GNU CC 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 GNU CC; see the file COPYING. If not, write to -the Free Software Foundation, 59 Temple Place - Suite 330, -Boston, MA 02111-1307, USA. */ - -/* Small data support types */ -enum rs6000_sdata_type { - SDATA_NONE, /* no small data support */ - SDATA_DATA, /* just put data in .sbss/.sdata, don't use relocs */ - SDATA_SYSV, /* Use r13 to point to .sdata/.sbss */ - SDATA_EABI /* Use r13 like above, r2 points to .sdata2/.sbss2 */ -}; - -extern enum rs6000_sdata_type rs6000_sdata; - -/* V.4/eabi switches */ -#define MASK_NO_BITFIELD_TYPE 0x40000000 /* Set PCC_BITFIELD_TYPE_MATTERS to 0 */ -#define MASK_STRICT_ALIGN 0x20000000 /* Set STRICT_ALIGNMENT to 1. */ -#define MASK_RELOCATABLE 0x10000000 /* GOT pointers are PC relative */ -#define MASK_EABI 0x08000000 /* Adhere to eabi, not System V spec */ -#define MASK_LITTLE_ENDIAN 0x04000000 /* target is little endian */ -#define MASK_REGNAMES 0x02000000 /* use alternate register names. */ -#define MASK_PROTOTYPE 0x01000000 /* Only prototyped fcns pass variable args */ -/* CYGNUS LOCAL vmakarov */ -#define MASK_NO_BITFIELD_WORD 0x00400000 /* Bitfields cannot cross word boundaries */ -/* END CYGNUS LOCAL */ - -#define TARGET_NO_BITFIELD_TYPE (target_flags & MASK_NO_BITFIELD_TYPE) -#define TARGET_STRICT_ALIGN (target_flags & MASK_STRICT_ALIGN) -#define TARGET_RELOCATABLE (target_flags & MASK_RELOCATABLE) -#define TARGET_EABI (target_flags & MASK_EABI) -/* CYGNUS LOCAL vmakarov */ -#define TARGET_NO_BITFIELD_WORD (target_flags & MASK_NO_BITFIELD_WORD) -/* END CYGNUS LOCAL */ -#define TARGET_LITTLE_ENDIAN (target_flags & MASK_LITTLE_ENDIAN) -#define TARGET_REGNAMES (target_flags & MASK_REGNAMES) -#define TARGET_PROTOTYPE (target_flags & MASK_PROTOTYPE) -#define TARGET_TOC ((target_flags & MASK_64BIT) \ - || ((target_flags & (MASK_RELOCATABLE \ - | MASK_MINIMAL_TOC)) \ - && flag_pic > 1) \ - || DEFAULT_ABI == ABI_AIX \ - || DEFAULT_ABI == ABI_NT) - -#define TARGET_BITFIELD_TYPE (! TARGET_NO_BITFIELD_TYPE) -#define TARGET_BIG_ENDIAN (! TARGET_LITTLE_ENDIAN) -#define TARGET_NO_PROTOTYPE (! TARGET_PROTOTYPE) -#define TARGET_NO_TOC (! TARGET_TOC) -#define TARGET_NO_EABI (! TARGET_EABI) -/* CYGNUS LOCAL vmakarov */ -#define TARGET_BITFIELD_WORD (! TARGET_NO_BITFIELD_WORD) -/* END CYGNUS LOCAL */ - -/* Pseudo target to indicate whether the object format is ELF - (to get around not having conditional compilation in the md file) */ -#define TARGET_ELF 1 - -/* Note, V.4 no longer uses a normal TOC, so make -mfull-toc, be just - the same as -mminimal-toc. */ -#undef SUBTARGET_SWITCHES -#define SUBTARGET_SWITCHES \ - { "bit-align", -MASK_NO_BITFIELD_TYPE }, \ - { "no-bit-align", MASK_NO_BITFIELD_TYPE }, \ - { "strict-align", MASK_STRICT_ALIGN }, \ - { "no-strict-align", -MASK_STRICT_ALIGN }, \ - { "relocatable", MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC }, \ - { "no-relocatable", -MASK_RELOCATABLE }, \ - { "relocatable-lib", MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC }, \ - { "no-relocatable-lib", -MASK_RELOCATABLE }, \ - { "little-endian", MASK_LITTLE_ENDIAN }, \ - { "little", MASK_LITTLE_ENDIAN }, \ - { "big-endian", -MASK_LITTLE_ENDIAN }, \ - { "big", -MASK_LITTLE_ENDIAN }, \ - { "no-toc", 0 }, \ - { "toc", MASK_MINIMAL_TOC }, \ - { "full-toc", MASK_MINIMAL_TOC }, \ - { "prototype", MASK_PROTOTYPE }, \ - { "no-prototype", -MASK_PROTOTYPE }, \ - { "no-traceback", 0 }, \ - { "eabi", MASK_EABI }, \ - { "no-eabi", -MASK_EABI }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "bit-word", -MASK_NO_BITFIELD_WORD }, \ - { "no-bit-word", MASK_NO_BITFIELD_WORD }, \ -/* END CYGNUS LOCAL */ \ - { "regnames", MASK_REGNAMES }, \ - { "no-regnames", -MASK_REGNAMES }, \ - { "sdata", 0 }, \ - { "no-sdata", 0 }, \ - { "sim", 0 }, \ - { "ads", 0 }, \ - { "yellowknife", 0 }, \ - { "mvme", 0 }, \ - { "emb", 0 }, \ - { "solaris-cclib", 0 }, \ - { "shlib", 0 }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "vxworks", 0 }, \ -/* END CYGNUS LOCAL */ \ - EXTRA_SUBTARGET_SWITCHES \ - { "newlib", 0 }, - -/* This is meant to be redefined in the host dependent files */ -#define EXTRA_SUBTARGET_SWITCHES - -/* Default ABI to use */ -#define RS6000_ABI_NAME "sysv" - -/* Strings provided by SUBTARGET_OPTIONS */ -extern char *rs6000_abi_name; -extern char *rs6000_sdata_name; - -#define SUBTARGET_OPTIONS \ - { "call-", &rs6000_abi_name}, \ - { "sdata=", &rs6000_sdata_name} - -/* Max # of bytes for variables to automatically be put into the .sdata - or .sdata2 sections. */ -extern int g_switch_value; /* value of the -G xx switch */ -extern int g_switch_set; /* whether -G xx was passed. */ - -#ifndef SDATA_DEFAULT_SIZE -#define SDATA_DEFAULT_SIZE 8 -#endif - -/* Sometimes certain combinations of command options do not make sense - on a particular target machine. You can define a macro - `OVERRIDE_OPTIONS' to take account of this. This macro, if - defined, is executed once just after all the command options have - been parsed. - - The macro SUBTARGET_OVERRIDE_OPTIONS is provided for subtargets, to - get control. */ - -#define SUBTARGET_OVERRIDE_OPTIONS \ -do { \ - if (!g_switch_set) \ - g_switch_value = SDATA_DEFAULT_SIZE; \ - \ - if (!strcmp (rs6000_abi_name, "sysv")) \ - rs6000_current_abi = ABI_V4; \ - else if (!strcmp (rs6000_abi_name, "sysv-noeabi")) \ - { \ - rs6000_current_abi = ABI_V4; \ - target_flags &= ~ MASK_EABI; \ - } \ - else if (!strcmp (rs6000_abi_name, "sysv-eabi") \ - || !strcmp (rs6000_abi_name, "eabi")) \ - { \ - rs6000_current_abi = ABI_V4; \ - target_flags |= MASK_EABI; \ - } \ - else if (!strcmp (rs6000_abi_name, "aix")) \ - { \ - rs6000_current_abi = ABI_AIX_NODESC; \ - target_flags |= MASK_EABI; \ - } \ - else if (!strcmp (rs6000_abi_name, "aixdesc")) \ - rs6000_current_abi = ABI_AIX; \ - else if (!strcmp (rs6000_abi_name, "nt")) \ - rs6000_current_abi = ABI_NT; \ - else if (!strcmp (rs6000_abi_name, "linux")) \ - rs6000_current_abi = ABI_V4; \ - else if (!strcmp (rs6000_abi_name, "solaris")) \ - rs6000_current_abi = ABI_SOLARIS; \ -/* CYGNUS LOCAL vmakarov */ \ - else if (!strcmp (rs6000_abi_name, "i960-old")) \ - { \ - rs6000_current_abi = ABI_V4; \ - target_flags |= (MASK_LITTLE_ENDIAN | MASK_EABI \ - | MASK_NO_BITFIELD_WORD); \ - target_flags &= ~MASK_STRICT_ALIGN; \ - } \ -/* END CYGNUS LOCAL */ \ - else \ - { \ - rs6000_current_abi = ABI_V4; \ - error ("Bad value for -mcall-%s", rs6000_abi_name); \ - } \ - \ - if (rs6000_sdata_name) \ - { \ - if (!strcmp (rs6000_sdata_name, "none")) \ - rs6000_sdata = SDATA_NONE; \ - else if (!strcmp (rs6000_sdata_name, "data")) \ - rs6000_sdata = SDATA_DATA; \ - else if (!strcmp (rs6000_sdata_name, "default")) \ - rs6000_sdata = (TARGET_EABI) ? SDATA_EABI : SDATA_SYSV; \ - else if (!strcmp (rs6000_sdata_name, "sysv")) \ - rs6000_sdata = SDATA_SYSV; \ - else if (!strcmp (rs6000_sdata_name, "eabi")) \ - rs6000_sdata = SDATA_EABI; \ - else \ - error ("Bad value for -msdata=%s", rs6000_sdata_name); \ - } \ - else if (DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_SOLARIS) \ - { \ - rs6000_sdata = SDATA_DATA; \ - rs6000_sdata_name = "data"; \ - } \ - else \ - { \ - rs6000_sdata = SDATA_NONE; \ - rs6000_sdata_name = "none"; \ - } \ - \ - if (TARGET_RELOCATABLE && \ - (rs6000_sdata == SDATA_EABI || rs6000_sdata == SDATA_SYSV)) \ - { \ - rs6000_sdata = SDATA_DATA; \ - error ("-mrelocatable and -msdata=%s are incompatible.", \ - rs6000_sdata_name); \ - } \ - \ - else if (flag_pic && \ - (rs6000_sdata == SDATA_EABI || rs6000_sdata == SDATA_SYSV)) \ - { \ - rs6000_sdata = SDATA_DATA; \ - error ("-f%s and -msdata=%s are incompatible.", \ - (flag_pic > 1) ? "PIC" : "pic", \ - rs6000_sdata_name); \ - } \ - \ - if (rs6000_sdata != SDATA_NONE && DEFAULT_ABI != ABI_V4 \ - && DEFAULT_ABI != ABI_SOLARIS) \ - { \ - rs6000_sdata = SDATA_NONE; \ - error ("-msdata=%s and -mcall-%s are incompatible.", \ - rs6000_sdata_name, rs6000_abi_name); \ - } \ - \ - if (TARGET_RELOCATABLE && !TARGET_MINIMAL_TOC) \ - { \ - target_flags |= MASK_MINIMAL_TOC; \ - error ("-mrelocatable and -mno-minimal-toc are incompatible."); \ - } \ - \ - if (TARGET_RELOCATABLE && \ - (rs6000_current_abi == ABI_AIX || rs6000_current_abi == ABI_NT)) \ - { \ - target_flags &= ~MASK_RELOCATABLE; \ - error ("-mrelocatable and -mcall-%s are incompatible.", \ - rs6000_abi_name); \ - } \ - \ - if (flag_pic > 1 && \ - (rs6000_current_abi == ABI_AIX || rs6000_current_abi == ABI_NT)) \ - { \ - flag_pic = 0; \ - error ("-fPIC and -mcall-%s are incompatible.", \ - rs6000_abi_name); \ - } \ - \ - if (rs6000_current_abi == ABI_AIX && TARGET_LITTLE_ENDIAN) \ - { \ - target_flags &= ~MASK_LITTLE_ENDIAN; \ - error ("-mcall-aixdesc must be big endian"); \ - } \ - \ - if (rs6000_current_abi == ABI_NT && TARGET_BIG_ENDIAN) \ - { \ - target_flags |= MASK_LITTLE_ENDIAN; \ - error ("-mcall-nt must be little endian"); \ - } \ - \ - /* Treat -fPIC the same as -mrelocatable */ \ - if (flag_pic > 1) \ - target_flags |= MASK_RELOCATABLE | MASK_MINIMAL_TOC | MASK_NO_FP_IN_TOC; \ - \ - else if (TARGET_RELOCATABLE) \ - flag_pic = 2; \ - \ -} while (0) - -/* Default ABI to compile code for */ -#define DEFAULT_ABI rs6000_current_abi - -#define CPP_DEFAULT_SPEC "-D_ARCH_PPC" - -#define ASM_DEFAULT_SPEC "-mppc" - -#include "rs6000/rs6000.h" - -#undef TARGET_DEFAULT -#define TARGET_DEFAULT (MASK_POWERPC | MASK_NEW_MNEMONICS) - -#undef PROCESSOR_DEFAULT -#define PROCESSOR_DEFAULT PROCESSOR_PPC601 - -/* System V.4 uses register 13 as a pointer to the small data area, - so it is not available to the normal user. */ - -#undef FIXED_R13 -#define FIXED_R13 1 - -/* System V.4 passes the first 8 floating arguments in registers, - instead of the first 13 like AIX does. */ -#undef FP_ARG_MAX_REG -#define FP_ARG_MAX_REG ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_AIX_NODESC) \ - ? FP_ARG_AIX_MAX_REG : FP_ARG_V4_MAX_REG) - -/* Size of the V.4 varargs area if needed */ -#undef RS6000_VARARGS_AREA -#define RS6000_VARARGS_AREA ((rs6000_sysv_varargs_p) ? RS6000_VARARGS_SIZE : 0) - -/* Override default big endianism */ -#undef BYTES_BIG_ENDIAN -#undef WORDS_BIG_ENDIAN -#define BYTES_BIG_ENDIAN (TARGET_BIG_ENDIAN) -#define WORDS_BIG_ENDIAN (TARGET_BIG_ENDIAN) - -/* Define this to set the endianness to use in libgcc2.c, which can - not depend on target_flags. */ -#if !defined(_LITTLE_ENDIAN) && !defined(__sun__) -#define LIBGCC2_WORDS_BIG_ENDIAN 1 -#else -#define LIBGCC2_WORDS_BIG_ENDIAN 0 -#endif - -/* Size of the outgoing register save area */ -#undef RS6000_REG_SAVE -#define RS6000_REG_SAVE ((DEFAULT_ABI == ABI_AIX \ - || DEFAULT_ABI == ABI_AIX_NODESC) \ - ? (TARGET_64BIT ? 64 : 32) \ - : 0) - -/* Size of the fixed area on the stack. For AIX, use the standard 6 word - area, otherwise use 2 words to store back chain & LR. */ -#undef RS6000_SAVE_AREA -#define RS6000_SAVE_AREA \ - (((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_AIX_NODESC) ? 24 : 8) << (TARGET_64BIT ? 1 : 0)) - -/* Define cutoff for using external functions to save floating point. - Currently on V.4, always use inline stores */ -#undef FP_SAVE_INLINE -#define FP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) < 64) - -/* Don't generate XCOFF debugging information. */ - -#undef XCOFF_DEBUGGING_INFO - -/* Don't use the COFF object file format. */ - -#undef OBJECT_FORMAT_COFF - -/* Don't bother to output .extern pseudo-ops. They are not needed by - ELF assemblers. */ - -#undef ASM_OUTPUT_EXTERNAL - -/* Put jump tables in read-only memory, rather than in .text. */ -#undef JUMP_TABLES_IN_TEXT_SECTION -#define JUMP_TABLES_IN_TEXT_SECTION 0 - -/* Disable AIX-ism that disables turning -B into -L if the argument specifies a - relative file name. This breaks setting GCC_EXEC_PREFIX to D:\path under - Windows. */ -#undef RELATIVE_PREFIX_NOT_LINKDIR - -/* Undefine some things which are defined by the generic svr4.h. */ - -#undef ASM_FILE_END -#undef ASM_OUTPUT_EXTERNAL_LIBCALL -#undef READONLY_DATA_SECTION -#undef SELECT_SECTION -#undef ASM_DECLARE_FUNCTION_NAME -#undef ASM_OUTPUT_CONSTRUCTOR -#undef ASM_OUTPUT_DESTRUCTOR - -/* Use the regular svr4 definitions. */ - -#include "svr4.h" - -/* Prefix and suffix to use to saving floating point */ -#undef SAVE_FP_PREFIX -#undef SAVE_FP_SUFFIX -#define SAVE_FP_PREFIX "_savefpr_" -#define SAVE_FP_SUFFIX "_l" - -/* Prefix and suffix to use to restoring floating point */ -#undef RESTORE_FP_PREFIX -#undef RESTORE_FP_SUFFIX -#define RESTORE_FP_PREFIX "_restfpr_" -#define RESTORE_FP_SUFFIX "_l" - -/* Type used for ptrdiff_t, as a string used in a declaration. */ -#undef PTRDIFF_TYPE -#define PTRDIFF_TYPE "int" - -/* CYGNUS LOCAL vmakarov */ -#if 0 -/* END CYGNUS LOCAL */ - -/* Variables to set wchar_t size/type */ -extern char *rs6000_wchar_type; -extern int rs6000_wchar_type_size; - -/* Type used for wchar_t, as a string used in a declaration. */ -#undef WCHAR_TYPE -#define WCHAR_TYPE rs6000_wchar_type - -/* Width of wchar_t in bits. */ -#undef WCHAR_TYPE_SIZE -#define WCHAR_TYPE_SIZE rs6000_wchar_type_size - -/* Tell the preprocessor the maximum size of wchar_t. */ -#undef MAX_WCHAR_TYPE_SIZE -#define MAX_WCHAR_TYPE_SIZE INT_TYPE_SIZE - -/* Tell cccp we'll set up __WCHAR_TYPE__ */ -#undef NO_BUILTIN_WCHAR_TYPE -#define NO_BUILTIN_WCHAR_TYPE 1 - -/* CYGNUS LOCAL vmakarov */ -#else -/* Type used for wchar_t, as a string used in a declaration. */ -#undef WCHAR_TYPE -#define WCHAR_TYPE "long int" - -/* Width of wchar_t in bits. */ -#undef WCHAR_TYPE_SIZE -#define WCHAR_TYPE_SIZE 32 - -#endif -/* END CYGNUS LOCAL */ - -/* Make int foo : 8 not cause structures to be aligned to an int boundary */ - -#undef PCC_BITFIELD_TYPE_MATTERS -#define PCC_BITFIELD_TYPE_MATTERS (TARGET_BITFIELD_TYPE) - -/* CYGNUS LOCAL vmakarov */ -#undef BITFIELD_NBYTES_LIMITED -#define BITFIELD_NBYTES_LIMITED (TARGET_NO_BITFIELD_WORD) -/* END CYGNUS LOCAL */ - -/* Define this macro to be the value 1 if instructions will fail to - work if given data not on the nominal alignment. If instructions - will merely go slower in that case, define this macro as 0. */ -#undef STRICT_ALIGNMENT -#define STRICT_ALIGNMENT (TARGET_STRICT_ALIGN) - -/* Alignment in bits of the stack boundary. Note, in order to allow building - one set of libraries with -mno-eabi instead of eabi libraries and non-eabi - versions, just use 64 as the stack boundary. */ -#undef STACK_BOUNDARY -#define STACK_BOUNDARY 64 - -/* Real stack boundary as mandated by the appropriate ABI */ -#define ABI_STACK_BOUNDARY ((TARGET_EABI) ? 64 : 128) - -/* No data type wants to be aligned rounder than this. */ -#undef BIGGEST_ALIGNMENT -#define BIGGEST_ALIGNMENT ((TARGET_EABI) ? 64 : 128) - -#undef BIGGEST_FIELD_ALIGNMENT -#undef ADJUST_FIELD_ALIGN -#undef ROUND_TYPE_ALIGN - -/* Use ELF style section commands. */ - -#undef TEXT_SECTION_ASM_OP -#define TEXT_SECTION_ASM_OP "\t.section\t\".text\"" - -#undef DATA_SECTION_ASM_OP -#define DATA_SECTION_ASM_OP "\t.section\t\".data\"" - -#undef BSS_SECTION_ASM_OP -#define BSS_SECTION_ASM_OP "\t.section\t\".bss\"" - -#undef INIT_SECTION_ASM_OP -#define INIT_SECTION_ASM_OP "\t.section\t\".init\",\"ax\"" - -#undef FINI_SECTION_ASM_OP -#define FINI_SECTION_ASM_OP "\t.section\t\".fini\",\"ax\"" - -#define TOC_SECTION_ASM_OP "\t.section\t\".got\",\"aw\"" - -/* Put PC relative got entries in .got2 */ -#define MINIMAL_TOC_SECTION_ASM_OP \ - ((TARGET_RELOCATABLE || flag_pic) ? "\t.section\t\".got2\",\"aw\"" : "\t.section\t\".got1\",\"aw\"") - -/* Put relocatable data in .data, not .rodata so initialized pointers can be updated */ -#undef CONST_SECTION_ASM_OP -#define CONST_SECTION_ASM_OP \ - ((TARGET_RELOCATABLE || flag_pic) ? "\t.section\t\".data\"\t# .rodata" : "\t.section\t\".rodata\"") - - -#define SDATA_SECTION_ASM_OP "\t.section\t\".sdata\",\"aw\"" -#define SDATA2_SECTION_ASM_OP "\t.section\t\".sdata2\",\"a\"" -#define SBSS_SECTION_ASM_OP \ - ((DEFAULT_ABI == ABI_SOLARIS) ? "\t.section\t\".sbss\",\"aw\"" : "\t.section\t\".sbss\",\"aw\",@nobits") - - -/* Besides the usual ELF sections, we need a toc section. */ -#undef EXTRA_SECTIONS -#define EXTRA_SECTIONS in_const, in_ctors, in_dtors, in_toc, in_sdata, in_sdata2, in_sbss, in_init, in_fini - -#undef EXTRA_SECTION_FUNCTIONS -#define EXTRA_SECTION_FUNCTIONS \ - CONST_SECTION_FUNCTION \ - CTORS_SECTION_FUNCTION \ - DTORS_SECTION_FUNCTION \ - TOC_SECTION_FUNCTION \ - SDATA_SECTION_FUNCTION \ - SDATA2_SECTION_FUNCTION \ - SBSS_SECTION_FUNCTION \ - INIT_SECTION_FUNCTION \ - FINI_SECTION_FUNCTION - -extern void toc_section (), sdata_section (), sdata2_section (); -extern void sbss_section (); - -#define TOC_SECTION_FUNCTION \ -void \ -toc_section () \ -{ \ - if (in_section != in_toc) \ - { \ - in_section = in_toc; \ - if ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_NT) \ - && TARGET_MINIMAL_TOC \ - && !TARGET_RELOCATABLE) \ - { \ - if (! toc_initialized) \ - { \ - toc_initialized = 1; \ - fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP); \ - ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "LCTOC", 0); \ - fprintf (asm_out_file, "\t.tc "); \ - ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1[TC],"); \ - ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1"); \ - fprintf (asm_out_file, "\n"); \ - \ - fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP); \ - ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1"); \ - fprintf (asm_out_file, " = .+32768\n"); \ - } \ - else \ - fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP); \ - } \ - else if ((DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_NT) \ - && !TARGET_RELOCATABLE) \ - fprintf (asm_out_file, "%s\n", TOC_SECTION_ASM_OP); \ - else \ - { \ - fprintf (asm_out_file, "%s\n", MINIMAL_TOC_SECTION_ASM_OP); \ - if (! toc_initialized) \ - { \ - ASM_OUTPUT_INTERNAL_LABEL_PREFIX (asm_out_file, "LCTOC1"); \ - fprintf (asm_out_file, " = .+32768\n"); \ - toc_initialized = 1; \ - } \ - } \ - } \ -} - -#define SDATA_SECTION_FUNCTION \ -void \ -sdata_section () \ -{ \ - if (in_section != in_sdata) \ - { \ - in_section = in_sdata; \ - fprintf (asm_out_file, "%s\n", SDATA_SECTION_ASM_OP); \ - } \ -} - -#define SDATA2_SECTION_FUNCTION \ -void \ -sdata2_section () \ -{ \ - if (in_section != in_sdata2) \ - { \ - in_section = in_sdata2; \ - fprintf (asm_out_file, "%s\n", SDATA2_SECTION_ASM_OP); \ - } \ -} - -#define SBSS_SECTION_FUNCTION \ -void \ -sbss_section () \ -{ \ - if (in_section != in_sbss) \ - { \ - in_section = in_sbss; \ - fprintf (asm_out_file, "%s\n", SBSS_SECTION_ASM_OP); \ - } \ -} - -#define INIT_SECTION_FUNCTION \ -void \ -init_section () \ -{ \ - if (in_section != in_init) \ - { \ - in_section = in_init; \ - fprintf (asm_out_file, "%s\n", INIT_SECTION_ASM_OP); \ - } \ -} - -#define FINI_SECTION_FUNCTION \ -void \ -fini_section () \ -{ \ - if (in_section != in_fini) \ - { \ - in_section = in_fini; \ - fprintf (asm_out_file, "%s\n", FINI_SECTION_ASM_OP); \ - } \ -} - -/* A C statement or statements to switch to the appropriate section - for output of RTX in mode MODE. You can assume that RTX is some - kind of constant in RTL. The argument MODE is redundant except in - the case of a `const_int' rtx. Select the section by calling - `text_section' or one of the alternatives for other sections. - - Do not define this macro if you put all constants in the read-only - data section. */ - -extern void rs6000_select_rtx_section (), rs6000_select_section (); - -#undef SELECT_RTX_SECTION -#define SELECT_RTX_SECTION(MODE, X) rs6000_select_rtx_section (MODE, X) - -/* A C statement or statements to switch to the appropriate - section for output of DECL. DECL is either a `VAR_DECL' node - or a constant of some sort. RELOC indicates whether forming - the initial value of DECL requires link-time relocations. */ - -#undef SELECT_SECTION -#define SELECT_SECTION(DECL,RELOC) rs6000_select_section (DECL, RELOC) - -/* Return non-zero if this entry is to be written into the constant pool - in a special way. We do so if this is a SYMBOL_REF, LABEL_REF or a CONST - containing one of them. If -mfp-in-toc (the default), we also do - this for floating-point constants. We actually can only do this - if the FP formats of the target and host machines are the same, but - we can't check that since not every file that uses - GO_IF_LEGITIMATE_ADDRESS_P includes real.h. - - Unlike AIX, we don't key off of -mminimal-toc, but instead do not - allow floating point constants in the TOC if -mrelocatable. */ - -#undef ASM_OUTPUT_SPECIAL_POOL_ENTRY_P -#define ASM_OUTPUT_SPECIAL_POOL_ENTRY_P(X) \ - (TARGET_TOC \ - && (GET_CODE (X) == SYMBOL_REF \ - || (GET_CODE (X) == CONST && GET_CODE (XEXP (X, 0)) == PLUS \ - && GET_CODE (XEXP (XEXP (X, 0), 0)) == SYMBOL_REF) \ - || GET_CODE (X) == LABEL_REF \ - || (!TARGET_NO_FP_IN_TOC \ - && !TARGET_RELOCATABLE \ - && GET_CODE (X) == CONST_DOUBLE \ - && GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \ - && BITS_PER_WORD == HOST_BITS_PER_INT))) - -/* These macros generate the special .type and .size directives which - are used to set the corresponding fields of the linker symbol table - entries in an ELF object file under SVR4. These macros also output - the starting labels for the relevant functions/objects. */ - -/* Write the extra assembler code needed to declare a function properly. - Some svr4 assemblers need to also have something extra said about the - function's return value. We allow for that here. */ - -extern int rs6000_pic_labelno; - -/* CYGNUS LOCAL vmakarov */ -#undef USER_LABEL_PREFIX -/* END CYGNUS LOCAL */ - -#undef ASM_DECLARE_FUNCTION_NAME -#define ASM_DECLARE_FUNCTION_NAME(FILE, NAME, DECL) \ - do { \ - char *orig_name; \ - char *init_ptr = (TARGET_64BIT) ? ".quad" : ".long"; \ - STRIP_NAME_ENCODING (orig_name, NAME); \ - \ - if (TARGET_RELOCATABLE && (get_pool_size () != 0 || profile_flag)) \ - { \ - char buf[256], *buf_ptr; \ - \ - ASM_OUTPUT_INTERNAL_LABEL (FILE, "LCL", rs6000_pic_labelno); \ - \ - ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1); \ - STRIP_NAME_ENCODING (buf_ptr, buf); \ - fprintf (FILE, "\t%s %s-", init_ptr, buf_ptr); \ - \ - ASM_GENERATE_INTERNAL_LABEL (buf, "LCF", rs6000_pic_labelno); \ - fprintf (FILE, "%s\n", buf_ptr); \ - } \ - \ - asm_fprintf (FILE, "\t%s\t %U%s,", TYPE_ASM_OP, orig_name); /* CYGNUS LOCAL vmakarov: asm_fprintf */ \ - fprintf (FILE, TYPE_OPERAND_FMT, "function"); \ - putc ('\n', FILE); \ - ASM_DECLARE_RESULT (FILE, DECL_RESULT (DECL)); \ - \ - if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_NT) \ - { \ - char *desc_name = orig_name; \ - \ - while (*desc_name == '.') \ - desc_name++; \ - \ - if (TREE_PUBLIC (DECL)) \ - fprintf (FILE, "\t.globl %s\n", desc_name); \ - \ - fprintf (FILE, "%s\n", MINIMAL_TOC_SECTION_ASM_OP); \ - fprintf (FILE, "%s:\n", desc_name); \ - fprintf (FILE, "\t%s %s\n", init_ptr, orig_name); \ - fprintf (FILE, "\t%s _GLOBAL_OFFSET_TABLE_\n", init_ptr); \ - if (DEFAULT_ABI == ABI_AIX) \ - fprintf (FILE, "\t%s 0\n", init_ptr); \ - fprintf (FILE, "\t.previous\n"); \ - } \ - asm_fprintf (FILE, "%U%s:\n", orig_name); /* CYGNUS LOCAL vmakarov: asm_fprintf */ \ - } while (0) - -/* How to renumber registers for dbx and gdb. */ - -#define DBX_REGISTER_NUMBER(REGNO) (REGNO) - -/* CYGNUS LOCAL vmakarov */ -/* If defined, C string expressions to be used for the `%R', `%L', - `%U', and `%I' options of `asm_fprintf' (see `final.c'). These - are useful when a single `md' file must support multiple assembler - formats. In that case, the various `tm.h' files can define these - macros differently. */ - -#ifndef REGISTER_PREFIX -#define REGISTER_PREFIX "" -#endif - -#ifndef LOCAL_LABEL_PREFIX -#define LOCAL_LABEL_PREFIX "." -#endif - -#ifndef USER_LABEL_PREFIX -#define USER_LABEL_PREFIX "" -#endif - -#ifndef IMMEDIATE_PREFIX -#define IMMEDIATE_PREFIX "" -#endif -/* END CYGNUS LOCAL */ - -/* svr4.h overrides ASM_OUTPUT_INTERNAL_LABEL. */ - -#undef ASM_OUTPUT_INTERNAL_LABEL_PREFIX -#define ASM_OUTPUT_INTERNAL_LABEL_PREFIX(FILE,PREFIX) \ - asm_fprintf (FILE, "%L%s", PREFIX) /* CYGNUS LOCAL vmakarov: asm_fprintf */ - -/* This is how to allocate empty space in some section. Use .space - instead of .zero because the Solaris PowerPC assembler doesn't - like it, and gas accepts either syntax. */ - -#undef SKIP_ASM_OP -#define SKIP_ASM_OP ".space" - -/* This says how to output assembler code to declare an - uninitialized internal linkage data object. Under SVR4, - the linker seems to want the alignment of data objects - to depend on their types. We do exactly that here. */ - -#ifndef LOCAL_ASM_OP -#define LOCAL_ASM_OP ".local" -#endif - -#ifndef LCOMM_ASM_OP -#define LCOMM_ASM_OP ".lcomm" -#endif - -#undef ASM_OUTPUT_ALIGNED_LOCAL -#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ -do { \ - if (rs6000_sdata != SDATA_NONE && (SIZE) > 0 \ - && (SIZE) <= g_switch_value) \ - { \ - sbss_section (); \ - ASM_OUTPUT_ALIGN (FILE, exact_log2 (ALIGN / BITS_PER_UNIT)); \ - ASM_OUTPUT_LABEL (FILE, NAME); \ - ASM_OUTPUT_SKIP (FILE, SIZE); \ - if (!flag_inhibit_size_directive && (SIZE) > 0) \ - { \ - fprintf (FILE, "\t%s\t ", SIZE_ASM_OP); \ - assemble_name (FILE, NAME); \ - fprintf (FILE, ",%d\n", SIZE); \ - } \ - } \ - else \ - { \ - fprintf (FILE, "\t%s\t", LCOMM_ASM_OP); \ - assemble_name ((FILE), (NAME)); \ - fprintf ((FILE), ",%u,%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT); \ - } \ -} while (0) - -/* Describe how to emit uninitialized external linkage items */ -#define ASM_OUTPUT_ALIGNED_BSS(FILE, DECL, NAME, SIZE, ALIGN) \ -do { \ - ASM_GLOBALIZE_LABEL (FILE, NAME); \ - ASM_OUTPUT_ALIGNED_LOCAL (FILE, NAME, SIZE, ALIGN); \ -} while (0) - -/* Switch Recognition by gcc.c. Add -G xx support */ - -#undef SWITCH_TAKES_ARG -#define SWITCH_TAKES_ARG(CHAR) \ - ((CHAR) == 'D' || (CHAR) == 'U' || (CHAR) == 'o' \ - || (CHAR) == 'e' || (CHAR) == 'T' || (CHAR) == 'u' \ - || (CHAR) == 'I' || (CHAR) == 'm' || (CHAR) == 'x' \ - || (CHAR) == 'L' || (CHAR) == 'A' || (CHAR) == 'V' \ - || (CHAR) == 'B' || (CHAR) == 'b' || (CHAR) == 'G') - -/* Output .file. */ -#undef ASM_FILE_START -#define ASM_FILE_START(FILE) \ -do { \ - output_file_directive ((FILE), main_input_filename); \ - rs6000_file_start (FILE, TARGET_CPU_DEFAULT); \ -} while (0) - - -/* This is how to output an assembler line defining an `int' constant. - For -mrelocatable, we mark all addresses that need to be fixed up - in the .fixup section. */ -#undef ASM_OUTPUT_INT -#define ASM_OUTPUT_INT(FILE,VALUE) \ -do { \ - static int recurse = 0; \ - if ((TARGET_RELOCATABLE || flag_pic) \ - && in_section != in_toc \ - && in_section != in_text \ - && in_section != in_ctors \ - && in_section != in_dtors \ - && !recurse \ - && GET_CODE (VALUE) != CONST_INT \ - && GET_CODE (VALUE) != CONST_DOUBLE \ - && CONSTANT_P (VALUE)) \ - { \ - static int labelno = 0; \ - char buf[256], *p; \ - \ - recurse = 1; \ - ASM_GENERATE_INTERNAL_LABEL (buf, "LCP", labelno++); \ - STRIP_NAME_ENCODING (p, buf); \ - fprintf (FILE, "%s:\n", p); \ - fprintf (FILE, "\t.long ("); \ - output_addr_const (FILE, (VALUE)); \ - fprintf (FILE, ")@fixup\n"); \ - fprintf (FILE, "\t.section\t\".fixup\",\"aw\"\n"); \ - ASM_OUTPUT_ALIGN (FILE, 2); \ - fprintf (FILE, "\t.long\t%s\n", p); \ - fprintf (FILE, "\t.previous\n"); \ - recurse = 0; \ - } \ - /* Remove initial .'s to turn a -mcall-aixdesc or -mcall-nt function \ - address into the address of the descriptor, not the function \ - itself. */ \ - else if (GET_CODE (VALUE) == SYMBOL_REF \ - && XSTR (VALUE, 0)[0] == '.' \ - && (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_NT)) \ - { \ - char *name = XSTR (VALUE, 0); \ - while (*name == '.') \ - name++; \ - \ - fprintf (FILE, "\t.long %s\n", name); \ - } \ - else \ - { \ - fprintf (FILE, "\t.long "); \ - output_addr_const (FILE, (VALUE)); \ - fprintf (FILE, "\n"); \ - } \ -} while (0) - -/* This is the end of what might become sysv4.h. */ - -/* Allow stabs and dwarf, for now, make stabs the default debugging type, - not dwarf since G++ doesn't support dwarf. */ -#undef PREFERRED_DEBUGGING_TYPE -#define PREFERRED_DEBUGGING_TYPE DBX_DEBUG - -#define DBX_DEBUGGING_INFO -#define DWARF_DEBUGGING_INFO - -/* If we are referencing a function that is static or is known to be - in this file, make the SYMBOL_REF special. We can use this to indicate - that we can branch to this function without emitting a no-op after the - call. For real AIX and NT calling sequences, we also replace the - function name with the real name (1 or 2 leading .'s), rather than - the function descriptor name. This saves a lot of overriding code - to readd the prefixes. */ - -#undef ENCODE_SECTION_INFO -#define ENCODE_SECTION_INFO(DECL) rs6000_encode_section_info (DECL) - -extern void rs6000_encode_section_info (); - -/* This macro gets just the user-specified name - out of the string in a SYMBOL_REF. Discard - a leading * or @. */ -#undef STRIP_NAME_ENCODING -#define STRIP_NAME_ENCODING(VAR,SYMBOL_NAME) \ -do { \ - char *_name = SYMBOL_NAME; \ - while (*_name == '*' || *_name == '@') \ - _name++; \ - (VAR) = _name; \ -} while (0) - -/* This is how to output a reference to a user-level label named NAME. - `assemble_name' uses this. */ - -#undef ASM_OUTPUT_LABELREF -#define ASM_OUTPUT_LABELREF(FILE,NAME) \ -do { \ - char *_name = NAME; \ - while (*_name == '*' || *_name == '@') \ - _name++; \ - asm_fprintf (FILE, "%U%s", _name); /* CYGNUS LOCAL vmakarov: asm_fprintf */ \ -} while (0) - -/* - * Switch into a generic section. - * - * We make the section read-only and executable for a function decl, - * read-only for a const data decl, and writable for a non-const data decl. - * - * If the section has already been defined, we must not - * emit the attributes here. The SVR4 assembler does not - * recognize section redefinitions. - * If DECL is NULL, no attributes are emitted. - * - * Note, Solaris as doesn't like @nobits, and gas can handle .sbss without - * needing @nobits. - */ - -#undef ASM_OUTPUT_SECTION_NAME -#define ASM_OUTPUT_SECTION_NAME(FILE, DECL, NAME, RELOC) \ -do { \ - static struct section_info \ - { \ - struct section_info *next; \ - char *name; \ - enum sect_enum {SECT_RW, SECT_RO, SECT_EXEC} type; \ - } *sections; \ - struct section_info *s; \ - char *mode; \ - enum sect_enum type; \ - \ - for (s = sections; s; s = s->next) \ - if (!strcmp (NAME, s->name)) \ - break; \ - \ - if (DECL && TREE_CODE (DECL) == FUNCTION_DECL) \ - type = SECT_EXEC, mode = "ax"; \ - else if (DECL && DECL_READONLY_SECTION (DECL, RELOC) && !TARGET_RELOCATABLE && !flag_pic) \ - type = SECT_RO, mode = "a"; \ - else \ - type = SECT_RW, mode = "aw"; \ - \ - if (s == 0) \ - { \ - s = (struct section_info *) xmalloc (sizeof (struct section_info)); \ - s->name = xmalloc ((strlen (NAME) + 1) * sizeof (*NAME)); \ - strcpy (s->name, NAME); \ - s->type = type; \ - s->next = sections; \ - sections = s; \ - fprintf (FILE, "\t.section\t\"%s\",\"%s\"\n", NAME, mode); \ - } \ - else \ - { \ - if (DECL && s->type != type) \ - error_with_decl (DECL, "%s causes a section type conflict"); \ - \ - fprintf (FILE, "\t.section\t\"%s\"\n", NAME); \ - } \ -} while (0) - -#undef ASM_OUTPUT_CONSTRUCTOR -#define ASM_OUTPUT_CONSTRUCTOR(FILE,NAME) \ - do { \ - if (DEFAULT_ABI != ABI_SOLARIS) \ - { \ - ctors_section (); \ - fprintf (FILE, "\t%s\t ", INT_ASM_OP); \ - assemble_name (FILE, NAME); \ - } \ - else \ - { \ - init_section (); \ - fputs ("\tbl ", FILE); \ - assemble_name (FILE, NAME); \ - } \ - fputs ("\n", FILE); \ - } while (0) - -/* A C statement (sans semicolon) to output an element in the table of - global destructors. */ -#undef ASM_OUTPUT_DESTRUCTOR -#define ASM_OUTPUT_DESTRUCTOR(FILE,NAME) \ - do { \ - if (DEFAULT_ABI != ABI_SOLARIS) \ - { \ - dtors_section (); \ - fprintf (FILE, "\t%s\t ", INT_ASM_OP); \ - assemble_name (FILE, NAME); \ - } \ - else \ - { \ - fini_section (); \ - fputs ("\tbl ", FILE); \ - assemble_name (FILE, NAME); \ - } \ - fputs ("\n", FILE); \ - } while (0) - -/* But, to make this work, we have to output the stabs for the function - name *first*... */ - -#define DBX_FUNCTION_FIRST - -/* This is the end of what might become sysv4dbx.h. */ - -#undef TARGET_VERSION -#define TARGET_VERSION fprintf (stderr, " (PowerPC System V.4)"); - -#undef CPP_PREDEFINES -#define CPP_PREDEFINES \ - "-DPPC -Dunix -D__svr4__ -Asystem(unix) -Asystem(svr4) -Acpu(powerpc) -Amachine(powerpc)" - -/* Pass various options to the assembler */ -#undef ASM_SPEC -#define ASM_SPEC "%(asm_cpu) \ -%{.s: %{mregnames} %{mno-regnames}} %{.S: %{mregnames} %{mno-regnames}} \ -%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} \ -%{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} \ -%{memb} %{!memb: %{msdata: -memb} %{msdata=eabi: -memb}} \ -%{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian} \ -%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ - %{mcall-solaris: -mlittle -msolaris} \ - %{cygnus-local-vmakarov: } \ - %{mcall-i960-old: -mlittle} \ - %{end-cygnus-local: } \ - %{mcall-linux: -mbig} }}}}" - -#ifndef CC1_ENDIAN_BIG_SPEC -#define CC1_ENDIAN_BIG_SPEC "" -#endif - -#ifndef CC1_ENDIAN_LITTLE_SPEC -#define CC1_ENDIAN_LITTLE_SPEC "\ -%{!mstrict-align: %{!mno-strict-align: \ - %{cygnus-local-vmakarov: } \ - %{!mcall-i960-old: \ - %{end-cygnus-local: } \ - -mstrict-align \ - %{cygnus-local-vmakarov: } \ - } \ - %{end-cygnus-local: } \ -}}" -#endif - -#ifndef CC1_ENDIAN_DEFAULT_SPEC -#define CC1_ENDIAN_DEFAULT_SPEC "%(cc1_endian_big_spec)" -#endif - -#undef CC1_SPEC -/* Pass -G xxx to the compiler and set correct endian mode */ -#define CC1_SPEC "%{G*} \ -%{mlittle: %(cc1_endian_little)} %{!mlittle: %{mlittle-endian: %(cc1_endian_little)}} \ -%{mbig: %(cc1_endian_big)} %{!mbig: %{mbig-endian: %(cc1_endian_big)}} \ -%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ - %{mcall-nt: -mlittle %(cc1_endian_little) } \ - %{mcall-aixdesc: -mbig %(cc1_endian_big) } \ - %{mcall-solaris: -mlittle %(cc1_endian_little) } \ - %{cygnus-local-vmakarov: } \ - %{mcall-i960-old: -mlittle %(cc1_endian_little) } \ - %{end-cygnus-local: } \ - %{mcall-linux: -mbig %(cc1_endian_big) }} \ - %{!mcall-nt: %{!mcall-aixdesc: %{!mcall-solaris: %{!mcall-linux: \ - %{cygnus-local-vmakarov: } \ - %{!mcall-i960-old: \ - %{end-cygnus-local: } \ - %(cc1_endian_default) \ - %{cygnus-local-vmakarov: } \ - } \ - %{end-cygnus-local: } \ - }}}} \ -}}} \ -%{mcall-solaris: -mregnames } \ -%{mno-sdata: -msdata=none } \ -%{meabi: %{!mcall-*: -mcall-sysv }} \ -%{!meabi: %{!mno-eabi: \ - %{mrelocatable: -meabi } \ - %{mcall-solaris: -mno-eabi } \ - %{cygnus-local-vmakarov: } \ - %{mcall-i960-old: -meabi } \ - %{end-cygnus-local: } \ - %{mcall-linux: -mno-eabi }}} \ -%{msdata: -msdata=default} \ -%{mno-sdata: -msdata=none}" - -/* Don't put -Y P,<path> for cross compilers */ -#undef LINK_PATH_SPEC -#ifndef CROSS_COMPILE -#define LINK_PATH_SPEC "\ -%{!R*:%{L*:-R %*}} \ -%{!nostdlib: %{!YP,*: \ - %{compat-bsd: \ - %{p:-Y P,/usr/ucblib:/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \ - %{!p:-Y P,/usr/ucblib:/usr/ccs/lib:/usr/lib}} \ - %{!R*: %{!L*: -R /usr/ucblib}} \ - %{!compat-bsd: \ - %{p:-Y P,/usr/ccs/lib/libp:/usr/lib/libp:/usr/ccs/lib:/usr/lib} \ - %{!p:-Y P,/usr/ccs/lib:/usr/lib}}}}" - -#else -#define LINK_PATH_SPEC "" -#endif - -/* Default starting address if specified */ -#ifndef LINK_START_SPEC -#define LINK_START_SPEC "\ -%{mads: %(link_start_ads) } \ -%{myellowknife: %(link_start_yellowknife) } \ -%{mmvme: %(link_start_mvme) } \ -%{msim: %(link_start_sim) } \ -%{mcall-linux: %(link_start_linux) } \ -%{mcall-solaris: %(link_start_solaris) } \ -%{cygnus-local-vmakarov: } \ -%{mvxworks: %(link_start_vxworks) } \ -%{end-cygnus-local: } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris:\ -%{cygnus-local-vmakarov: } \ - %{!mvxworks: \ -%{end-cygnus-local: } \ - %(link_start_default) \ -%{cygnus-local-vmakarov: } \ - } \ -%{end-cygnus-local: } \ -}}}}}}" -#endif - -#ifndef LINK_START_DEFAULT_SPEC -#define LINK_START_DEFAULT_SPEC "" -#endif - -#undef LINK_SPEC -/* CYGNUS LOCAL jlemke (mpc860) */ -#define LINK_SPEC "\ -%{h*} %{v:-V} %{G*} \ -%{Wl,*:%*} %{YP,*} %{R*} \ -%{Qy:} %{!Qn:-Qy} \ -%(link_shlib) \ -%{!Ttext*: %(link_start) } \ -%(link_target) \ -%{mmpc860c0*:--mpc860c0%*} \ -%(link_os)" -/* END CYGNUS LOCAL */ - -/* For now, turn off shared libraries by default. */ -#ifndef SHARED_LIB_SUPPORT -#define NO_SHARED_LIB_SUPPORT -#endif - -#undef LINK_SHLIB_SPEC -#ifndef NO_SHARED_LIB_SUPPORT -/* Shared libraries are default. */ -#define LINK_SHLIB_SPEC "\ -%{!static: %(link_path) %{!R*:%{L*:-R %*}}} \ -%{mshlib: } \ -%{static:-dn -Bstatic} \ -%{shared:-G -dy -z text} \ -%{symbolic:-Bsymbolic -G -dy -z text}" - -#else -/* Shared libraries are not default. */ -#define LINK_SHLIB_SPEC "\ -%{mshlib: %(link_path) } \ -%{!mshlib: %{!shared: %{!symbolic: -dn -Bstatic}}} \ -%{static: } \ -%{shared:-G -dy -z text %(link_path) } \ -%{symbolic:-Bsymbolic -G -dy -z text %(link_path) }" -#endif - -/* Override the default target of the linker. */ -#undef LINK_TARGET_SPEC -#define LINK_TARGET_SPEC "\ -%{mlittle: -oformat elf32-powerpcle } %{mlittle-endian: -oformat elf32-powerpcle } \ -%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ - %{cygnus-local-vmakarov: } \ - %{mcall-i960-old: -oformat elf32-powerpcle} \ - %{end-cygnus-local: } \ - %{mcall-solaris: -oformat elf32-powerpcle} \ - %{mcall-linux: -oformat elf32-powerpc}}}}}" - -/* Any specific OS flags */ -#ifndef LINK_OS_SPEC -#define LINK_OS_SPEC "\ -%{mads: %(link_os_ads) } \ -%{myellowknife: %(link_os_yellowknife) } \ -%{mmvme: %(link_os_mvme) } \ -%{msim: %(link_os_sim) } \ -%{mcall-linux: %(link_os_linux) } \ -%{mcall-solaris: %(link_os_solaris) } \ -%{cygnus-local-vmakarov: } \ -%{mvxworks: %(link_os_vxworks) } \ -%{end-cygnus-local: } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris:\ -%{cygnus-local-vmakarov: } \ - %{!mvxworks: \ -%{end-cygnus-local: } \ - %(link_os_default) \ -%{cygnus-local-vmakarov: } \ - } \ -%{end-cygnus-local: } \ -}}}}}}" -#endif - -#ifndef LINK_OS_DEFAULT_SPEC -#define LINK_OS_DEFAULT_SPEC "" -#endif - -#undef CPP_SYSV_SPEC -#define CPP_SYSV_SPEC \ -"%{mrelocatable*: -D_RELOCATABLE} \ -%{fpic: -D__PIC__=1 -D__pic__=1} \ -%{fPIC: -D__PIC__=2 -D__pic__=2} \ -%{mcall-sysv: -D_CALL_SYSV} %{mcall-nt: -D_CALL_NT} \ -%{mcall-aix: -D_CALL_AIX} %{mcall-aixdesc: -D_CALL_AIX -D_CALL_AIXDESC} \ -%{!mcall-sysv: %{!mcall-aix: %{!mcall-aixdesc: %{!mcall-nt: %(cpp_sysv_default) }}}} \ -%{msoft-float: -D_SOFT_FLOAT} \ -%{cygnus-local-vmakarov: } \ -%{!msoft-float: %{!mhard-float: \ - %{mcpu=401: -D_SOFT_FLOAT} \ - %{mcpu=403: -D_SOFT_FLOAT} \ - %{mcpu=ec603e: -D_SOFT_FLOAT} \ - %{mcpu=801: -D_SOFT_FLOAT} \ - %{mcpu=821: -D_SOFT_FLOAT} \ - %{mcpu=823: -D_SOFT_FLOAT} \ - %{mcpu=860: -D_SOFT_FLOAT} \ - %{!mcpu*: %(cpp_float_default) }}} \ -%{end-cygnus-local: }" - -/* CYGNUS LOCAL vmakarov */ -/* Whether floating point is disabled by default */ -#undef CPP_FLOAT_DEFAULT_SPEC -#define CPP_FLOAT_DEFAULT_SPEC "" - -/* For solaris, don't define _LITTLE_ENDIAN, it conflicts with a - header file. For VxWorks, don't define either _{BIG,LITTLE}_ENDIAN - for the same reason. */ -/* END CYGNUS LOCAL */ -#undef CPP_SYSV_DEFAULT_SPEC -#define CPP_SYSV_DEFAULT_SPEC "-D_CALL_SYSV" - -#ifndef CPP_ENDIAN_BIG_SPEC -#define CPP_ENDIAN_BIG_SPEC "\ -%{cygnus-local-vmakarov: } \ -%{!mcall-solaris: %{!mvxworks: -D_BIG_ENDIAN }} \ -%{end-cygnus-local: } \ --D__BIG_ENDIAN__ -Amachine(bigendian)" -#endif - -#ifndef CPP_ENDIAN_LITTLE_SPEC -#define CPP_ENDIAN_LITTLE_SPEC "\ -%{cygnus-local-vmakarov: } \ -%{!mcall-solaris: %{!mvxworks: -D_LITTLE_ENDIAN }} \ -%{end-cygnus-local: } \ --D__LITTLE_ENDIAN__ -Amachine(littleendian)" -#endif - -/* CYGNUS LOCAL vmakarov */ -#if 0 -/* END CYGNUS LOCAL */ -#ifndef CPP_ENDIAN_SOLARIS_SPEC -#define CPP_ENDIAN_SOLARIS_SPEC "-D__LITTLE_ENDIAN__ -Amachine(littleendian)" -#endif -/* For solaris, don't define _LITTLE_ENDIAN, it conflicts with a header file. */ -/* CYGNUS LOCAL vmakarov */ -#endif -/* END CYGNUS LOCAL */ - -#undef CPP_ENDIAN_SPEC -#define CPP_ENDIAN_SPEC \ -"%{mlittle: %(cpp_endian_little) } \ -%{mlittle-endian: %(cpp_endian_little) } \ -%{mbig: %(cpp_endian_big) } \ -%{mbig-endian: %(cpp_endian_big) } \ -%{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: \ - %{mcall-solaris: %(cpp_endian_little) } %{cygnus-local-cpp-endian-little: }\ - %{mcall-nt: %(cpp_endian_little) } \ - %{cygnus-local-vmakarov: } \ - %{mcall-i960-old: %(cpp_endian_little) } \ - %{end-cygnus-local: } \ - %{mcall-linux: %(cpp_endian_big) } \ - %{mcall-aixdesc: %(cpp_endian_big) } \ - %{!mcall-solaris: %{!mcall-linux: %{!mcall-nt: %{!mcall-aixdesc: %(cpp_endian_default) }}}}}}}}" - -#undef CPP_ENDIAN_DEFAULT_SPEC -#define CPP_ENDIAN_DEFAULT_SPEC "%(cpp_endian_big)" - -#undef CPP_SPEC -#define CPP_SPEC "%{posix: -D_POSIX_SOURCE} %{msoft-float: -D_SOFT_FLOAT} \ -%(cpp_sysv) %(cpp_endian) %(cpp_cpu) \ -%{mads: %(cpp_os_ads) } \ -%{myellowknife: %(cpp_os_yellowknife) } \ -%{mmvme: %(cpp_os_mvme) } \ -%{msim: %(cpp_os_sim) } \ -%{mcall-linux: %(cpp_os_linux) } \ -%{mcall-solaris: %(cpp_os_solaris) } \ -%{cygnus-local-vmakarov: } \ -%{mvxworks: %(cpp_os_vxworks) } \ -%{end-cygnus-local: } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris:\ -%{cygnus-local-vmakarov: } \ -%{!mvxworks: \ -%{end-cygnus-local: } \ - %(cpp_os_default) \ - } \ -%{end-cygnus-local: } \ -}}}}}}" - -#ifndef CPP_OS_DEFAULT_SPEC -#define CPP_OS_DEFAULT_SPEC "" -#endif - -#undef STARTFILE_SPEC -#define STARTFILE_SPEC "\ -%{mads: %(startfile_ads) } \ -%{myellowknife: %(startfile_yellowknife) } \ -%{mmvme: %(startfile_mvme) } \ -%{msim: %(startfile_sim) } \ -%{mcall-linux: %(startfile_linux) } \ -%{mcall-solaris: %(startfile_solaris) } \ -%{cygnus-local-vmakarov: } \ -%{mvxworks: %(startfile_vxworks) } \ -%{end-cygnus-local: } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris:\ -%{cygnus-local-vmakarov: } \ -%{!mvxworks: \ -%{end-cygnus-local: } \ - %(startfile_default) \ -%{cygnus-local-vmakarov: } \ - } \ -%{end-cygnus-local: } \ -}}}}}}" - -#undef STARTFILE_DEFAULT_SPEC -#define STARTFILE_DEFAULT_SPEC "" - -#undef LIB_SPEC -#define LIB_SPEC "\ -%{mads: %(lib_ads) } \ -%{myellowknife: %(lib_yellowknife) } \ -%{mmvme: %(lib_mvme) } \ -%{msim: %(lib_sim) } \ -%{mcall-linux: %(lib_linux) } \ -%{mcall-solaris: %(lib_solaris) } \ -%{cygnus-local-vmakarov: } \ -%{mvxworks: %(lib_vxworks) } \ -%{end-cygnus-local: } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris:\ -%{cygnus-local-vmakarov: } \ -%{!mvxworks: \ -%{end-cygnus-local: } \ - %(lib_default) \ -%{cygnus-local-vmakarov: } \ - }\ -%{end-cygnus-local: } \ -}}}}}}" - -#undef LIBGCC_SPEC -#define LIBGCC_SPEC "libgcc.a%s" - -#ifndef LIB_DEFAULT_SPEC -#define LIB_DEFAULT_SPEC "" -#endif - -#undef ENDFILE_SPEC - -/* CYGNUS LOCAL vmakarov */ -#if 0 -/* END CYGNUS LOCAL */ -#define ENDFILE_SPEC "\ -%{mads: ecrtn.o%s} \ -%{myellowknife: ecrtn.o%s} \ -%{mmvme: ecrtn.o%s} \ -%{msim: ecrtn.o%s} \ -%{mcall-linux: %(endfile_linux) } \ -%{mcall-solaris: scrtn.o%s} \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %(endfile_default) }}}}}}" - -/* CYGNUS LOCAL vmakarov */ -#endif - -#define ENDFILE_SPEC "\ -%{mads: %(endfile_ads) } \ -%{myellowknife: %(endfile_yellowknife) } \ -%{mmvme: %(endfile_mvme) } \ -%{msim: %(endfile_sim) } \ -%{mcall-linux: %(endfile_linux) } \ -%{mcall-solaris: %(endfile_solarils) } \ -%{mvxworks: %(endfile_vxworks) } \ -%{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mcall-linux: %{!mcall-solaris: %{!mvxworks: %(endfile_default) }}}}}}}" -/* END CYGNUS LOCAL */ - -#undef ENDFILE_DEFAULT_SPEC -#define ENDFILE_DEFAULT_SPEC "" - -/* Motorola ADS support. */ -#ifndef LIB_ADS_SPEC -#define LIB_ADS_SPEC "--start-group -lads -lc --end-group" -#endif - -#ifndef STARTFILE_ADS_SPEC -#define STARTFILE_ADS_SPEC "ecrti.o%s crt0.o%s" -#endif - -#ifndef ENDFILE_ADS_SPEC -#define ENDFILE_ADS_SPEC "ecrtn.o%s" -#endif - -#ifndef LINK_START_ADS_SPEC -#define LINK_START_ADS_SPEC "-T ads.ld%s" -#endif - -#ifndef LINK_OS_ADS_SPEC -#define LINK_OS_ADS_SPEC "" -#endif - -#ifndef CPP_OS_ADS_SPEC -#define CPP_OS_ADS_SPEC "" -#endif - -/* Motorola Yellowknife support. */ -#ifndef LIB_YELLOWKNIFE_SPEC -#define LIB_YELLOWKNIFE_SPEC "--start-group -lyk -lc --end-group" -#endif - -#ifndef STARTFILE_YELLOWKNIFE_SPEC -#define STARTFILE_YELLOWKNIFE_SPEC "ecrti.o%s crt0.o%s" -#endif - -#ifndef ENDFILE_YELLOWKNIFE_SPEC -#define ENDFILE_YELLOWKNIFE_SPEC "ecrtn.o%s" -#endif - -#ifndef LINK_START_YELLOWKNIFE_SPEC -#define LINK_START_YELLOWKNIFE_SPEC "-T yellowknife.ld%s" -#endif - -#ifndef LINK_OS_YELLOWKNIFE_SPEC -#define LINK_OS_YELLOWKNIFE_SPEC "" -#endif - -#ifndef CPP_OS_YELLOWKNIFE_SPEC -#define CPP_OS_YELLOWKNIFE_SPEC "" -#endif - -/* Motorola MVME support. */ -#ifndef LIB_MVME_SPEC -#define LIB_MVME_SPEC "--start-group -lmvme -lc --end-group" -#endif - -#ifndef STARTFILE_MVME_SPEC -#define STARTFILE_MVME_SPEC "ecrti.o%s crt0.o%s" -#endif - -#ifndef ENDFILE_MVME_SPEC -#define ENDFILE_MVME_SPEC "ecrtn.o%s" -#endif - -#ifndef LINK_START_MVME_SPEC -#define LINK_START_MVME_SPEC "%{!Wl,-T*: %{!T*: -Ttext 0x40000}}" -#endif - -#ifndef LINK_OS_MVME_SPEC -#define LINK_OS_MVME_SPEC "" -#endif - -#ifndef CPP_OS_MVME_SPEC -#define CPP_OS_MVME_SPEC "" -#endif - -/* PowerPC simulator based on netbsd system calls support. */ -#ifndef LIB_SIM_SPEC -#define LIB_SIM_SPEC "--start-group -lsim -lc --end-group" -#endif - -#ifndef STARTFILE_SIM_SPEC -#define STARTFILE_SIM_SPEC "ecrti.o%s sim-crt0.o%s" -#endif - -#ifndef ENDFILE_SIM_SPEC -#define ENDFILE_SIM_SPEC "ecrtn.o%s" -#endif - -#ifndef LINK_START_SIM_SPEC -#define LINK_START_SIM_SPEC "-Ttext 0x10000074" -#endif - -#ifndef LINK_OS_SIM_SPEC -#define LINK_OS_SIM_SPEC "" -#endif - -#ifndef CPP_OS_SIM_SPEC -#define CPP_OS_SIM_SPEC "" -#endif - -/* GNU/Linux support. */ -#ifndef LIB_LINUX_SPEC -#define LIB_LINUX_SPEC "%{mnewlib: --start-group -llinux -lc --end-group } %{!mnewlib: -lc }" -#endif - -#ifndef STARTFILE_LINUX_SPEC -#define STARTFILE_LINUX_SPEC "\ -%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} \ -%{mnewlib: ecrti.o%s} \ -%{!mnewlib: crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" -#endif - -#ifndef ENDFILE_LINUX_SPEC -#define ENDFILE_LINUX_SPEC "\ -%{mnewlib: ecrtn.o%s} \ -%{!mnewlib: %{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s}" -#endif - -#ifndef LINK_START_LINUX_SPEC -#define LINK_START_LINUX_SPEC "-Ttext 0x400074" -#endif - -#ifndef LINK_OS_LINUX_SPEC -#define LINK_OS_LINUX_SPEC "" -#endif - -#ifndef CPP_OS_LINUX_SPEC -#define CPP_OS_LINUX_SPEC "-D__unix__ -D__linux__ \ -%{!ansi: -Dunix -Dlinux } \ --Asystem(unix) -Asystem(linux)" -#endif - -#ifndef CPP_OS_LINUX_SPEC -#define CPP_OS_LINUX_SPEC "" -#endif - -/* Solaris support. */ -/* For Solaris, Gcc automatically adds in one of the files - /usr/ccs/lib/values-Xc.o, /usr/ccs/lib/values-Xa.o, or - /usr/ccs/lib/values-Xt.o for each final link step (depending upon the other - gcc options selected, such as -traditional and -ansi). These files each - contain one (initialized) copy of a special variable called `_lib_version'. - Each one of these files has `_lib_version' initialized to a different (enum) - value. The SVR4 library routines query the value of `_lib_version' at run - to decide how they should behave. Specifically, they decide (based upon the - value of `_lib_version') if they will act in a strictly ANSI conforming - manner or not. */ - -#ifndef LIB_SOLARIS_SPEC -#define LIB_SOLARIS_SPEC "\ -%{mnewlib: --start-group -lsolaris -lc --end-group } \ -%{!mnewlib: \ - %{ansi:values-Xc.o%s} \ - %{!ansi: \ - %{traditional:values-Xt.o%s} \ - %{!traditional:values-Xa.o%s}} \ - %{compat-bsd:-lucb -lsocket -lnsl -lelf -laio} \ - %{solaris-cclib: /opt/SUNWspro/SC4.0/lib/libabi.a} \ - %{!shared: %{!symbolic: -lc }}}" -#endif - -#ifndef STARTFILE_SOLARIS_SPEC -#define STARTFILE_SOLARIS_SPEC "\ -%{!msolaris-cclib: scrti.o%s scrt0.o%s} \ -%{msolaris-cclib: /opt/SUNWspro/SC4.0/lib/crti.o%s /opt/SUNWspro/SC4.0/lib/crt1.o%s}" -#endif - -#ifndef ENDFILE_SOLARIS_SPEC -#define ENDFILE_SOLARIS_SPEC "\ -%{!msolaris-cclib: scrtn.o%s} \ -%{msolaris-cclib: /opt/SUNWspro/SC4.0/lib/crtn.o%s}" -#endif - -#ifndef LINK_START_SOLARIS_SPEC -#ifdef CROSS_COMPILER -#define LINK_START_SOLARIS_SPEC "-Ttext 0x2000074" -#else -#define LINK_START_SOLARIS_SPEC "" -#endif -#endif - -#ifndef LINK_OS_SOLARIS_SPEC -#define LINK_OS_SOLARIS_SPEC "" -#endif - -#ifndef CPP_OS_SOLARIS_SPEC -#define CPP_OS_SOLARIS_SPEC "-D__ppc -D__sun__=1 -D__unix__ -D__svr4__ -D__SVR4__ \ -%{!ansi: -Dsun=1 -Dunix -DSVR4 -D__EXTENSIONS__ } \ --Amachine(prep)" -#endif - -/* CYGNUS LOCAL vmakarov */ -/* VxWorks support. */ -/* VxWorks does all the library stuff itself. */ -#ifndef LIB_VXWORKS_SPEC -#define LIB_VXWORKS_SPEC "" -#endif - -/* Because it uses ld -r, vxworks has no start/end files, nor starting address. */ -#ifndef STARTFILE_VXWORKS_SPEC -#define STARTFILE_VXWORKS_SPEC "" -#endif - -#ifndef ENDFILE_VXWORKS_SPEC -#define ENDFILE_VXWORKS_SPEC "" -#endif - -#ifndef LINK_START_VXWORKS_SPEC -#define LINK_START_VXWORKS_SPEC "" -#endif - -#ifndef LINK_OS_VXWORKS_SPEC -#define LINK_OS_VXWORKS_SPEC "-r" -#endif - -#ifndef CPP_OS_VXWORKS_SPEC -#define CPP_OS_VXWORKS_SPEC "\ --DCPU_FAMILY=PPC \ -%{!mcpu*: \ - %{mpowerpc*: -DCPU=PPC603} \ - %{!mno-powerpc: -DCPU=PPC603}} \ -%{mcpu=powerpc: -DCPU=PPC603} \ -%{mcpu=401: -DCPU=PPC403} \ -%{mcpu=403: -DCPU=PPC403} \ -%{mcpu=601: -DCPU=PPC601} \ -%{mcpu=602: -DCPU=PPC603} \ -%{mcpu=603: -DCPU=PPC603} \ -%{mcpu=603e: -DCPU=PPC603} \ -%{mcpu=ec603e: -DCPU=PPC603} \ -%{mcpu=604: -DCPU=PPC604} \ -%{mcpu=604e: -DCPU=PPC604} \ -%{mcpu=620: -DCPU=PPC604} \ -%{mcpu=801: -DCPU=PPC603} \ -%{mcpu=821: -DCPU=PPC603} \ -%{mcpu=823: -DCPU=PPC603} \ -%{mcpu=860: -DCPU=PPC603}" - -#endif -/* END CYGNUS LOCAL */ - -/* Define any extra SPECS that the compiler needs to generate. */ -#undef SUBTARGET_EXTRA_SPECS -#define SUBTARGET_EXTRA_SPECS \ - { "lib_ads", LIB_ADS_SPEC }, \ - { "lib_yellowknife", LIB_YELLOWKNIFE_SPEC }, \ - { "lib_mvme", LIB_MVME_SPEC }, \ - { "lib_sim", LIB_SIM_SPEC }, \ - { "lib_linux", LIB_LINUX_SPEC }, \ - { "lib_solaris", LIB_SOLARIS_SPEC }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "lib_vxworks", LIB_VXWORKS_SPEC }, \ -/* END CYGNUS LOCAL */ \ - { "lib_default", LIB_DEFAULT_SPEC }, \ - { "startfile_ads", STARTFILE_ADS_SPEC }, \ - { "startfile_yellowknife", STARTFILE_YELLOWKNIFE_SPEC }, \ - { "startfile_mvme", STARTFILE_MVME_SPEC }, \ - { "startfile_sim", STARTFILE_SIM_SPEC }, \ - { "startfile_linux", STARTFILE_LINUX_SPEC }, \ - { "startfile_solaris", STARTFILE_SOLARIS_SPEC }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "startfile_vxworks", STARTFILE_VXWORKS_SPEC }, \ -/* END CYGNUS LOCAL */ \ - { "startfile_default", STARTFILE_DEFAULT_SPEC }, \ - { "endfile_ads", ENDFILE_ADS_SPEC }, \ - { "endfile_yellowknife", ENDFILE_YELLOWKNIFE_SPEC }, \ - { "endfile_mvme", ENDFILE_MVME_SPEC }, \ - { "endfile_sim", ENDFILE_SIM_SPEC }, \ - { "endfile_linux", ENDFILE_LINUX_SPEC }, \ - { "endfile_solaris", ENDFILE_SOLARIS_SPEC }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "endfile_vxworks", ENDFILE_VXWORKS_SPEC }, \ -/* END CYGNUS LOCAL */ \ - { "endfile_default", ENDFILE_DEFAULT_SPEC }, \ - { "link_path", LINK_PATH_SPEC }, \ - { "link_shlib", LINK_SHLIB_SPEC }, \ - { "link_target", LINK_TARGET_SPEC }, \ - { "link_start", LINK_START_SPEC }, \ - { "link_start_ads", LINK_START_ADS_SPEC }, \ - { "link_start_yellowknife", LINK_START_YELLOWKNIFE_SPEC }, \ - { "link_start_mvme", LINK_START_MVME_SPEC }, \ - { "link_start_sim", LINK_START_SIM_SPEC }, \ - { "link_start_linux", LINK_START_LINUX_SPEC }, \ - { "link_start_solaris", LINK_START_SOLARIS_SPEC }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "link_start_vxworks", LINK_START_VXWORKS_SPEC }, \ -/* END CYGNUS LOCAL */ \ - { "link_start_default", LINK_START_DEFAULT_SPEC }, \ - { "link_os", LINK_OS_SPEC }, \ - { "link_os_ads", LINK_OS_ADS_SPEC }, \ - { "link_os_yellowknife", LINK_OS_YELLOWKNIFE_SPEC }, \ - { "link_os_mvme", LINK_OS_MVME_SPEC }, \ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ - { "link_os_solaris", LINK_OS_SOLARIS_SPEC }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "link_os_vxworks", LINK_OS_VXWORKS_SPEC }, \ -/* END CYGNUS LOCAL */ \ - { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ - { "cc1_endian_big", CC1_ENDIAN_BIG_SPEC }, \ - { "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \ - { "cc1_endian_default", CC1_ENDIAN_DEFAULT_SPEC }, \ - { "cpp_endian_big", CPP_ENDIAN_BIG_SPEC }, \ - { "cpp_endian_little", CPP_ENDIAN_LITTLE_SPEC }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "cpp_endian_default", CPP_ENDIAN_DEFAULT_SPEC }, \ - { "cpp_float_default", CPP_FLOAT_DEFAULT_SPEC }, \ -/* END CYGNUS LOCAL */ \ - { "cpp_os_ads", CPP_OS_ADS_SPEC }, \ - { "cpp_os_yellowknife", CPP_OS_YELLOWKNIFE_SPEC }, \ - { "cpp_os_mvme", CPP_OS_MVME_SPEC }, \ - { "cpp_os_sim", CPP_OS_SIM_SPEC }, \ - { "cpp_os_linux", CPP_OS_LINUX_SPEC }, \ - { "cpp_os_solaris", CPP_OS_SOLARIS_SPEC }, \ -/* CYGNUS LOCAL vmakarov */ \ - { "cpp_os_vxworks", CPP_OS_VXWORKS_SPEC }, \ -/* END CYGNUS LOCAL */ \ - { "cpp_os_default", CPP_OS_DEFAULT_SPEC }, - -/* Define this macro as a C expression for the initializer of an - array of string to tell the driver program which options are - defaults for this target and thus do not need to be handled - specially when using `MULTILIB_OPTIONS'. - - Do not define this macro if `MULTILIB_OPTIONS' is not defined in - the target makefile fragment or if none of the options listed in - `MULTILIB_OPTIONS' are set by default. *Note Target Fragment::. */ - -#undef MULTILIB_DEFAULTS -#define MULTILIB_DEFAULTS { "mbig", "mcall-sysv" } - -/* Define this macro if the code for function profiling should come - before the function prologue. Normally, the profiling code comes - after. */ -#define PROFILE_BEFORE_PROLOGUE 1 - -/* Function name to call to do profiling. */ -#undef RS6000_MCOUNT -#define RS6000_MCOUNT "_mcount" |