This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


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

[rfa] Hack around coffread cast ...


Hello,

(This one I don't like :-)

This uses a more robust cast to convert an integer into a pointer. 
Better solutions definitly welcome.  The problem is that you can't
assume that sizeof(int) == sizeof(long) == sizeof(pointer).

	Andrew
Thu Feb  1 00:29:42 2001  Andrew Cagney  <cagney@redhat.com>

	* coffread.c: Include "gdb_assert.h".
	(coff_symtab_read): Cast the integer s_sclass to a
 	long before casting it to a pointer.

Index: coffread.c
===================================================================
RCS file: /cvs/src/src/gdb/coffread.c,v
retrieving revision 1.14
diff -p -r1.14 coffread.c
*** coffread.c	2000/12/15 01:01:46	1.14
--- coffread.c	2001/02/01 18:48:26
***************
*** 42,47 ****
--- 42,48 ----
  #include "stabsread.h"
  #include "complaints.h"
  #include "target.h"
+ #include "gdb_assert.h"
  
  extern void _initialize_coffread (void);
  
*************** coff_symtab_read (long symtab_offset, un
*** 965,973 ****
  	      {
  		struct minimal_symbol *msym;
  
  		msym = prim_record_minimal_symbol_and_info
! 		  (cs->c_name, tmpaddr, ms_type, (char *) cs->c_sclass, sec,
! 		   NULL, objfile);
  #ifdef COFF_MAKE_MSYMBOL_SPECIAL
  		if (msym)
  		  COFF_MAKE_MSYMBOL_SPECIAL (cs->c_sclass, msym);
--- 966,980 ----
  	      {
  		struct minimal_symbol *msym;
  
+ 		/* FIXME: cagney/2001-02-01: The nasty (int) -> (long)
+                    -> (void*) cast is to ensure that that the value of
+                    cs->c_sclass can be correctly stored in a void
+                    pointer in MSYMBOL_INFO.  Better solutions
+                    welcome. */
+ 		gdb_assert (sizeof (void *) >= sizeof (cs->c_sclass));
  		msym = prim_record_minimal_symbol_and_info
! 		  (cs->c_name, tmpaddr, ms_type, (void *) (long) cs->c_sclass,
! 		   sec, NULL, objfile);
  #ifdef COFF_MAKE_MSYMBOL_SPECIAL
  		if (msym)
  		  COFF_MAKE_MSYMBOL_SPECIAL (cs->c_sclass, msym);

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