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]
Other format: [Raw text]

Re: [rfa] allocate_objfile(NULL, 0)


David Carlton writes:
 > The function allocate_objfile takes some care to return a useful
 > objfile if its first argument (the bfd) is NULL.  But it doesn't set
 > objfile->name in that case; there is code in GDB that loops over all
 > the objfiles and examines their names, which breaks in this case.
 > (See, for example, symbol_add_stub.)
 > 
 > I ran into this problem when imitating the dynamics objfile in
 > jv-lang.c.  So I'm pretty sure that, currently, if anybody tries to
 > debug Java code that requires that objfile to exist, GDB will seg
 > fault.
 > 

Can you expand a bit? Would it be possible to create a test case?

 > The enclosed patch modifies allocate_objfile to set the name to
 > "<<anonymous objfile>>" in that situation.  It removes the seg fault
 > that I saw.  I ran the test suite on i686-pc-linux-gnu/GCC 3.1/DWARF-2
 > and saw no new regressions.
 > 
 > Is this patch okay?  I don't know offhand who the appropriate
 > maintainer is.
 > 

I don't know about the '<<' '>>' usage. I wonder if gdb already
has some other cases like this one. Maybe 'nameless'?

 > David Carlton
 > carlton@math.stanford.edu
 > 
 > 2003-01-10  David Carlton  <carlton@math.stanford.edu>
 > 
 > 	* objfiles.c (allocate_objfile): Always set name.

You are missing the copyright year.

 > 
 > Index: objfiles.c 
 > ===================================================================
 > RCS file: /cvs/src/src/gdb/objfiles.c,v
 > retrieving revision 1.22
 > diff -u -p -r1.22 objfiles.c
 > --- objfiles.c	29 Jul 2002 22:55:26 -0000	1.22
 > +++ objfiles.c	10 Jan 2003 23:31:56 -0000
 > @@ -305,6 +305,10 @@ allocate_objfile (bfd *abfd, int flags)
 >  		 objfile->name, bfd_errmsg (bfd_get_error ()));
 >  	}
 >      }
 > +  else
 > +    {
 > +      objfile->name = "<<anonymous objfile>>";
 > +    }
 >  
 >    /* Initialize the section indexes for this objfile, so that we can
 >       later detect if they are used w/o being properly assigned to. */


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