This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
target/7265: IA-64 C cross-compiler cannot build libgcc
- From: jnaset at rsn dot hp dot com
- To: gcc-gnats at gcc dot gnu dot org
- Date: 10 Jul 2002 18:37:41 -0000
- Subject: target/7265: IA-64 C cross-compiler cannot build libgcc
- Reply-to: jnaset at rsn dot hp dot com
>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;
}