Bug 1318878

Summary: Per C11 and C++11, <stdint.h> should not look at __STDC_LIMIT_MACROS or __STDC_CONSTANT_MACROS
Product: Red Hat Developer Toolset Reporter: Frank Hirtz <fhirtz>
Component: gccAssignee: Jakub Jelinek <jakub>
Status: CLOSED NOTABUG QA Contact: Martin Cermak <mcermak>
Severity: low Docs Contact:
Priority: unspecified    
Version: DTS 4.0 RHEL 7CC: ashankar, codonell, fweimer, law, mcermak, mnewsome, mpolacek, pfrankli, qe-baseos-tools-bugs
Target Milestone: rc   
Target Release: 5.0   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1318877 Environment:
Last Closed: 2018-01-30 14:50:49 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1318877    
Bug Blocks:    

Description Frank Hirtz 2016-03-18 03:03:11 UTC
+++ This bug was initially created as a clone of Bug #1318877 +++

Description of problem:

A client requested that we backport the following header fix:

<snip>
glibc's <stdint.h> follows C99, which says that in C++, certain macros should only be defined if __STDC_LIMIT_MACROS or __STDC_CONSTANT_MACROS is defined. However, the C++ committee decided that they didn't want this behavior, and explicitly overruled this in the C++11 standard (the first to provide <stdint.h>). Consequently C11 removed these rules. glibc has not been updated to follow the C11 rules, and still checks for those macros being defined in C++ mode.

C++ implementations are currently working around this by wrapping glibc's <stdint.h> with one which defines these macros first. These workarounds should not be necessary; glibc should simply not be checking for these macros. Fix would be to remove these lines from sysdeps/generic/stdint.h:

/* The ISO C99 standard specifies that in C++ implementations these
   macros should only be defined if explicitly requested.  */
#if !defined __cplusplus || defined __STDC_LIMIT_MACROS

... plus the corresponding #endif and the corresponding lines for __STDC_CONSTANT_MACROS.
</snip>

Reference:
https://sourceware.org/bugzilla/show_bug.cgi?id=15366

Version-Release number of selected component (if applicable):
glibc-headers-2.17-106.el7_2.4

Comment 1 Carlos O'Donell 2016-03-20 14:41:09 UTC
See comment here: https://bugzilla.redhat.com/show_bug.cgi?id=1318877#c1

Switching to Developer Toolset.