pgsql: Disable _FORTIFY_SOURCE with ICC

Started by Peter Eisentrautover 13 years ago8 messages
#1Peter Eisentraut
peter_e@gmx.net

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(-)

#2Peter Geoghegan
peter@2ndquadrant.com
In reply to: Peter Eisentraut (#1)
Re: pgsql: Disable _FORTIFY_SOURCE with ICC

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

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Peter Geoghegan (#2)
Re: pgsql: Disable _FORTIFY_SOURCE with ICC

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)

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#3)
Re: [COMMITTERS] pgsql: Disable _FORTIFY_SOURCE with ICC

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

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#4)
Re: [COMMITTERS] pgsql: Disable _FORTIFY_SOURCE with ICC

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

#6Peter Geoghegan
peter@2ndquadrant.com
In reply to: Tom Lane (#5)
1 attachment(s)
Re: [COMMITTERS] pgsql: Disable _FORTIFY_SOURCE with ICC

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 ----
#7Peter Geoghegan
peter@2ndquadrant.com
In reply to: Peter Geoghegan (#6)
Re: [COMMITTERS] pgsql: Disable _FORTIFY_SOURCE with ICC

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

#8Peter Eisentraut
peter_e@gmx.net
In reply to: Peter Geoghegan (#7)
Re: [COMMITTERS] pgsql: Disable _FORTIFY_SOURCE with ICC

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.