yann@1: [Taken from ../glibc-2.3.2/glibc-2.3.2-allow-gcc-3.4-sunrpc.patch, yann@1: rediffed, and with a fix for sunrpc/auth_none.c that was yann@1: inexplicably not included in the original patch.] yann@1: yann@1: Fixes yann@1: yann@1: auth_none.c: In function 'authnone_create': yann@1: auth_none.c:83: error: invalid lvalue in assignment yann@1: clnt_perr.c: In function '_buf': yann@1: clnt_perr.c:68: error: invalid lvalue in assignment yann@1: clnt_raw.c: In function 'clntraw_create': yann@1: clnt_raw.c:103: error: invalid lvalue in assignment yann@1: clnt_simp.c: In function 'callrpc': yann@1: clnt_simp.c:78: error: invalid lvalue in assignment yann@1: etc. yann@1: yann@1: building glibc-2.2.5 with gcc-4.0. yann@1: yann@1: --- yann@1: yann@1: http://sources.redhat.com/ml/libc-hacker/2004-02/msg00005.html yann@1: [Also in CVS, but the original patch is easier to get.] yann@1: yann@1: Fixes errors like yann@1: yann@1: clnt_perr.c: In function `_buf': yann@1: clnt_perr.c:67: error: invalid lvalue in assignment yann@1: yann@1: when building with gcc-3.5. yann@1: yann@1: To: libc-hacker at sources dot redhat dot com yann@1: Subject: Fix cast as lvalue in sunrpc yann@1: From: Andreas Schwab yann@1: X-Yow: SHHHH!! I hear SIX TATTOOED TRUCK-DRIVERS tossing ENGINE BLOCKS yann@1: into empty OIL DRUMS dot dot yann@1: Date: Sun, 08 Feb 2004 17:38:31 +0100 yann@1: Message-ID: yann@1: yann@1: This fixes the uses of casts as lvalue in the sunrpc code. yann@1: yann@1: Andreas. yann@1: yann@1: 2004-02-08 Andreas Schwab yann@1: yann@1: * include/rpc/rpc.h: Declare thread variables with their correct yann@1: type. yann@1: * sunrpc/clnt_perr.c: Don't cast thread variables. yann@1: * sunrpc/clnt_raw.c: Likewise. yann@1: * sunrpc/clnt_simp.c: Likewise. yann@1: * sunrpc/key_call.c: Likewise. yann@1: * sunrpc/svcauth_des.c: Likewise. yann@1: * sunrpc/svc.c: Likewise. yann@1: * sunrpc/svc_raw.c: Likewise. yann@1: * sunrpc/svc_simple.c: Likewise. yann@1: yann@1: diff -ur glibc-2.2.5/include/rpc/rpc.h glibc-2.2.5-patched/include/rpc/rpc.h yann@1: --- glibc-2.2.5/include/rpc/rpc.h 2001-03-25 21:11:32.000000000 -0800 yann@1: +++ glibc-2.2.5-patched/include/rpc/rpc.h 2005-03-11 13:18:29.810860624 -0800 yann@1: @@ -18,24 +18,24 @@ yann@1: yann@1: void *authnone_private_s; /* auth_none.c */ yann@1: yann@1: - void *clnt_perr_buf_s; /* clnt_perr.c */ yann@1: + char *clnt_perr_buf_s; /* clnt_perr.c */ yann@1: yann@1: - void *clntraw_private_s; /* clnt_raw.c */ yann@1: + struct clntraw_private_s *clntraw_private_s; /* clnt_raw.c */ yann@1: yann@1: - void *callrpc_private_s; /* clnt_simp.c */ yann@1: + struct callrpc_private_s *callrpc_private_s; /* clnt_simp.c */ yann@1: yann@1: - void *key_call_private_s; /* key_call.c */ yann@1: + struct key_call_private *key_call_private_s; /* key_call.c */ yann@1: yann@1: - void *authdes_cache_s; /* svcauth_des.c */ yann@1: - void *authdes_lru_s; /* svcauth_des.c */ yann@1: + struct cache_entry *authdes_cache_s; /* svcauth_des.c */ yann@1: + int *authdes_lru_s; /* svcauth_des.c */ yann@1: yann@1: - void *svc_xports_s; /* svc.c */ yann@1: - void *svc_head_s; /* svc.c */ yann@1: + SVCXPRT **svc_xports_s; /* svc.c */ yann@1: + struct svc_callout *svc_head_s; /* svc.c */ yann@1: yann@1: - void *svcraw_private_s; /* svc_raw.c */ yann@1: + struct svcraw_private_s *svcraw_private_s; /* svc_raw.c */ yann@1: yann@1: - void *svcsimple_proglst_s; /* svc_simple.c */ yann@1: - void *svcsimple_transp_s; /* svc_simple.c */ yann@1: + struct proglst_ *svcsimple_proglst_s; /* svc_simple.c */ yann@1: + SVCXPRT *svcsimple_transp_s; /* svc_simple.c */ yann@1: }; yann@1: yann@1: extern struct rpc_thread_variables *__rpc_thread_variables(void) yann@1: --- glibc-2.2.5/sunrpc/auth_none.c.old 2005-03-10 16:26:53.874178280 -0800 yann@1: +++ glibc-2.2.5/sunrpc/auth_none.c 2005-03-10 16:34:24.551664888 -0800 yann@1: @@ -62,7 +62,7 @@ yann@1: u_int mcnt; yann@1: }; yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define authnone_private ((struct authnone_private_s *)RPC_THREAD_VARIABLE(authnone_private_s)) yann@1: +#define authnone_private RPC_THREAD_VARIABLE(authnone_private_s) yann@1: #else yann@1: static struct authnone_private_s *authnone_private; yann@1: #endif yann@1: diff -ur glibc-2.2.5/sunrpc/clnt_perr.c glibc-2.2.5-patched/sunrpc/clnt_perr.c yann@1: --- glibc-2.2.5/sunrpc/clnt_perr.c 2001-08-16 21:48:31.000000000 -0700 yann@1: +++ glibc-2.2.5-patched/sunrpc/clnt_perr.c 2005-03-11 13:18:29.812860320 -0800 yann@1: @@ -56,7 +56,7 @@ yann@1: * buf variable in a few functions. Overriding a global variable yann@1: * with a local variable of the same name is a bad idea, anyway. yann@1: */ yann@1: -#define buf ((char *)RPC_THREAD_VARIABLE(clnt_perr_buf_s)) yann@1: +#define buf RPC_THREAD_VARIABLE(clnt_perr_buf_s) yann@1: #else yann@1: static char *buf; yann@1: #endif yann@1: diff -ur glibc-2.2.5/sunrpc/clnt_raw.c glibc-2.2.5-patched/sunrpc/clnt_raw.c yann@1: --- glibc-2.2.5/sunrpc/clnt_raw.c 2001-03-20 10:34:22.000000000 -0800 yann@1: +++ glibc-2.2.5-patched/sunrpc/clnt_raw.c 2005-03-11 13:18:29.813860168 -0800 yann@1: @@ -61,7 +61,7 @@ yann@1: u_int mcnt; yann@1: }; yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define clntraw_private ((struct clntraw_private_s *)RPC_THREAD_VARIABLE(clntraw_private_s)) yann@1: +#define clntraw_private RPC_THREAD_VARIABLE(clntraw_private_s) yann@1: #else yann@1: static struct clntraw_private_s *clntraw_private; yann@1: #endif yann@1: diff -ur glibc-2.2.5/sunrpc/clnt_simp.c glibc-2.2.5-patched/sunrpc/clnt_simp.c yann@1: --- glibc-2.2.5/sunrpc/clnt_simp.c 2001-08-19 23:28:21.000000000 -0700 yann@1: +++ glibc-2.2.5-patched/sunrpc/clnt_simp.c 2005-03-11 13:18:29.814860016 -0800 yann@1: @@ -55,7 +55,7 @@ yann@1: char *oldhost; yann@1: }; yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define callrpc_private ((struct callrpc_private_s *)RPC_THREAD_VARIABLE(callrpc_private_s)) yann@1: +#define callrpc_private RPC_THREAD_VARIABLE(callrpc_private_s) yann@1: #else yann@1: static struct callrpc_private_s *callrpc_private; yann@1: #endif yann@1: diff -ur glibc-2.2.5/sunrpc/key_call.c glibc-2.2.5-patched/sunrpc/key_call.c yann@1: --- glibc-2.2.5/sunrpc/key_call.c 2001-03-20 10:34:22.000000000 -0800 yann@1: +++ glibc-2.2.5-patched/sunrpc/key_call.c 2005-03-11 13:18:29.816859712 -0800 yann@1: @@ -360,7 +360,7 @@ yann@1: uid_t uid; /* user-id at last authorization */ yann@1: }; yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define key_call_private_main ((struct key_call_private *)RPC_THREAD_VARIABLE(key_call_private_s)) yann@1: +#define key_call_private_main RPC_THREAD_VARIABLE(key_call_private_s) yann@1: #else yann@1: static struct key_call_private *key_call_private_main; yann@1: #endif yann@1: diff -ur glibc-2.2.5/sunrpc/svcauth_des.c glibc-2.2.5-patched/sunrpc/svcauth_des.c yann@1: --- glibc-2.2.5/sunrpc/svcauth_des.c 2001-08-19 23:37:09.000000000 -0700 yann@1: +++ glibc-2.2.5-patched/sunrpc/svcauth_des.c 2005-03-11 13:18:29.821858952 -0800 yann@1: @@ -72,8 +72,8 @@ yann@1: char *localcred; /* generic local credential */ yann@1: }; yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define authdes_cache ((struct cache_entry *)RPC_THREAD_VARIABLE(authdes_cache_s)) yann@1: -#define authdes_lru ((int *)RPC_THREAD_VARIABLE(authdes_lru_s)) yann@1: +#define authdes_cache RPC_THREAD_VARIABLE(authdes_cache_s) yann@1: +#define authdes_lru RPC_THREAD_VARIABLE(authdes_lru_s) yann@1: #else yann@1: static struct cache_entry *authdes_cache; yann@1: static int *authdes_lru; yann@1: diff -ur glibc-2.2.5/sunrpc/svc.c glibc-2.2.5-patched/sunrpc/svc.c yann@1: --- glibc-2.2.5/sunrpc/svc.c 2001-03-20 10:34:22.000000000 -0800 yann@1: +++ glibc-2.2.5-patched/sunrpc/svc.c 2005-03-11 13:18:29.817859560 -0800 yann@1: @@ -44,7 +44,7 @@ yann@1: #include yann@1: yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define xports ((SVCXPRT **)RPC_THREAD_VARIABLE(svc_xports_s)) yann@1: +#define xports RPC_THREAD_VARIABLE(svc_xports_s) yann@1: #else yann@1: static SVCXPRT **xports; yann@1: #endif yann@1: @@ -63,7 +63,7 @@ yann@1: void (*sc_dispatch) (struct svc_req *, SVCXPRT *); yann@1: }; yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define svc_head ((struct svc_callout *)RPC_THREAD_VARIABLE(svc_head_s)) yann@1: +#define svc_head RPC_THREAD_VARIABLE(svc_head_s) yann@1: #else yann@1: static struct svc_callout *svc_head; yann@1: #endif yann@1: diff -ur glibc-2.2.5/sunrpc/svc_raw.c glibc-2.2.5-patched/sunrpc/svc_raw.c yann@1: --- glibc-2.2.5/sunrpc/svc_raw.c 2001-03-20 10:34:22.000000000 -0800 yann@1: +++ glibc-2.2.5-patched/sunrpc/svc_raw.c 2005-03-11 13:18:29.818859408 -0800 yann@1: @@ -54,7 +54,7 @@ yann@1: char verf_body[MAX_AUTH_BYTES]; yann@1: }; yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define svcraw_private ((struct svcraw_private_s *)RPC_THREAD_VARIABLE(svcraw_private_s)) yann@1: +#define svcraw_private RPC_THREAD_VARIABLE(svcraw_private_s) yann@1: #else yann@1: static struct svcraw_private_s *svcraw_private; yann@1: #endif yann@1: diff -ur glibc-2.2.5/sunrpc/svc_simple.c glibc-2.2.5-patched/sunrpc/svc_simple.c yann@1: --- glibc-2.2.5/sunrpc/svc_simple.c 2001-08-17 00:16:04.000000000 -0700 yann@1: +++ glibc-2.2.5-patched/sunrpc/svc_simple.c 2005-03-11 13:18:29.820859104 -0800 yann@1: @@ -62,7 +62,7 @@ yann@1: struct proglst_ *p_nxt; yann@1: }; yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define proglst ((struct proglst_ *)RPC_THREAD_VARIABLE(svcsimple_proglst_s)) yann@1: +#define proglst RPC_THREAD_VARIABLE(svcsimple_proglst_s) yann@1: #else yann@1: static struct proglst_ *proglst; yann@1: #endif yann@1: @@ -70,7 +70,7 @@ yann@1: yann@1: static void universal (struct svc_req *rqstp, SVCXPRT *transp_s); yann@1: #ifdef _RPC_THREAD_SAFE_ yann@1: -#define transp ((SVCXPRT *)RPC_THREAD_VARIABLE(svcsimple_transp_s)) yann@1: +#define transp RPC_THREAD_VARIABLE(svcsimple_transp_s) yann@1: #else yann@1: static SVCXPRT *transp; yann@1: #endif