🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.gcc.bug
Article #5945

sparc-sun-solaris2.5 make fatal error *** Error code 138

#5945
From: Compte de Perthuis
Date: Fri, 10 Jan 1997 00:00
6565 lines
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-mail

Show 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