This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

target/7265: IA-64 C cross-compiler cannot build libgcc


>Number:         7265
>Category:       target
>Synopsis:       IA-64 C cross-compiler cannot build libgcc
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          rejects-legal
>Submitter-Id:   net
>Arrival-Date:   Wed Jul 10 11:46:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     jnaset@rsn.hp.com
>Release:        xgcc (GCC) 3.1.1 20020708 (prerelease)
>Organization:
>Environment:
HP-UX 11i cross-compiling for ia64-linux-linux-gnu
>Description:
This code from a header included by libgcc2.c:

typedef struct {
        unsigned long fds_bits [(1024/(8 * sizeof(unsigned long)))];
} __kernel_fd_set;


causes this message:

posix_types.h:37: size of array `fds_bits' is too large

replacing the number of elements in the array with a constant as small as 2 results in the same error.
>How-To-Repeat:
Make and install gcc 3.1.1 20020708 (prerelease) for HP-UX.  Use that compiler to build the cross-compiler for ia64-linux-linux-gnu.  The build will fail while compiling libgcc2.c to produce _muldi3.o with the message above.
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="muldi3.i"
Content-Disposition: inline; filename="muldi3.i"

# 1 "../../gcc/libgcc2.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "../../gcc/libgcc2.c"
# 36 "../../gcc/libgcc2.c"
# 1 "tconfig.h" 1





struct rtx_def;
typedef struct rtx_def *rtx;
struct rtvec_def;
typedef struct rtvec_def *rtvec;
union tree_node;
typedef union tree_node *tree;


# 1 "../../include/ansidecl.h" 1
# 15 "tconfig.h" 2
# 1 "../../gcc/config/ia64/ia64.h" 1
# 48 "../../gcc/config/ia64/ia64.h"
extern int target_flags;
# 179 "../../gcc/config/ia64/ia64.h"
extern const char *ia64_fixed_range_string;
# 809 "../../gcc/config/ia64/ia64.h"
enum reg_class
{
  NO_REGS,
  PR_REGS,
  BR_REGS,
  AR_M_REGS,
  AR_I_REGS,
  ADDL_REGS,
  GR_REGS,
  FR_REGS,
  GR_AND_BR_REGS,
  GR_AND_FR_REGS,
  ALL_REGS,
  LIM_REG_CLASSES
};
# 1284 "../../gcc/config/ia64/ia64.h"
typedef struct ia64_args
{
  int words;
  int int_regs;
  int fp_regs;
  int prototype;
} CUMULATIVE_ARGS;
# 1930 "../../gcc/config/ia64/ia64.h"
extern int ia64_asm_output_label;
# 2471 "../../gcc/config/ia64/ia64.h"
extern int ia64_final_schedule;







struct machine_function
{

  struct rtx_def* ia64_eh_epilogue_sp;


  struct rtx_def* ia64_eh_epilogue_bsp;


  struct rtx_def* ia64_gp_save;


  int n_varargs;
};


enum ia64_builtins
{
  IA64_BUILTIN_SYNCHRONIZE,

  IA64_BUILTIN_FETCH_AND_ADD_SI,
  IA64_BUILTIN_FETCH_AND_SUB_SI,
  IA64_BUILTIN_FETCH_AND_OR_SI,
  IA64_BUILTIN_FETCH_AND_AND_SI,
  IA64_BUILTIN_FETCH_AND_XOR_SI,
  IA64_BUILTIN_FETCH_AND_NAND_SI,

  IA64_BUILTIN_ADD_AND_FETCH_SI,
  IA64_BUILTIN_SUB_AND_FETCH_SI,
  IA64_BUILTIN_OR_AND_FETCH_SI,
  IA64_BUILTIN_AND_AND_FETCH_SI,
  IA64_BUILTIN_XOR_AND_FETCH_SI,
  IA64_BUILTIN_NAND_AND_FETCH_SI,

  IA64_BUILTIN_BOOL_COMPARE_AND_SWAP_SI,
  IA64_BUILTIN_VAL_COMPARE_AND_SWAP_SI,

  IA64_BUILTIN_SYNCHRONIZE_SI,

  IA64_BUILTIN_LOCK_TEST_AND_SET_SI,

  IA64_BUILTIN_LOCK_RELEASE_SI,

  IA64_BUILTIN_FETCH_AND_ADD_DI,
  IA64_BUILTIN_FETCH_AND_SUB_DI,
  IA64_BUILTIN_FETCH_AND_OR_DI,
  IA64_BUILTIN_FETCH_AND_AND_DI,
  IA64_BUILTIN_FETCH_AND_XOR_DI,
  IA64_BUILTIN_FETCH_AND_NAND_DI,

  IA64_BUILTIN_ADD_AND_FETCH_DI,
  IA64_BUILTIN_SUB_AND_FETCH_DI,
  IA64_BUILTIN_OR_AND_FETCH_DI,
  IA64_BUILTIN_AND_AND_FETCH_DI,
  IA64_BUILTIN_XOR_AND_FETCH_DI,
  IA64_BUILTIN_NAND_AND_FETCH_DI,

  IA64_BUILTIN_BOOL_COMPARE_AND_SWAP_DI,
  IA64_BUILTIN_VAL_COMPARE_AND_SWAP_DI,

  IA64_BUILTIN_SYNCHRONIZE_DI,

  IA64_BUILTIN_LOCK_TEST_AND_SET_DI,

  IA64_BUILTIN_LOCK_RELEASE_DI,

  IA64_BUILTIN_BSP,
  IA64_BUILTIN_FLUSHRS
};


enum fetchop_code {
  IA64_ADD_OP, IA64_SUB_OP, IA64_OR_OP, IA64_AND_OP, IA64_XOR_OP, IA64_NAND_OP
};
# 16 "tconfig.h" 2
# 1 "../../gcc/config/dbxelf.h" 1
# 17 "tconfig.h" 2
# 1 "../../gcc/config/elfos.h" 1
# 18 "tconfig.h" 2
# 1 "../../gcc/config/svr4.h" 1
# 19 "tconfig.h" 2
# 1 "../../gcc/config/linux.h" 1
# 20 "tconfig.h" 2
# 1 "../../gcc/config/ia64/sysv4.h" 1
# 40 "../../gcc/config/ia64/sysv4.h"
extern int size_directive_output;
# 276 "../../gcc/config/ia64/sysv4.h"
extern unsigned int ia64_section_threshold;
# 21 "tconfig.h" 2
# 1 "../../gcc/config/ia64/linux.h" 1
# 57 "../../gcc/config/ia64/linux.h"
# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/signal.h" 1 3



# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/signal.h" 1 3
# 131 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/signal.h" 3
# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/types.h" 1 3







# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/posix_types.h" 1 3



# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/stddef.h" 1 3
# 5 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/posix_types.h" 2 3
# 36 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/posix_types.h" 3
typedef struct {
        unsigned long fds_bits [(1024/(8 * sizeof(unsigned long)))];
} __kernel_fd_set;


typedef void (*__kernel_sighandler_t)(int);


typedef int __kernel_key_t;

# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/posix_types.h" 1 3
# 13 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/posix_types.h" 3
typedef unsigned int __kernel_dev_t;
typedef unsigned int __kernel_ino_t;
typedef unsigned int __kernel_mode_t;
typedef unsigned int __kernel_nlink_t;
typedef long __kernel_off_t;
typedef long long __kernel_loff_t;
typedef int __kernel_pid_t;
typedef int __kernel_ipc_pid_t;
typedef unsigned int __kernel_uid_t;
typedef unsigned int __kernel_gid_t;
typedef unsigned long __kernel_size_t;
typedef long __kernel_ssize_t;
typedef long __kernel_ptrdiff_t;
typedef long __kernel_time_t;
typedef long __kernel_suseconds_t;
typedef long __kernel_clock_t;
typedef int __kernel_daddr_t;
typedef char * __kernel_caddr_t;
typedef unsigned long __kernel_sigset_t;
typedef unsigned short __kernel_uid16_t;
typedef unsigned short __kernel_gid16_t;

typedef struct {
        int val[2];
} __kernel_fsid_t;

typedef __kernel_uid_t __kernel_old_uid_t;
typedef __kernel_gid_t __kernel_old_gid_t;
typedef __kernel_uid_t __kernel_uid32_t;
typedef __kernel_gid_t __kernel_gid32_t;
# 47 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/posix_types.h" 2 3
# 9 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/types.h" 2 3
# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/types.h" 1 3
# 25 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/types.h" 3
typedef unsigned int umode_t;






typedef __signed__ char __s8;
typedef unsigned char __u8;

typedef __signed__ short __s16;
typedef unsigned short __u16;

typedef __signed__ int __s32;
typedef unsigned int __u32;

typedef __signed__ long __s64;
typedef unsigned long __u64;
# 10 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/types.h" 2 3



typedef __kernel_fd_set fd_set;
typedef __kernel_dev_t dev_t;
typedef __kernel_ino_t ino_t;
typedef __kernel_mode_t mode_t;
typedef __kernel_nlink_t nlink_t;
typedef __kernel_off_t off_t;
typedef __kernel_pid_t pid_t;
typedef __kernel_daddr_t daddr_t;
typedef __kernel_key_t key_t;
typedef __kernel_suseconds_t suseconds_t;
# 40 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/types.h" 3
typedef __kernel_uid_t uid_t;
typedef __kernel_gid_t gid_t;



typedef __kernel_loff_t loff_t;
# 54 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/types.h" 3
typedef __kernel_size_t size_t;




typedef __kernel_ssize_t ssize_t;




typedef __kernel_ptrdiff_t ptrdiff_t;




typedef __kernel_time_t time_t;




typedef __kernel_clock_t clock_t;




typedef __kernel_caddr_t caddr_t;



typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;


typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;




typedef __u8 u_int8_t;
typedef __s8 int8_t;
typedef __u16 u_int16_t;
typedef __s16 int16_t;
typedef __u32 u_int32_t;
typedef __s32 int32_t;



typedef __u8 uint8_t;
typedef __u16 uint16_t;
typedef __u32 uint32_t;


typedef __u64 uint64_t;
typedef __u64 u_int64_t;
typedef __s64 int64_t;
# 123 "/opt/gnu-ia/ia64-linux-linux-gnu/include/linux/types.h" 3
struct ustat {
        __kernel_daddr_t f_tfree;
        __kernel_ino_t f_tinode;
        char f_fname[6];
        char f_fpack[6];
};
# 132 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/signal.h" 2 3


struct siginfo;


typedef void (*__sighandler_t)(int);

typedef struct sigaltstack {
        void *ss_sp;
        int ss_flags;
        size_t ss_size;
} stack_t;
# 5 "/opt/gnu-ia/ia64-linux-linux-gnu/include/signal.h" 2 3
# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/siginfo.h" 1 3
# 11 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/siginfo.h" 3
typedef union sigval {
        int sival_int;
        void *sival_ptr;
} sigval_t;




typedef struct siginfo {
        int si_signo;
        int si_errno;
        int si_code;
        int __pad0;

        union {
                int _pad[((128/sizeof(int)) - 4)];


                struct {
                        pid_t _pid;
                        uid_t _uid;
                } _kill;


                struct {
                        unsigned int _timer1;
                        unsigned int _timer2;
                } _timer;


                struct {
                        pid_t _pid;
                        uid_t _uid;
                        sigval_t _sigval;
                } _rt;


                struct {
                        pid_t _pid;
                        uid_t _uid;
                        int _status;
                        clock_t _utime;
                        clock_t _stime;
                } _sigchld;


                struct {
                        void *_addr;
                        int _imm;
                        int _pad0;
                        unsigned long _isr;
                } _sigfault;


                struct {
                        long _band;
                        int _fd;
                } _sigpoll;

                struct {
                        pid_t _pid;
                        uid_t _uid;
                        unsigned long _pfm_ovfl_counters;
                } _sigprof;
        } _sifields;
} siginfo_t;
# 230 "/opt/gnu-ia/ia64-linux-linux-gnu/include/asm/siginfo.h" 3
typedef struct sigevent {
        sigval_t sigev_value;
        int sigev_signo;
        int sigev_notify;
        union {
                int _pad[((64/sizeof(int)) - 4)];

                struct {
                        void (*_function)(sigval_t);
                        void *_attribute;
                } _sigev_thread;
        } _sigev_un;
} sigevent_t;
# 6 "/opt/gnu-ia/ia64-linux-linux-gnu/include/signal.h" 2 3
# 58 "../../gcc/config/ia64/linux.h" 2
# 1 "/opt/gnu-ia/ia64-linux-linux-gnu/include/sys/ucontext.h" 1 3



struct ucontext {
        struct sigcontext uc_mcontext;
};
# 59 "../../gcc/config/ia64/linux.h" 2
# 22 "tconfig.h" 2
# 1 "../../gcc/defaults.h" 1
# 23 "tconfig.h" 2
# 37 "../../gcc/libgcc2.c" 2
# 1 "../../gcc/tsystem.h" 1
# 37 "../../gcc/tsystem.h"
# 1 "/work_z/jnaset/gcc-20020708/ipf/gcc/include/stddef.h" 1 3
# 294 "/work_z/jnaset/gcc-20020708/ipf/gcc/include/stddef.h" 3
typedef int wchar_t;
# 38 "../../gcc/tsystem.h" 2




extern void *malloc (size_t);



extern void free (void *);



extern int atexit (void (*)(void));
# 38 "../../gcc/libgcc2.c" 2

# 1 "../../gcc/machmode.h" 1
# 29 "../../gcc/machmode.h"
enum machine_mode {
# 1 "../../gcc/machmode.def" 1
# 74 "../../gcc/machmode.def"
VOIDmode,

BImode,
QImode,
HImode,
SImode,
DImode,
TImode,
OImode,




PQImode,
PHImode,
PSImode,
PDImode,

QFmode,
HFmode,
TQFmode,
SFmode,
DFmode,
XFmode,
TFmode,


QCmode,
HCmode,
SCmode,
DCmode,
XCmode,
TCmode,

CQImode,
CHImode,
CSImode,
CDImode,
CTImode,
COImode,







V2QImode,
V2HImode,
V2SImode,
V2DImode,

V4QImode,
V4HImode,
V4SImode,
V4DImode,

V8QImode,
V8HImode,
V8SImode,
V8DImode,

V16QImode,

V2SFmode,
V2DFmode,

V4SFmode,
V4DFmode,

V8SFmode,
V8DFmode,
V16SFmode,



BLKmode,
# 159 "../../gcc/machmode.def"
CCmode,


CCImode,
# 31 "../../gcc/machmode.h" 2
MAX_MACHINE_MODE };
# 41 "../../gcc/machmode.h"
extern const char * const mode_name[(int) MAX_MACHINE_MODE];


enum mode_class { MODE_RANDOM, MODE_INT, MODE_FLOAT, MODE_PARTIAL_INT, MODE_CC,
                  MODE_COMPLEX_INT, MODE_COMPLEX_FLOAT,
                  MODE_VECTOR_INT, MODE_VECTOR_FLOAT,
                  MAX_MODE_CLASS};




extern const enum mode_class mode_class[(int) MAX_MACHINE_MODE];
# 80 "../../gcc/machmode.h"
extern const unsigned char mode_size[(int) MAX_MACHINE_MODE];




extern const unsigned char mode_unit_size[(int) MAX_MACHINE_MODE];
# 96 "../../gcc/machmode.h"
extern const unsigned short mode_bitsize[(int) MAX_MACHINE_MODE];
# 123 "../../gcc/machmode.h"
extern const unsigned char mode_wider_mode[(int) MAX_MACHINE_MODE];






extern enum machine_mode mode_for_size (unsigned int, enum mode_class, int);




extern enum machine_mode smallest_mode_for_size
                                (unsigned int, enum mode_class);





extern enum machine_mode int_mode_for_mode (enum machine_mode);



extern enum machine_mode get_best_mode (int, int, unsigned int, enum machine_mode, int);




extern unsigned get_mode_alignment (enum machine_mode);





extern const enum machine_mode class_narrowest_mode[(int) MAX_MODE_CLASS];





extern enum machine_mode byte_mode;
extern enum machine_mode word_mode;
extern enum machine_mode ptr_mode;
# 40 "../../gcc/libgcc2.c" 2






# 1 "../../gcc/libgcc2.h" 1
# 25 "../../gcc/libgcc2.h"
extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
extern void __clear_cache (char *, char *);
extern void __eprintf (const char *, const char *, unsigned int, const char *)
  __attribute__ ((__noreturn__));

struct bb;
extern void __bb_exit_func (void);
extern void __bb_init_func (struct bb *);
extern void __bb_fork_func (void);
extern void __bb_trace_func (void);
extern void __bb_trace_ret (void);
extern void __bb_init_trace_func (struct bb *, unsigned long);

struct exception_descriptor;
extern short int __get_eh_table_language (struct exception_descriptor *);
extern short int __get_eh_table_version (struct exception_descriptor *);
# 67 "../../gcc/libgcc2.h"
typedef int QItype __attribute__ ((mode (QI)));
typedef unsigned int UQItype __attribute__ ((mode (QI)));
typedef int HItype __attribute__ ((mode (HI)));
typedef unsigned int UHItype __attribute__ ((mode (HI)));


typedef int SItype __attribute__ ((mode (SI)));
typedef unsigned int USItype __attribute__ ((mode (SI)));


typedef int DItype __attribute__ ((mode (DI)));
typedef unsigned int UDItype __attribute__ ((mode (DI)));


typedef int TItype __attribute__ ((mode (TI)));
typedef unsigned int UTItype __attribute__ ((mode (TI)));






typedef float SFtype __attribute__ ((mode (SF)));
typedef float DFtype __attribute__ ((mode (DF)));





typedef float TFtype __attribute__ ((mode (TF)));
# 122 "../../gcc/libgcc2.h"
typedef int word_type __attribute__ ((mode (__word__)));
# 214 "../../gcc/libgcc2.h"
extern TItype __multi3 (TItype, TItype);
extern TItype __divti3 (TItype, TItype);
extern UTItype __udivti3 (UTItype, UTItype);
extern UTItype __umodti3 (UTItype, UTItype);
extern TItype __modti3 (TItype, TItype);




extern UTItype __udivmodti4 (UTItype, UTItype, UTItype *);




extern TItype __negti2 (TItype);


extern TItype __lshrti3 (TItype, word_type);
extern TItype __ashlti3 (TItype, word_type);
extern TItype __ashrti3 (TItype, word_type);
extern TItype __ffsti2 (TItype);




extern UDItype __udiv_w_sdiv (UDItype *, UDItype, UDItype, UDItype);


extern word_type __cmpti2 (TItype, TItype);
extern word_type __ucmpti2 (TItype, TItype);

extern DItype __absvsi2 (DItype);
extern TItype __absvdi2 (TItype);
extern DItype __addvsi3 (DItype, DItype);
extern TItype __addvdi3 (TItype, TItype);
extern DItype __subvsi3 (DItype, DItype);
extern TItype __subvdi3 (TItype, TItype);
extern DItype __mulvsi3 (DItype, DItype);
extern TItype __mulvdi3 (TItype, TItype);
extern DItype __negvsi2 (DItype);
extern TItype __negvdi2 (TItype);


extern TItype __fixdfti (DFtype);
extern TItype __fixsfti (SFtype);
extern DFtype __floattidf (TItype);
extern SFtype __floattisf (TItype);
extern UDItype __fixunsdfdi (DFtype);
extern UDItype __fixunssfdi (SFtype);
extern TItype __fixunsdfti (DFtype);
extern TItype __fixunssfti (SFtype);
# 274 "../../gcc/libgcc2.h"
extern TItype __fixunstfti (TFtype);
extern TItype __fixtfti (TFtype);
extern TFtype __floattitf (TItype);
# 286 "../../gcc/libgcc2.h"
  struct DWstruct {DItype low, high;};






typedef union
{
  struct DWstruct s;
  TItype ll;
} DWunion;

# 1 "../../gcc/longlong.h" 1
# 1465 "../../gcc/longlong.h"
extern const UQItype __clz_tab[];
# 300 "../../gcc/libgcc2.h" 2
# 47 "../../gcc/libgcc2.c" 2
# 353 "../../gcc/libgcc2.c"
TItype
__multi3 (TItype u, TItype v)
{
  DWunion w;
  DWunion uu, vv;

  uu.ll = u,
  vv.ll = v;

  w.ll = ({DWunion __w; do { UDItype __x0, __x1, __x2, __x3; UDItype __ul, __vl, __uh, __vh; __ul = ((UDItype) (uu.s.low) & (((UDItype) 1 << ((8 * 8) / 2)) - 1)); __uh = ((UDItype) (uu.s.low) >> ((8 * 8) / 2)); __vl = ((UDItype) (vv.s.low) & (((UDItype) 1 << ((8 * 8) / 2)) - 1)); __vh = ((UDItype) (vv.s.low) >> ((8 * 8) / 2)); __x0 = (UDItype) __ul * __vl; __x1 = (UDItype) __ul * __vh; __x2 = (UDItype) __uh * __vl; __x3 = (UDItype) __uh * __vh; __x1 += ((UDItype) (__x0) >> ((8 * 8) / 2)); __x1 += __x2; if (__x1 < __x2) __x3 += ((UDItype) 1 << ((8 * 8) / 2)); (__w.s.high) = __x3 + ((UDItype) (__x1) >> ((8 * 8) / 2)); (__w.s.low) = ((UDItype) (__x1) & (((UDItype) 1 << ((8 * 8) / 2)) - 1)) * ((UDItype) 1 << ((8 * 8) / 2)) + ((UDItype) (__x0) & (((UDItype) 1 << ((8 * 8) / 2)) - 1)); } while (0); __w.ll; });
  w.s.high += ((UDItype) uu.s.low * (UDItype) vv.s.high
               + (UDItype) uu.s.high * (UDItype) vv.s.low);

  return w.ll;
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]