From: | Rudi Chiarito |
Date: | 14 Aug 2000 at 14:08:36 |
Subject: | Re: AMIOPEN: `va_start' used in tool function with no varargs attribute |
On Fri, Aug 04, 2000 at 02:30:23PM +0200, Aaron Optimizer Digulla wrote:
> (Already posted a week ago but got no response)
>
> What does the error
>
> va_start' used in tool function with no varargs attribute
>
> mean ? Here is the declaration of the tool:
>
> extern int execl (const char *path, const char *arg, ...)
> __attribute__ (("qcall ixemulng/execl"));
This problem seems to be caused by code that remains from the
VP1/early VP2 era. It used to be necessary to provide a "varargs"
attribute spec for tools that used varargs. If it's true that
varargs tools can now be called just like any other varargs
function, then this attribute shouldn't be needed anymore and the
compiler shouldn't be checking for it.
If you change your declaration of execl() to this:
extern int execl (const char *path, const char *arg, ...)
__attribute__ (("qcall ixemulng/execl", "varargs pp"));
it should do the right thing (namely, what it would do for a non-tool
varargs function).
> And how can I get rid of the warning "warning: possible redefinition for
> Elate tool `execl'" ? I'm including the header file which declare the
> tools in the files which contain the code because I need some other
> type declarations.
For now, adding "-Wno-elate" will stop all Elate-specific warnings.
Vpcc will enhanced to prevent this message when "-T" is specified.