public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
* Variable function arguments and the stack
@ 2007-12-06  0:00 Robert Kiesling
  2007-12-06  0:11 ` David Daney
  0 siblings, 1 reply; 5+ messages in thread
From: Robert Kiesling @ 2007-12-06  0:00 UTC (permalink / raw)
  To: gcc-help


I trying to write a function that calls libc functions with
variable arguments - for example, scanf.  I would like to do
this by pushing the arguments onto the stack and then calling 
the function, something like this.  (This code is for an x86
machine.)

static long long int scalar_args[512];
static char *ptr_args[512][BUFSIZE];

^ permalink raw reply	[flat|nested] 5+ messages in thread
* Re: Variable function arguments and the stack
@ 2007-12-09 14:30 Robert Kiesling
  2007-12-15  8:30 ` Andrew Haley
  0 siblings, 1 reply; 5+ messages in thread
From: Robert Kiesling @ 2007-12-09 14:30 UTC (permalink / raw)
  To: gcc-help

> David Daney wrote:
> > Robert Kiesling wrote:
> > > I trying to write a function that calls libc functions with
> > > variable arguments - for example, scanf.  I would like to do
> > > this by pushing the arguments onto the stack and then calling 
> > > the function, something like this.  (This code is for an x86
> > > machine.)
> > > 
> > > static long long int scalar_args[512];
> > > static char *ptr_args[512][BUFSIZE];
> > 
> > Use libffi which ships with GCC.  Doing things like this is what it was 
> > designed for.

Libffi clobbers either the arguments or the stream argument (the 
first argument before the format string in functions like fprintf
or sprintf).  It should make a distinction whether the args or 
the stream are writeable or readable, and that, of course is the 
idea.

Regards,

Robert

-- 
Ctalk Home Page: http://www.ctalklang.org/

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-12-15  8:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-06  0:00 Variable function arguments and the stack Robert Kiesling
2007-12-06  0:11 ` David Daney
2007-12-06  0:41   ` Robert Kiesling
2007-12-09 14:30 Robert Kiesling
2007-12-15  8:30 ` Andrew Haley

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).