g++ bug effecting egcs-1.1 release

Jeffrey A Law law@cygnus.com
Sat Aug 22 22:55:00 GMT 1998


This is from attempts to build the RedHat 5.1 SRPMS.

g++ j.C -fno-for-scope
j.C: In method `void SSTRINGS::sort()':
j.C:326: no matching function for call to `ARRAY::sort (int ()(ARRAY_OBJ *, ARRAY_OBJ *))'
j.C:270: candidates are: ARRAY::sort(int (*)(const ARRAY_OBJ *, const ARRAY_OBJ *))

It is possible this is actually a bug in the linuxconf sources.  I
don't know C++ well enough to say one way or the other.  Regardless
we need to either declare the source invalid or fix the bug for
egcs-1.1.

Thanks,
Jeff


The source:

typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;
typedef unsigned long long int __u_quad_t;
typedef long long int __quad_t;
typedef __quad_t *__qaddr_t;
typedef __u_quad_t __dev_t;		 
typedef __u_int __uid_t;		 
typedef __u_int __gid_t;		 
typedef __u_long __ino_t;		 
typedef __u_int __mode_t;		 
typedef __u_int __nlink_t; 		 
typedef long int __off_t;		 
typedef __quad_t __loff_t;		 
typedef int __pid_t;			 
typedef int __ssize_t;			 
typedef struct
  {
    int __val[2];
  } __fsid_t;				 
typedef int __daddr_t;			 
typedef char *__caddr_t;
typedef long int __time_t;
typedef long int __swblk_t;		 

typedef long int __clock_t;
typedef unsigned long int __fd_mask;
typedef struct
  {
    __fd_mask fds_bits[1024  / (8 * sizeof (__fd_mask)) ];
  } __fd_set;
typedef int __key_t;
typedef unsigned short int __ipc_pid_t;
typedef unsigned int size_t;
typedef unsigned int  wint_t;
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
typedef void *__gnuc_va_list;
struct _IO_jump_t;  struct _IO_FILE;
typedef void _IO_lock_t;
struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;
  int _pos;
};
struct _IO_FILE {
  int _flags;		 
  char* _IO_read_ptr;	 
  char* _IO_read_end;	 
  char* _IO_read_base;	 
  char* _IO_write_base;	 
  char* _IO_write_ptr;	 
  char* _IO_write_end;	 
  char* _IO_buf_base;	 
  char* _IO_buf_end;	 
  char *_IO_save_base;  
  char *_IO_backup_base;   
  char *_IO_save_end;  
  struct _IO_marker *_markers;
  struct _IO_FILE *_chain;
  int _fileno;
  int _blksize;
  __off_t   _offset;
  unsigned short _cur_column;
  char _unused;
  char _shortbuf[1];
  _IO_lock_t *_lock;
};
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_stdin_, _IO_stdout_, _IO_stderr_;
typedef struct
{
  __ssize_t   (*read)  (struct _IO_FILE *, void *, __ssize_t  )  ;
  __ssize_t   (*write)  (struct _IO_FILE *, const void *, __ssize_t  )  ;
  __off_t   (*seek)  (struct _IO_FILE *, __off_t  , int)  ;
  int (*close)  (struct _IO_FILE *)  ;
} _IO_cookie_io_functions_t;
struct _IO_cookie_file {
  struct _IO_FILE file;
  const void *vtable;
  void *cookie;
  _IO_cookie_io_functions_t io_functions;
};
extern "C" {
extern int __underflow  (_IO_FILE*)  ;
extern int __uflow  (_IO_FILE*)  ;
extern int __overflow  (_IO_FILE*, int)  ;
extern int _IO_getc  (_IO_FILE *__fp)  ;
extern int _IO_putc  (int __c, _IO_FILE *__fp)  ;
extern int _IO_feof  (_IO_FILE *__fp)  ;
extern int _IO_ferror  (_IO_FILE *__fp)  ;
extern int _IO_peekc_locked  (_IO_FILE *__fp)  ;
extern void _IO_flockfile  (_IO_FILE *)  ;
extern void _IO_funlockfile  (_IO_FILE *)  ;
extern int _IO_ftrylockfile  (_IO_FILE *)  ;
extern int _IO_vfscanf  (_IO_FILE*, const char*, __gnuc_va_list , int*)  ;
extern int _IO_vfprintf  (_IO_FILE*, const char*, __gnuc_va_list )  ;
extern __ssize_t   _IO_padn  (_IO_FILE *, int, __ssize_t  )  ;
extern size_t   _IO_sgetn  (_IO_FILE *, void*, size_t  )  ;
extern __off_t   _IO_seekoff  (_IO_FILE*, __off_t  , int, int)  ;
extern __off_t   _IO_seekpos  (_IO_FILE*, __off_t  , int)  ;
extern void _IO_free_backup_area  (_IO_FILE*)  ;
}
typedef struct _IO_FILE FILE;
typedef __off_t   fpos_t;
extern FILE *stdin, *stdout, *stderr;  
extern "C" {
extern void clearerr  (FILE*)  ;
extern int fclose  (FILE*)  ;
extern int feof  (FILE*)  ;
extern int ferror  (FILE*)  ;
extern int fflush  (FILE*)  ;
extern int fgetc  (FILE *)  ;
extern int fgetpos  (FILE* fp, fpos_t *pos)  ;
extern char* fgets  (char*, int, FILE*)  ;
extern FILE* fopen  (__const char*, __const char*)  ;
extern FILE* fopencookie  (void *cookie, __const char *mode,
			       _IO_cookie_io_functions_t io_functions)  ;
extern int fprintf  (FILE*, __const char* format, ...)  ;
extern int fputc  (int, FILE*)  ;
extern int fputs  (__const char *str, FILE *fp)  ;
extern size_t fread  (void*, size_t, size_t, FILE*)  ;
extern FILE* freopen  (__const char*, __const char*, FILE*)  ;
extern int fscanf  (FILE *fp, __const char* format, ...)  ;
extern int fseek  (FILE* fp, long int offset, int whence)  ;
extern int fsetpos  (FILE* fp, __const fpos_t *pos)  ;
extern long int ftell  (FILE* fp)  ;
extern size_t fwrite  (__const void*, size_t, size_t, FILE*)  ;
extern int getc  (FILE *)  ;
extern int getchar  (void)  ;
extern char* gets  (char*)  ;
extern void perror  (__const char *)  ;
extern int printf  (__const char* format, ...)  ;
extern int putc  (int, FILE *)  ;
extern int putchar  (int)  ;
extern int puts  (__const char *str)  ;
extern int remove  (__const char*)  ;
extern int rename  (__const char* _old, __const char* _new)  ;
extern void rewind  (FILE*)  ;
extern int scanf  (__const char* format, ...)  ;
extern void setbuf  (FILE*, char*)  ;
extern void setlinebuf  (FILE*)  ;
extern void setbuffer  (FILE*, char*, int)  ;
extern int setvbuf  (FILE*, char*, int mode, size_t size)  ;
extern int sprintf  (char*, __const char* format, ...)  ;
extern int sscanf  (__const char* string, __const char* format, ...)  ;
extern FILE* tmpfile  (void)  ;
extern char* tmpnam  (char*)  ;
extern char* tmpnam_r  (char*)  ;
extern char *tempnam  (__const char *__dir, __const char *__pfx)  ;
extern char *__stdio_gen_tempname  (char *__buf, size_t bufsize,
					__const char *dir, __const char *pfx,
					int dir_search, size_t *lenptr,
					FILE **streamptr)  ;
extern int ungetc  (int c, FILE* fp)  ;
extern int vfprintf  (FILE *fp, char __const *fmt0, __gnuc_va_list )  ;
extern int vprintf  (char __const *fmt, __gnuc_va_list )  ;
extern int vsprintf  (char* string, __const char* format, __gnuc_va_list )  ;
extern void __libc_fatal  (__const char *__message)  
     __attribute__ ((__noreturn__));
extern int dprintf  (int, __const char *, ...)  ;
extern int vdprintf  (int, __const char *, __gnuc_va_list )  ;
extern int vfscanf  (FILE*, __const char *, __gnuc_va_list )  ;
extern int __vfscanf  (FILE*, __const char *, __gnuc_va_list )  ;
extern int vscanf  (__const char *, __gnuc_va_list )  ;
extern int vsscanf  (__const char *, __const char *, __gnuc_va_list )  ;
extern int __vsscanf  (__const char *, __const char *, __gnuc_va_list )  ;
extern int __fcloseall  (void)  ;
extern int fcloseall  (void)  ;
struct obstack;
extern int obstack_vprintf  (struct obstack *__obstack,
				 __const char *__fmt, __gnuc_va_list )  ;
extern int obstack_printf  (struct obstack *__obstack, __const char *__fmt,
				...)  ;
extern FILE *fdopen  (int, __const char *)  ;
extern int fileno  (FILE*)  ;
extern FILE* popen  (__const char*, __const char*)  ;
extern int pclose  (FILE*)  ;
extern char *ctermid  (char *__buf)  ;
extern char *cuserid  (char * __buf)  ;
extern int snprintf  (char *, size_t, __const char *, ...)  ;
extern int __snprintf  (char *, size_t, __const char *, ...)  ;
extern int vsnprintf  (char *, size_t, __const char *, __gnuc_va_list )  ;
extern int __vsnprintf  (char *, size_t, __const char *, __gnuc_va_list )  ;
extern __ssize_t   getdelim  (char **, size_t *, int, FILE*)  ;
extern __ssize_t   getline  (char **, size_t *, FILE *)  ;
extern __ssize_t   __getline  (char **, size_t *, FILE *)  ;
extern int asprintf  (char **, const char *, ...)  ;
extern int vasprintf  (char **, const char *, __gnuc_va_list )  ;
extern FILE *open_memstream  (char **__bufloc, size_t *__sizeloc)  ;
extern int __underflow  (struct _IO_FILE*)  ;
extern int __overflow  (struct _IO_FILE*, int)  ;
extern int sys_nerr;
extern const char *const sys_errlist[];
extern int _sys_nerr;
extern const char *const _sys_errlist[];
extern void clearerr_locked  (FILE *)  ;
extern void clearerr_unlocked  (FILE *)  ;
extern int feof_locked  (FILE *)  ;
extern int feof_unlocked  (FILE *)  ;
extern int ferror_locked  (FILE*)  ;
extern int ferror_unlocked  (FILE*)  ;
extern int fileno_locked  (FILE *)  ;
extern int fileno_unlocked  (FILE *)  ;
extern int fclose_unlocked  (FILE *)  ;
extern int fflush_locked  (FILE *)  ;
extern int fflush_unlocked  (FILE *)  ;
extern size_t fread_unlocked  (void *, size_t, size_t, FILE *)  ;
extern size_t fwrite_unlocked  (const void *, size_t, size_t, FILE *)  ;
extern int fputc_locked  (int, FILE*)  ;
extern int fputc_unlocked  (int, FILE*)  ;
extern int getc_locked  (FILE *)  ;
extern int getchar_locked  (void)  ;
extern int putc_locked  (int, FILE *)  ;
extern int putchar_locked  (int)  ;
extern void flockfile  (FILE *)  ;
extern void funlockfile  (FILE *)  ;
extern int ftrylockfile  (FILE *)  ;
extern int getc_unlocked  (FILE *)  ;
extern int getchar_unlocked  (void)  ;
extern int putc_unlocked  (int, FILE *)  ;
extern int putchar_unlocked  (int)  ;
}
class ARRAY_OBJ{
protected:
	char modified;
public:
	ARRAY_OBJ (void);
	virtual int edit (void);
	void rstmodified (void);
	void setmodified (void);
	virtual int was_modified (void);
	virtual ~ARRAY_OBJ (void);
};
class ARRAY: public ARRAY_OBJ{
protected:
	int is_owner;	 
	ARRAY_OBJ **tb;
	int nb;
	int maxtb;	 
	int increm;	 
public:
	ARRAY (void);
	void add (ARRAY_OBJ *pt);
	void delall (void);
	int editone (ARRAY_OBJ *e);
	int editone (int no);
protected:
	ARRAY_OBJ *getitem (int no)const;
public:
	int getnb (void)const;
protected:
	void grow (void);
public:
	void insert (int pos, ARRAY_OBJ *pt);
	int lookup (ARRAY_OBJ *o)const;
	int manage_edit (ARRAY_OBJ *e, int code);
	int manage_edit (ARRAY_OBJ *e, int code, int insertpos);
	void moveto (ARRAY_OBJ *o, int newpos);
	void neverdelete (void);
	int remove (ARRAY_OBJ *obj);
	void remove_all (void);
	int remove_del (ARRAY_OBJ *obj);
	int remove_del (int no);
	void rstmodified (void);
	void setgrowth (int _increm);
	void sort (int (*cmp)(const ARRAY_OBJ *, const ARRAY_OBJ *));
	virtual int was_modified (void);
	virtual int write (void);
	virtual ~ARRAY (void);
};
class SSTRING: public ARRAY_OBJ {
	char *str;
	int maxsiz;		 
public:
	SSTRING (const SSTRING&_str);
	SSTRING (const char *_str);
	SSTRING (const char *_str, int _maxsiz);
	SSTRING (void);
	void append (const char *app);
	int cmp (const SSTRING&other)const;
	int cmp (const char *other)const;
	void copy (SSTRING&dst)const;
	void copy (char *dst)const;
	char *copyword (const char *line);
	const char *get (void)const;
	int getlen (void)const;
	int getmaxsiz (void)const;
	int getval (void)const;
	double getvalf (void)const;
	int icmp (const SSTRING&other)const;
	int icmp (const char *other)const;
	int is_empty (void)const;
	int ncmp (const char *other, int len)const;
	SSTRING&operator = (const SSTRING&_str);
	void setfrom (const SSTRING&src);
	virtual void setfrom (const char *src);
	void setfrom (int val);
	void setmaxsiz (int size);
	const char *strchr (char carac)const;
	void strip_end (void);
	const char *strrchr (char carac)const;
	const char *strstr (const char *sub)const;
	~SSTRING (void);
};
class SSTRINGS: public ARRAY {
public:
	SSTRING *getitem (int no)const;
	int lookup (const SSTRING *str)const;
	int lookup (const char *str)const;
	void remove_dups (void);
	void remove_empty (void);
	void sort (void);
};
static int cmp (ARRAY_OBJ *o1, ARRAY_OBJ *o2)
{
	SSTRING *s1 = (SSTRING *)o1;
	SSTRING *s2 = (SSTRING *)o2;
	return s1->cmp(*s2);
}
  void SSTRINGS::sort ()
{
	ARRAY::sort (cmp);
}



More information about the Gcc-bugs mailing list