gcc varargs problem
Rick Stevens
ricks at nerd.com
Mon Aug 4 16:52:32 UTC 2008
whoosh wrote:
> On 01-Aug-08 03:22:56 Sam Varshavchik wrote:
>> whoosh writes:
>
>>> On 01-Aug-08 03:00:09 Tom Horsley wrote:
>>>> On Fri, 01 Aug 2008 02:36:54 +0100
>>>> whoosh <whoosh777 at blueyonder.co.uk> wrote:
>>>>> 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.
>>>> The standard regards it as an error as well, and if you looked up
>>>> the insane argument passing conventions for x86_64, you'd know why :-).
>>>> If you want to write portable code, look at the stdarg man page and
>>>> use the va_start, va_copy, etc. macros.
>>>
>>> ok, from that man page it looks like the way to do it is:
>>>
>>> f( va_list *pargs )
>
>> No, that's not what that man page states. See the EXAMPLE section.
>
>>> is there a way to switch off the signedness errors, where
>>>
>>> I use "unsigned char *" for strings to prevent char 255 being
>>>
>>> sign extended to EOF?
>
>> Use explicit casts.
>
> too much work,
>
> this is stable code which I have been using for probably 2 years,
>
> -Wall with earlier gcc's no errors at all, thus I need a backward
> compatibility option,
>
> once code has stabilised I dont like changing it unless it is a
> GENUINE problem.
It is as the compiler is (correctly) warning you of the potential
problem. Not all compilers support the "-Wno-pointer-sign" option
and your code will generate the same warning on those systems. It's
rather irrelevant if it's "stabilized" code or not...it's incorrect in
the same way that I could, in a past life, push a "long" onto the stack,
when calling a function and pop off two shorts in the called function.
Yes, it worked, but it was DEAD wrong.
----------------------------------------------------------------------
- Rick Stevens, Systems Engineer rps2 at nerd.com -
- Hosting Consulting, Inc. -
- -
- The moving cursor writes, and having written, blinks on. -
----------------------------------------------------------------------
More information about the fedora-list
mailing list