delorie.com/archives/browse.cgi | search |
X-Recipient: | archive-cygwin AT delorie DOT com |
DomainKey-Signature: | a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:mime-version:in-reply-to:references:from:date | |
:message-id:subject:to:content-type:content-transfer-encoding; | |
q=dns; s=default; b=CG4Lh6fUMQxPYvvWxdpvmgw3MtTF0o80yp0fdEHRG5Y | |
36pchqsRgIcNww3i4YEns6aUQcykBCQFY7btadURQ9bYixvz7F7WvzsmedruCe98 | |
L6wSajY3kJKpQxu2xuU5Q6K3tfP/UxHgEm+vkhOG2ByAA2dMyqkGKBOrBZrYufPQ | |
= | |
DKIM-Signature: | v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id |
:list-unsubscribe:list-subscribe:list-archive:list-post | |
:list-help:sender:mime-version:in-reply-to:references:from:date | |
:message-id:subject:to:content-type:content-transfer-encoding; | |
s=default; bh=ZFKznkm0h+2wmHp5KNwV9ECyhuo=; b=qEJrx/zg5ca2ZTEsR | |
fItU1EUBnNT0QeR2EZQpZQdh4qp/wThj3VI0R9yuYandLMER46SNUKQEPq2clc3k | |
hF8k6nzYZUztvvytQx/YLZWn6ImLwcbBR+DPcAQSt8ycuo/jLcNWDc6ZYmK+fmJk | |
cY/5yM9t8vB0T2ygAomKXN4p9o= | |
Mailing-List: | contact cygwin-help AT cygwin DOT com; run by ezmlm |
List-Id: | <cygwin.cygwin.com> |
List-Subscribe: | <mailto:cygwin-subscribe AT cygwin DOT com> |
List-Archive: | <http://sourceware.org/ml/cygwin/> |
List-Post: | <mailto:cygwin AT cygwin DOT com> |
List-Help: | <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs> |
Sender: | cygwin-owner AT cygwin DOT com |
Mail-Followup-To: | cygwin AT cygwin DOT com |
Delivered-To: | mailing list cygwin AT cygwin DOT com |
Authentication-Results: | sourceware.org; auth=none |
X-Virus-Found: | No |
X-Spam-SWARE-Status: | No, score=2.8 required=5.0 tests=AWL,BAYES_99,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RDNS_NONE,SPF_PASS,URIBL_BLOCKED autolearn=no version=3.3.2 |
X-HELO: | mail-ob0-f175.google.com |
X-Received: | by 10.182.131.196 with SMTP id oo4mr12540876obb.50.1384300280923; Tue, 12 Nov 2013 15:51:20 -0800 (PST) |
MIME-Version: | 1.0 |
In-Reply-To: | <5282BBCF.9040703@cs.utoronto.ca> |
References: | <CAJygYd3KQEhdFBAYO4ONumf=FMvjH1fuiqa4b2F0XGLPBNv2Hw AT mail DOT gmail DOT com> <52815780 DOT 2010006 AT gmail DOT com> <528159F8 DOT 2070307 AT gmail DOT com> <CAJygYd2H7tyjE73=EK2hdo2ZPvWtziU8sUkbgbo5crBtP3JRHQ AT mail DOT gmail DOT com> <CAJygYd2UqXD3e-iguMUB1FUNDmCVmC5D7b1=zHqMVs1kJ8-+qw AT mail DOT gmail DOT com> <5281F8D4 DOT 4090809 AT gmail DOT com> <CAJygYd2TZkAnOFf67TEuQd0_V9Sgz8ZaZwVrVH6tusxRni-r3A AT mail DOT gmail DOT com> <5282ABED DOT 7040400 AT gmail DOT com> <5282BBCF DOT 9040703 AT cs DOT utoronto DOT ca> |
From: | Yucong Sun <sunyucong AT gmail DOT com> |
Date: | Tue, 12 Nov 2013 15:51:00 -0800 |
Message-ID: | <CAJygYd0MuSgb+WYk0q+EAarXcNp=PNLQCQOmpmx0VreZ3EFBuw@mail.gmail.com> |
Subject: | Re: C++11 program link failure under GCC 4.8.2-1 |
To: | cygwin <cygwin AT cygwin DOT com> |
X-IsSubscribed: | yes |
X-MIME-Autoconverted: | from quoted-printable to 8bit by delorie.com id rACNpxxc025328 |
That's what lead me to use gnu++0x instead. For -rdynamic, apparently it would work for some simple c++ program, just not those with new c++11 features. It would be nice to fix it. Cheers. On Tue, Nov 12, 2013 at 3:37 PM, Ryan Johnson <ryan DOT johnson AT cs DOT utoronto DOT ca> wrote: > 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 AT 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 AT sunyc-wks ~ >>> $ g++ -c --std=c++11 -O3 -flto 2.cc -o 2.o >>> >>> sunyc AT 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 AT 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 AT 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 AT sunyc-wks ~ >>> $ cat 1.cc >>> #include <stdio.h> >>> >>> int main() { >>> char out[255]; >>> snprintf(out, sizeof(out), "%d", 1); >>> return 1; >>> } >>> >>> sunyc AT 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 AT sunyc-wks ~ >>> $ g++ --std=gnu++0x 1.cc >>> >>> sunyc AT 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 > -- 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
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |