pgsql: Disable _FORTIFY_SOURCE with ICC
Disable _FORTIFY_SOURCE with ICC
There are apparently some incompatibilities, per buildfarm.
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/97ec9621572054be96b0447395f5fa2438a4d6cb
Modified Files
--------------
src/template/linux | 7 +++++--
1 files changed, 5 insertions(+), 2 deletions(-)
On 30 September 2012 01:07, Peter Eisentraut <peter_e@gmx.net> wrote:
Disable _FORTIFY_SOURCE with ICC
I'm having some problems of my own with this. Specifically:
gcc -O0 -g -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels
-Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
-fwrapv -fexcess-precision=standard -g -I../../src/port -DFRONTEND
-I../../src/include -D_GNU_SOURCE -D_FORTIFY_SOURCE=2
-I/usr/include/libxml2 -c -o qsort.o qsort.c -MMD -MP -MF
.deps/qsort.Po
In file included from /usr/include/stdio.h:28:0,
from ../../src/include/c.h:67,
from qsort.c:46:
/usr/include/features.h:314:4: warning: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Wcpp]
...
[peter@peterlaptop port]$ gcc --version
gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2)
...
--
Peter Geoghegan http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services
On Tue, 2012-10-02 at 17:05 +0100, Peter Geoghegan wrote:
On 30 September 2012 01:07, Peter Eisentraut <peter_e@gmx.net> wrote:
Disable _FORTIFY_SOURCE with ICC
I'm having some problems of my own with this. Specifically:
gcc -O0 -g -Wall -Wmissing-prototypes -Wpointer-arith
-Wdeclaration-after-statement -Wendif-labels
-Wmissing-format-attribute -Wformat-security -fno-strict-aliasing
-fwrapv -fexcess-precision=standard -g -I../../src/port -DFRONTEND
-I../../src/include -D_GNU_SOURCE -D_FORTIFY_SOURCE=2
-I/usr/include/libxml2 -c -o qsort.o qsort.c -MMD -MP -MF
.deps/qsort.Po
In file included from /usr/include/stdio.h:28:0,
from ../../src/include/c.h:67,
from qsort.c:46:
/usr/include/features.h:314:4: warning: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Wcpp]
...
[peter@peterlaptop port]$ gcc --version
gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2)
...
Which glibc version is this? (Run /lib/libc.so)
Peter Eisentraut <peter_e@gmx.net> writes:
On Tue, 2012-10-02 at 17:05 +0100, Peter Geoghegan wrote:
/usr/include/features.h:314:4: warning: #warning _FORTIFY_SOURCE
requires compiling with optimization (-O) [-Wcpp]
Which glibc version is this? (Run /lib/libc.so)
I've seen this warning in recent Fedora builds, though not on my F16
production box. Some googling suggests the locution
#if __OPTIMIZE__
#define _FORTIFY_SOURCE 2
#endif
but I've not tested that.
regards, tom lane
I wrote:
I've seen this warning in recent Fedora builds, though not on my F16
production box. Some googling suggests the locution
#if __OPTIMIZE__
#define _FORTIFY_SOURCE 2
#endif
but I've not tested that.
A bit later: testing on an F17 box (glibc-2.15-56.fc17.x86_64)
confirms Peter G's complaint, and also confirms that putting
the above into port/linux.h (instead of the template file) fixes the
problem. Don't know how to disable it on ICC, but I suppose there's
some way to test for ICC via an #if.
regards, tom lane
On 5 October 2012 04:37, Tom Lane <tgl@sss.pgh.pa.us> wrote:
A bit later: testing on an F17 box (glibc-2.15-56.fc17.x86_64)
confirms Peter G's complaint, and also confirms that putting
the above into port/linux.h (instead of the template file) fixes the
problem. Don't know how to disable it on ICC, but I suppose there's
some way to test for ICC via an #if.
I was using F17 + glibc 2.15 too.
http://www.acsu.buffalo.edu/~charngda/icc.html indicates that ICC
defines a macro __ICC, which evaluates to an integer constant
representing the ICC version numbers. I guess that that particular
source isn't very trustworthy, but that's what we have a build farm
for.
Small patch that hopefully fixes everything for everyone is attached.
However, when I build at -O2 with the system GCC (on the same F17 box
with no changes to CFLAGS; just "./configure --with-libxml
--prefix=/home/peter/pgsql --enable-depend") this patch (when applied
to today's master) sees the following warnings raised:
zic.c: In function ‘writezone’:
zic.c:1752:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1753:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1754:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1755:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1756:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1757:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1758:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1759:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1760:3: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1772:4: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c:1785:4: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c: In function ‘puttzcode64’:
zic.c:1514:2: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
zic.c: In function ‘puttzcode’:
zic.c:1505:2: warning: ignoring return value of ‘fwrite’, declared
with attribute warn_unused_result [-Wunused-result]
In file included from gram.y:13502:0:
scan.c: In function ‘yy_try_NUL_trans’:
scan.c:16247:23: warning: unused variable ‘yyg’ [-Wunused-variable]
--
Peter Geoghegan http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services
Attachments:
fortify_source_fix.2012_10_08.patchapplication/octet-stream; name=fortify_source_fix.2012_10_08.patchDownload
diff src/include/port/linux.h
index bcaa42d..f4bf277
*** a/src/include/port/linux.h
--- b/src/include/port/linux.h
***************
*** 20,22 ****
--- 20,30 ----
* filesystems, because those don't support O_DIRECT.
*/
#define PLATFORM_DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
+
+ /*
+ * Many distributors use this, so we might as well see the warnings as
+ * well. ICC doesn't work when this is enabled.
+ */
+ #if !defined(__ICC) && __OPTIMIZE__
+ #define _FORTIFY_SOURCE 2
+ #endif
diff src/template/linux
index fd509d9..3eb5ad2
*** a/src/template/linux
--- b/src/template/linux
***************
*** 3,14 ****
# Force _GNU_SOURCE on; plperl is broken with Perl 5.8.0 otherwise
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
- # Many distributors use this, so we might as well see the warnings as
- # well. ICC doesn't work when this is enabled.
- if test "$ICC" != "yes"; then
- CPPFLAGS="$CPPFLAGS -D_FORTIFY_SOURCE=2"
- fi
-
# If --enable-profiling is specified, we need -DLINUX_PROFILE
PLATFORM_PROFILE_FLAGS="-DLINUX_PROFILE"
--- 3,8 ----
On 8 October 2012 14:39, Peter Geoghegan <peter@2ndquadrant.com> wrote:
Small patch that hopefully fixes everything for everyone is attached.
Will someone take a look at this, please?
--
Peter Geoghegan http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training and Services
On Wed, 2012-10-10 at 11:29 +0100, Peter Geoghegan wrote:
On 8 October 2012 14:39, Peter Geoghegan <peter@2ndquadrant.com> wrote:
Small patch that hopefully fixes everything for everyone is attached.
Will someone take a look at this, please?
I've removed it. It had too many problems.