MAINTAINERS: Resurrect the i860 maintainer.
2003-08-22 Jason Eckhardt <jle@rice.edu> ChangeLog * MAINTAINERS: Resurrect the i860 maintainer. gcc/ChangeLog: * gcc/config.gcc (i860-*-sysv4*): Add target. * config/i860/i860-protos.h: New. * config/i860/i860.c: New. * config/i860/i860.h: New. * config/i860/i860.md: New. * config/i860/sysv4.h: New. * config/i860/varargs.asm: New. * config/i860/x-sysv4: New. From-SVN: r70719
This commit is contained in:
parent
6560773ad4
commit
e156735260
11 changed files with 6479 additions and 0 deletions
|
@ -1,3 +1,7 @@
|
|||
2003-08-22 Jason Eckhardt <jle@rice.edu>
|
||||
|
||||
* MAINTAINERS: Resurrect the i860 maintainer.
|
||||
|
||||
2003-08-20 Geoffrey Keating <geoffk@apple.com>
|
||||
|
||||
PR 8180
|
||||
|
|
|
@ -49,6 +49,7 @@ h8 port Kazu Hirata kazu@cs.umass.edu
|
|||
hppa port Jeff Law law@redhat.com
|
||||
hppa port Dave Anglin dave.anglin@nrc.ca
|
||||
i386 port Richard Henderson rth@redhat.com
|
||||
i860 port Jason Eckhardt jle@rice.edu
|
||||
i960 port Jim Wilson wilson@tuliptree.org
|
||||
ia64 port Jim Wilson wilson@tuliptree.org
|
||||
ip2k port Denis Chertykov denisc@overta.ru
|
||||
|
|
|
@ -1,3 +1,14 @@
|
|||
2003-08-22 Jason Eckhardt <jle@rice.edu>
|
||||
|
||||
* config.gcc (i860-*-sysv4*): Add target.
|
||||
* config/i860/i860-protos.h: New.
|
||||
* config/i860/i860.c: New.
|
||||
* config/i860/i860.h: New.
|
||||
* config/i860/i860.md: New.
|
||||
* config/i860/sysv4.h: New.
|
||||
* config/i860/varargs.asm: New.
|
||||
* config/i860/x-sysv4: New.
|
||||
|
||||
2003-08-22 Jason Eckhardt <jle@rice.edu>
|
||||
|
||||
* config/pa/pa.c: Replace 'GNU CC' with 'GCC'.
|
||||
|
|
|
@ -1235,6 +1235,13 @@ i[34567]86-*-kaos*)
|
|||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h kaos.h i386/kaos-i386.h"
|
||||
tmake_file="i386/t-i386elf t-svr4"
|
||||
;;
|
||||
i860-*-sysv4*)
|
||||
tm_file="${tm_file} elfos.h svr4.h i860/sysv4.h"
|
||||
xm_defines="USG SVR3"
|
||||
xmake_file=i860/x-sysv4
|
||||
tmake_file=t-svr4
|
||||
extra_parts="crtbegin.o crtend.o"
|
||||
;;
|
||||
i960-*-coff*)
|
||||
tm_file="${tm_file} dbxcoff.h i960/i960-coff.h libgloss.h"
|
||||
tmake_file=i960/t-960bare
|
||||
|
|
61
gcc/config/i860/i860-protos.h
Normal file
61
gcc/config/i860/i860-protos.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
/* Definitions of target machine for GNU compiler, for Intel 860.
|
||||
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||
Hacked substantially by Ron Guilmette (rfg@monkeys.com) to cater to
|
||||
the whims of the System V Release 4 assembler.
|
||||
|
||||
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. */
|
||||
|
||||
/* Declare things which are defined in i860.c but called from
|
||||
insn-output.c. */
|
||||
|
||||
#ifdef RTX_CODE
|
||||
extern unsigned long sfmode_constant_to_ulong PARAMS ((rtx));
|
||||
extern const char *output_load PARAMS ((rtx *));
|
||||
extern const char *output_store PARAMS ((rtx *));
|
||||
extern const char *output_move_double PARAMS ((rtx *));
|
||||
extern const char *output_fp_move_double PARAMS ((rtx *));
|
||||
extern const char *output_block_move PARAMS ((rtx *));
|
||||
extern const char *output_delay_insn PARAMS ((rtx));
|
||||
#if 0
|
||||
extern const char *output_delayed_branch PARAMS ((const char *, rtx *, rtx));
|
||||
#endif
|
||||
extern void output_load_address PARAMS ((rtx *));
|
||||
extern int safe_insn_src_p PARAMS ((rtx, enum machine_mode));
|
||||
extern int operand_clobbered_before_used_after PARAMS ((rtx, rtx));
|
||||
extern int single_insn_src_p PARAMS ((rtx, enum machine_mode));
|
||||
extern int reg_or_0_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern int arith_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern int logic_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern int shift_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern int compare_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern int bte_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern int indexed_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern int load_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern int small_int PARAMS ((rtx, enum machine_mode));
|
||||
extern int logic_int PARAMS ((rtx, enum machine_mode));
|
||||
extern int call_insn_operand PARAMS ((rtx, enum machine_mode));
|
||||
extern rtx i860_saveregs PARAMS ((void));
|
||||
#ifdef TREE_CODE
|
||||
extern void i860_va_start PARAMS ((int, tree, rtx));
|
||||
extern rtx i860_va_arg PARAMS ((tree, tree));
|
||||
#endif /* TREE_CODE */
|
||||
#endif /* RTX_CODE */
|
||||
|
||||
#ifdef TREE_CODE
|
||||
extern tree i860_build_va_list PARAMS ((void));
|
||||
#endif /* TREE_CODE */
|
2361
gcc/config/i860/i860.c
Normal file
2361
gcc/config/i860/i860.c
Normal file
File diff suppressed because it is too large
Load diff
1319
gcc/config/i860/i860.h
Normal file
1319
gcc/config/i860/i860.h
Normal file
File diff suppressed because it is too large
Load diff
2327
gcc/config/i860/i860.md
Normal file
2327
gcc/config/i860/i860.md
Normal file
File diff suppressed because it is too large
Load diff
143
gcc/config/i860/sysv4.h
Normal file
143
gcc/config/i860/sysv4.h
Normal file
|
@ -0,0 +1,143 @@
|
|||
/* Target definitions for GNU compiler for Intel 80860 running System V.4
|
||||
Copyright (C) 1991, 1996, 2000, 2002 Free Software Foundation, Inc.
|
||||
Contributed by Ron Guilmette (rfg@monkeys.com).
|
||||
|
||||
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. */
|
||||
|
||||
#undef TARGET_VERSION
|
||||
#define TARGET_VERSION fprintf (stderr, " (i860 System V Release 4)");
|
||||
|
||||
/* Provide a set of pre-definitions and pre-assertions appropriate for
|
||||
the i860 running svr4. Note that the symbol `__svr4__' MUST BE
|
||||
DEFINED! It is needed so that the va_list struct in va-i860.h
|
||||
will get correctly defined for the svr4 (ABI compliant) case rather
|
||||
than for the previous (svr3, svr2, ...) case. It also needs to be
|
||||
defined so that the correct (svr4) version of __builtin_saveregs
|
||||
will be selected when we are building gnulib2.c.
|
||||
__svr4__ is our extension. */
|
||||
|
||||
#define CPP_PREDEFINES \
|
||||
"-Di860 -Dunix -DSVR4 -D__svr4__ -Asystem=unix -Asystem=svr4 -Acpu=i860 -Amachine=i860"
|
||||
|
||||
/* For the benefit of i860_va_arg, flag it this way too. */
|
||||
|
||||
#define I860_SVR4_VA_LIST 1
|
||||
|
||||
/* The prefix to be used in assembler output for all names of registers.
|
||||
This string gets prepended to all i860 register names (svr4 only). */
|
||||
|
||||
#define I860_REG_PREFIX "%"
|
||||
|
||||
#define ASM_COMMENT_START "#"
|
||||
|
||||
#undef TYPE_OPERAND_FMT
|
||||
#define TYPE_OPERAND_FMT "\"%s\""
|
||||
|
||||
/* The following macro definition overrides the one in i860.h
|
||||
because the svr4 i860 assembler requires a different syntax
|
||||
for getting parts of constant/relocatable values. */
|
||||
|
||||
#undef PRINT_OPERAND_PART
|
||||
#define PRINT_OPERAND_PART(FILE, X, PART_CODE) \
|
||||
do { fprintf (FILE, "["); \
|
||||
output_address (X); \
|
||||
fprintf (FILE, "]@%s", PART_CODE); \
|
||||
} while (0)
|
||||
|
||||
#undef ASM_FILE_START
|
||||
#define ASM_FILE_START(FILE) \
|
||||
do { output_file_directive (FILE, main_input_filename); \
|
||||
fprintf (FILE, "\t.version\t\"01.01\"\n"); \
|
||||
} while (0)
|
||||
|
||||
/* Output the special word the svr4 SDB wants to see just before
|
||||
the first word of each function's prologue code. */
|
||||
|
||||
extern const char *current_function_original_name;
|
||||
|
||||
/* This special macro is used to output a magic word just before the
|
||||
first word of each function. On some versions of UNIX running on
|
||||
the i860, this word can be any word that looks like a NOP, however
|
||||
under svr4, this neds to be an `shr r0,r0,r0' instruction in which
|
||||
the normally unused low-order bits contain the length of the function
|
||||
prologue code (in bytes). This is needed to make the svr4 SDB debugger
|
||||
happy. */
|
||||
|
||||
#undef ASM_OUTPUT_FUNCTION_PREFIX
|
||||
#define ASM_OUTPUT_FUNCTION_PREFIX(FILE, FNNAME) \
|
||||
do { ASM_OUTPUT_ALIGN (FILE, 2); \
|
||||
fprintf ((FILE), "\t.long\t.ep."); \
|
||||
assemble_name (FILE, FNNAME); \
|
||||
fprintf (FILE, "-"); \
|
||||
assemble_name (FILE, FNNAME); \
|
||||
fprintf (FILE, "+0xc8000000\n"); \
|
||||
current_function_original_name = (FNNAME); \
|
||||
} while (0)
|
||||
|
||||
/* Output the special label that must go just after each function's
|
||||
prologue code to support svr4 SDB. */
|
||||
|
||||
#define ASM_OUTPUT_PROLOGUE_SUFFIX(FILE) \
|
||||
do { fprintf (FILE, ".ep."); \
|
||||
assemble_name (FILE, current_function_original_name); \
|
||||
fprintf (FILE, ":\n"); \
|
||||
} while (0)
|
||||
|
||||
/* Define the pseudo-ops used to switch to the .ctors and .dtors sections.
|
||||
|
||||
Note that we want to give these sections the SHF_WRITE attribute
|
||||
because these sections will actually contain data (i.e. tables of
|
||||
addresses of functions in the current root executable or shared library
|
||||
file) and, in the case of a shared library, the relocatable addresses
|
||||
will have to be properly resolved/relocated (and then written into) by
|
||||
the dynamic linker when it actually attaches the given shared library
|
||||
to the executing process. (Note that on SVR4, you may wish to use the
|
||||
`-z text' option to the ELF linker, when building a shared library, as
|
||||
an additional check that you are doing everything right. But if you do
|
||||
use the `-z text' option when building a shared library, you will get
|
||||
errors unless the .ctors and .dtors sections are marked as writable
|
||||
via the SHF_WRITE attribute.) */
|
||||
|
||||
#undef CTORS_SECTION_ASM_OP
|
||||
#define CTORS_SECTION_ASM_OP "\t.section\t.ctors,\"aw\""
|
||||
#undef DTORS_SECTION_ASM_OP
|
||||
#define DTORS_SECTION_ASM_OP "\t.section\t.dtors,\"aw\""
|
||||
|
||||
/* Add definitions to support the .tdesc section as specified in the svr4
|
||||
ABI for the i860. */
|
||||
|
||||
#define TDESC_SECTION_ASM_OP "\t.section\t.tdesc"
|
||||
|
||||
#undef EXTRA_SECTIONS
|
||||
#define EXTRA_SECTIONS in_tdesc
|
||||
|
||||
#undef EXTRA_SECTION_FUNCTIONS
|
||||
#define EXTRA_SECTION_FUNCTIONS \
|
||||
TDESC_SECTION_FUNCTION
|
||||
|
||||
#define TDESC_SECTION_FUNCTION \
|
||||
void \
|
||||
tdesc_section () \
|
||||
{ \
|
||||
if (in_section != in_tdesc) \
|
||||
{ \
|
||||
fprintf (asm_out_file, "%s\n", TDESC_SECTION_ASM_OP); \
|
||||
in_section = in_tdesc; \
|
||||
} \
|
||||
}
|
||||
|
201
gcc/config/i860/varargs.asm
Normal file
201
gcc/config/i860/varargs.asm
Normal file
|
@ -0,0 +1,201 @@
|
|||
/* Special varargs support for i860.
|
||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
||||
|
||||
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.
|
||||
|
||||
In addition to the permissions in the GNU General Public License, the
|
||||
Free Software Foundation gives you unlimited permission to link the
|
||||
compiled version of this file into combinations with other programs,
|
||||
and to distribute those combinations without any restriction coming
|
||||
from the use of this file. (The General Public License restrictions
|
||||
do apply in other respects; for example, they cover modification of
|
||||
the file, and distribution when not linked into a combine
|
||||
executable.)
|
||||
|
||||
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. */
|
||||
|
||||
#if defined(__svr4__) || defined(__alliant__)
|
||||
.text
|
||||
.align 4
|
||||
|
||||
/* The Alliant needs the added underscore. */
|
||||
.globl __builtin_saveregs
|
||||
__builtin_saveregs:
|
||||
.globl ___builtin_saveregs
|
||||
___builtin_saveregs:
|
||||
|
||||
andnot 0x0f,%sp,%sp /* round down to 16-byte boundary */
|
||||
adds -96,%sp,%sp /* allocate stack space for reg save
|
||||
area and also for a new va_list
|
||||
structure */
|
||||
/* Save all argument registers in the arg reg save area. The
|
||||
arg reg save area must have the following layout (according
|
||||
to the svr4 ABI):
|
||||
|
||||
struct {
|
||||
union {
|
||||
float freg[8];
|
||||
double dreg[4];
|
||||
} float_regs;
|
||||
long ireg[12];
|
||||
};
|
||||
*/
|
||||
|
||||
fst.q %f8, 0(%sp) /* save floating regs (f8-f15) */
|
||||
fst.q %f12,16(%sp)
|
||||
|
||||
st.l %r16,32(%sp) /* save integer regs (r16-r27) */
|
||||
st.l %r17,36(%sp)
|
||||
st.l %r18,40(%sp)
|
||||
st.l %r19,44(%sp)
|
||||
st.l %r20,48(%sp)
|
||||
st.l %r21,52(%sp)
|
||||
st.l %r22,56(%sp)
|
||||
st.l %r23,60(%sp)
|
||||
st.l %r24,64(%sp)
|
||||
st.l %r25,68(%sp)
|
||||
st.l %r26,72(%sp)
|
||||
st.l %r27,76(%sp)
|
||||
|
||||
adds 80,%sp,%r16 /* compute the address of the new
|
||||
va_list structure. Put in into
|
||||
r16 so that it will be returned
|
||||
to the caller. */
|
||||
|
||||
/* Initialize all fields of the new va_list structure. This
|
||||
structure looks like:
|
||||
|
||||
typedef struct {
|
||||
unsigned long ireg_used;
|
||||
unsigned long freg_used;
|
||||
long *reg_base;
|
||||
long *mem_ptr;
|
||||
} va_list;
|
||||
*/
|
||||
|
||||
st.l %r0, 0(%r16) /* nfixed */
|
||||
st.l %r0, 4(%r16) /* nfloating */
|
||||
st.l %sp, 8(%r16) /* __va_ctl points to __va_struct. */
|
||||
bri %r1 /* delayed return */
|
||||
st.l %r28,12(%r16) /* pointer to overflow args */
|
||||
|
||||
#else /* not __svr4__ */
|
||||
#if defined(__PARAGON__)
|
||||
/*
|
||||
* we'll use SVR4-ish varargs but need SVR3.2 assembler syntax,
|
||||
* and we stand a better chance of hooking into libraries
|
||||
* compiled by PGI. [andyp@ssd.intel.com]
|
||||
*/
|
||||
.text
|
||||
.align 4
|
||||
.globl __builtin_saveregs
|
||||
__builtin_saveregs:
|
||||
.globl ___builtin_saveregs
|
||||
___builtin_saveregs:
|
||||
|
||||
andnot 0x0f,sp,sp /* round down to 16-byte boundary */
|
||||
adds -96,sp,sp /* allocate stack space for reg save
|
||||
area and also for a new va_list
|
||||
structure */
|
||||
/* Save all argument registers in the arg reg save area. The
|
||||
arg reg save area must have the following layout (according
|
||||
to the svr4 ABI):
|
||||
|
||||
struct {
|
||||
union {
|
||||
float freg[8];
|
||||
double dreg[4];
|
||||
} float_regs;
|
||||
long ireg[12];
|
||||
};
|
||||
*/
|
||||
|
||||
fst.q f8, 0(sp)
|
||||
fst.q f12,16(sp)
|
||||
st.l r16,32(sp)
|
||||
st.l r17,36(sp)
|
||||
st.l r18,40(sp)
|
||||
st.l r19,44(sp)
|
||||
st.l r20,48(sp)
|
||||
st.l r21,52(sp)
|
||||
st.l r22,56(sp)
|
||||
st.l r23,60(sp)
|
||||
st.l r24,64(sp)
|
||||
st.l r25,68(sp)
|
||||
st.l r26,72(sp)
|
||||
st.l r27,76(sp)
|
||||
|
||||
adds 80,sp,r16 /* compute the address of the new
|
||||
va_list structure. Put in into
|
||||
r16 so that it will be returned
|
||||
to the caller. */
|
||||
|
||||
/* Initialize all fields of the new va_list structure. This
|
||||
structure looks like:
|
||||
|
||||
typedef struct {
|
||||
unsigned long ireg_used;
|
||||
unsigned long freg_used;
|
||||
long *reg_base;
|
||||
long *mem_ptr;
|
||||
} va_list;
|
||||
*/
|
||||
|
||||
st.l r0, 0(r16) /* nfixed */
|
||||
st.l r0, 4(r16) /* nfloating */
|
||||
st.l sp, 8(r16) /* __va_ctl points to __va_struct. */
|
||||
bri r1 /* delayed return */
|
||||
st.l r28,12(r16) /* pointer to overflow args */
|
||||
#else /* not __PARAGON__ */
|
||||
.text
|
||||
.align 4
|
||||
|
||||
.globl ___builtin_saveregs
|
||||
___builtin_saveregs:
|
||||
mov sp,r30
|
||||
andnot 0x0f,sp,sp
|
||||
adds -96,sp,sp /* allocate sufficient space on the stack */
|
||||
|
||||
/* Fill in the __va_struct. */
|
||||
st.l r16, 0(sp) /* save integer regs (r16-r27) */
|
||||
st.l r17, 4(sp) /* int fixed[12] */
|
||||
st.l r18, 8(sp)
|
||||
st.l r19,12(sp)
|
||||
st.l r20,16(sp)
|
||||
st.l r21,20(sp)
|
||||
st.l r22,24(sp)
|
||||
st.l r23,28(sp)
|
||||
st.l r24,32(sp)
|
||||
st.l r25,36(sp)
|
||||
st.l r26,40(sp)
|
||||
st.l r27,44(sp)
|
||||
|
||||
fst.q f8, 48(sp) /* save floating regs (f8-f15) */
|
||||
fst.q f12,64(sp) /* int floating[8] */
|
||||
|
||||
/* Fill in the __va_ctl. */
|
||||
st.l sp, 80(sp) /* __va_ctl points to __va_struct. */
|
||||
st.l r28,84(sp) /* pointer to more args */
|
||||
st.l r0, 88(sp) /* nfixed */
|
||||
st.l r0, 92(sp) /* nfloating */
|
||||
|
||||
adds 80,sp,r16 /* return address of the __va_ctl. */
|
||||
bri r1
|
||||
mov r30,sp
|
||||
/* recover stack and pass address to start
|
||||
of data. */
|
||||
#endif /* not __PARAGON__ */
|
||||
#endif /* not __svr4__ */
|
44
gcc/config/i860/x-sysv4
Normal file
44
gcc/config/i860/x-sysv4
Normal file
|
@ -0,0 +1,44 @@
|
|||
# The svr4 reference port for the i860 contains an alloca.o routine
|
||||
# in /usr/ucblib/libucb.a, but we can't just try to get that by
|
||||
# setting CLIB to /usr/ucblib/libucb.a because (unfortunately)
|
||||
# there are a lot of other routines in libucb.a which are supposed
|
||||
# to be the Berkeley versions of library routines normally found in
|
||||
# libc.a and many of these Berkeley versions are badly broken. Thus,
|
||||
# if we try to link programs with libucb.a before libc.a, those
|
||||
# programs tend to crash.
|
||||
|
||||
# Also, the alloca() routine supplied in early version of svr4 for
|
||||
# the i860 is non-ABI compliant. It doesn't keep the stack aligned
|
||||
# to a 16-byte boundary as the ABI requires.
|
||||
|
||||
# More importantly however, even a fully ABI compliant alloca() routine
|
||||
# would fail to work correctly with some versions of the native svr4 C
|
||||
# compiler currently being distributed for the i860 (as of 1/29/92).
|
||||
# The problem is that the native C compiler generates non-ABI-compliant
|
||||
# function epilogues which cut back the stack (upon function exit) in
|
||||
# an incorrect manner. Specifically, they cut back the stack by adding
|
||||
# the nominal *static* frame size (determined statically at compile-time)
|
||||
# to the stack pointer rather than setting the stack pointer based upon
|
||||
# the current value of the frame pointer (as called for in the i860 ABI).
|
||||
# This can cause serious trouble in cases where you repeatedly call a
|
||||
# routine which itself calls alloca(). In such cases, the stack will
|
||||
# grow continuously until you finally run out of swap space or exceed
|
||||
# the system's process size limit. To avoid this problem (which can
|
||||
# arise when a stage1 gcc is being used to build a stage2 gcc) you
|
||||
# *must* link in the C language version of alloca() which is supplied
|
||||
# with gcc to your stage1 version of gcc. The following definition
|
||||
# forces that to happen.
|
||||
|
||||
ALLOCA=alloca.o
|
||||
|
||||
# We build all stages *without* shared libraries because that may make
|
||||
# debugging the compiler easier (until there is a GDB which supports
|
||||
# both Dwarf *and* svr4 shared libraries).
|
||||
|
||||
# Note that the native C compiler for the svr4 reference port on the
|
||||
# i860 recognizes a special -gg option. Using that option causes *full*
|
||||
# Dwarf debugging information to be generated, whereas using only -g
|
||||
# causes only limited Dwarf debugging information to be generated.
|
||||
# (This is an undocumented feature of the native svr4 C compiler.)
|
||||
|
||||
CCLIBFLAGS=-Bstatic -dn -gg
|
Loading…
Add table
Reference in a new issue