world breakage in pam_echo

LLeweLLyn Reese llewelly at
Wed Jul 16 11:32:50 PDT 2003

Wesley Morgan <morganw at> writes:

> On Wed, 16 Jul 2003, Christian Brueffer wrote:
> > ===> lib/libpam/modules/pam_echo
> > cc -O2 -pipe -march=pentium2 -I/usr/src/lib/libpam/modules/pam_echo/../../../../contrib/openpam/include -I/usr/src/lib/libpam/modules/pam_echo/../../libpam  -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wcast-align -Wno-uninitialized  -c /usr/src/lib/libpam/modules/pam_echo/pam_echo.c
> > /usr/src/lib/libpam/modules/pam_echo/pam_echo.c: In function `_pam_echo':
> > /usr/src/lib/libpam/modules/pam_echo/pam_echo.c:92: warning: dereferencing type-punned pointer will break strict-aliasing rules
> > *** Error code 1
> I was just about to report this myself. The breakage only occurs with
> optimization levels of -O2 (and maybe higher). Officially -O2 is not
> supported for world, but in my experience there are real problems with
> code (warnings in this case) that do not show up until the optimizer takes
> a closer look at them.

It's my impression that these warnings mean the C code in question is
    undefined or implementation-defined according to the C standard,
    and the generated assembler may have unexpected behavior.
    I get this impression from reading the description of
    -fstrict-aliasing (enabled at -O2, -O3, -Os) at:

(The relevant warning flag is -Wstrict-aliasing, see

More information about the freebsd-current mailing list