gcc varargs problem

Bill Davidsen davidsen at tmr.com
Tue Aug 5 21:44:06 UTC 2008


whoosh wrote:
> On 01-Aug-08 17:36:50 Bill Davidsen wrote:
>> whoosh wrote:
>>> all gcc's so far have accepted the following code,
>>>
>>> until now using gcc on Fedora 9:
>>>
>>>
>>> void f( va_list *pargs )
>>> {
>>> va_list args = *pargs ;
>>> ...
>>> }
>>>
>>> 64 bit Fedora 9's gcc regards this as an error, all the other gcc's eg 
>>> on 32 bit Fedora Core 3 have no problem with this.
>>>
>>>
>>> I use this a lot in order to pass var args to another function.
>>> eg I have recursive functions which take variable numbers of args
>>> and redirect to user supplied functions to process those args.
>>>
>>>
>>> for porting code I dont want to have to rewrite everything,
>>>
>> Yes, that is an issue, and even using the compatibility RPMs the new 
>> includes seem to be used and old code doesn't compile properly. I have 
>> set up a virtual machine using an old version (RH9 or FC1) so I can 
>> compile what I need and link static so I can use the code I need.
> 
> if the code is in an rpm and via a make file and sed and awk etc
> 
> then it is NEAR IMPOSSIBLE to change it!
> 
> perhaps the answer is to have an alternative implementation of varargs
> 
> which is backwards compatible. eg if you just use the stack for function
> 
> args then varargs should ALWAYS be straightforwardish.
> 
> 
> stack args are a bit slower but its not a big deal!
> 
> 
> from a development point of view it is always more efficient to 
> workaround the compiler than to workaround the source.
> 
In may case I have a large app maintained by a university. If I start 
changing the source I own it and get to retrofit all future changes. 
Therefore I do *not* even think about doing that, some day they will 
upgrade using grad students and calling the project a "lab course."

-- 
Bill Davidsen <davidsen at tmr.com>
   "We have more to fear from the bungling of the incompetent than from
the machinations of the wicked."  - from Slashdot




More information about the fedora-list mailing list