This is the mail archive of the gdb@sourceware.org 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: "too few arguments in function call"


On Tuesday 05 August 2008 11:02:54 André Pönitz wrote:
> On Tuesday 05 August 2008 10:09:33 Andreas Schwab wrote:
> > André Pönitz <apoenitz@trolltech.com> writes:
> > 
> > > However, if I do something like   gdb ./myapp-with-all-plugins  I get
> > >
> > >   (gdb) p "xxx"
> > >   too few arguments in function call
> > 
> > When gdb processes a string in an expression it allocates space in the
> > inferior by calling malloc and copying the string contents into this
> > space.  Apparently gdb gets confused when it looks up the address of the
> > malloc function.
> > 
> > > When this message is issued in infcall.c, nargs is always 1, and
> > > TYPE_NFIELDS (ftype) is 2, independently of the arity of the called
> > > function, so it really seems to involve the 'string literal conversion'
> > > (or parsing, or whatever gdb does at that point).
> > 
> > What does `info function malloc' show?
> 
> Bingo! ;-)
> 
> There are a few hundred lines, but the culprit seems to be a
> 
>   class foo { ...   static  foo *malloc(int, int, int, foo*); }
> 
> function. If I rename this, the problem goes away.
> 
> Unfortunately, that's something that cannot be changed 
> in the production code for the next few year ;-}
> 
> Is there a way to convince gdb not to try to use functions
> with unsuitable arity if there's a suitable one present?

An update:

This problem seems to occur if  'class foo' lives in an 
anonymous namespace. 

André 


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