This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libitm/61164] New: GCC 4.9.0 fails to build libitm with fortification enabled


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61164

            Bug ID: 61164
           Summary: GCC 4.9.0 fails to build libitm with fortification
                    enabled
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libitm
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rhill at gentoo dot org

We enable -D_FORTIFY_SOURCE=2 by default, but with 4.9.0 we're encountering an
error while building libitm.  It can be reproduced without modifying the
compiler by configuring with:

CXXFLAGS="-O2 -g -D_FORTIFY_SOURCE=2" ../dist/gcc/gcc-4.9.0/configure
--enable-languages=c,c++ --disable-werror --disable-bootstrap

The error is:

libtool: compile:  /home/dirtyepic/build/./gcc/xg++
-B/home/dirtyepic/build/./gcc/ -nostdinc++ -nostdinc++
-I/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/x86_64-unknown-linux-gnu
-I/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/include
-I/home/dirtyepic/dist/gcc/gcc-4.9.0/libstdc++-v3/libsupc++
-I/home/dirtyepic/dist/gcc/gcc-4.9.0/libstdc++-v3/include/backward
-I/home/dirtyepic/dist/gcc/gcc-4.9.0/libstdc++-v3/testsuite/util
-L/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/src
-L/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs
-L/home/dirtyepic/build/x86_64-unknown-linux-gnu/libstdc++-v3/libsupc++/.libs
-B/usr/local/x86_64-unknown-linux-gnu/bin/
-B/usr/local/x86_64-unknown-linux-gnu/lib/ -isystem
/usr/local/x86_64-unknown-linux-gnu/include -isystem
/usr/local/x86_64-unknown-linux-gnu/sys-include -DHAVE_CONFIG_H -I.
-I../../../dist/gcc/gcc-4.9.0/libitm
-I../../../dist/gcc/gcc-4.9.0/libitm/config/linux/x86
-I../../../dist/gcc/gcc-4.9.0/libitm/config/linux
-I../../../dist/gcc/gcc-4.9.0/libitm/config/x86
-I../../../dist/gcc/gcc-4.9.0/libitm/config/posix
-I../../../dist/gcc/gcc-4.9.0/libitm/config/generic
-I../../../dist/gcc/gcc-4.9.0/libitm -mrtm -Wall -pthread -Werror -std=gnu++0x
-funwind-tables -fno-exceptions -fno-rtti -fabi-version=4 -O2 -g
-D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -MT util.lo -MD -MP -MF .deps/util.Tpo -c
../../../dist/gcc/gcc-4.9.0/libitm/util.cc  -fPIC -DPIC -o .libs/util.o

In file included from /usr/include/stdio.h:937:0,
                 from ../../../dist/gcc/gcc-4.9.0/libitm/util.cc:27:
/usr/include/bits/stdio2.h: In function âvoid GTM::gtm_verror(const char*,
__va_list_tag*)â:
/usr/include/bits/stdio2.h:124:1: error: inlining failed in call to
always_inline âint vfprintf(FILE*, const char*, __va_list_tag*)â: function body
can be overwritten at link time
 vfprintf (FILE *__restrict __stream,
 ^
../../../dist/gcc/gcc-4.9.0/libitm/util.cc:35:31: error: called from here
   vfprintf (stderr, fmt, list);
                               ^

Comparing the preprocessor output for util.cc and a couple other C++ files that
use vfprintf the most obvious difference is the declaration is missing
__inline, ie.

extern __attribute__((always_inline)) __attribute__ ((__gnu_inline__))
__attribute__ ((__artificial__)) int vfprintf

instead of

extern __inline __attribute__ ((__always_inline__)) __attribute__
((__gnu_inline__)) __attribute__ ((__artificial__)) int vfprintf

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]