Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-owner AT sourceware DOT cygnus DOT com Delivered-To: mailing list cygwin AT sourceware DOT cygnus DOT com X-Authentication-Warning: modi.xraylith.wisc.edu: khan owned process doing -bs Date: Fri, 23 Apr 1999 21:33:11 -0500 (CDT) From: Mumit Khan To: cygwin AT sourceware DOT cygnus DOT com Subject: gcc -U_WIN32 pitfalls! Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="1915750185-1610392959-924921191=:2983" --1915750185-1610392959-924921191=:2983 Content-Type: TEXT/PLAIN; charset=US-ASCII Just for kicks, I tried to build a small analysis program with -U_WIN32; this tool is essentially a filter and doesn't use any win32 specific features, so it should be pretty safe, right? Looks like certain typedefs are *WRONG* when you undefine _WIN32 and it causes amazingly subtle bugs! Any code using stat for example will be subtly but surely broken. I'm attaching a small trivial program that should illustrate this. Here's the header comments from the file. This is with stock B20.1. Compiler version is no relevant here. // // A simple program to show the pitfall of using -U_WIN32 in your code // under Cygwin b20.1! // // To build: // $ c++ -U_WIN32 -o cyg-stat-bug cyg-stat.cc // $ c++ -o cyg-stat-ok cyg-stat.cc // // Now run it giving a filename on command line: // // $ ./cyg-stat-bug ./cyg-stat.cc // $ ./cyg-stat-ok ./cyg-stat.cc // // To find the cause of the problem (after you notice it in the output // of course!), you need to look at the preprocessed files. // // $ c++ -save-temps -U_WIN32 -o cyg-stat-bug cyg-stat.cc // $ mv cyg-stat.ii cyg-stat-bug.ii // $ c++ -save-temps -o cyg-stat-ok cyg-stat.cc // $ mv cyg-stat.ii cyg-stat-ok.ii // $ diff -u3p cyg-stat-bug.ii cyg-stat-ok.ii // // Look for ino_t. // Regards, Mumit --1915750185-1610392959-924921191=:2983 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="cyg-stat.cc" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Test program to show pitfall. Ly8NCi8vIEEgc2ltcGxlIHByb2dyYW0gdG8gc2hvdyB0aGUgcGl0ZmFsbCBv ZiB1c2luZyAtVV9XSU4zMiBpbiB5b3VyIGNvZGUNCi8vIHVuZGVyIEN5Z3dp biBiMjAuMSENCi8vDQovLyBUbyBidWlsZDoNCi8vICAkIGMrKyAtVV9XSU4z MiAtbyBjeWctc3RhdC1idWcgY3lnLXN0YXQuY2MNCi8vICAkIGMrKyAtbyBj eWctc3RhdC1vayBjeWctc3RhdC5jYw0KLy8NCi8vIE5vdyBydW4gaXQgZ2l2 aW5nIGEgZmlsZW5hbWUgb24gY29tbWFuZCBsaW5lOg0KLy8NCi8vICAkIC4v Y3lnLXN0YXQtYnVnIC4vY3lnLXN0YXQuY2MNCi8vICAkIC4vY3lnLXN0YXQt b2sgLi9jeWctc3RhdC5jYw0KLy8NCi8vIFRvIGZpbmQgdGhlIGNhdXNlIG9m IHRoZSBwcm9ibGVtIChhZnRlciB5b3Ugbm90aWNlIGl0IGluIHRoZSBvdXRw dXQNCi8vIG9mIGNvdXJzZSEpLCB5b3UgbmVlZCB0byBsb29rIGF0IHRoZSBw cmVwcm9jZXNzZWQgZmlsZXMuDQovLw0KLy8gICQgYysrIC1zYXZlLXRlbXBz IC1VX1dJTjMyIC1vIGN5Zy1zdGF0LWJ1ZyBjeWctc3RhdC5jYw0KLy8gICQg bXYgY3lnLXN0YXQuaWkgY3lnLXN0YXQtYnVnLmlpDQovLyAgJCBjKysgLXNh dmUtdGVtcHMgLW8gY3lnLXN0YXQtb2sgY3lnLXN0YXQuY2MNCi8vICAkIG12 IGN5Zy1zdGF0LmlpIGN5Zy1zdGF0LW9rLmlpDQovLyAgJCBkaWZmIC11M3Ag Y3lnLXN0YXQtYnVnLmlpIGN5Zy1zdGF0LW9rLmlpDQovLw0KLy8gIExvb2sg Zm9yIGlub190Lg0KLy8gDQoNCiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4NCiNp bmNsdWRlIDxzeXMvc3RhdC5oPg0KI2luY2x1ZGUgPHVuaXN0ZC5oPg0KI2lu Y2x1ZGUgPGNzdGRpbz4NCiNpbmNsdWRlIDxpb3N0cmVhbT4NCg0KaW50DQpt YWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQ0Kew0KICAgZm9yIChpbnQg aSA9IDE7IGkgPCBhcmdjOyBpKyspDQogICAgIHsNCiAgICAgICBzdHJ1Y3Qg c3RhdCBidWY7DQogICAgICAgY29uc3QgY2hhciAqcGF0aCA9IGFyZ3ZbaV07 DQogICAgICAgaW50IHJlc3VsdCA9IHN0YXQgKHBhdGgsICZidWYpOw0KDQog ICAgICAgaWYgKHJlc3VsdCA9PSAwKQ0KCSB7DQoJICAgY2VyciA8PCAic3Rf ZGV2ID0gIiA8PCBidWYuc3RfZGV2IDw8IGVuZGw7DQoJICAgY2VyciA8PCAi c3RfaW5vID0gIiA8PCBidWYuc3RfaW5vIDw8IGVuZGw7DQoJICAgY2VyciA8 PCAic3RfbW9kZSA9ICIgPDwgYnVmLnN0X21vZGUgPDwgZW5kbDsNCgkgICBj ZXJyIDw8ICJzdF9ubGluayA9ICIgPDwgYnVmLnN0X25saW5rIDw8IGVuZGw7 DQoJICAgY2VyciA8PCAic3RfdWlkID0gIiA8PCBidWYuc3RfdWlkIDw8IGVu ZGw7DQoJICAgY2VyciA8PCAic3RfZ2lkID0gIiA8PCBidWYuc3RfZ2lkIDw8 IGVuZGw7DQoJICAgY2VyciA8PCAic3RfcmRldiA9ICIgPDwgYnVmLnN0X3Jk ZXYgPDwgZW5kbDsNCgkgICBjZXJyIDw8ICJzdF9zaXplID0gIiA8PCBidWYu c3Rfc2l6ZSA8PCBlbmRsOw0KCSB9DQogICAgICAgZWxzZQ0KCSB7DQoJICAg Y2VyciA8PCAiY2Fubm90IHN0YXQgIiA8PCBwYXRoOw0KCSAgIHBlcnJvciAo IiIpOw0KCSB9DQogICAgIH0NCiAgcmV0dXJuIDA7DQp9DQo= --1915750185-1610392959-924921191=:2983 Content-Type: text/plain; charset=us-ascii -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com --1915750185-1610392959-924921191=:2983--