pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: pkgsrc/net/libfetch

On Mon, Oct 15, 2012 at 05:46:17PM +0200, John Marino wrote:
> On 10/15/2012 17:40, Greg Troxel wrote:
> >"John Marino"<>  writes:
> >>When building with gcc4.7, libfetch fails with the following error:
> >>   ftp.c: In function 'unmappedaddr':
> >>   ftp.c:149:2: error: dereferencing type-punned pointer will break
> >>                strict-aliasing rules [-Werror=strict-aliasing]
> >>   cc1: all warnings being treated as errors
> >>   *** Error code 1
> >>
> >>The code is intentionally grouping an array of four uint8_t bytes into a
> >>uint32_t word.  Add -Wno-strict-aliasing in makefile to fix build in gcc4.7.
> >
> >But isn't the warning correct, in that dereferencing a uint32 pointer
> >does not guarantee data coherency for objects of other types?  AIUI, in
> >C99, the compiler is free to let objects of type other than foo have
> >inconsistent values while a foo* is being dereferenced, and is only
> >obligated to ensure consistency of objects of type foo.  It seems in
> >modern C, one must use a union for such overlays.
> >
> Yes, the warning is correct.  That's why it had to be disabled.
> To avoid a warning with strict-aliasing checking would require
> recoding.  That's a better long-term solution but I'll leave it to
> the maintainers of libfetch to determine if they want to rewrite the
> code.

If the warning is correct, don't disable it. Disable the optimization
feature that triggered it instead.

IOW, shouldn't you be using -fno-strict-aliasing here?


%SYSTEM-F-ANARCHISM, The operating system has been overthrown

Home | Main Index | Thread Index | Old Index