No description
Find a file
Pedro Alves e063da6790 [C++] Define __STDC_CONSTANT_MACROS / __STDC_LIMIT_MACROS for stdint.h
With some toolchains, building in C++ mode stumbles on many instances
of:

 In file included from ../../src/gdb/../include/splay-tree.h:43:0,
                  from ../../src/gdb/dcache.c:26:
 build-gnulib/import/inttypes.h:61:3: error: #error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
  # error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
    ^
 make: *** [dcache.o] Error 1

That's:

 #if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX)
 # error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
 #endif

I see it when cross building for --host=x86_64-w64-mingw32 using
Fedora 20's g++ (gcc version 4.8.4 20141219 (Fedora MinGW
4.8.4-1.fc20)), Simon reports seeing this on several cross compilers
too.

The issue is that on some hosts that predate C++11, when using C++ one
must define __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS to make visible
the definitions of INTMAX_C / INTMAX_MAX etc.

This was a C99 requirement that later C++11 -- the first to define
stdint.h -- removed, and then C11 removed it as well.

https://www.gnu.org/software/gnulib/manual/html_node/stdint_002eh.html
says that gnulib's stdint.h fixes this, but because we run gnulib's
configure tests with a C compiler, gnulib determines that mingw's
stdint.h is C99-compliant, and doesn't actually replace it.  Actually,
even though configuring gnulib with a C++ compiler does result in
gnulib replacing stdint.h, the resulting replacement is broken for
mingw, because it defines uintptr_t incorrectly.  I sent a gnulib
patch upstream to fix that, here:

  https://lists.gnu.org/archive/html/bug-gnulib/2015-11/msg00004.html

but then even with that, gnulib still stumbles on other
configured-with-C++-compiler problems.

So for now, until gnulib + C++ is fixed upstream and then gdb's copy
is updated, which may take a while, I think it's best to keep
configuring gnulib in C, and define
__STDC_LIMIT_MACROS/__STDC_CONSTANT_MACROS ourselves, just like C99
intended.

gdb/ChangeLog:
2015-11-17  Pedro Alves  <palves@redhat.com>

	* common/common-defs.h (__STDC_CONSTANT_MACROS)
	(__STDC_LIMIT_MACROS): Define before including stdint.h.
2015-11-17 15:22:16 +00:00
bfd Fix a problematic message with the STM32L4XX fixup on 32-bit hosts. 2015-11-17 11:37:14 +00:00
binutils Bump version to 2.26.51 2015-11-14 16:24:39 -08:00
config Missing parts of fixes for in-tree libiconv 2015-08-24 10:57:03 +01:00
cpu Remove leading/trailing white spaces in ChangeLog 2015-07-24 04:16:47 -07:00
elfcpp Add assembler, disassembler and linker support for power9. 2015-11-11 19:52:52 -06:00
etc
gas gas: microblaze: fix shift overflow 2015-11-16 23:21:39 -05:00
gdb [C++] Define __STDC_CONSTANT_MACROS / __STDC_LIMIT_MACROS for stdint.h 2015-11-17 15:22:16 +00:00
gold Fix problem where bss symbols for copy relocations are marked local. 2015-11-14 11:04:01 -08:00
gprof Bump version to 2.26.51 2015-11-14 16:24:39 -08:00
include Mach-O: add new defines and struct for darwin 14.5 2015-11-17 15:03:25 +01:00
intl Regen intl/configure 2015-08-31 12:53:36 +09:30
ld Fixes an invalid warning about memory region overflow on the ARM. 2015-11-16 14:21:28 +00:00
libdecnumber Remove leading/trailing white spaces in ChangeLog 2015-07-24 04:16:47 -07:00
libiberty Configury changes for obstack optimization 2015-11-09 15:21:50 +10:30
opcodes Fix the disassembly of conditional instructions will illegal condition selections. 2015-11-17 11:37:14 +00:00
readline Revert "Sync readline/ to version 7.0 alpha" 2015-07-25 15:57:00 -04:00
sim sim: sim-close: use XCONCAT2 helper 2015-11-17 00:48:07 -05:00
texinfo
zlib Remove leading/trailing white spaces in ChangeLog 2015-07-24 04:16:47 -07:00
.cvsignore
.gitattributes
.gitignore
ChangeLog Reset x86 Linux targets to not compressing debug sections by default. Enable compression of debug sections by default in the linker, if so configured. 2015-10-21 13:15:39 +01:00
compile
config-ml.in Sync toplevel files with GCC 2015-07-27 07:49:05 -07:00
config.guess Sync config.sub and config.guess with GCC 2015-08-07 07:51:39 -07:00
config.rpath
config.sub Sync config.sub and config.guess with GCC 2015-08-07 07:51:39 -07:00
configure Reset x86 Linux targets to not compressing debug sections by default. Enable compression of debug sections by default in the linker, if so configured. 2015-10-21 13:15:39 +01:00
configure.ac Reset x86 Linux targets to not compressing debug sections by default. Enable compression of debug sections by default in the linker, if so configured. 2015-10-21 13:15:39 +01:00
COPYING
COPYING.LIB
COPYING.LIBGLOSS
COPYING.NEWLIB
COPYING3
COPYING3.LIB
depcomp
djunpack.bat
install-sh
libtool.m4
ltgcc.m4
ltmain.sh
ltoptions.m4
ltsugar.m4
ltversion.m4
lt~obsolete.m4
MAINTAINERS
Makefile.def Resync files in the binutils repository that are maintained in the gcc repository. 2015-09-30 17:55:16 +01:00
Makefile.in Resync files in the binutils repository that are maintained in the gcc repository. 2015-09-30 17:55:16 +01:00
Makefile.tpl Sync Makefile.tpl with GCC 2015-07-14 09:52:36 -07:00
makefile.vms
missing
mkdep
mkinstalldirs
move-if-change
README
README-maintainer-mode
setup.com
src-release.sh
symlink-tree
ylwrap

		   README for GNU development tools

This directory contains various GNU compilers, assemblers, linkers, 
debuggers, etc., plus their support routines, definitions, and documentation.

If you are receiving this as part of a GDB release, see the file gdb/README.
If with a binutils release, see binutils/README;  if with a libg++ release,
see libg++/README, etc.  That'll give you info about this
package -- supported targets, how to use it, how to report bugs, etc.

It is now possible to automatically configure and build a variety of
tools with one command.  To build all of the tools contained herein,
run the ``configure'' script here, e.g.:

	./configure 
	make

To install them (by default in /usr/local/bin, /usr/local/lib, etc),
then do:
	make install

(If the configure script can't determine your type of computer, give it
the name as an argument, for instance ``./configure sun4''.  You can
use the script ``config.sub'' to test whether a name is recognized; if
it is, config.sub translates it to a triplet specifying CPU, vendor,
and OS.)

If you have more than one compiler on your system, it is often best to
explicitly set CC in the environment before running configure, and to
also set CC when running make.  For example (assuming sh/bash/ksh):

	CC=gcc ./configure
	make

A similar example using csh:

	setenv CC gcc
	./configure
	make

Much of the code and documentation enclosed is copyright by
the Free Software Foundation, Inc.  See the file COPYING or
COPYING.LIB in the various directories, for a description of the
GNU General Public License terms under which you can copy the files.

REPORTING BUGS: Again, see gdb/README, binutils/README, etc., for info
on where and how to report problems.