public inbox for cygwin@cygwin.com
 help / color / mirror / Atom feed
From: Ryan Johnson <ryan.johnson@cs.utoronto.ca>
To: cygwin@cygwin.com
Subject: Re: C++11 program link failure under GCC 4.8.2-1
Date: Tue, 12 Nov 2013 23:38:00 -0000	[thread overview]
Message-ID: <5282BBCF.9040703@cs.utoronto.ca> (raw)
In-Reply-To: <5282ABED.7040400@gmail.com>

On 12/11/2013 5:30 PM, JonY wrote:
> On 11/13/2013 02:35, Yucong Sun wrote:
>> Good new! I've found the link failure issue, it is caused by  "-rdynamic"
>>
>> sunyc@sunyc-wks ~
>> $ cat 2.cc
>> #include <deque>
>>
>> struct tick_event {
>>      int i;
>> };
>>
>> int main() {
>>      std::deque<tick_event *> list;
>>
>>      tick_event *a = new tick_event;
>>      list.push_back(a);
>>      return 0;
>> }
>>
>> sunyc@sunyc-wks ~
>> $ g++ -c --std=c++11 -O3 -flto 2.cc -o 2.o
>>
>> sunyc@sunyc-wks ~
>> $ g++ --std=c++11 -flto -D_GNU_SOURCE -rdynamic -fno-omit-frame-pointer -D_GNU_
>> SOURCE -march=native  -O3 2.o -o a
>> Cannot export _ZNSt5dequeIP10tick_eventSaIS1_EE16_M_push_back_auxIJRKS1_EEEvDpOT
>> _: symbol wrong type (4 vs 3)
>> collect2: error: ld returned 1 exit status
>>
>>
>> sunyc@sunyc-wks ~
>> $ g++ --std=c++11 -flto -D_GNU_SOURCE -fno-omit-frame-pointer -D_GNU_SOURCE -ma
>> rch=native  -O3 2.o -o a
>>
>> sunyc@sunyc-wks ~
>> $
>>
>> Hope it would help you nail the problem.
>>
> -rdynamic shouldn't do anything on Windows, I guess using ELF specific
> arguments can break things.
>> And Here's the test case for snprintf & c++11
>>
>> $ gcc -v
>> Using built-in specs.
>> COLLECT_GCC=gcc
>> COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-pc-cygwin/4.8.2/lto-wrapper.exe
>> Target: x86_64-pc-cygwin
>> Configured with: /cygdrive/i/szsz/tmpp/cygwin64/gcc/gcc-4.8.2-1/src/gcc-4.8.2/co
>> nfigure --srcdir=/cygdrive/i/szsz/tmpp/cygwin64/gcc/gcc-4.8.2-1/src/gcc-4.8.2 --
>> prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdi
>> r=/usr/libexec --datadir=/usr/share --localstatedir=/var --sysconfdir=/etc --lib
>> dir=/usr/lib --datarootdir=/usr/share --docdir=/usr/share/doc/gcc -C --build=x86
>> _64-pc-cygwin --host=x86_64-pc-cygwin --target=x86_64-pc-cygwin --without-libico
>> nv-prefix --without-libintl-prefix --enable-shared --enable-shared-libgcc --enab
>> le-static --enable-version-specific-runtime-libs --enable-bootstrap --disable-__
>> cxa_atexit --with-dwarf2 --with-tune=generic --enable-languages=c,c++,fortran,lt
>> o,objc,obj-c++ --enable-graphite --enable-threads=posix --enable-libatomic --ena
>> ble-libgomp --disable-libitm --enable-libquadmath --enable-libquadmath-support -
>> -enable-libssp --enable-libgcj-sublibs --disable-java-awt --disable-symvers --wi
>> th-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld --with-gnu-as --with-cloog-incl
>> ude=/usr/include/cloog-isl --without-libiconv-prefix --without-libintl-prefix --
>> with-system-zlib
>> Thread model: posix
>> gcc version 4.8.2 (GCC)
>>
>>
>> sunyc@sunyc-wks ~
>> $ cat 1.cc
>> #include <stdio.h>
>>
>> int main() {
>>   char out[255];
>>   snprintf(out, sizeof(out), "%d", 1);
>>   return 1;
>> }
>>
>> sunyc@sunyc-wks ~
>> $ g++ --std=c++11 1.cc
>> 1.cc: In function ‘int main()’:
>> 1.cc:5:36: error: ‘snprintf’ was not declared in this scope
>>    snprintf(out, sizeof(out), "%d", 1);
>>                                      ^
>>
>> sunyc@sunyc-wks ~
>> $ g++ --std=gnu++0x 1.cc
>>
>> sunyc@sunyc-wks ~
>> $ ls -lah a.exe
>> -rwxr-xr-x 1 sunyc None 62K Nov 12 10:21 a.exe
>>
>> Cheers.
>>
> Right now, it is guarded by:
> #if !defined(__STRICT_ANSI__) || (__STDC_VERSION__ >= 199901L)
>
> Which means non-strict mode and C99 mode, snprintf was not part of
> C++03. I guess (__cplusplus >= 201103L) needs to be added to newlib.
Yes, this has come up before [1]. Several *printf variants are affected 
IIRC.

[1] http://cygwin.com/ml/cygwin/2012-04/msg00140.html

Ryan


--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

  reply	other threads:[~2013-11-12 23:38 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-11 21:17 Yucong Sun
     [not found] ` <52815780.2010006@gmail.com>
2013-11-11 22:28   ` JonY
2013-11-11 23:38     ` Yucong Sun
2013-11-12  2:34       ` Yucong Sun
2013-11-12  2:38         ` Yucong Sun
2013-11-12  9:46         ` JonY
2013-11-12 18:35           ` Yucong Sun
2013-11-12 22:30             ` JonY
2013-11-12 23:38               ` Ryan Johnson [this message]
2013-11-12 23:51                 ` Yucong Sun
2013-11-13  9:15                 ` Corinna Vinschen
2013-11-13 14:01                   ` Christopher Faylor
2013-11-13 15:19                     ` Corinna Vinschen
2013-11-13 15:51                       ` Christopher Faylor
2014-03-12 21:05             ` zosrothko
2013-11-12  9:44       ` JonY

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5282BBCF.9040703@cs.utoronto.ca \
    --to=ryan.johnson@cs.utoronto.ca \
    --cc=cygwin@cygwin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).