[binutils-gdb] Fix PR gdb/23835: Don't redefine _FORTIFY_SOURCE if it's already defined

Sergio Durigan Junior sergiodj@sourceware.org
Wed Oct 31 21:43:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=656efb5e2691b2bd29573d9985d20206c47b6927

commit 656efb5e2691b2bd29573d9985d20206c47b6927
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date:   Tue Oct 30 17:37:03 2018 -0400

    Fix PR gdb/23835: Don't redefine _FORTIFY_SOURCE if it's already defined
    
    Gentoo has a local GCC patch which always defines _FORTIFY_SOURCE=2.
    This causes a build problem when building GDB there, because
    "common/common-defs.h" also defines _FORTIFY_SOURCE=2:
    
        CXX    gdb.o
      In file included from ../../gdb/defs.h:28:0,
    		   from ../../gdb/gdb.c:19:
      ../../gdb/common/common-defs.h:71:0: error: "_FORTIFY_SOURCE" redefined [-Werror]
       #define _FORTIFY_SOURCE 2
    
      <built-in>: note: this is the location of the previous definition
      cc1plus: all warnings being treated as errors
      make[2]: *** [Makefile:1619: gdb.o] Error 1
    
    Even though it is questionable whether Gentoo's approach is the
    correct one:
    
      https://jira.mongodb.org/browse/SERVER-29982
      https://bugs.gentoo.org/621036
    
    it is still possible for GDB to be a bit more robust here and make
    sure it just defines _FORTIFY_SOURCE if it hasn't been defined
    already.  This patch does that.
    
    Tested by rebuilding and making sure the macro was defined.
    
    gdb/ChangeLog:
    2018-10-31  Sergio Durigan Junior  <sergiodj@redhat.com>
    
    	PR gdb/23835
    	* common/common-defs.h: Don't redefine _FORTIFY_SOURCE if it's
    	already defined.

Diff:
---
 gdb/ChangeLog            | 6 ++++++
 gdb/common/common-defs.h | 5 +++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 112785e..6d9816e 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2018-10-31  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	PR gdb/23835
+	* common/common-defs.h: Don't redefine _FORTIFY_SOURCE if it's
+	already defined.
+
 2018-10-31  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
 
 	* ppc-linux-nat.c: Include nat/linux-ptrace.h.
diff --git a/gdb/common/common-defs.h b/gdb/common/common-defs.h
index 58445b1..86f7c1a 100644
--- a/gdb/common/common-defs.h
+++ b/gdb/common/common-defs.h
@@ -65,9 +65,10 @@
    enable it here in order to try to catch these problems earlier;
    plus this seems like a reasonable safety measure.  The check for
    optimization is required because _FORTIFY_SOURCE only works when
-   optimization is enabled.  */
+   optimization is enabled.  If _FORTIFY_SOURCE is already defined,
+   then we don't do anything.  */
 
-#if defined __OPTIMIZE__ && __OPTIMIZE__ > 0
+#if !defined _FORTIFY_SOURCE && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
 #define _FORTIFY_SOURCE 2
 #endif



More information about the Gdb-cvs mailing list