From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kris Thielemans" To: "Gnuwin" Cc: Subject: RE: problem with dynamic_cast Date: Fri, 08 Sep 2000 04:48:00 -0000 Message-id: <001e01c0198a$4ab4fb90$460a10ac@petnt1.rpms.ac.uk> References: <20000907120122.A22331@cygnus.com> X-SW-Source: 2000-09/msg00290.html Content-type: multipart/mixed; boundary="----------=_1583532720-65106-121" This is a multi-part message in MIME format... ------------=_1583532720-65106-121 Content-length: 3175 > -----Original Message----- > From: Chris Faylor [ mailto:cgf@cygnus.com ] > Sent: 07 September 2000 17:01 > To: Gnuwin > Cc: kris.thielemans@csc.mrc.ac.uk > Subject: Re: problem with dynamic_cast > > > This is a c++ problem. You should probably report this to a c++ > mailing list. I doubt it really, but I send this to a C++ mailing list anyway. I've been able to boil it down to something really simple. If the latest gcc distribution is that broken, we're all in trouble. Summarising: in cygwin 1.1.4, or the gcc (or ld) distributed with it (I've installed 1.1.4 yesterday), there is a conflict with using RTTI and using the math library. Attached is a VERY simple C++ program that uses RTTI, but nothing else. Compile it with g++ dynamic_cast.cxx -lm When you run it, it crashes in the dynamic_cast statement. On the other hand, compile it with g++ dynamic_cast.cxx -> it runs fine (i.e. does essentially nothing). More details: I'm running NT 4.0 sp5 and cygwin 1.1.4. screendump of running g++ -v: $ g++ dynamic_cast.cxx -lm -v Reading specs from /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2/specs gcc version 2.95.2 19991024 (release-2) /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2/cpp.exe -lang-c++ -v -D__GNUC__=2 -D_ _GN UG__=2 -D__GNUC_MINOR__=95 -D__cplusplus -Di386 -D_X86=1 -D__STDC__=1 -D__st dcal l=__attribute__((__stdcall__)) -D__cdecl=__attribute__((__cdecl__)) -D__decl spec (x)=__attribute__((x)) -D__i386__ -D_X86=1 -D__STDC__=1 -D__stdcall=__attrib ute_ _((__stdcall__)) -D__cdecl=__attribute__((__cdecl__)) -D__declspec(x)=__attr ibut e__((x)) -D__i386 -Asystem(winnt) -Acpu(i386) -Amachine(i386) -D__EXCEPTIONS -re map -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di686 -Dpentiump ro - D__i686 -D__i686__ -D__pentiumpro -D__pentiumpro__ -D__CYGWIN32__ -D__CYGWIN __ - Dunix -D_WIN32 -DWINNT dynamic_cast.cxx /cygdrive/c/TMP/ccpF3zVU.ii GNU CPP version 2.95.2 19991024 (release-2) (80386, BSD syntax) #include "..." search starts here: #include <...> search starts here: /usr/include /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2/../../../../include/g++-3 /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2/../../../../include /usr/include /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2/include /usr/include End of search list. The following default directories have been omitted from the search path: /usr/include/g++ /usr/X11R6.4/include /usr/local/include End of omitted list. /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2/cc1plus.exe /cygdrive/c/TMP/ccpF3zVU.ii -quiet -dumpbase dynamic_cast.cc -version -o /cygdrive/c/TMP/ccKbIuaN.s GNU C++ version 2.95.2 19991024 (release-2) (i686-pc-cygwin) compiled by GNU C v ersion 2.95.2 19991024 (release-2). as -o /cygdrive/c/TMP/cc7g2nmV.o /cygdrive/c/TMP/ccKbIuaN.s /usr/lib/gcc-lib/i686-pc-cygwin/2.95.2/collect2.exe -Bdynamic /usr/lib/crt0.o - L/usr/lib/gcc-lib/i686-pc-cygwin/2.95.2 /cygdrive/c/TMP/cc7g2nmV.o -lstdc++ -lm -lgcc -lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32 -lgcc ld.dump attached is a screendump from running ld --verbose explicitly, after removing as much libraries and options I could, while still reproducing the crash. gdb.dump is a screendump from running gdb on the file ------------=_1583532720-65106-121 Content-Type: text/x-c++; charset=us-ascii; name="dynamic_cast.cxx" Content-Disposition: inline; filename="dynamic_cast.cxx" Content-Transfer-Encoding: base64 Content-Length: 448 CmNsYXNzIEEKeyAKcHVibGljOgogIGludCBhOwogIHZpcnR1YWwgfkEoKSB7 fQp9OwoKY2xhc3MgQiA6IHB1YmxpYyBBCnsgCnB1YmxpYzoKICBpbnQgYjsK fTsKCgpjbGFzcyBDIDogcHVibGljIEIKeyAKcHVibGljOgogIGludCBjOwp9 OwoKaW50IGYoY29uc3QgQSogYXB0cikKewoKICBpZiAoY29uc3QgQiogYnB0 ciA9CiAgICAgIGR5bmFtaWNfY2FzdDxjb25zdCBCICo+KGFwdHIpKQogICAg ewogICAgICByZXR1cm4gMDsKICAgIH0KICBlbHNlCiAgewogICAgcmV0dXJu IDE7CiAgfQoKICAgIAp9CgppbnQgbWFpbigpCnsKCiAgQyBjOwoKICByZXR1 cm4gZigmYyk7Cgp9Cg== ------------=_1583532720-65106-121 Content-Type: text/plain; charset=us-ascii; name="gdb.dump" Content-Disposition: inline; filename="gdb.dump" Content-Transfer-Encoding: base64 Content-Length: 1249 KGdkYikgcgpTdGFydGluZyBwcm9ncmFtOiAvaG9tZS9rcmlzL0MrKy90ZXN0 LWdjYy9hLmV4ZQoKUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHU0VHViwg U2VnbWVudGF0aW9uIGZhdWx0LgoweDgwZDAgaW4gPz8gKCkKKGdkYikgaW5m byBzdGFjawojMCAgMHg4MGQwIGluID8/ICgpCiMxICAweDQwMjA1NCBpbiBf X3NpX3R5cGVfaW5mbzo6ZGNhc3QgKHRoaXM9MHg0MDcwZjQsIHRvPUAweDQw NzBlNCwKICAgIHJlcXVpcmVfcHVibGljPTEsIGFkZHI9MHgyNDFmZDkwLCBz dWI9MHg0MDcwZDQsIHN1YnB0cj0weDI0MWZkOTApCiAgICBhdCAvY3lnbnVz L25ldHJlbC9zcmMvZ2NjLTIuOTUuMi0yL2djYy9jcC90aW5mby5jYzo3Ngoj MiAgMHg0MDIyYTMgaW4gX19keW5hbWljX2Nhc3QgKGZyb209MHg0MDU5YzQg PEMgdHlwZV9pbmZvIGZ1bmN0aW9uPiwKICAgIHRvPTB4NDA1OTg4IDxCIHR5 cGVfaW5mbyBmdW5jdGlvbj4sIHJlcXVpcmVfcHVibGljPTEsIGFkZHJlc3M9 MHgyNDFmZDkwLAogICAgc3ViPTB4NDA1OTU4IDxBIHR5cGVfaW5mbyBmdW5j dGlvbj4sIHN1YnB0cj0weDI0MWZkOTApCiAgICBhdCAvY3lnbnVzL25ldHJl bC9zcmMvZ2NjLTIuOTUuMi0yL2djYy9jcC90aW5mbzIuY2M6MzgKIzMgIDB4 NDAxMDdhIGluIGYgKGFwdHI9MHgyNDFmZDkwKSBhdCBkeW5hbWljX2Nhc3Qu Y3h4OjI1CiM0ICAweDQwMTBmYyBpbiBtYWluICgpIGF0IGR5bmFtaWNfY2Fz dC5jeHg6NDMKIzUgIDB4NjEwMDIyNzIgaW4gX3NpemVfb2Zfc3RhY2tfcmVz ZXJ2ZV9fICgpCiM2ICAweDYxMDAyODA1IGluIF9zaXplX29mX3N0YWNrX3Jl c2VydmVfXyAoKQojNyAgMHg2MTAwMjg0MyBpbiBfc2l6ZV9vZl9zdGFja19y ZXNlcnZlX18gKCkKIzggIDB4NDAxMTdkIGluIGN5Z3dpbl9jcnQwICgpIGF0 IGR5bmFtaWNfY2FzdC5jeHg6NDUK ------------=_1583532720-65106-121 Content-Type: text/x-asm; charset=us-ascii; name="ld.dump" Content-Disposition: inline; filename="ld.dump" Content-Transfer-Encoding: base64 Content-Length: 6157 R05VIGxkIHZlcnNpb24gMi4xMC45MCAod2l0aCBCRkQgMi4xMC45MCkKICBT dXBwb3J0ZWQgZW11bGF0aW9uczoKICAgaTM4NnBlCnVzaW5nIGludGVybmFs IGxpbmtlciBzY3JpcHQ6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ck9VVFBVVF9GT1JNQVQocGVpLWkzODYp ClNFQVJDSF9ESVIoL2xpYik7IFNFQVJDSF9ESVIoL3Vzci9saWIpOyBTRUFS Q0hfRElSKC91c3IvbG9jYWwvbGliKTsgU0VBUkNIX0RJUigvdXNyL2k2ODYt cGMtY3lnd2luL2xpYik7CkVOVFJZKF9tYWluQ1JUU3RhcnR1cCkKU0VDVElP TlMKewogIC50ZXh0ICBfX2ltYWdlX2Jhc2VfXyArIF9fc2VjdGlvbl9hbGln bm1lbnRfXyAgOiAKICB7CiAgICAgKiguaW5pdCkKICAgICooLnRleHQpCiAg ICAqKFNPUlQoLnRleHQkKikpCiAgICAqKC5nbHVlXzd0KQogICAgKiguZ2x1 ZV83KQogICAgIF9fX0NUT1JfTElTVF9fID0gLjsgX19DVE9SX0xJU1RfXyA9 IC4gOyAKCQkJTE9ORyAoLTEpOyAqKC5jdG9ycyk7ICooLmN0b3IpOyBMT05H ICgwKTsgCiAgICAgX19fRFRPUl9MSVNUX18gPSAuOyBfX0RUT1JfTElTVF9f ID0gLiA7IAoJCQlMT05HICgtMSk7ICooLmR0b3JzKTsgKiguZHRvcik7ICBM T05HICgwKTsgCiAgICAgKiguZmluaSkKICAgIC8qID8/PyBXaHkgaXMgLmdj Y19leGMgaGVyZT8gICovCiAgICAgKiguZ2NjX2V4YykKICAgICBldGV4dCA9 IC47CiAgICAqKC5nY2NfZXhjZXB0X3RhYmxlKQogIH0KICAvKiBUaGUgQ3ln d2luMzIgbGlicmFyeSB1c2VzIGEgc2VjdGlvbiB0byBhdm9pZCBjb3B5aW5n IGNlcnRhaW4gZGF0YQogICAgIG9uIGZvcmsuICBUaGlzIHVzZWQgdG8gYmUg bmFtZWQgIi5kYXRhIi4gIFRoZSBsaW5rZXIgdXNlZAogICAgIHRvIGluY2x1 ZGUgdGhpcyBiZXR3ZWVuIF9fZGF0YV9zdGFydF9fIGFuZCBfX2RhdGFfZW5k X18sIGJ1dCB0aGF0CiAgICAgYnJlYWtzIGJ1aWxkaW5nIHRoZSBjeWd3aW4z MiBkbGwuICBJbnN0ZWFkLCB3ZSBuYW1lIHRoZSBzZWN0aW9uCiAgICAgIi5k YXRhX2N5Z3dpbl9ub2NvcHkiIGFuZCBleHBsaWN0bHkgaW5jbHVkZSBpdCBh ZnRlciBfX2RhdGFfZW5kX18uICovCiAgLmRhdGEgQkxPQ0soX19zZWN0aW9u X2FsaWdubWVudF9fKSA6IAogIHsKICAgIF9fZGF0YV9zdGFydF9fID0gLiA7 CiAgICAqKC5kYXRhKQogICAgKiguZGF0YTIpCiAgICAqKFNPUlQoLmRhdGEk KikpCiAgICBfX2RhdGFfZW5kX18gPSAuIDsKICAgICooLmRhdGFfY3lnd2lu X25vY29weSkKICB9CiAgLnJkYXRhIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1l bnRfXykgOgogIHsKICAgICooLnJkYXRhKQogICAgKihTT1JUKC5yZGF0YSQq KSkKICAgICooLmVoX2ZyYW1lKQogIH0KICAucGRhdGEgQkxPQ0soX19zZWN0 aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKigucGRhdGEpCiAgfQogIC5i c3MgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgX19i c3Nfc3RhcnRfXyA9IC4gOwogICAgKiguYnNzKQogICAgKihDT01NT04pCiAg ICBfX2Jzc19lbmRfXyA9IC4gOwogIH0KICAuZWRhdGEgQkxPQ0soX19zZWN0 aW9uX2FsaWdubWVudF9fKSA6CiAgewogICAgKiguZWRhdGEpCiAgfQogIC9E SVNDQVJELyA6CiAgewogICAgKiguZGVidWckUykKICAgICooLmRlYnVnJFQp CiAgICAqKC5kZWJ1ZyRGKQogICAgKiguZHJlY3R2ZSkKICB9CiAgLmlkYXRh IEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsKICAgIC8qIFRo aXMgY2Fubm90IGN1cnJlbnRseSBiZSBoYW5kbGVkIHdpdGggZ3JvdXBlZCBz ZWN0aW9ucy4KCVNlZSBwZS5lbTpzb3J0X3NlY3Rpb25zLiAgKi8KICAgIFNP UlQoKikoLmlkYXRhJDIpCiAgICBTT1JUKCopKC5pZGF0YSQzKQogICAgLyog VGhlc2UgemVyb2VzIG1hcmsgdGhlIGVuZCBvZiB0aGUgaW1wb3J0IGxpc3Qu ICAqLwogICAgTE9ORyAoMCk7IExPTkcgKDApOyBMT05HICgwKTsgTE9ORyAo MCk7IExPTkcgKDApOwogICAgU09SVCgqKSguaWRhdGEkNCkKICAgIFNPUlQo KikoLmlkYXRhJDUpCiAgICBTT1JUKCopKC5pZGF0YSQ2KQogICAgU09SVCgq KSguaWRhdGEkNykKICB9CiAgLkNSVCBCTE9DSyhfX3NlY3Rpb25fYWxpZ25t ZW50X18pIDoKICB7IAkJCQkJCiAgICAqKFNPUlQoLkNSVCQqKSkKICB9CiAg LmVuZGp1bmsgQkxPQ0soX19zZWN0aW9uX2FsaWdubWVudF9fKSA6CiAgewog ICAgLyogZW5kIGlzIGRlcHJlY2F0ZWQsIGRvbid0IHVzZSBpdCAqLwogICAg IGVuZCA9IC47CiAgICAgX2VuZCA9IC47CiAgICAgX19lbmRfXyA9IC47CiAg fQogIC5yc3JjIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgOgogIHsg CQkJCQkKICAgICooLnJzcmMpCiAgICAqKFNPUlQoLnJzcmMkKikpCiAgfQog IC5yZWxvYyBCTE9DSyhfX3NlY3Rpb25fYWxpZ25tZW50X18pIDoKICB7IAkJ CQkJCiAgICAqKC5yZWxvYykKICB9CiAgLnN0YWIgQkxPQ0soX19zZWN0aW9u X2FsaWdubWVudF9fKSAoTk9MT0FEKSA6CiAgewogICAgWyAuc3RhYiBdCiAg fQogIC5zdGFic3RyIEJMT0NLKF9fc2VjdGlvbl9hbGlnbm1lbnRfXykgKE5P TE9BRCkgOgogIHsKICAgIFsgLnN0YWJzdHIgXQogIH0KfQoKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmF0 dGVtcHQgdG8gb3BlbiAvdXNyL2xpYi9jcnQwLm8gc3VjY2VlZGVkCi91c3Iv bGliL2NydDAubwphdHRlbXB0IHRvIG9wZW4gZHluYW1pY19jYXN0Lm8gc3Vj Y2VlZGVkCmR5bmFtaWNfY2FzdC5vCmF0dGVtcHQgdG8gb3BlbiAvdXNyL2xp Yi9nY2MtbGliL2k2ODYtcGMtY3lnd2luLzIuOTUuMi9saWJzdGRjKysuYSBm YWlsZWQKYXR0ZW1wdCB0byBvcGVuIC91c3IvbGliL2xpYnN0ZGMrKy5hIHN1 Y2NlZWRlZAphdHRlbXB0IHRvIG9wZW4gL3Vzci9saWIvZ2NjLWxpYi9pNjg2 LXBjLWN5Z3dpbi8yLjk1LjIvbGlibS5hIGZhaWxlZAphdHRlbXB0IHRvIG9w ZW4gL3Vzci9saWIvbGlibS5hIHN1Y2NlZWRlZAooL3Vzci9saWIvbGlibS5h KWN5Z3dpbl9jcnQwLm8KKC91c3IvbGliL2xpYm0uYSlkczAwMDI0Lm8KKC91 c3IvbGliL2xpYm0uYSlfY3lnd2luX2NydDBfY29tbW9uLm8KKC91c3IvbGli L2xpYm0uYSlkczAwNjExLm8KKC91c3IvbGliL2xpYm0uYSlkaC5vCigvdXNy L2xpYi9saWJtLmEpZHMwMDU0MC5vCigvdXNyL2xpYi9saWJtLmEpZHMwMDg5 My5vCigvdXNyL2xpYi9saWJtLmEpZHMwMDY3Ni5vCigvdXNyL2xpYi9saWJt LmEpZHMwMDgxMi5vCigvdXNyL2xpYi9saWJtLmEpcHJlbWFpbjMubwooL3Vz ci9saWIvbGlibS5hKXByZW1haW4yLm8KKC91c3IvbGliL2xpYm0uYSlwcmVt YWluMS5vCigvdXNyL2xpYi9saWJtLmEpcHJlbWFpbjAubwooL3Vzci9saWIv bGlibS5hKWRzMDA1OTQubwooL3Vzci9saWIvbGlibS5hKWR0Lm8KYXR0ZW1w dCB0byBvcGVuIC91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMi45 NS4yL2xpYmdjYy5hIHN1Y2NlZWRlZAooL3Vzci9saWIvZ2NjLWxpYi9pNjg2 LXBjLWN5Z3dpbi8yLjk1LjIvbGliZ2NjLmEpX2VoLm8KKC91c3IvbGliL2dj Yy1saWIvaTY4Ni1wYy1jeWd3aW4vMi45NS4yL2xpYmdjYy5hKXRpbmZvLm8K KC91c3IvbGliL2djYy1saWIvaTY4Ni1wYy1jeWd3aW4vMi45NS4yL2xpYmdj Yy5hKXRpbmZvMi5vCigvdXNyL2xpYi9nY2MtbGliL2k2ODYtcGMtY3lnd2lu LzIuOTUuMi9saWJnY2MuYSlvcGRlbC5vCigvdXNyL2xpYi9nY2MtbGliL2k2 ODYtcGMtY3lnd2luLzIuOTUuMi9saWJnY2MuYSlfY3RvcnMubwooL3Vzci9s aWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8yLjk1LjIvbGliZ2NjLmEpZnJh bWUubwooL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8yLjk1LjIv bGliZ2NjLmEpZXhjZXB0aW9uLm8KKC91c3IvbGliL2djYy1saWIvaTY4Ni1w Yy1jeWd3aW4vMi45NS4yL2xpYmdjYy5hKV9jaGtzdGsubwphdHRlbXB0IHRv IG9wZW4gL3Vzci9saWIvZ2NjLWxpYi9pNjg2LXBjLWN5Z3dpbi8yLjk1LjIv bGliY3lnd2luLmEgZmFpbGVkCmF0dGVtcHQgdG8gb3BlbiAvdXNyL2xpYi9s aWJjeWd3aW4uYSBzdWNjZWVkZWQKKC91c3IvbGliL2xpYmN5Z3dpbi5hKWRz MDA4MjAubwooL3Vzci9saWIvbGliY3lnd2luLmEpZHMwMTA4OS5vCigvdXNy L2xpYi9saWJjeWd3aW4uYSlkczAxMDA0Lm8KKC91c3IvbGliL2xpYmN5Z3dp bi5hKWRzMDA0OTgubwphdHRlbXB0IHRvIG9wZW4gL3Vzci9saWIvZ2NjLWxp Yi9pNjg2LXBjLWN5Z3dpbi8yLjk1LjIvbGlia2VybmVsMzIuYSBmYWlsZWQK YXR0ZW1wdCB0byBvcGVuIC91c3IvbGliL2xpYmtlcm5lbDMyLmEgc3VjY2Vl ZGVkCigvdXNyL2xpYi9saWJrZXJuZWwzMi5hKWRzMDAyOTAubwooL3Vzci9s aWIvbGlia2VybmVsMzIuYSlkaC5vCigvdXNyL2xpYi9saWJrZXJuZWwzMi5h KWR0Lm8KYXR0ZW1wdCB0byBvcGVuIC91c3IvbGliL2djYy1saWIvaTY4Ni1w Yy1jeWd3aW4vMi45NS4yL2xpYmFkdmFwaTMyLmEgZmFpbGVkCmF0dGVtcHQg dG8gb3BlbiAvdXNyL2xpYi9saWJhZHZhcGkzMi5hIHN1Y2NlZWRlZAo= ------------=_1583532720-65106-121--