From 8f6fe3eb1cd2273a127907c3162acf085f9c9dd4 Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Sat, 30 Apr 2005 17:14:28 +0000 Subject: [PATCH] re PR other/14884 ([3.3 only] rpc/xdr.h should be fixincluded) PR 14884 * Apply: 2004-03-25 Joseph S. Myers * fixinc/inclhack.def (rpc_xdr_lvalue_cast_a, rpc_xdr_lvalue_cast_b): New fixes. * fixinc/tests/base/rpc/xdr.h: Add new tests. From-SVN: r99040 --- gcc/ChangeLog | 10 ++++++++++ gcc/fixinc/inclhack.def | 25 +++++++++++++++++++++++++ gcc/fixinc/tests/base/rpc/xdr.h | 10 ++++++++++ 3 files changed, 45 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b675b1cb2814..72c575b41b38 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2005-04-30 Gabriel Dos Reis + + PR 14884 + * Apply: + 2004-03-25 Joseph S. Myers + + * fixinc/inclhack.def (rpc_xdr_lvalue_cast_a, + rpc_xdr_lvalue_cast_b): New fixes. + * fixinc/tests/base/rpc/xdr.h: Add new tests. + 2005-04-30 Gabriel Dos Reis * Apply: diff --git a/gcc/fixinc/inclhack.def b/gcc/fixinc/inclhack.def index 534a0b419c43..d62c12c00fad 100644 --- a/gcc/fixinc/inclhack.def +++ b/gcc/fixinc/inclhack.def @@ -2276,6 +2276,31 @@ fix = { }; +/* + * Fix casts as lvalues in glibc's . + */ +fix = { + hackname = rpc_xdr_lvalue_cast_a; + files = rpc/xdr.h; + select = "#define[ \t]*IXDR_GET_LONG.*\\\\\n.*__extension__.*"; + c_fix = format; + c_fix_arg = "#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf))"; + test_text = "#define IXDR_GET_LONG(buf) \\\\\n" + "\t((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++))"; +}; + + +fix = { + hackname = rpc_xdr_lvalue_cast_b; + files = rpc/xdr.h; + select = "#define[ \t]*IXDR_PUT_LONG.*\\\\\n.*__extension__.*"; + c_fix = format; + c_fix_arg = "#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v)))"; + test_text = "#define IXDR_PUT_LONG(buf, v) \\\\\n" + "\t(*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v)))"; +}; + + /* * function class(double x) conflicts with C++ keyword on rs/6000 */ diff --git a/gcc/fixinc/tests/base/rpc/xdr.h b/gcc/fixinc/tests/base/rpc/xdr.h index 69fc4c1f5cf6..7b9f9bae9618 100644 --- a/gcc/fixinc/tests/base/rpc/xdr.h +++ b/gcc/fixinc/tests/base/rpc/xdr.h @@ -9,6 +9,16 @@ +#if defined( RPC_XDR_LVALUE_CAST_A_CHECK ) +#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) +#endif /* RPC_XDR_LVALUE_CAST_A_CHECK */ + + +#if defined( RPC_XDR_LVALUE_CAST_B_CHECK ) +#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) +#endif /* RPC_XDR_LVALUE_CAST_B_CHECK */ + + #if defined( STRUCT_FILE_CHECK ) struct __file_s; extern void xdrstdio_create( struct __file_s* ); -- 2.47.2