sja@CS.PURDUE.EDU (10/13/89)
I have trouble including C file <rpc/rpc.h>. The g++ receives a fatal
signal if I try compiling following program. I am compiling on Sun3
running Sun 4.0 OS. I am enclosing the program, version number and
C preprocessor output. I would appreciate any information in this regard.
Thanks,
Jags
sja@cs.purdue.edu
--------------------
extern "C" {
#include "/usr/include/rpc/rpc.h"
}
main()
{
printf("done\n");
}
--------------------
version info:
/usr/local/gnu/lib/g++-1.35.1.lib/g++-include -DBSD -I/usr/local/gnu/lib/g++-1.35.1.lib/g++-include -undef -D__GNU__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 dbgtest.cc
--------------------
g++ output:
g++ -c -g -I/usr/local/gnu/lib/g++-1.35.1.lib/g++-include -DBSD dbgtest.cc
/usr/include/rpc/auth.h:47: Segmentation violation
g++: Program cc1plus got fatal signal 11.
*** Error code 1
--------------------
output of C preprocessor:
# 1 "dbgtest.cc"
extern "C" {
# 1 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/types.h"
extern char *malloc();
# 1 "/usr/include/sys/types.h"
# 1 "/usr/include/sys/sysmacros.h"
# 16 "/usr/include/sys/types.h"
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef struct _physadr { short r[1]; } *physadr;
typedef struct label_t {
int val[13];
} label_t;
typedef struct _quad { long val[2]; } quad;
typedef long daddr_t;
typedef char * caddr_t;
typedef u_long ino_t;
typedef long swblk_t;
typedef int size_t;
typedef long time_t;
typedef short dev_t;
typedef long off_t;
typedef u_short uid_t;
typedef u_short gid_t;
typedef long key_t;
typedef long fd_mask;
typedef struct fd_set {
fd_mask fds_bits[(((256 )+(( (sizeof(fd_mask) * 8 ) )-1))/( (sizeof(fd_mask) * 8 ) )) ];
} fd_set;
typedef char * addr_t;
# 107 "/usr/include/sys/types.h"
# 35 "/usr/include/rpc/types.h"
# 1 "/usr/include/sys/time.h"
struct timeval {
long tv_sec;
long tv_usec;
};
struct timezone {
int tz_minuteswest;
int tz_dsttime;
};
struct itimerval {
struct timeval it_interval;
struct timeval it_value;
};
# 1 "/usr/include/time.h"
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;
char *tm_zone;
long tm_gmtoff;
};
extern struct tm *gmtime(), *localtime();
extern char *asctime(), *ctime();
extern void tzset(), tzsetwall();
# 62 "/usr/include/sys/time.h"
# 36 "/usr/include/rpc/types.h"
# 12 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/netinet/in.h"
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { u_short s_w1,s_w2; } S_un_w;
u_long S_addr;
} S_un;
};
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
# 188 "/usr/include/netinet/in.h"
# 13 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/xdr.h"
enum xdr_op {
XDR_ENCODE=0,
XDR_DECODE=1,
XDR_FREE=2
};
typedef int (*xdrproc_t)();
typedef struct {
enum xdr_op x_op;
struct xdr_ops {
int (*x_getlong)();
int (*x_putlong)();
int (*x_getbytes)();
int (*x_putbytes)();
u_int (*x_getpostn)();
int (*x_setpostn)();
long * (*x_inline)();
void (*x_destroy)();
} *x_ops;
caddr_t x_public;
caddr_t x_private;
caddr_t x_base;
int x_handy;
} XDR;
struct xdr_discrim {
int value;
xdrproc_t proc;
};
extern int xdr_void();
extern int xdr_int();
extern int xdr_u_int();
extern int xdr_long();
extern int xdr_u_long();
extern int xdr_short();
extern int xdr_u_short();
extern int xdr_bool();
extern int xdr_enum();
extern int xdr_array();
extern int xdr_bytes();
extern int xdr_opaque();
extern int xdr_string();
extern int xdr_union();
extern int xdr_char();
extern int xdr_u_char();
extern int xdr_vector();
extern int xdr_float();
extern int xdr_double();
extern int xdr_reference();
extern int xdr_pointer();
extern int xdr_wrapstring();
struct netobj {
u_int n_len;
char *n_bytes;
};
typedef struct netobj netobj;
extern int xdr_netobj();
extern void xdrmem_create();
extern void xdrstdio_create();
extern void xdrrec_create();
extern int xdrrec_endofrecord();
extern int xdrrec_skiprecord();
extern int xdrrec_eof();
# 16 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/auth.h"
enum auth_stat {
AUTH_OK=0,
AUTH_BADCRED=1,
AUTH_REJECTEDCRED=2,
AUTH_BADVERF=3,
AUTH_REJECTEDVERF=4,
AUTH_TOOWEAK=5,
AUTH_INVALIDRESP=6,
AUTH_FAILED=7
};
typedef u_long u_int32;
union des_block {
struct {
u_int32 high;
u_int32 low;
} key;
char c[8];
};
typedef union des_block des_block;
extern int xdr_des_block();
struct opaque_auth {
int oa_flavor;
caddr_t oa_base;
u_int oa_length;
};
typedef struct {
struct opaque_auth ah_cred;
struct opaque_auth ah_verf;
union des_block ah_key;
struct auth_ops {
void (*ah_nextverf)();
int (*ah_marshal)();
int (*ah_validate)();
int (*ah_refresh)();
void (*ah_destroy)();
} *ah_ops;
caddr_t ah_private;
} AUTH;
extern struct opaque_auth _null_auth;
extern AUTH *authunix_create();
extern AUTH *authunix_create_default();
extern AUTH *authnone_create();
extern AUTH *authdes_create();
# 19 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/clnt.h"
enum clnt_stat {
RPC_SUCCESS=0,
RPC_CANTENCODEARGS=1,
RPC_CANTDECODERES=2,
RPC_CANTSEND=3,
RPC_CANTRECV=4,
RPC_TIMEDOUT=5,
RPC_VERSMISMATCH=6,
RPC_AUTHERROR=7,
RPC_PROGUNAVAIL=8,
RPC_PROGVERSMISMATCH=9,
RPC_PROCUNAVAIL=10,
RPC_CANTDECODEARGS=11,
RPC_SYSTEMERROR=12,
RPC_UNKNOWNHOST=13,
RPC_UNKNOWNPROTO=17,
RPC_PMAPFAILURE=14,
RPC_PROGNOTREGISTERED=15,
RPC_FAILED=16
};
struct rpc_err {
enum clnt_stat re_status;
union {
int RE_errno;
enum auth_stat RE_why;
struct {
u_long low;
u_long high;
} RE_vers;
struct {
long s1;
long s2;
} RE_lb;
} ru;
};
typedef struct {
AUTH *cl_auth;
struct clnt_ops {
enum clnt_stat (*cl_call)();
void (*cl_abort)();
void (*cl_geterr)();
int (*cl_freeres)();
void (*cl_destroy)();
int (*cl_control)();
} *cl_ops;
caddr_t cl_private;
} CLIENT;
extern CLIENT *clntraw_create();
extern CLIENT *
clnt_create( );
extern CLIENT *clnttcp_create();
extern CLIENT *clntudp_create();
extern CLIENT *clntudp_bufcreate();
void clnt_pcreateerror( );
char *clnt_spcreateerror( );
void clnt_perrno( );
void clnt_perror( );
char *clnt_sperror( );
struct rpc_createerr {
enum clnt_stat cf_stat;
struct rpc_err cf_error;
};
extern struct rpc_createerr rpc_createerr;
char *clnt_sperrno( );
# 311 "/usr/include/rpc/clnt.h"
# 22 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/rpc_msg.h"
enum msg_type {
CALL=0,
REPLY=1
};
enum reply_stat {
MSG_ACCEPTED=0,
MSG_DENIED=1
};
enum accept_stat {
SUCCESS=0,
PROG_UNAVAIL=1,
PROG_MISMATCH=2,
PROC_UNAVAIL=3,
GARBAGE_ARGS=4,
SYSTEM_ERR=5
};
enum reject_stat {
RPC_MISMATCH=0,
AUTH_ERROR=1
};
struct accepted_reply {
struct opaque_auth ar_verf;
enum accept_stat ar_stat;
union {
struct {
u_long low;
u_long high;
} AR_versions;
struct {
caddr_t where;
xdrproc_t proc;
} AR_results;
} ru;
};
struct rejected_reply {
enum reject_stat rj_stat;
union {
struct {
u_long low;
u_long high;
} RJ_versions;
enum auth_stat RJ_why;
} ru;
};
struct reply_body {
enum reply_stat rp_stat;
union {
struct accepted_reply RP_ar;
struct rejected_reply RP_dr;
} ru;
};
struct call_body {
u_long cb_rpcvers;
u_long cb_prog;
u_long cb_vers;
u_long cb_proc;
struct opaque_auth cb_cred;
struct opaque_auth cb_verf;
};
struct rpc_msg {
u_long rm_xid;
enum msg_type rm_direction;
union {
struct call_body RM_cmb;
struct reply_body RM_rmb;
} ru;
};
extern int xdr_callmsg();
extern int xdr_callhdr();
extern int xdr_replymsg();
extern void _seterr_reply();
# 25 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/auth_unix.h"
struct authunix_parms {
u_long aup_time;
char *aup_machname;
int aup_uid;
int aup_gid;
u_int aup_len;
int *aup_gids;
};
extern int xdr_authunix_parms();
struct short_hand_verf {
struct opaque_auth new_cred;
};
# 26 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/auth_des.h"
enum authdes_namekind {
ADN_FULLNAME,
ADN_NICKNAME
};
struct authdes_fullname {
char *name;
des_block key;
u_long window;
};
struct authdes_cred {
enum authdes_namekind adc_namekind;
struct authdes_fullname adc_fullname;
u_long adc_nickname;
};
struct authdes_verf {
union {
struct timeval adv_ctime;
des_block adv_xtime;
} adv_time_u;
u_long adv_int_u;
};
# 27 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/svc.h"
enum xprt_stat {
XPRT_DIED,
XPRT_MOREREQS,
XPRT_IDLE
};
typedef struct {
int xp_sock;
u_short xp_port;
struct xp_ops {
int (*xp_recv)();
enum xprt_stat (*xp_stat)();
int (*xp_getargs)();
int (*xp_reply)();
int (*xp_freeargs)();
void (*xp_destroy)();
} *xp_ops;
int xp_addrlen;
struct sockaddr_in xp_raddr;
struct opaque_auth xp_verf;
caddr_t xp_p1;
caddr_t xp_p2;
} SVCXPRT;
struct svc_req {
u_long rq_prog;
u_long rq_vers;
u_long rq_proc;
struct opaque_auth rq_cred;
caddr_t rq_clntcred;
SVCXPRT *rq_xprt;
};
extern int svc_register();
extern void svc_unregister();
extern void xprt_register();
extern void xprt_unregister();
extern int svc_sendreply();
extern void svcerr_decode();
extern void svcerr_weakauth();
extern void svcerr_noproc();
extern void svcerr_progvers();
extern void svcerr_auth();
extern void svcerr_noprog();
extern void svcerr_systemerr();
extern fd_set svc_fdset;
extern void rpctest_service();
extern void svc_getreq();
extern void svc_getreqset();
extern void svc_run();
extern SVCXPRT *svcraw_create();
extern SVCXPRT *svcudp_create();
extern SVCXPRT *svcudp_bufcreate();
extern SVCXPRT *svctcp_create();
# 30 "/usr/include/rpc/rpc.h"
# 1 "/usr/include/rpc/svc_auth.h"
extern enum auth_stat _authenticate();
# 31 "/usr/include/rpc/rpc.h"
# 3 "dbgtest.cc"
}
main()
{
printf("done\n");
}