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"); }