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]

Re: [rfa] Hack around coffread cast ...



Ok. Approved. I committed this too.

Elena


Andrew Cagney writes:
 > 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).
 > 
 > 	AndrewThu 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]