This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[3.3. only] PATCH: fix PR 14884


applied to gcc-3_3-branch.

2005-04-30  Gabriel Dos Reis  <gdr@integrable-solutions.net>
  
	PR 14884
	* Apply:
	2004-03-25  Joseph S. Myers  <jsm@polyomino.org.uk>

	* fixinc/inclhack.def (rpc_xdr_lvalue_cast_a,
	rpc_xdr_lvalue_cast_b): New fixes.
	* fixinc/tests/base/rpc/xdr.h: Add new tests.
  
Index: fixinc/inclhack.def
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fixinc/Attic/inclhack.def,v
retrieving revision 1.139.4.18
diff -p -r1.139.4.18 inclhack.def
*** fixinc/inclhack.def	15 Aug 2004 01:27:43 -0000	1.139.4.18
--- fixinc/inclhack.def	30 Apr 2005 17:05:42 -0000
*************** fix = {
*** 2277,2282 ****
--- 2277,2307 ----
  
  
  /*
+  *  Fix casts as lvalues in glibc's <rpc/xdr.h>.
+  */
+ 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
   */
  fix = {
Index: fixinc/tests/base/rpc/xdr.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fixinc/tests/base/rpc/Attic/xdr.h,v
retrieving revision 1.2
diff -p -r1.2 xdr.h
*** fixinc/tests/base/rpc/xdr.h	19 Jul 2000 14:18:30 -0000	1.2
--- fixinc/tests/base/rpc/xdr.h	30 Apr 2005 17:05:42 -0000
***************
*** 9,14 ****
--- 9,24 ----
  
  
  
+ #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* );


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]