This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
gcc Internal compiler error
- To: bugs at openbsd dot org, gcc-bugs at gcc dot gnu dot org
- Subject: gcc Internal compiler error
- From: "Kenneth J. Hendrickson" <kHendrickson at cFL dot RR dot com>
- Date: Thu, 1 Mar 2001 23:19:44 -0500
A gcc internal compiler error has been found in OpenBSD while doing:
(cd /usr/src ; make build)
This bug report is filed according to the requests in:
http://www.GNU.org/software/gcc/bugs.html
gcc version:
------------
Reading specs from /usr/lib/gcc-lib/i386-unknown-openbsd2.8/2.95.3/specs
gcc version 2.95.3 20010112 (prerelease)
System:
-------
OpenBSD 2.8 -current;
cvs up as of Feb 27 or 28, 2001
Command line:
-------------
cc -O2 -I/usr/src/usr.sbin/mopd/moptrace -I/usr/src/usr.sbin/mopd/moptrace/.. -I/usr/src/usr.sbin/mopd/moptrace/../common -c /usr/src/usr.sbin/mopd/moptrace/../common/device.c
Compiler Output:
----------------
/usr/src/usr.sbin/mopd/moptrace/../common/device.c: In function `deviceInitAll':
/usr/src/usr.sbin/mopd/moptrace/../common/device.c:345: Internal compiler error in `reload', at reload1.c:1061
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
*** Error code 1
Stop in /usr/src/usr.sbin/mopd/moptrace.
*** Error code 1
Stop in /usr/src/usr.sbin/mopd.
*** Error code 1
Stop in /usr/src/usr.sbin.
*** Error code 1
Stop in /usr/src.
*** Error code 1
Stop in /usr/src (line 79 of Makefile).
Preprocessed File:
------------------
device.i is attached
gcc Options when gcc Built:
---------------------------
Unknown, but not changed from OpenBSD 2.8 -current
I couldn't figure this out with a cursory look. Sorry.
--
PGP Key Fingerprint 02 6A 4F DE DD 77 A1 8B 21 D9 81 EB ED C8 3A DC
We are upping our standards ... so up yours. Ken Hendrickson N8KH
# 1 "/usr/src/usr.sbin/mopd/moptrace/../common/device.c"
static char rcsid[] = "$OpenBSD: device.c,v 1.4 2000/02/20 17:45:33 bitblt Exp $";
# 1 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 1
# 1 "/usr/include/stdio.h" 1 3
# 1 "/usr/include/sys/types.h" 1 3
# 1 "/usr/include/machine/types.h" 1 3
# 1 "/usr/include/sys/cdefs.h" 1 3
# 1 "/usr/include/machine/cdefs.h" 1 3
# 39 "/usr/include/machine/cdefs.h" 3
# 53 "/usr/include/sys/cdefs.h" 2 3
# 110 "/usr/include/sys/cdefs.h" 3
# 42 "/usr/include/machine/types.h" 2 3
typedef struct _physadr {
int r[1];
} *physadr;
typedef struct label_t {
int val[6];
} label_t;
typedef unsigned long vm_offset_t;
typedef unsigned long vm_size_t;
typedef unsigned long vaddr_t;
typedef unsigned long paddr_t;
typedef unsigned long vsize_t;
typedef unsigned long psize_t;
typedef signed char int8_t;
typedef unsigned char u_int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short u_int16_t;
typedef unsigned short uint16_t;
typedef int int32_t;
typedef unsigned int u_int32_t;
typedef unsigned int uint32_t;
typedef long long int64_t;
typedef unsigned long long u_int64_t;
typedef unsigned long long uint64_t;
typedef int32_t register_t;
# 48 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/machine/ansi.h" 1 3
# 50 "/usr/include/sys/types.h" 2 3
# 1 "/usr/include/machine/endian.h" 1 3
# 1 "/usr/include/sys/endian.h" 1 3
# 83 "/usr/include/sys/endian.h" 3
# 125 "/usr/include/sys/endian.h" 3
u_int32_t htobe32 (u_int32_t) ;
u_int16_t htobe16 (u_int16_t) ;
u_int32_t betoh32 (u_int32_t) ;
u_int16_t betoh16 (u_int16_t) ;
u_int32_t htole32 (u_int32_t) ;
u_int16_t htole16 (u_int16_t) ;
u_int32_t letoh32 (u_int32_t) ;
u_int16_t letoh16 (u_int16_t) ;
# 180 "/usr/include/sys/endian.h" 3
# 68 "/usr/include/machine/endian.h" 2 3
# 51 "/usr/include/sys/types.h" 2 3
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 u_int64_t u_quad_t;
typedef int64_t quad_t;
typedef quad_t * qaddr_t;
typedef char * caddr_t;
typedef int32_t daddr_t;
typedef int32_t dev_t;
typedef u_int32_t fixpt_t;
typedef u_int32_t gid_t;
typedef u_int32_t ino_t;
typedef long key_t;
typedef u_int16_t mode_t;
typedef u_int16_t nlink_t;
typedef int32_t pid_t;
typedef quad_t rlim_t;
typedef int32_t segsz_t;
typedef int32_t swblk_t;
typedef u_int32_t uid_t;
typedef u_int32_t useconds_t;
typedef int32_t suseconds_t;
typedef u_int32_t in_addr_t;
typedef u_int16_t in_port_t;
typedef u_int8_t sa_family_t;
typedef u_int32_t socklen_t;
typedef unsigned long clock_t;
typedef unsigned int size_t;
typedef int ssize_t;
typedef int time_t;
typedef int clockid_t;
typedef int timer_t;
typedef long long off_t;
off_t lseek (int, off_t, int) ;
int ftruncate (int, off_t) ;
int truncate (const char *, off_t) ;
typedef int32_t fd_mask;
typedef struct fd_set {
fd_mask fds_bits[((( 256 ) + (( (sizeof(fd_mask) * 8 ) ) - 1)) / ( (sizeof(fd_mask) * 8 ) )) ];
} fd_set;
# 205 "/usr/include/sys/types.h" 3
# 46 "/usr/include/stdio.h" 2 3
typedef off_t fpos_t;
struct __sbuf {
unsigned char *_base;
int _size;
};
typedef struct __sFILE {
unsigned char *_p;
int _r;
int _w;
short _flags;
short _file;
struct __sbuf _bf;
int _lbfsize;
void *_cookie;
int (*_close) (void *) ;
int (*_read) (void *, char *, int) ;
fpos_t (*_seek) (void *, fpos_t, int) ;
int (*_write) (void *, const char *, int) ;
struct __sbuf _ub;
unsigned char *_up;
int _ur;
unsigned char _ubuf[3];
unsigned char _nbuf[1];
struct __sbuf _lb;
int _blksize;
fpos_t _offset;
} FILE;
extern FILE __sF[];
void clearerr (FILE *) ;
int fclose (FILE *) ;
int feof (FILE *) ;
int ferror (FILE *) ;
int fflush (FILE *) ;
int fgetc (FILE *) ;
int fgetpos (FILE *, fpos_t *) ;
char *fgets (char *, int, FILE *) ;
FILE *fopen (const char *, const char *) ;
int fprintf (FILE *, const char *, ...) ;
int fputc (int, FILE *) ;
int fputs (const char *, FILE *) ;
size_t fread (void *, size_t, size_t, FILE *) ;
FILE *freopen (const char *, const char *, FILE *) ;
int fscanf (FILE *, const char *, ...) ;
int fseek (FILE *, long, int) ;
int fseeko (FILE *, off_t, int) ;
int fsetpos (FILE *, const fpos_t *) ;
long ftell (FILE *) ;
off_t ftello (FILE *) ;
size_t fwrite (const void *, size_t, size_t, FILE *) ;
int getc (FILE *) ;
int getchar (void) ;
char *gets (char *) ;
extern int sys_nerr;
extern char *sys_errlist[];
void perror (const char *) ;
int printf (const char *, ...) ;
int putc (int, FILE *) ;
int putchar (int) ;
int puts (const char *) ;
int remove (const char *) ;
int rename (const char *, const char *) ;
void rewind (FILE *) ;
int scanf (const char *, ...) ;
void setbuf (FILE *, char *) ;
int setvbuf (FILE *, char *, int, size_t) ;
int sprintf (char *, const char *, ...) ;
int sscanf (const char *, const char *, ...) ;
FILE *tmpfile (void) ;
char *tmpnam (char *) ;
int ungetc (int, FILE *) ;
int vfprintf (FILE *, const char *, char * ) ;
int vprintf (const char *, char * ) ;
int vsprintf (char *, const char *, char * ) ;
char *ctermid (char *) ;
char *ctermid_r (char *) ;
char *cuserid (char *) ;
FILE *fdopen (int, const char *) ;
int fileno (FILE *) ;
void flockfile (FILE *) ;
int ftrylockfile (FILE *) ;
void funlockfile (FILE *) ;
void _flockfile_debug (FILE *, const char *, int) ;
int getc_unlocked (FILE *) ;
int putc_unlocked (int, FILE *) ;
int getchar_unlocked (void) ;
int putchar_unlocked (int) ;
int asprintf (char **, const char *, ...)
__attribute__((__format__ (printf, 2, 3)));
char *fgetln (FILE *, size_t *) ;
int fpurge (FILE *) ;
int getw (FILE *) ;
int pclose (FILE *) ;
FILE *popen (const char *, const char *) ;
int putw (int, FILE *) ;
void setbuffer (FILE *, char *, int) ;
int setlinebuf (FILE *) ;
char *tempnam (const char *, const char *) ;
int snprintf (char *, size_t, const char *, ...)
__attribute__((__format__ (printf, 3, 4)));
int vasprintf (char **, const char *, char * )
__attribute__((__format__ (printf, 2, 0)));
int vsnprintf (char *, size_t, const char *, char * )
__attribute__((__format__ (printf, 3, 0)));
int vscanf (const char *, char * )
__attribute__((__format__ (scanf, 1, 0)));
int vsscanf (const char *, const char *, char * )
__attribute__((__format__ (scanf, 2, 0)));
FILE *funopen (const void *,
int (*)(void *, char *, int),
int (*)(void *, const char *, int),
fpos_t (*)(void *, fpos_t, int),
int (*)(void *)) ;
int __srget (FILE *) ;
int __svfscanf (FILE *, const char *, char * ) ;
int __swbuf (int, FILE *) ;
static __inline int __sputc(int _c, FILE *_p) {
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
return (*_p->_p++ = _c);
else
return (__swbuf(_c, _p));
}
# 382 "/usr/include/stdio.h" 3
# 38 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/syslog.h" 1 3
# 88 "/usr/include/syslog.h" 3
# 145 "/usr/include/syslog.h" 3
void closelog (void) ;
void openlog (const char *, int, int) ;
int setlogmask (int) ;
void syslog (int, const char *, ...)
__attribute__((__format__(__printf__,2,3)));
void vsyslog (int, const char *, char * ) ;
# 200 "/usr/include/syslog.h" 3
# 40 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/signal.h" 1 3
# 1 "/usr/include/sys/signal.h" 1 3
# 1 "/usr/include/machine/signal.h" 1 3
typedef int sig_atomic_t;
# 1 "/usr/include/machine/trap.h" 1 3
# 48 "/usr/include/machine/signal.h" 2 3
struct sigcontext {
int sc_gs;
int sc_fs;
int sc_es;
int sc_ds;
int sc_edi;
int sc_esi;
int sc_ebp;
int sc_ebx;
int sc_edx;
int sc_ecx;
int sc_eax;
int sc_eip;
int sc_cs;
int sc_eflags;
int sc_esp;
int sc_ss;
int sc_onstack;
int sc_mask;
int sc_trapno;
int sc_err;
};
# 48 "/usr/include/sys/signal.h" 2 3
typedef unsigned int sigset_t;
# 1 "/usr/include/sys/siginfo.h" 1 3
union sigval {
int sival_int;
void *sival_ptr;
};
# 128 "/usr/include/sys/siginfo.h" 3
# 1 "/usr/include/sys/time.h" 1 3
struct timeval {
long tv_sec;
long tv_usec;
};
struct timespec {
time_t tv_sec;
long tv_nsec;
};
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
# 98 "/usr/include/sys/time.h" 3
# 107 "/usr/include/sys/time.h" 3
# 124 "/usr/include/sys/time.h" 3
# 133 "/usr/include/sys/time.h" 3
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
};
struct clockinfo {
int hz;
int tick;
int tickadj;
int stathz;
int profhz;
};
# 1 "/usr/include/time.h" 1 3
struct tm {
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
long tm_gmtoff;
char *tm_zone;
};
char *asctime (const struct tm *) ;
clock_t clock (void) ;
char *ctime (const time_t *) ;
double difftime (time_t, time_t) ;
struct tm *gmtime (const time_t *) ;
struct tm *localtime (const time_t *) ;
time_t mktime (struct tm *) ;
size_t strftime (char *, size_t, const char *, const struct tm *) ;
char *strptime (const char *, const char *, struct tm *) ;
time_t time (time_t *) ;
char *asctime_r (const struct tm *, char *) ;
char *ctime_r (const time_t *, char *) ;
struct tm *gmtime_r (const time_t *, struct tm *) ;
struct tm *localtime_r (const time_t *, struct tm *) ;
extern char *tzname[2];
void tzset (void) ;
char *timezone (int, int) ;
void tzsetwall (void) ;
time_t timelocal (struct tm *) ;
time_t timegm (struct tm *) ;
time_t timeoff (struct tm *, const long) ;
# 173 "/usr/include/sys/time.h" 2 3
int adjtime (const struct timeval *, struct timeval *) ;
int clock_getres (clockid_t, struct timespec *) ;
int clock_gettime (clockid_t, struct timespec *) ;
int clock_settime (clockid_t, const struct timespec *) ;
int futimes (int, const struct timeval *) ;
int getitimer (int, struct itimerval *) ;
int gettimeofday (struct timeval *, struct timezone *) ;
int nanosleep (const struct timespec *, struct timespec *) ;
int setitimer (int, const struct itimerval *, struct itimerval *) ;
int settimeofday (const struct timeval *, const struct timezone *) ;
int utimes (const char *, const struct timeval *) ;
# 133 "/usr/include/sys/siginfo.h" 2 3
typedef struct {
int si_signo;
int si_code;
int si_errno;
union {
int _pad[((128 / sizeof (int)) - 3) ];
struct {
pid_t _pid;
union {
struct {
uid_t _uid;
union sigval _value;
} _kill;
struct {
clock_t _utime;
int _status;
clock_t _stime;
} _cld;
} _pdata;
} _proc;
struct {
caddr_t _addr;
int _trapno;
} _fault;
# 174 "/usr/include/sys/siginfo.h" 3
} _data;
} siginfo_t;
# 112 "/usr/include/sys/signal.h" 2 3
struct sigaction {
union {
void (*__sa_handler) (int) ;
void (*__sa_sigaction) (int, siginfo_t *, void *) ;
} __sigaction_u;
sigset_t sa_mask;
int sa_flags;
};
typedef void (*sig_t) (int) ;
struct sigaltstack {
void *ss_sp;
int ss_size;
int ss_flags;
};
struct sigvec {
void (*sv_handler) (int) ;
int sv_mask;
int sv_flags;
};
struct sigstack {
void *ss_sp;
int ss_onstack;
};
void (*signal (int, void (*) (int) ) ) (int) ;
# 42 "/usr/include/signal.h" 2 3
extern const char * const sys_signame[32 ];
extern const char * const sys_siglist[32 ];
int raise (int) ;
int kill (pid_t, int) ;
int sigaction (int, const struct sigaction *, struct sigaction *) ;
int sigaddset (sigset_t *, int) ;
int sigdelset (sigset_t *, int) ;
int sigemptyset (sigset_t *) ;
int sigfillset (sigset_t *) ;
int sigismember (const sigset_t *, int) ;
int sigpending (sigset_t *) ;
int sigprocmask (int, const sigset_t *, sigset_t *) ;
int sigsuspend (const sigset_t *) ;
extern __inline int sigaddset(sigset_t *set, int signo) {
extern int errno;
if (signo <= 0 || signo >= 32 ) {
errno = 22;
return -1;
}
*set |= (1 << ((signo)-1));
return (0);
}
extern __inline int sigdelset(sigset_t *set, int signo) {
extern int errno;
if (signo <= 0 || signo >= 32 ) {
errno = 22;
return -1;
}
*set &= ~(1 << ((signo)-1));
return (0);
}
extern __inline int sigismember(const sigset_t *set, int signo) {
extern int errno;
if (signo <= 0 || signo >= 32 ) {
errno = 22;
return -1;
}
return ((*set & (1 << ((signo)-1))) != 0);
}
int killpg (pid_t, int) ;
int sigblock (int) ;
int siginterrupt (int, int) ;
int sigpause (int) ;
int sigreturn (struct sigcontext *) ;
int sigsetmask (int) ;
int sigstack (const struct sigstack *, struct sigstack *) ;
int sigaltstack (const struct sigaltstack *, struct sigaltstack *) ;
int sigvec (int, struct sigvec *, struct sigvec *) ;
void psignal (unsigned int, const char *) ;
int sigwait (const sigset_t *, int *) ;
# 41 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/sys/stat.h" 1 3
# 67 "/usr/include/sys/stat.h" 3
struct stat {
dev_t st_dev;
ino_t st_ino;
mode_t st_mode;
nlink_t st_nlink;
uid_t st_uid;
gid_t st_gid;
dev_t st_rdev;
struct timespec st_atimespec;
struct timespec st_mtimespec;
struct timespec st_ctimespec;
off_t st_size;
int64_t st_blocks;
u_int32_t st_blksize;
u_int32_t st_flags;
u_int32_t st_gen;
int32_t st_lspare;
int64_t st_qspare[2];
};
int chmod (const char *, mode_t) ;
int fstat (int, struct stat *) ;
int mknod (const char *, mode_t, dev_t) ;
int mkdir (const char *, mode_t) ;
int mkfifo (const char *, mode_t) ;
int stat (const char *, struct stat *) ;
mode_t umask (mode_t) ;
int chflags (const char *, unsigned int) ;
int fchflags (int, unsigned int) ;
int fchmod (int, mode_t) ;
int lstat (const char *, struct stat *) ;
# 43 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/errno.h" 1 3
extern int errno;
# 44 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/sys/socket.h" 1 3
# 1 "/usr/include/machine/param.h" 1 3
# 45 "/usr/include/sys/socket.h" 2 3
struct linger {
int l_onoff;
int l_linger;
};
struct sockaddr {
u_int8_t sa_len;
sa_family_t sa_family;
char sa_data[14];
};
struct sockaddr_storage {
u_int8_t ss_len;
sa_family_t ss_family;
u_char __ss_pad1[6];
u_int64_t __ss_pad2;
u_char __ss_pad3[240];
};
struct sockproto {
u_short sp_family;
u_short sp_protocol;
};
struct sockcred {
uid_t sc_uid;
uid_t sc_euid;
gid_t sc_gid;
gid_t sc_egid;
int sc_ngroups;
gid_t sc_groups[1];
};
# 285 "/usr/include/sys/socket.h" 3
struct msghdr {
caddr_t msg_name;
socklen_t msg_namelen;
struct iovec *msg_iov;
u_int msg_iovlen;
caddr_t msg_control;
socklen_t msg_controllen;
int msg_flags;
};
struct cmsghdr {
socklen_t cmsg_len;
int cmsg_level;
int cmsg_type;
};
struct osockaddr {
u_short sa_family;
char sa_data[14];
};
struct omsghdr {
caddr_t msg_name;
int msg_namelen;
struct iovec *msg_iov;
int msg_iovlen;
caddr_t msg_accrights;
int msg_accrightslen;
};
int accept (int, struct sockaddr *, socklen_t *) ;
int bind (int, const struct sockaddr *, socklen_t) ;
int connect (int, const struct sockaddr *, socklen_t) ;
int getpeername (int, struct sockaddr *, socklen_t *) ;
int getsockname (int, struct sockaddr *, socklen_t *) ;
int getsockopt (int, int, int, void *, socklen_t *) ;
int listen (int, int) ;
ssize_t recv (int, void *, size_t, int) ;
ssize_t recvfrom (int, void *, size_t, int, struct sockaddr *, socklen_t *) ;
ssize_t recvmsg (int, struct msghdr *, int) ;
ssize_t send (int, const void *, size_t, int) ;
ssize_t sendto (int, const void *,
size_t, int, const struct sockaddr *, socklen_t) ;
ssize_t sendmsg (int, const struct msghdr *, int) ;
int setsockopt (int, int, int, const void *, socklen_t) ;
int shutdown (int, int) ;
int socket (int, int, int) ;
int socketpair (int, int, int, int *) ;
# 434 "/usr/include/sys/socket.h" 3
# 45 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/net/if.h" 1 3
# 1 "/usr/include/sys/queue.h" 1 3
# 151 "/usr/include/sys/queue.h" 3
# 346 "/usr/include/sys/queue.h" 3
# 363 "/usr/include/sys/queue.h" 3
# 389 "/usr/include/sys/queue.h" 3
# 446 "/usr/include/sys/queue.h" 3
# 456 "/usr/include/sys/queue.h" 3
# 466 "/usr/include/sys/queue.h" 3
# 476 "/usr/include/sys/queue.h" 3
# 489 "/usr/include/sys/queue.h" 3
# 502 "/usr/include/sys/queue.h" 3
# 39 "/usr/include/net/if.h" 2 3
struct mbuf;
struct proc;
struct rtentry;
struct socket;
struct ether_header;
struct arpcom;
struct rt_addrinfo;
struct if_data {
u_char ifi_type;
u_char ifi_addrlen;
u_char ifi_hdrlen;
u_char ifi_link_state;
u_long ifi_mtu;
u_long ifi_metric;
u_long ifi_baudrate;
u_long ifi_ipackets;
u_long ifi_ierrors;
u_long ifi_opackets;
u_long ifi_oerrors;
u_long ifi_collisions;
u_long ifi_ibytes;
u_long ifi_obytes;
u_long ifi_imcasts;
u_long ifi_omcasts;
u_long ifi_iqdrops;
u_long ifi_noproto;
struct timeval ifi_lastchange;
};
struct ifnet_head { struct ifnet *tqh_first; struct ifnet **tqh_last; } ;
struct ifnet {
void *if_softc;
struct { struct ifnet *tqe_next; struct ifnet **tqe_prev; } if_list;
struct { struct ifaddr *tqh_first; struct ifaddr **tqh_last; } if_addrlist;
char if_xname[16 ];
int if_pcount;
caddr_t if_bpf;
caddr_t if_bridge;
u_short if_index;
short if_timer;
short if_flags;
struct if_data if_data;
int (*if_output)
(struct ifnet *, struct mbuf *, struct sockaddr *,
struct rtentry *) ;
void (*if_start)
(struct ifnet *) ;
int (*if_ioctl)
(struct ifnet *, u_long, caddr_t) ;
int (*if_reset)
(struct ifnet *) ;
void (*if_watchdog)
(struct ifnet *) ;
struct ifqueue {
struct mbuf *ifq_head;
struct mbuf *ifq_tail;
int ifq_len;
int ifq_maxlen;
int ifq_drops;
} if_snd;
struct ifprefix *if_prefixlist;
};
# 225 "/usr/include/net/if.h" 3
# 241 "/usr/include/net/if.h" 3
struct ifaddr {
struct sockaddr *ifa_addr;
struct sockaddr *ifa_dstaddr;
struct sockaddr *ifa_netmask;
struct ifnet *ifa_ifp;
struct { struct ifaddr *tqe_next; struct ifaddr **tqe_prev; } ifa_list;
void (*ifa_rtrequest)
(int, struct rtentry *, struct rt_addrinfo *) ;
u_int ifa_flags;
u_int ifa_refcnt;
int ifa_metric;
};
struct ifprefix {
struct sockaddr *ifpr_prefix;
struct ifnet *ifpr_ifp;
struct ifprefix *ifpr_next;
u_char ifpr_plen;
u_char ifpr_type;
};
struct if_msghdr {
u_short ifm_msglen;
u_char ifm_version;
u_char ifm_type;
int ifm_addrs;
int ifm_flags;
u_short ifm_index;
struct if_data ifm_data;
};
struct ifa_msghdr {
u_short ifam_msglen;
u_char ifam_version;
u_char ifam_type;
int ifam_addrs;
int ifam_flags;
u_short ifam_index;
int ifam_metric;
};
struct ifreq {
char ifr_name[16 ];
union {
struct sockaddr ifru_addr;
struct sockaddr ifru_dstaddr;
struct sockaddr ifru_broadaddr;
short ifru_flags;
int ifru_metric;
caddr_t ifru_data;
} ifr_ifru;
};
struct ifaliasreq {
char ifra_name[16 ];
struct sockaddr ifra_addr;
struct sockaddr ifra_dstaddr;
struct sockaddr ifra_mask;
};
struct ifmediareq {
char ifm_name[16 ];
int ifm_current;
int ifm_mask;
int ifm_status;
int ifm_active;
int ifm_count;
int *ifm_ulist;
};
struct ifconf {
int ifc_len;
union {
caddr_t ifcu_buf;
struct ifreq *ifcu_req;
} ifc_ifcu;
};
struct if_laddrreq {
char iflr_name[16 ];
unsigned int flags;
unsigned int prefixlen;
struct sockaddr_storage addr;
struct sockaddr_storage dstaddr;
};
struct if_nameindex {
unsigned int if_index;
char *if_name;
};
unsigned int if_nametoindex (const char *) ;
char *if_indextoname (unsigned int, char *) ;
struct if_nameindex *if_nameindex (void) ;
# 1 "/usr/include/net/if_arp.h" 1 3
struct arphdr {
u_int16_t ar_hrd;
u_int16_t ar_pro;
u_int8_t ar_hln;
u_int8_t ar_pln;
u_int16_t ar_op;
};
struct arpreq {
struct sockaddr arp_pa;
struct sockaddr arp_ha;
int arp_flags;
};
# 395 "/usr/include/net/if.h" 2 3
# 448 "/usr/include/net/if.h" 3
# 46 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/net/if_dl.h" 1 3
struct sockaddr_dl {
u_char sdl_len;
u_char sdl_family;
u_int16_t sdl_index;
u_char sdl_type;
u_char sdl_nlen;
u_char sdl_alen;
u_char sdl_slen;
char sdl_data[12];
};
void link_addr (const char *, struct sockaddr_dl *) ;
char *link_ntoa (const struct sockaddr_dl *) ;
# 47 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/net/if_types.h" 1 3
# 48 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/sys/ioctl.h" 1 3
# 1 "/usr/include/sys/ttycom.h" 1 3
# 1 "/usr/include/sys/ioccom.h" 1 3
# 47 "/usr/include/sys/ttycom.h" 2 3
struct winsize {
unsigned short ws_row;
unsigned short ws_col;
unsigned short ws_xpixel;
unsigned short ws_ypixel;
};
# 47 "/usr/include/sys/ioctl.h" 2 3
struct ttysize {
unsigned short ts_lines;
unsigned short ts_cols;
unsigned short ts_xxx;
unsigned short ts_yyy;
};
# 1 "/usr/include/sys/dkio.h" 1 3
# 65 "/usr/include/sys/ioctl.h" 2 3
# 1 "/usr/include/sys/filio.h" 1 3
# 66 "/usr/include/sys/ioctl.h" 2 3
# 1 "/usr/include/sys/sockio.h" 1 3
# 67 "/usr/include/sys/ioctl.h" 2 3
int ioctl (int, unsigned long, ...) ;
# 49 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/stdlib.h" 1 3
typedef int wchar_t;
typedef struct {
int quot;
int rem;
} div_t;
typedef struct {
long quot;
long rem;
} ldiv_t;
typedef struct {
quad_t quot;
quad_t rem;
} qdiv_t;
void abort (void) ;
int abs (int) ;
int atexit (void (*)(void)) ;
double atof (const char *) ;
int atoi (const char *) ;
long atol (const char *) ;
void *bsearch (const void *, const void *, size_t,
size_t, int (*)(const void *, const void *)) ;
void *calloc (size_t, size_t) ;
div_t div (int, int) ;
void exit (int) ;
void free (void *) ;
char *getenv (const char *) ;
long labs (long) ;
ldiv_t ldiv (long, long) ;
void *malloc (size_t) ;
void qsort (void *, size_t, size_t,
int (*)(const void *, const void *)) ;
int rand (void) ;
int rand_r (unsigned int *) ;
void *realloc (void *, size_t) ;
void srand (unsigned) ;
double strtod (const char *, char **) ;
long strtol (const char *, char **, int) ;
unsigned long
strtoul (const char *, char **, int) ;
int system (const char *) ;
int mblen (const char *, size_t) ;
size_t mbstowcs (wchar_t *, const char *, size_t) ;
int wctomb (char *, wchar_t) ;
int mbtowc (wchar_t *, const char *, size_t) ;
size_t wcstombs (char *, const wchar_t *, size_t) ;
void *alloca (size_t) ;
char *getbsize (int *, long *) ;
char *cgetcap (char *, const char *, int) ;
int cgetclose (void) ;
int cgetent (char **, char **, const char *) ;
int cgetfirst (char **, char **) ;
int cgetmatch (char *, const char *) ;
int cgetnext (char **, char **) ;
int cgetnum (char *, const char *, long *) ;
int cgetset (const char *) ;
int cgetstr (char *, const char *, char **) ;
int cgetustr (char *, const char *, char **) ;
int daemon (int, int) ;
char *devname (int, int) ;
int getloadavg (double [], int) ;
long a64l (const char *) ;
char *l64a (long) ;
void cfree (void *) ;
int getopt (int, char * const *, const char *) ;
extern char *optarg;
extern int opterr;
extern int optind;
extern int optopt;
extern int optreset;
int getsubopt (char **, char * const *, char **) ;
extern char *suboptarg;
int heapsort (void *, size_t, size_t,
int (*)(const void *, const void *)) ;
int mergesort (void *, size_t, size_t,
int (*)(const void *, const void *)) ;
int radixsort (const unsigned char **, int, const unsigned char *,
unsigned) ;
int sradixsort (const unsigned char **, int, const unsigned char *,
unsigned) ;
char *initstate (unsigned int, char *, size_t) ;
long random (void) ;
char *realpath (const char *, char *) ;
char *setstate (const char *) ;
void srandom (unsigned int) ;
void srandomdev (void) ;
int putenv (const char *) ;
int setenv (const char *, const char *, int) ;
void unsetenv (const char *) ;
void setproctitle (const char *, ...) ;
quad_t qabs (quad_t) ;
qdiv_t qdiv (quad_t, quad_t) ;
quad_t strtoq (const char *, char **, int) ;
u_quad_t strtouq (const char *, char **, int) ;
double drand48 (void) ;
double erand48 (unsigned short[3]) ;
long jrand48 (unsigned short[3]) ;
void lcong48 (unsigned short[7]) ;
long lrand48 (void) ;
long mrand48 (void) ;
long nrand48 (unsigned short[3]) ;
unsigned short *seed48 (unsigned short[3]) ;
void srand48 (long) ;
u_int32_t arc4random (void) ;
void arc4random_stir (void) ;
void arc4random_addrandom (unsigned char *, int) ;
# 50 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/fcntl.h" 1 3
# 124 "/usr/include/fcntl.h" 3
struct flock {
off_t l_start;
off_t l_len;
pid_t l_pid;
short l_type;
short l_whence;
};
int open (const char *, int, ...) ;
int creat (const char *, mode_t) ;
int fcntl (int, int, ...) ;
int flock (int, int) ;
# 53 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/string.h" 1 3
void *memchr (const void *, int, size_t) ;
int memcmp (const void *, const void *, size_t) ;
void *memcpy (void *, const void *, size_t) ;
void *memmove (void *, const void *, size_t) ;
void *memset (void *, int, size_t) ;
char *strcat (char *, const char *) ;
char *strchr (const char *, int) ;
int strcmp (const char *, const char *) ;
int strcoll (const char *, const char *) ;
char *strcpy (char *, const char *) ;
size_t strcspn (const char *, const char *) ;
char *strerror (int) ;
size_t strlen (const char *) ;
char *strncat (char *, const char *, size_t) ;
int strncmp (const char *, const char *, size_t) ;
char *strncpy (char *, const char *, size_t) ;
char *strpbrk (const char *, const char *) ;
char *strrchr (const char *, int) ;
size_t strspn (const char *, const char *) ;
char *strstr (const char *, const char *) ;
char *strtok (char *, const char *) ;
char *strtok_r (char *, const char *, char **) ;
size_t strxfrm (char *, const char *, size_t) ;
int bcmp (const void *, const void *, size_t) ;
void bcopy (const void *, void *, size_t) ;
void bzero (void *, size_t) ;
int ffs (int) ;
char *index (const char *, int) ;
void *memccpy (void *, const void *, int, size_t) ;
char *rindex (const char *, int) ;
int strcasecmp (const char *, const char *) ;
char *strdup (const char *) ;
size_t strlcat (char *, const char *, size_t) ;
size_t strlcpy (char *, const char *, size_t) ;
void strmode (int, char *) ;
int strncasecmp (const char *, const char *, size_t) ;
char *strsep (char **, const char *) ;
char *strsignal (int) ;
# 54 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 1 "/usr/include/unistd.h" 1 3
# 1 "/usr/include/sys/unistd.h" 1 3
# 44 "/usr/include/unistd.h" 2 3
void _exit (int) __attribute__((__noreturn__));
int access (const char *, int) ;
unsigned int alarm (unsigned int) ;
int chdir (const char *) ;
int chown (const char *, uid_t, gid_t) ;
int close (int) ;
size_t confstr (int, char *, size_t) ;
char *cuserid (char *) ;
int dup (int) ;
int dup2 (int, int) ;
int execl (const char *, const char *, ...) ;
int execle (const char *, const char *, ...) ;
int execlp (const char *, const char *, ...) ;
int execv (const char *, char * const *) ;
int execve (const char *, char * const *, char * const *) ;
int execvp (const char *, char * const *) ;
pid_t fork (void) ;
long fpathconf (int, int) ;
char *getcwd (char *, size_t) ;
gid_t getegid (void) ;
uid_t geteuid (void) ;
gid_t getgid (void) ;
int getgroups (int, gid_t *) ;
char *getlogin (void) ;
int getlogin_r (char *, size_t) ;
pid_t getpgrp (void) ;
pid_t getpid (void) ;
pid_t getpgid (pid_t) ;
pid_t getppid (void) ;
pid_t getsid (pid_t) ;
uid_t getuid (void) ;
int isatty (int) ;
int link (const char *, const char *) ;
off_t lseek (int, off_t, int) ;
long pathconf (const char *, int) ;
int pause (void) ;
int pipe (int *) ;
ssize_t read (int, void *, size_t) ;
int rmdir (const char *) ;
int setgid (gid_t) ;
int setpgid (pid_t, pid_t) ;
pid_t setsid (void) ;
int setuid (uid_t) ;
unsigned int sleep (unsigned int) ;
long sysconf (int) ;
pid_t tcgetpgrp (int) ;
int tcsetpgrp (int, pid_t) ;
char *ttyname (int) ;
int ttyname_r (int, char *, size_t) ;
int unlink (const char *) ;
ssize_t write (int, const void *, size_t) ;
ssize_t pread (int, void *, size_t, off_t) ;
ssize_t pwrite (int, const void *, size_t, off_t) ;
int acct (const char *) ;
char *brk (const char *) ;
int chroot (const char *) ;
char *crypt (const char *, const char *) ;
int des_cipher (const char *, char *, long, int) ;
int des_setkey (const char *key) ;
int encrypt (char *, int) ;
void endusershell (void) ;
int exect (const char *, char * const *, char * const *) ;
int fchdir (int) ;
int fchown (int, uid_t, gid_t) ;
char *fflagstostr (u_int32_t) ;
int fsync (int) ;
int ftruncate (int, off_t) ;
int getdomainname (char *, size_t) ;
int getdtablesize (void) ;
int getgrouplist (const char *, gid_t, gid_t *, int *) ;
long gethostid (void) ;
int gethostname (char *, size_t) ;
mode_t getmode (const void *, mode_t) ;
int getpagesize (void) ;
char *getpass (const char *) ;
char *getusershell (void) ;
char *getwd (char *) ;
int initgroups (const char *, gid_t) ;
int iruserok (u_int32_t, int, const char *, const char *) ;
int iruserok_sa (const void *, int, int, const char *, const char *) ;
int lchown (const char *, uid_t, gid_t) ;
char *mkdtemp (char *) ;
int mkstemp (char *) ;
int mkstemps (char *, int) ;
char *mktemp (char *) ;
int nfssvc (int, void *) ;
int nice (int) ;
void psignal (unsigned int, const char *) ;
extern const char * const sys_siglist[];
int profil (char *, size_t, unsigned long, unsigned int) ;
int rcmd (char **, int, const char *,
const char *, const char *, int *) ;
int rcmd_af (char **, int, const char *,
const char *, const char *, int *, int) ;
int rcmdsh (char **, int, const char *,
const char *, const char *, char *) ;
char *re_comp (const char *) ;
int re_exec (const char *) ;
int readlink (const char *, char *, size_t) ;
int reboot (int) ;
int revoke (const char *) ;
int rfork (int opts) ;
int rresvport (int *) ;
int rresvport_af (int *, int) ;
int ruserok (const char *, int, const char *, const char *) ;
int quotactl (const char *, int, int, char *) ;
char *sbrk (int) ;
int select (int, fd_set *, fd_set *, fd_set *, struct timeval *) ;
int setdomainname (const char *, size_t) ;
int setegid (gid_t) ;
int seteuid (uid_t) ;
int setgroups (int, const gid_t *) ;
int sethostid (long) ;
int sethostname (const char *, size_t) ;
int setkey (const char *) ;
int setlogin (const char *) ;
void *setmode (const char *) ;
int setpgrp (pid_t pid, pid_t pgrp) ;
int setregid (int, int) ;
int setreuid (int, int) ;
int setrgid (gid_t) ;
int setruid (uid_t) ;
void setusershell (void) ;
int strtofflags (char **, u_int32_t *, u_int32_t *) ;
void swab (const void *, void *, size_t) ;
int swapon (const char *) ;
int swapctl (int cmd, const void *arg, int misc) ;
int symlink (const char *, const char *) ;
void sync (void) ;
int syscall (int, ...) ;
int truncate (const char *, off_t) ;
int ttyslot (void) ;
unsigned int ualarm (unsigned int, unsigned int) ;
int undelete (const char *) ;
int usleep (useconds_t) ;
void *valloc (size_t) ;
pid_t vfork (void) ;
int issetugid (void) ;
int getopt (int, char * const *, const char *) ;
extern char *optarg;
extern int opterr;
extern int optind;
extern int optopt;
extern int optreset;
int getsubopt (char **, char * const *, char **) ;
extern char *suboptarg;
int lockf (int, int, off_t) ;
# 55 "/usr/src/usr.sbin/mopd/moptrace/../common/os.h" 2
# 36 "/usr/src/usr.sbin/mopd/moptrace/../common/device.c" 2
# 1 "/usr/src/usr.sbin/mopd/moptrace/../common/common.h" 1
struct if_info {
int fd;
int trans;
u_char eaddr[6];
char if_name[32 ];
int (*iopen)();
int (*write)();
void (*read)();
struct if_info *next;
};
struct dllist {
u_char status;
struct if_info *ii;
u_char eaddr[6];
int ldfd;
u_short dl_bsz;
int timeout;
u_char count;
u_long loadaddr;
u_long xferaddr;
u_long nloadaddr;
long lseek;
int aout;
u_long a_text;
u_long a_text_fill;
u_long a_data;
u_long a_data_fill;
u_long a_bss;
u_long a_bss_fill;
long a_lseek;
};
# 37 "/usr/src/usr.sbin/mopd/moptrace/../common/device.c" 2
# 1 "/usr/src/usr.sbin/mopd/moptrace/../common/mopdef.h" 1
extern char dl_mcst[];
extern char rc_mcst[];
extern char dl_802_proto[];
extern char rc_802_proto[];
extern char lp_802_proto[];
# 38 "/usr/src/usr.sbin/mopd/moptrace/../common/device.c" 2
struct if_info *iflist;
void mopReadDL();
void mopReadRC();
int mopOpenDL(struct if_info *, int);
int mopOpenRC(struct if_info *, int);
int pfTrans();
int pfInit();
int pfWrite();
void
deviceEthAddr(ifname, eaddr)
char *ifname;
u_char *eaddr;
{
char inbuf[8192];
struct ifconf ifc;
struct ifreq *ifr;
struct sockaddr_dl *sdl;
int fd;
int i, len;
if ((fd = socket(2 , 2 , 0)) < 0) {
syslog(3 , "deviceEthAddr: socket: %m");
exit(1);
}
ifc.ifc_len = sizeof(inbuf);
ifc. ifc_ifcu.ifcu_buf = inbuf;
if (ioctl(fd, ( ((unsigned long)0x80000000 | (unsigned long)0x40000000 ) | (( sizeof( struct ifconf ) & 0x1fff ) << 16) | (( ( 'i' ) ) << 8) | ( ( 36 ) )) , (caddr_t)&ifc) < 0 ||
ifc.ifc_len < sizeof(struct ifreq)) {
syslog(3 , "deviceEthAddr: SIOGIFCONF: %m");
exit(1);
}
ifr = ifc. ifc_ifcu.ifcu_req ;
for (i = 0; i < ifc.ifc_len;
i += len, ifr = (struct ifreq *)((caddr_t)ifr + len)) {
len = sizeof(ifr->ifr_name) + ifr-> ifr_ifru.ifru_addr .sa_len;
sdl = (struct sockaddr_dl *)&ifr-> ifr_ifru.ifru_addr ;
if (sdl->sdl_family != 18 || sdl->sdl_type != 0x6 ||
sdl->sdl_alen != 6)
continue;
if (!strncmp(ifr->ifr_name, ifname, sizeof(ifr->ifr_name))) {
bcopy((caddr_t)((caddr_t)(( sdl )->sdl_data + ( sdl )->sdl_nlen)) , (caddr_t)eaddr, 6);
return;
}
}
syslog(3 , "deviceEthAddr: Never saw interface `%s'!", ifname);
exit(1);
}
void
deviceOpen(ifname, proto, trans)
char *ifname;
u_short proto;
int trans;
{
struct if_info *p, tmp;
strncpy(tmp.if_name,ifname,sizeof(tmp.if_name) - 1);
tmp.if_name[sizeof(tmp.if_name)] = 0;
tmp.iopen = pfInit;
switch (proto) {
case 0x6002 :
tmp.read = mopReadRC;
tmp.fd = mopOpenRC(&tmp, trans);
break;
case 0x6001 :
tmp.read = mopReadDL;
tmp.fd = mopOpenDL(&tmp, trans);
break;
default:
break;
}
if (tmp.fd != -1) {
p = (struct if_info *)malloc(sizeof(*p));
if (p == 0) {
syslog(3 , "deviceOpen: malloc: %m");
exit(1);
}
p->next = iflist;
iflist = p;
strncpy(p->if_name,tmp.if_name, 32 -1);
p->if_name[32 -1] = 0;
p->iopen = tmp.iopen;
p->write = pfWrite;
p->read = tmp.read;
bzero((char *)p->eaddr,sizeof(p->eaddr));
p->fd = tmp.fd;
deviceEthAddr(p->if_name,&p->eaddr[0]);
# 172 "/usr/src/usr.sbin/mopd/moptrace/../common/device.c"
}
}
void
deviceInitOne(ifname)
char *ifname;
{
char interface[32 ];
struct if_info *p;
int trans;
# 206 "/usr/src/usr.sbin/mopd/moptrace/../common/device.c"
snprintf(interface,sizeof(interface),"%s",ifname);
p = iflist;
for (p = iflist; p; p = p->next) {
if (strcmp(p->if_name,interface) == 0) {
return;
}
}
syslog(6 , "Initialized %s", interface);
trans = pfTrans(interface);
switch (trans) {
case 1 :
deviceOpen(interface,0x6002 ,1 );
break;
case 2 :
deviceOpen(interface,0x6002 ,2 );
break;
case 1 + 2 :
deviceOpen(interface,0x6002 ,1 );
deviceOpen(interface,0x6002 ,2 );
break;
case 1 + 2 + 0x1000 :
deviceOpen(interface,0x6002 ,1 + 2 );
break;
}
switch (trans) {
case 1 :
deviceOpen(interface,0x6001 ,1 );
break;
case 2 :
deviceOpen(interface,0x6001 ,2 );
break;
case 1 + 2 :
deviceOpen(interface,0x6001 ,1 );
deviceOpen(interface,0x6001 ,2 );
break;
case 1 + 2 + 0x1000 :
deviceOpen(interface,0x6001 ,1 + 2 );
break;
}
}
void
deviceInitAll()
{
char inbuf[8192];
struct ifconf ifc;
struct ifreq *ifr;
struct sockaddr_dl *sdl;
int fd;
int i, len;
if ((fd = socket(2 , 2 , 0)) < 0) {
syslog(3 , "deviceInitAll: socket: %m");
exit(1);
}
ifc.ifc_len = sizeof(inbuf);
ifc. ifc_ifcu.ifcu_buf = inbuf;
if (ioctl(fd, ( ((unsigned long)0x80000000 | (unsigned long)0x40000000 ) | (( sizeof( struct ifconf ) & 0x1fff ) << 16) | (( ( 'i' ) ) << 8) | ( ( 36 ) )) , (caddr_t)&ifc) < 0 ||
ifc.ifc_len < sizeof(struct ifreq)) {
syslog(3 , "deviceInitAll: SIOCGIFCONF: %m");
exit(1);
}
ifr = ifc. ifc_ifcu.ifcu_req ;
for (i = 0; i < ifc.ifc_len;
i += len, ifr = (struct ifreq *)((caddr_t)ifr + len)) {
len = sizeof(ifr->ifr_name) + ifr-> ifr_ifru.ifru_addr .sa_len;
sdl = (struct sockaddr_dl *)&ifr-> ifr_ifru.ifru_addr ;
if (sdl->sdl_family != 18 || sdl->sdl_type != 0x6 ||
sdl->sdl_alen != 6)
continue;
if (ioctl(fd, ( ((unsigned long)0x80000000 | (unsigned long)0x40000000 ) | (( sizeof( struct ifreq ) & 0x1fff ) << 16) | (( ( 'i' ) ) << 8) | ( ( 17 ) )) , (caddr_t)ifr) < 0) {
syslog(3 , "deviceInitAll: SIOCGIFFLAGS: %m");
continue;
}
if ((ifr-> ifr_ifru.ifru_flags &
(0x1 | 0x8 | 0x10 )) != 0x1 )
continue;
deviceInitOne(ifr->ifr_name);
}
(void) close(fd);
# 344 "/usr/src/usr.sbin/mopd/moptrace/../common/device.c"
}