This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add -D_FORTIFY_SOURCE=2 to CFLAGS if possible.


On Tue, 2017-02-14 at 21:58 -0500, Mike Frysinger wrote:
> On 09 Feb 2017 21:13, Mark Wielaard wrote:
> > +# See if we can add -D_FORTIFY_SOURCE=2. Don't do it if it is already
> > +# (differently) defined or if it generates warnings/errors because we
> > +# don't use the right optimisation level (string.h will warn about that).
> > +AC_MSG_CHECKING([whether to add -D_FORTIFY_SOURCE=2 to CFLAGS])
> 
> -D flags should be in CPPFLAGS ...

Normally yes, but _FORTIFY_SOURCE is "special". It depends on CFLAGS
optimization settings. If the user has given CFLAGS="-O0" for example,
or set _FORTIFY_SOURCE to 1 in CFLAGS already adding -D_FORTIFY_SOURCE=2
to CPPFLAGS won't work as intended.

> > +case "$CFLAGS" in
> > +  *-D_FORTIFY_SOURCE=2*)
> > +    AC_MSG_RESULT([no, already there])
> > +    ;;
> > +  *)
> > +    save_CFLAGS="$CFLAGS"
> > +    CFLAGS="-D_FORTIFY_SOURCE=2 -Werror $CFLAGS"
> > +    AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
> > +      #include <string.h>
> > +      int main() { return 0; }
> > +    ]])], [ AC_MSG_RESULT([yes])
> > +            CFLAGS="-D_FORTIFY_SOURCE=2 $save_CFLAGS" ],
> > +          [ AC_MSG_RESULT([no])
> > +            CFLAGS="$save_CFLAGS"])
> > +  ;;
> 
> why not AC_PREPROC_IFELSE and check if _FORTIFY_SOURCE is defined ?

Same reason. We need to test whether the combination of
-D_FORTIFY_SOURCE=2 and any other CFLAG/CPPFLAGS flags work or not. Just
scanning preprocessor flags won't show issues exposed by actually
compiling with a C header (string.h) to see if that errors out.

Cheers,

Mark


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]