Article View: gnu.gcc.bug
Article #5945sparc-sun-solaris2.5 make fatal error *** Error code 138
From: Compte de Perthuis
Date: Fri, 10 Jan 1997 00:00
Date: Fri, 10 Jan 1997 00:00
6565 lines
46204 bytes
46204 bytes
Hello !
I am trying to install gcc-2.7.2 on a super-sparc-sun-solaris2.5 system.
(I had previously succeeded in insttalling it on a sparc-sun-sunos4.1.3_U1)
And I have some problems.
I retrieved gcc-2.7.2 via ftp in a file gcc-2.7.2.tar.gz on a local mirror,
and uncompressed and untared it in ~gnu directory such getting the
distribution under ~gnu/gcc-2.7.2
Running configure in this source directory says
gnu@foo% ./configure
This appears to be a sparc-sun-solaris2.5 system.
Which seems quite correct but sparc should be super-sparc (does it matters ?).
gnu@foo% make LANGUAGES=c
... (runs OK)
gnu@foo% make stage1
... (runs OK)
gnu@foo% make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2"
./genattr ./config/sparc/sparc.md > tmp-attr.h
*** Error code 138
make: Fatal error: Command failed for target `stamp-attr'
And here if I try to run genattr by hand I receive a Bus Error (core dumped).
Whereas stage1/genattr runs OK.
So if i try to overcome the previous *** Error code 138 executing the
commands that make would run by hand (till touch stamp-attr) and running
make CC="stage1/xgcc -Bstage1/" CFLAGS="-g -O2"
again, then i get :
./genflags ./config/sparc/sparc.md > tmp-flags.h
*** Error code 138
make: Fatal error: Command failed for target `stamp-flags'
Overcomming it with stage1/genflags gives me :
./gencodes ./config/sparc/sparc.md > tmp-codes.h
*** Error code 138
make: Fatal error: Command failed for target `stamp-codes'
Overcomming it with stage1/gencodes gives me :
./genconfig ./config/sparc/sparc.md > tmp-config.h
*** Error code 138
make: Fatal error: Command failed for target `stamp-config'
Then it seems quite hard to go on like this, so i tried this little trick :
gnu@foo% /opt/SUNWspro/bin/dbx ./genattr ./core
Reading symbolic information for ./genattr
dbx: warning: multiple data segments in load object
dbx: No text segment found for load object
dbx: warning: object initialization interrupted - no program loaded
(/opt/SUNWspro/bin/dbx)
Well, let me give you the command used by make to compile genattr :
stage1/xgcc -Bstage1/ -c -DIN_GCC -DSVR4 -g -O2 -I. -I. -I./config ./genattr.c
And hereafter you will find the result of the same thing with -E option
added to the same command.
Best regards,
Luc.
----------------------------------------------------------------------------
Luc Perthuis |
Matra Communication | Tel +33 2 98 76 72 44
50, rue du president Sadate | Fax +33 2 98 76 71 99
29562 Quimper Cedex | e-mail luc.perthuis@matra-com.fr
FRANCE |
----------------------------------------------------------------------------
------------------------ cut here : file genattr.i -------------------------
# 1 "./genattr.c"
# 1 "include/stdio.h" 1 3
#pragma ident "@(#)stdio.h 1.37 95/08/29 SMI"
# 1 "/usr/include/sys/feature_tests.h" 1 3
#pragma ident "@(#)feature_tests.h 1.7 94/12/06 SMI"
# 17 "include/stdio.h" 2 3
typedef unsigned int size_t;
typedef long fpos_t;
typedef struct
{
int _cnt;
unsigned char *_ptr;
unsigned char *_base;
unsigned char _flag;
unsigned char _file;
} FILE;
extern FILE __iob[20 ];
extern FILE *_lastbuf;
extern unsigned char *_bufendtab[];
extern unsigned char _sibuf[], _sobuf[];
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE *tmpfile(void);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *fopen(const char *, const char *);
extern FILE *freopen(const char *, const char *, FILE *);
extern void setbuf(FILE *, char *);
extern int setvbuf(FILE *, char *, int, size_t);
extern int fprintf(FILE *, const char *, ...);
extern int fscanf(FILE *, const char *, ...);
extern int printf(const char *, ...);
extern int scanf(const char *, ...);
extern int sprintf(char *, const char *, ...);
extern int sscanf(const char *, const char *, ...);
extern int vfprintf(FILE *, const char *, void *);
extern int vprintf(const char *, void *);
extern int vsprintf(char *, const char *, void *);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);
extern int getc(FILE *);
extern int getchar(void);
extern char *gets(char *);
extern int putc(int, FILE *);
extern int putchar(int);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);
extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);
extern void perror(const char *);
extern int __filbuf(FILE *);
extern int __flsbuf(int, FILE *);
extern FILE *fdopen(int, const char *);
extern char *ctermid(char *);
extern int fileno(FILE *);
# 237 "include/stdio.h" 3
extern FILE *popen(const char *, const char *);
extern char *cuserid(char *);
extern char *tempnam(const char *, const char *);
extern int getopt(int, char *const *, const char *);
extern int getsubopt(char **, char *const *, char **);
extern char *optarg;
extern int optind, opterr, optopt;
extern int getw(FILE *);
extern int putw(int, FILE *);
extern int pclose(FILE *);
# 341 "include/stdio.h" 3
# 395 "include/stdio.h" 3
# 23 "./genattr.c" 2
# 1 "hconfig.h" 1
# 1 "config/sparc/xm-sol2.h" 1
# 1 "config/sparc/xm-sysv4.h" 1
# 1 "tm.h" 1
# 1 "config/sparc/sol2.h" 1
# 1 "config/sparc/sysv4.h" 1
# 1 "config/sparc/sparc.h" 1
enum arch_type { ARCH_32BIT, ARCH_64BIT };
extern enum arch_type sparc_arch_type;
void sparc_override_options ();
# 138 "config/sparc/sparc.h"
extern int target_flags;
# 313 "config/sparc/sparc.h"
# 338 "config/sparc/sparc.h"
# 490 "config/sparc/sparc.h"
# 561 "config/sparc/sparc.h"
# 572 "config/sparc/sparc.h"
# 599 "config/sparc/sparc.h"
# 610 "config/sparc/sparc.h"
# 654 "config/sparc/sparc.h"
extern int *hard_regno_mode_classes;
extern int sparc_mode_class[];
enum reg_class { NO_REGS, GENERAL_REGS, FP_REGS, ALL_REGS, LIM_REG_CLASSES };
# 917 "config/sparc/sparc.h"
# 928 "config/sparc/sparc.h"
# 951 "config/sparc/sparc.h"
# 962 "config/sparc/sparc.h"
# 986 "config/sparc/sparc.h"
# 996 "config/sparc/sparc.h"
extern char leaf_reg_remap[];
# 1321 "config/sparc/sparc.h"
# 1352 "config/sparc/sparc.h"
# 1372 "config/sparc/sparc.h"
extern void sparc64_init_expanders ();
extern struct rtx_def *sparc64_fpconv_stack_temp ();
extern struct rtx_def *sparc_compare_op0, *sparc_compare_op1;
extern struct rtx_def *gen_compare_reg ();
extern int gen_v9_scc ();
extern int leaf_function;
# 1550 "config/sparc/sparc.h"
# 1563 "config/sparc/sparc.h"
# 1578 "config/sparc/sparc.h"
extern int current_function_calls_alloca;
extern int current_function_outgoing_args_size;
extern union tree_node *current_function_decl;
# 1659 "config/sparc/sparc.h"
void sparc_initialize_trampoline ();
void sparc64_initialize_trampoline ();
extern struct rtx_def *sparc_builtin_saveregs ();
# 1826 "config/sparc/sparc.h"
# 1847 "config/sparc/sparc.h"
# 1921 "config/sparc/sparc.h"
extern struct rtx_def *legitimize_pic_address ();
# 1966 "config/sparc/sparc.h"
# 2013 "config/sparc/sparc.h"
# 2174 "config/sparc/sparc.h"
# 2202 "config/sparc/sparc.h"
# 2236 "config/sparc/sparc.h"
# 2300 "config/sparc/sparc.h"
# 2310 "config/sparc/sparc.h"
# 2454 "config/sparc/sparc.h"
# 2471 "config/sparc/sparc.h"
# 2600 "config/sparc/sparc.h"
extern char *singlemove_string ();
extern char *output_move_double ();
extern char *output_move_quad ();
extern char *output_fp_move_double ();
extern char *output_fp_move_quad ();
extern char *output_block_move ();
extern char *output_scc_insn ();
extern char *output_cbranch ();
extern char *output_v9branch ();
extern char *output_return ();
extern int flag_pic;
# 23 "config/sparc/sysv4.h" 2
# 1 "config/svr4.h" 1
# 67 "config/svr4.h"
# 180 "config/svr4.h"
# 203 "config/svr4.h"
# 288 "config/svr4.h"
# 304 "config/svr4.h"
extern void text_section ();
# 544 "config/svr4.h"
# 555 "config/svr4.h"
# 566 "config/svr4.h"
# 626 "config/svr4.h"
# 686 "config/svr4.h"
# 706 "config/svr4.h"
# 727 "config/svr4.h"
# 748 "config/svr4.h"
# 772 "config/svr4.h"
# 822 "config/svr4.h"
# 885 "config/svr4.h"
# 35 "config/sparc/sysv4.h" 2
# 194 "config/sparc/sysv4.h"
# 246 "config/sparc/sysv4.h"
# 262 "config/sparc/sysv4.h"
# 25 "config/sparc/sol2.h" 2
# 112 "config/sparc/sol2.h"
# 145 "config/sparc/sol2.h"
# 163 "config/sparc/sol2.h"
# 1 "tm.h" 2
# 41 "config/sparc/xm-sysv4.h" 2
# 1 "config/xm-svr4.h" 1
# 47 "config/sparc/xm-sysv4.h" 2
# 1 "config/sparc/xm-sol2.h" 2
# 1 "hconfig.h" 2
# 24 "./genattr.c" 2
# 1 "rtl.h" 1
# 1 "machmode.h" 1
enum machine_mode {
# 1 "machmode.def" 1
VOIDmode ,
QImode ,
HImode ,
PSImode ,
SImode ,
PDImode ,
DImode ,
TImode ,
OImode ,
QFmode ,
HFmode ,
TQFmode ,
SFmode ,
DFmode ,
XFmode ,
TFmode ,
SCmode ,
DCmode ,
XCmode ,
TCmode ,
CQImode ,
CHImode ,
CSImode ,
CDImode ,
CTImode ,
COImode ,
BLKmode ,
CCmode ,
# 71 "machmode.h" 2
CCXmode, CC_NOOVmode, CCX_NOOVmode, CCFPmode, CCFPEmode ,
MAX_MACHINE_MODE };
extern char *mode_name[];
enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,
MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT, MAX_MODE_CLASS};
extern enum mode_class mode_class[];
extern int mode_size[];
extern int mode_unit_size[];
extern enum machine_mode mode_wider_mode[];
extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int) ;
extern enum machine_mode get_best_mode (int, int, int, enum machine_mode, int) ;
extern enum machine_mode class_narrowest_mode[];
extern enum machine_mode byte_mode;
extern enum machine_mode word_mode;
extern enum machine_mode ptr_mode;
# 22 "rtl.h" 2
union tree_node;
enum rtx_code {
# 1 "rtl.def" 1
UNKNOWN ,
NIL ,
EXPR_LIST ,
INSN_LIST ,
MATCH_OPERAND ,
MATCH_SCRATCH ,
MATCH_DUP ,
MATCH_OPERATOR ,
MATCH_PARALLEL ,
MATCH_OP_DUP ,
MATCH_PAR_DUP ,
DEFINE_INSN ,
DEFINE_PEEPHOLE ,
DEFINE_SPLIT ,
DEFINE_COMBINE ,
DEFINE_EXPAND ,
DEFINE_DELAY ,
DEFINE_FUNCTION_UNIT ,
DEFINE_ASM_ATTRIBUTES ,
SEQUENCE ,
ADDRESS ,
DEFINE_ATTR ,
ATTR ,
SET_ATTR ,
SET_ATTR_ALTERNATIVE ,
EQ_ATTR ,
ATTR_FLAG ,
INSN ,
JUMP_INSN ,
CALL_INSN ,
BARRIER ,
CODE_LABEL ,
NOTE ,
INLINE_HEADER ,
PARALLEL ,
ASM_INPUT ,
ASM_OPERANDS ,
UNSPEC ,
UNSPEC_VOLATILE ,
ADDR_VEC ,
ADDR_DIFF_VEC ,
SET ,
USE ,
CLOBBER ,
CALL ,
RETURN ,
TRAP_IF ,
CONST_INT ,
CONST_DOUBLE ,
CONST_STRING ,
CONST ,
PC ,
REG ,
SCRATCH ,
SUBREG ,
STRICT_LOW_PART ,
CONCAT ,
MEM ,
LABEL_REF ,
SYMBOL_REF ,
CC0 ,
QUEUED ,
IF_THEN_ELSE ,
COND ,
COMPARE ,
PLUS ,
MINUS ,
NEG ,
MULT ,
DIV ,
MOD ,
UDIV ,
UMOD ,
AND ,
IOR ,
XOR ,
NOT ,
ASHIFT ,
ROTATE ,
ASHIFTRT ,
LSHIFTRT ,
ROTATERT ,
SMIN ,
SMAX ,
UMIN ,
UMAX ,
PRE_DEC ,
PRE_INC ,
POST_DEC ,
POST_INC ,
NE ,
EQ ,
GE ,
GT ,
LE ,
LT ,
GEU ,
GTU ,
LEU ,
LTU ,
SIGN_EXTEND ,
ZERO_EXTEND ,
TRUNCATE ,
FLOAT_EXTEND ,
FLOAT_TRUNCATE ,
FLOAT ,
FIX ,
UNSIGNED_FLOAT ,
UNSIGNED_FIX ,
ABS ,
SQRT ,
FFS ,
SIGN_EXTRACT ,
ZERO_EXTRACT ,
HIGH ,
LO_SUM ,
# 39 "rtl.h" 2
LAST_AND_UNUSED_RTX_CODE};
extern int rtx_length[];
extern char *rtx_name[];
extern char *rtx_format[];
extern char rtx_class[];
typedef union rtunion_def
{
int rtwint;
int rtint;
char *rtstr;
struct rtx_def *rtx;
struct rtvec_def *rtvec;
enum machine_mode rttype;
} rtunion;
typedef struct rtx_def
{
enum rtx_code code : 16;
enum machine_mode mode : 8;
unsigned int jump : 1;
unsigned int call : 1;
unsigned int unchanging : 1;
unsigned int volatil : 1;
unsigned int in_struct : 1;
unsigned int used : 1;
unsigned integrated : 1;
rtunion fld[1];
} *rtx;
typedef struct rtvec_def{
unsigned num_elem;
rtunion elem[1];
} *rtvec;
enum reg_note { REG_DEAD = 1, REG_INC = 2, REG_EQUIV = 3, REG_WAS_0 = 4,
REG_EQUAL = 5, REG_RETVAL = 6, REG_LIBCALL = 7,
REG_NONNEG = 8, REG_NO_CONFLICT = 9, REG_UNUSED = 10,
REG_CC_SETTER = 11, REG_CC_USER = 12, REG_LABEL = 13,
REG_DEP_ANTI = 14, REG_DEP_OUTPUT = 15 };
extern char *reg_note_name[];
extern char *note_insn_name[];
extern rtx plus_constant_wide (rtx, int ) ;
extern rtx plus_constant_for_output_wide (rtx, int ) ;
extern rtx bc_gen_rtx ();
extern rtx gen_rtx (enum rtx_code,
enum machine_mode, ...) ;
extern rtvec gen_rtvec (int, ...) ;
extern rtx read_rtx (FILE *) ;
extern char *xmalloc ();
extern char *xrealloc ();
extern char *oballoc (int) ;
extern char *permalloc (int) ;
extern void free (void *) ;
extern rtx rtx_alloc (enum rtx_code ) ;
extern rtvec rtvec_alloc (int) ;
extern rtx find_reg_note (rtx, enum reg_note, rtx) ;
extern rtx find_regno_note (rtx, enum reg_note, int) ;
extern int find_reg_fusage (rtx, enum rtx_code, rtx) ;
extern int find_regno_fusage (rtx, enum rtx_code, int) ;
extern int get_integer_term (rtx) ;
extern rtx get_related_value (rtx) ;
extern rtx single_set (rtx) ;
extern rtx find_last_value (rtx, rtx *, rtx) ;
extern rtx copy_rtx (rtx) ;
extern rtx copy_rtx_if_shared (rtx) ;
extern rtx copy_most_rtx (rtx, rtx) ;
extern rtx replace_rtx (rtx, rtx, rtx) ;
extern rtvec gen_rtvec_v (int, rtx *) ;
extern rtx gen_reg_rtx (enum machine_mode) ;
extern rtx gen_label_rtx (void) ;
extern rtx gen_inline_header_rtx (rtx, rtx, int, int, int, int,
int, int, rtx, rtx, int, int,
rtvec, rtx) ;
extern rtx gen_lowpart_common (enum machine_mode, rtx) ;
extern rtx gen_lowpart (enum machine_mode, rtx) ;
extern rtx gen_lowpart_if_possible (enum machine_mode, rtx) ;
extern rtx gen_highpart (enum machine_mode, rtx) ;
extern rtx gen_realpart (enum machine_mode, rtx) ;
extern rtx gen_imagpart (enum machine_mode, rtx) ;
extern rtx operand_subword (rtx, int, int, enum machine_mode) ;
extern rtx operand_subword_force (rtx, int, enum machine_mode) ;
extern int subreg_lowpart_p (rtx) ;
extern rtx make_safe_from (rtx, rtx) ;
extern rtx convert_memory_address (enum machine_mode, rtx) ;
extern rtx memory_address (enum machine_mode, rtx) ;
extern rtx get_insns (void) ;
extern rtx get_last_insn (void) ;
extern rtx get_last_insn_anywhere (void) ;
extern void start_sequence (void) ;
extern void push_to_sequence (rtx) ;
extern void end_sequence (void) ;
extern rtx gen_sequence (void) ;
extern rtx immed_double_const (int , int , enum machine_mode) ;
extern rtx force_const_mem (enum machine_mode, rtx) ;
extern rtx force_reg (enum machine_mode, rtx) ;
extern rtx get_pool_constant (rtx) ;
extern enum machine_mode get_pool_mode (rtx) ;
extern int get_pool_offset (rtx) ;
extern rtx simplify_subtraction (rtx) ;
extern rtx assign_stack_local (enum machine_mode, int, int) ;
extern rtx assign_stack_temp (enum machine_mode, int, int) ;
extern rtx protect_from_queue (rtx, int) ;
extern void emit_queue (void) ;
extern rtx emit_move_insn (rtx, rtx) ;
extern rtx emit_insn_before (rtx, rtx) ;
extern rtx emit_jump_insn_before (rtx, rtx) ;
extern rtx emit_call_insn_before (rtx, rtx) ;
extern rtx emit_barrier_before (rtx) ;
extern rtx emit_note_before (int, rtx) ;
extern rtx emit_insn_after (rtx, rtx) ;
extern rtx emit_jump_insn_after (rtx, rtx) ;
extern rtx emit_barrier_after (rtx) ;
extern rtx emit_label_after (rtx, rtx) ;
extern rtx emit_note_after (int, rtx) ;
extern rtx emit_line_note_after (char *, int, rtx) ;
extern rtx emit_insn (rtx) ;
extern rtx emit_insns (rtx) ;
extern rtx emit_insns_before (rtx, rtx) ;
extern rtx emit_insns_after (rtx, rtx) ;
extern rtx emit_jump_insn (rtx) ;
extern rtx emit_call_insn (rtx) ;
extern rtx emit_label (rtx) ;
extern rtx emit_barrier (void) ;
extern rtx emit_line_note (char *, int) ;
extern rtx emit_note (char *, int) ;
extern rtx emit_line_note_force (char *, int) ;
extern rtx make_insn_raw (rtx) ;
extern rtx previous_insn (rtx) ;
extern rtx next_insn (rtx) ;
extern rtx prev_nonnote_insn (rtx) ;
extern rtx next_nonnote_insn (rtx) ;
extern rtx prev_real_insn (rtx) ;
extern rtx next_real_insn (rtx) ;
extern rtx prev_active_insn (rtx) ;
extern rtx next_active_insn (rtx) ;
extern rtx prev_label (rtx) ;
extern rtx next_label (rtx) ;
extern rtx next_cc0_user (rtx) ;
extern rtx prev_cc0_setter (rtx) ;
extern rtx reg_set_last (rtx, rtx) ;
extern rtx next_nondeleted_insn (rtx) ;
extern enum rtx_code reverse_condition (enum rtx_code) ;
extern enum rtx_code swap_condition (enum rtx_code) ;
extern enum rtx_code unsigned_condition (enum rtx_code) ;
extern enum rtx_code signed_condition (enum rtx_code) ;
extern rtx find_equiv_reg (rtx, rtx, enum reg_class, int, short *, int, enum machine_mode) ;
extern rtx squeeze_notes (rtx, rtx) ;
extern rtx delete_insn (rtx) ;
extern void delete_jump (rtx) ;
extern rtx get_label_before (rtx) ;
extern rtx get_label_after (rtx) ;
extern rtx follow_jumps (rtx) ;
extern rtx adj_offsettable_operand (rtx, int) ;
extern rtx try_split (rtx, rtx, int) ;
extern rtx split_insns (rtx, rtx) ;
extern rtx simplify_unary_operation (enum rtx_code, enum machine_mode, rtx, enum machine_mode) ;
extern rtx simplify_binary_operation (enum rtx_code, enum machine_mode, rtx, rtx) ;
extern rtx simplify_ternary_operation (enum rtx_code, enum machine_mode, enum machine_mode, rtx, rtx, rtx) ;
extern rtx simplify_relational_operation (enum rtx_code, enum machine_mode, rtx, rtx) ;
extern rtx nonlocal_label_rtx_list (void) ;
extern rtx gen_move_insn (rtx, rtx) ;
extern rtx gen_jump (rtx) ;
extern rtx gen_beq (rtx) ;
extern rtx gen_bge (rtx) ;
extern rtx gen_ble (rtx) ;
extern rtx eliminate_constant_term (rtx, rtx *) ;
extern rtx expand_complex_abs (enum machine_mode, rtx, rtx, int) ;
extern enum machine_mode choose_hard_reg_mode (int, int) ;
extern int max_parallel;
extern int asm_noperands (rtx) ;
extern char *decode_asm_operands (rtx, rtx *, rtx **, char **, enum machine_mode *) ;
extern enum reg_class reg_preferred_class (int) ;
extern enum reg_class reg_alternate_class (int) ;
extern rtx get_first_nonparm_insn (void) ;
extern rtx pc_rtx;
extern rtx cc0_rtx;
extern rtx const0_rtx;
extern rtx const1_rtx;
extern rtx const2_rtx;
extern rtx constm1_rtx;
extern rtx const_true_rtx;
extern rtx const_tiny_rtx[3][(int) MAX_MACHINE_MODE];
extern rtx stack_pointer_rtx;
extern rtx frame_pointer_rtx;
extern rtx hard_frame_pointer_rtx;
extern rtx arg_pointer_rtx;
extern rtx pic_offset_table_rtx;
extern rtx struct_value_rtx;
extern rtx struct_value_incoming_rtx;
extern rtx static_chain_rtx;
extern rtx static_chain_incoming_rtx;
extern rtx virtual_incoming_args_rtx;
extern rtx virtual_stack_vars_rtx;
extern rtx virtual_stack_dynamic_rtx;
extern rtx virtual_outgoing_args_rtx;
extern rtx find_next_ref (rtx, rtx) ;
extern rtx *find_single_use (rtx, rtx, rtx *) ;
extern rtx expand_expr ();
extern rtx output_constant_def (union tree_node *) ;
extern rtx immed_real_const (union tree_node *) ;
extern union tree_node *make_tree (union tree_node *, rtx) ;
extern void fatal_insn_not_found (rtx) ;
extern void fatal_insn (char *, rtx) ;
extern int reload_completed;
extern int reload_in_progress;
extern int cse_not_expected;
extern rtx *regno_reg_rtx;
extern int rtx_to_tree_code (enum rtx_code) ;
# 25 "./genattr.c" 2
# 1 "obstack.h" 1
# 1 "include/stddef.h" 1 3
# 17 "include/stddef.h" 3
# 59 "include/stddef.h" 3
typedef int ptrdiff_t;
# 182 "include/stddef.h" 3
# 256 "include/stddef.h" 3
# 288 "include/stddef.h" 3
# 132 "obstack.h" 2
struct _obstack_chunk
{
char *limit;
struct _obstack_chunk *prev;
char contents[4];
};
struct obstack
{
long chunk_size;
struct _obstack_chunk* chunk;
char *object_base;
char *next_free;
char *chunk_limit;
ptrdiff_t temp;
int alignment_mask;
struct _obstack_chunk *(*chunkfun) ();
void (*freefun) ();
char *extra_arg;
unsigned use_extra_arg:1;
unsigned maybe_empty_object:1;
unsigned alloc_failed:1;
};
extern void _obstack_newchunk (struct obstack *, int);
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *, int, int,
void *(*) (), void (*) ());
extern int _obstack_begin_1 (struct obstack *, int, int,
void *(*) (), void (*) (), void *);
void obstack_init (struct obstack *obstack);
void * obstack_alloc (struct obstack *obstack, int size);
void * obstack_copy (struct obstack *obstack, void *address, int size);
void * obstack_copy0 (struct obstack *obstack, void *address, int size);
void obstack_free (struct obstack *obstack, void *block);
void obstack_blank (struct obstack *obstack, int size);
void obstack_grow (struct obstack *obstack, void *data, int size);
void obstack_grow0 (struct obstack *obstack, void *data, int size);
void obstack_1grow (struct obstack *obstack, int data_char);
void obstack_ptr_grow (struct obstack *obstack, void *data);
void obstack_int_grow (struct obstack *obstack, int data);
void * obstack_finish (struct obstack *obstack);
int obstack_object_size (struct obstack *obstack);
int obstack_room (struct obstack *obstack);
void obstack_1grow_fast (struct obstack *obstack, int data_char);
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
void obstack_int_grow_fast (struct obstack *obstack, int data);
void obstack_blank_fast (struct obstack *obstack, int size);
void * obstack_base (struct obstack *obstack);
void * obstack_next_free (struct obstack *obstack);
int obstack_alignment_mask (struct obstack *obstack);
int obstack_chunk_size (struct obstack *obstack);
# 307 "obstack.h"
# 321 "obstack.h"
# 365 "obstack.h"
# 406 "obstack.h"
# 514 "obstack.h"
# 26 "./genattr.c" 2
static struct obstack obstack;
struct obstack *rtl_obstack = &obstack;
extern void free (void *) ;
extern rtx read_rtx (FILE *) ;
char *xmalloc (unsigned) ;
static void fatal ();
void fancy_abort (void) ;
struct range
{
int min;
int max;
};
struct function_unit
{
char *name;
struct function_unit *next;
int multiplicity;
int simultaneity;
struct range ready_cost;
struct range issue_delay;
};
static void
extend_range (range, min, max)
struct range *range;
int min;
int max;
{
if (range->min > min) range->min = min;
if (range->max < max) range->max = max;
}
static void
init_range (range)
struct range *range;
{
range->min = 100000;
range->max = -1;
}
static void
write_upcase (str)
char *str;
{
for (; *str; str++)
if (*str >= 'a' && *str <= 'z')
printf ("%c", *str - 'a' + 'A');
else
printf ("%c", *str);
}
static void
gen_attr (attr)
rtx attr;
{
char *p;
printf ("#define HAVE_ATTR_%s\n", (( attr )->fld[ 0 ].rtstr) );
if (* (( attr )->fld[ 1 ].rtstr) == '\0')
printf ("extern int get_attr_%s ();\n", (( attr )->fld[ 0 ].rtstr) );
else
{
printf ("enum attr_%s {", (( attr )->fld[ 0 ].rtstr) );
write_upcase ((( attr )->fld[ 0 ].rtstr) );
printf ("_");
for (p = (( attr )->fld[ 1 ].rtstr) ; *p != '\0'; p++)
{
if (*p == ',')
{
printf (", ");
write_upcase ((( attr )->fld[ 0 ].rtstr) );
printf ("_");
}
else if (*p >= 'a' && *p <= 'z')
printf ("%c", *p - 'a' + 'A');
else
printf ("%c", *p);
}
printf ("};\n");
printf ("extern enum attr_%s get_attr_%s ();\n\n",
(( attr )->fld[ 0 ].rtstr) , (( attr )->fld[ 0 ].rtstr) );
}
if (! strcmp ((( attr )->fld[ 0 ].rtstr) , "length"))
{
printf ("extern void init_lengths ();\n");
printf ("extern void shorten_branches PROTO((rtx));\n");
printf ("extern int insn_default_length PROTO((rtx));\n");
printf ("extern int insn_variable_length_p PROTO((rtx));\n");
printf ("extern int insn_current_length PROTO((rtx));\n\n");
printf ("extern int *insn_addresses;\n");
printf ("extern int insn_current_address;\n\n");
}
}
static void
write_units (num_units, multiplicity, simultaneity,
ready_cost, issue_delay, blockage)
int num_units;
struct range *multiplicity;
struct range *simultaneity;
struct range *ready_cost;
struct range *issue_delay;
struct range *blockage;
{
int i, q_size;
printf ("#define INSN_SCHEDULING\n\n");
printf ("extern int result_ready_cost PROTO((rtx));\n");
printf ("extern int function_units_used PROTO((rtx));\n\n");
printf ("extern struct function_unit_desc\n");
printf ("{\n");
printf (" char *name;\n");
printf (" int bitmask;\n");
printf (" int multiplicity;\n");
printf (" int simultaneity;\n");
printf (" int default_cost;\n");
printf (" int max_issue_delay;\n");
printf (" int (*ready_cost_function) ();\n");
printf (" int (*conflict_cost_function) ();\n");
printf (" int max_blockage;\n");
printf (" unsigned int (*blockage_range_function) ();\n");
printf (" int (*blockage_function) ();\n");
printf ("} function_units[];\n\n");
printf ("#define FUNCTION_UNITS_SIZE %d\n", num_units);
printf ("#define MIN_MULTIPLICITY %d\n", multiplicity->min);
printf ("#define MAX_MULTIPLICITY %d\n", multiplicity->max);
printf ("#define MIN_SIMULTANEITY %d\n", simultaneity->min);
printf ("#define MAX_SIMULTANEITY %d\n", simultaneity->max);
printf ("#define MIN_READY_COST %d\n", ready_cost->min);
printf ("#define MAX_READY_COST %d\n", ready_cost->max);
printf ("#define MIN_ISSUE_DELAY %d\n", issue_delay->min);
printf ("#define MAX_ISSUE_DELAY %d\n", issue_delay->max);
printf ("#define MIN_BLOCKAGE %d\n", blockage->min);
printf ("#define MAX_BLOCKAGE %d\n", blockage->max);
for (i = 0; (1 << i) < blockage->max; i++)
;
printf ("#define BLOCKAGE_BITS %d\n", i + 1);
i = (( blockage->max ) > ( ready_cost->max ) ? ( blockage->max ) : ( ready_cost->max )) ;
for (q_size = 1; q_size <= i; q_size <<= 1)
;
printf ("#define INSN_QUEUE_SIZE %d\n", q_size);
}
char *
xmalloc (size)
unsigned size;
{
register char *val = (char *) malloc (size);
if (val == 0)
fatal ("virtual memory exhausted");
return val;
}
char *
xrealloc (ptr, size)
char *ptr;
unsigned size;
{
char * result = (char *) realloc (ptr, size);
if (!result)
fatal ("virtual memory exhausted");
return result;
}
static void
fatal (s, a1, a2)
char *s;
{
fprintf ((&__iob[2]) , "genattr: ");
fprintf ((&__iob[2]) , s, a1, a2);
fprintf ((&__iob[2]) , "\n");
exit (33 );
}
void
fancy_abort ()
{
fatal ("Internal gcc abort.");
}
int
main (argc, argv)
int argc;
char **argv;
{
rtx desc;
FILE *infile;
register int c;
int have_delay = 0;
int have_annul_true = 0;
int have_annul_false = 0;
int num_units = 0;
struct range all_simultaneity, all_multiplicity;
struct range all_ready_cost, all_issue_delay, all_blockage;
struct function_unit *units = 0, *unit;
int i;
init_range (&all_multiplicity);
init_range (&all_simultaneity);
init_range (&all_ready_cost);
init_range (&all_issue_delay);
init_range (&all_blockage);
_obstack_begin (( rtl_obstack ), 0, 0, (void *(*) ()) xmalloc , (void (*) ()) free ) ;
if (argc <= 1)
fatal ("No input file name.");
infile = fopen (argv[1], "r");
if (infile == 0)
{
perror (argv[1]);
exit (33 );
}
init_rtl ();
printf ("/* Generated automatically by the program `genattr'\nfrom the machine description file `md'. */\n\n");
printf("#ifndef PROTO\n");
printf("#if defined (USE_PROTOTYPES) ? USE_PROTOTYPES : defined (__STDC__)\n");
printf("#define PROTO(ARGS) ARGS\n");
printf("#else\n");
printf("#define PROTO(ARGS) ()\n");
printf("#endif\n");
printf("#endif\n");
printf ("#define HAVE_ATTR_alternative\n");
printf ("#define get_attr_alternative(insn) which_alternative\n");
while (1)
{
c = read_skip_spaces (infile);
if (c == (-1) )
break;
ungetc (c, infile);
desc = read_rtx (infile);
if ((( desc )->code) == DEFINE_ATTR)
gen_attr (desc);
else if ((( desc )->code) == DEFINE_DELAY)
{
if (! have_delay)
{
printf ("#define DELAY_SLOTS\n");
printf ("extern int num_delay_slots PROTO((rtx));\n");
printf ("extern int eligible_for_delay PROTO((rtx, int, rtx, int));\n\n");
printf ("extern int const_num_delay_slots PROTO((rtx));\n\n");
have_delay = 1;
}
for (i = 0; i < (( desc )->fld[ 1 ].rtvec->num_elem) ; i += 3)
{
if ((( desc )->fld[ 1 ].rtvec->elem[ i + 1 ].rtx) && ! have_annul_true)
{
printf ("#define ANNUL_IFTRUE_SLOTS\n");
printf ("extern int eligible_for_annul_true ();\n");
have_annul_true = 1;
}
if ((( desc )->fld[ 1 ].rtvec->elem[ i + 2 ].rtx) && ! have_annul_false)
{
printf ("#define ANNUL_IFFALSE_SLOTS\n");
printf ("extern int eligible_for_annul_false ();\n");
have_annul_false = 1;
}
}
}
else if ((( desc )->code) == DEFINE_FUNCTION_UNIT)
{
char *name = (( desc )->fld[ 0 ].rtstr) ;
int multiplicity = (( desc )->fld[ 1 ].rtint) ;
int simultaneity = (( desc )->fld[ 2 ].rtint) ;
int ready_cost = (( (( desc )->fld[ 4 ].rtint) ) > ( 1 ) ? ( (( desc )->fld[ 4 ].rtint) ) : ( 1 )) ;
int issue_delay = (( (( desc )->fld[ 5 ].rtint) ) > ( 1 ) ? ( (( desc )->fld[ 5 ].rtint) ) : ( 1 )) ;
int issueexp_p = ((( desc )->fld[ 6 ].rtvec) != 0);
for (unit = units; unit; unit = unit->next)
if (strcmp (unit->name, name) == 0)
break;
if (unit == 0)
{
int len = strlen (name) + 1;
unit = (struct function_unit *)
alloca (sizeof (struct function_unit));
unit->name = (char *) alloca (len);
memcpy (( unit->name ),( name ),( len )) ;
unit->multiplicity = multiplicity;
unit->simultaneity = simultaneity;
unit->ready_cost.min = unit->ready_cost.max = ready_cost;
unit->issue_delay.min = unit->issue_delay.max = issue_delay;
unit->next = units;
units = unit;
num_units++;
extend_range (&all_multiplicity, multiplicity, multiplicity);
extend_range (&all_simultaneity, simultaneity, simultaneity);
}
else if (unit->multiplicity != multiplicity
|| unit->simultaneity != simultaneity)
fatal ("Differing specifications given for `%s' function unit.",
unit->name);
extend_range (&unit->ready_cost, ready_cost, ready_cost);
extend_range (&unit->issue_delay,
issueexp_p ? 1 : issue_delay, issue_delay);
extend_range (&all_ready_cost,
unit->ready_cost.min, unit->ready_cost.max);
extend_range (&all_issue_delay,
unit->issue_delay.min, unit->issue_delay.max);
}
}
if (num_units > 0)
{
for (unit = units; unit; unit = unit->next)
{
struct range blockage;
blockage = unit->issue_delay;
blockage.max = (( unit->ready_cost.max
- (unit->ready_cost.min - 1) ) > (
blockage.max ) ? ( unit->ready_cost.max - (unit->ready_cost.min - 1) ) : ( blockage.max )) ;
blockage.min = (( 1 ) > ( blockage.min ) ? ( 1 ) : ( blockage.min )) ;
if (unit->simultaneity != 0)
{
int fill_time = ((unit->simultaneity - 1)
* unit->issue_delay.min);
blockage.min = (( unit->ready_cost.min - fill_time ) > (
blockage.min ) ? ( unit->ready_cost.min - fill_time ) : ( blockage.min )) ;
blockage.max = (( unit->ready_cost.max - fill_time ) > (
blockage.max ) ? ( unit->ready_cost.max - fill_time ) : ( blockage.max )) ;
}
extend_range (&all_blockage, blockage.min, blockage.max);
}
write_units (num_units, &all_multiplicity, &all_simultaneity,
&all_ready_cost, &all_issue_delay, &all_blockage);
}
printf("\n#define ATTR_FLAG_forward\t0x1\n");
printf("#define ATTR_FLAG_backward\t0x2\n");
printf("#define ATTR_FLAG_likely\t0x4\n");
printf("#define ATTR_FLAG_very_likely\t0x8\n");
printf("#define ATTR_FLAG_unlikely\t0x10\n");
printf("#define ATTR_FLAG_very_unlikely\t0x20\n");
fflush ((&__iob[1]) );
exit ((( (&__iob[1]) )->_flag & 0040 ) != 0 ? 33 : 0 );
return 0;
}
Technical Details
Message-ID:
<9701101152.AA15911@sunqp6>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 113d02,b874eb432cb09692,start X-Google-Attributes: gid113d02,public From: luc.perthuis@matra-com.fr (Compte de Perthuis) Subject: sparc-sun-solaris2.5 make fatal error *** Error code 138 Date: 1997/01/10 Message-ID: <9701101152.AA15911@sunqp6> X-Deja-AN: 208915809 sender: bug-gcc-request@prep.ai.mit.edu x-gateway: relay1.UU.NET from bug-gcc to gnu.gcc.bug; Fri, 10 Jan 1997 06:57:01 EST newsgroups: gnu.gcc.bug