This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[pushed] gdb: no longer define __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS (Re: [PATCH] Update gnulib to current upstream master)
- From: Pedro Alves <palves at redhat dot com>
- To: Yao Qi <qiyaoltc at gmail dot com>
- Cc: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Tue, 18 Oct 2016 23:19:49 +0100
- Subject: [pushed] gdb: no longer define __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS (Re: [PATCH] Update gnulib to current upstream master)
- Authentication-results: sourceware.org; auth=none
- References: <1476285429-24489-1-git-send-email-palves@redhat.com> <CAH=s-PNP0csuzf_EH8m9kMfrxFuUb3JPiY4ZfvKgA_s9xFWdjQ@mail.gmail.com> <0d295a85-e43a-6b6c-aef1-7f61a9ef5704@redhat.com>
On 10/12/2016 05:12 PM, Pedro Alves wrote:
> On 10/12/2016 05:09 PM, Yao Qi wrote:
>> On Wed, Oct 12, 2016 at 4:17 PM, Pedro Alves <palves@redhat.com> wrote:
>>> I tried building gdb with G++ 4.7 and CXX="g++ -std=gnu+11", and that
>>> tripped on a build error:
>>
>> GDB source requires C++03 compiler, but it should be built with recent
>> compiler with recent C++ standard.
>>
>> Patch is good to me, but let us leave this patch here for one day or two
>> for the purpose of collecting comments or objections.
>
> Related to C++11? That was that motivated the update this time,
> but we should routinely update gnulib _anyway_. This allows reverting:
>
> commit e063da67902e2ba03cfc6f7381694f4c6a72ecf4
> Author: Pedro Alves <palves@redhat.com>
> AuthorDate: Tue Nov 17 15:17:45 2015 +0000
>
> [C++] Define __STDC_CONSTANT_MACROS / __STDC_LIMIT_MACROS for stdint.h
>
> for example, since my gnulib fix has gone into master
> upstream meanwhile.
I've pushed in the gnulib merge to master now. In addition, I've
pushed in the following patch as well:
>From f6abaf7a4088dc9a5d73ee2233246347af9181d5 Mon Sep 17 00:00:00 2001
From: Pedro Alves <palves@redhat.com>
Date: Tue, 18 Oct 2016 20:48:37 +0100
Subject: [PATCH] gdb: no longer define __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS
My gnulib fix at:
https://lists.gnu.org/archive/html/bug-gnulib/2015-11/msg00010.html
was merged upstream meanwhile and our gnulib copy now includes it.
As a coincidence, Kevin was telling me today that these macros are
causing a build problem on FreeBSD:
common/common-defs.h:47:0: error: "__STDC_CONSTANT_MACROS" redefined [-Werror]
#define __STDC_CONSTANT_MACROS 1
/usr/include/sys/cdefs.h:408:0: note: this is the location of the previous definition
#define __STDC_CONSTANT_MACROS
(and a similar error for __STDC_LIMIT_MACROS)
The problem seems to be that we should be defining these input macros
before including any system header, but, we're not.
So let's just revert e063da67902e ([C++] Define __STDC_CONSTANT_MACROS
/ __STDC_LIMIT_MACROS for stdint.h). If this causes a problem
somewhere, we can re-define the macros higher up in the file, before
system headers are included.
gdb/ChangeLog:
2016-10-18 Pedro Alves <palves@redhat.com>
* common/common-defs.h (__STDC_CONSTANT_MACROS)
(__STDC_LIMIT_MACROS): Delete.
---
gdb/ChangeLog | 5 +++++
gdb/common/common-defs.h | 16 ----------------
2 files changed, 5 insertions(+), 16 deletions(-)
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 7dd1b32..80215df 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,10 @@
2016-10-18 Pedro Alves <palves@redhat.com>
+ * common/common-defs.h (__STDC_CONSTANT_MACROS)
+ (__STDC_LIMIT_MACROS): Delete.
+
+2016-10-18 Pedro Alves <palves@redhat.com>
+
* gnulib/update-gnulib.sh (GNULIB_COMMIT_SHA1): Set to
2692e23a48e21f6daa029e8af9f1a143b7532f47.
* gnulib/configure, gnulib/config.in, gnulib/aclocal.m4:
diff --git a/gdb/common/common-defs.h b/gdb/common/common-defs.h
index 5426dd5..9b5d853 100644
--- a/gdb/common/common-defs.h
+++ b/gdb/common/common-defs.h
@@ -31,23 +31,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
-
-/* From:
- https://www.gnu.org/software/gnulib/manual/html_node/stdint_002eh.html
-
- "On some hosts that predate C++11, when using C++ one must define
- __STDC_CONSTANT_MACROS to make visible the definitions of constant
- macros such as INTMAX_C, and one must define __STDC_LIMIT_MACROS to
- make visible the definitions of limit macros such as INTMAX_MAX."
-
- gnulib doesn't fix this for us correctly yet. See:
- https://lists.gnu.org/archive/html/bug-gnulib/2015-11/msg00004.html
-
- Meanwhile, explicitly define these ourselves, as C99 intended. */
-#define __STDC_CONSTANT_MACROS 1
-#define __STDC_LIMIT_MACROS 1
#include <stdint.h>
-
#include <string.h>
#ifdef HAVE_STRINGS_H
#include <strings.h> /* for strcasecmp and strncasecmp */
--
2.5.5