tools/lib/lk: redefinition of _FORTIFY_SOURCE (gcc-4.7.2)

Dirk Gouders
2013-05-22T10:01:07Z

Hello Borislav,

I am having problems with building liblk, but opposed to the recent
problem that Jiri noticed (commit b28b130719af6 Fix _FORTIFY_SOURCE
builds) I am getting errors because _FORTIFY_SOURCE is redefined:

<command-line>:0:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
debugfs.c:1:0: note: this is the location of the previous definition
cc1: all warnings being treated as errors

I guess this is because of different gcc versions being in use.
With gcc-4.7.2 _FORTIFY_SOURCE is defined as

$ gcc -E -dM - < /dev/null | grep -i fortify
#define _FORTIFY_SOURCE ((defined __OPTIMIZE__ && __OPTIMIZE__ > 0) ? 2 : 0)

gcc-4.6.4 uses

#define _FORTIFY_SOURCE 2

and would complain if we set _FORTIFY_SOURCE to something other than 2.

gcc-4.2.2 seems to use no definition of _FORTIFY_SOURCE, by default.

What probably might help in any case is undefining _FORTIFY_SOURCE before
defining it, because as far as I know, there is no problem with
undefining something that is not yet defined, but I could imagine,
others might have more elegant suggestions:

CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC

Dirk