From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12798 invoked by alias); 27 Jul 2012 20:26:10 -0000 Received: (qmail 12769 invoked by uid 22791); 27 Jul 2012 20:26:06 -0000 X-SWARE-Spam-Status: No, hits=-2.9 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,RCVD_IN_HOSTKARMA_NO,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RCVD_IN_HOSTKARMA_YE X-Spam-Check-By: sourceware.org Received: from tx2ehsobe003.messaging.microsoft.com (HELO tx2outboundpool.messaging.microsoft.com) (65.55.88.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 27 Jul 2012 20:25:46 +0000 Received: from mail70-tx2-R.bigfish.com (10.9.14.251) by TX2EHSOBE008.bigfish.com (10.9.40.28) with Microsoft SMTP Server id 14.1.225.23; Fri, 27 Jul 2012 20:25:45 +0000 Received: from mail70-tx2 (localhost [127.0.0.1]) by mail70-tx2-R.bigfish.com (Postfix) with ESMTP id 72C974002A1 for ; Fri, 27 Jul 2012 20:25:45 +0000 (UTC) X-Forefront-Antispam-Report: CIP:149.173.6.149;KIP:(null);UIP:(null);IPV:NLI;H:mercav05r.na.sas.com;RD:mercav05r.na.sas.com;EFVD:NLI X-SpamScore: 0 X-BigFish: S0(zzc85fhzz1202hzz8275bhz2fh2a8h668h839hcf6hf0ah1030h107ah10d2h34h) Received-SPF: pass (mail70-tx2: domain of teragram.com designates 149.173.6.149 as permitted sender) client-ip=149.173.6.149; envelope-from=oss@teragram.com; helo=mercav05r.na.sas.com ;r.na.sas.com ; Received: from mail70-tx2 (localhost.localdomain [127.0.0.1]) by mail70-tx2 (MessageSwitch) id 1343420743841715_10678; Fri, 27 Jul 2012 20:25:43 +0000 (UTC) Received: from TX2EHSMHS028.bigfish.com (unknown [10.9.14.235]) by mail70-tx2.bigfish.com (Postfix) with ESMTP id CAEA02600FB for ; Fri, 27 Jul 2012 20:25:43 +0000 (UTC) Received: from mercav05r.na.sas.com (149.173.6.149) by TX2EHSMHS028.bigfish.com (10.9.99.128) with Microsoft SMTP Server (TLS) id 14.1.225.23; Fri, 27 Jul 2012 20:25:43 +0000 X-TM-IMSS-Message-ID: Received: from tempo.in.teragram.com ([172.25.89.16]) by mercav05r.na.sas.com ([10.16.10.186]) with ESMTP (TREND IMSS SMTP Service 7.1; TLSv1/SSLv3 AES256-SHA (256/256)) id ffc6264f000d7458 ; Fri, 27 Jul 2012 16:25:42 -0400 Received: from clave.na.sas.com ([172.25.88.181]) by tempo.in.teragram.com with esmtp (Exim 4.63) (envelope-from ) id 1Sur6X-0001C5-Vn for pthreads-win32@sourceware.org; Fri, 27 Jul 2012 16:25:46 -0400 Date: Fri, 27 Jul 2012 20:26:00 -0000 From: Daniel Richard G. Reply-To: To: Subject: [PATCH] autostatic.c Message-ID: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="8323329-1127620997-1343420741=:5282" X-OriginatorOrg: teragram.com X-IsSubscribed: yes Mailing-List: contact pthreads-win32-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: pthreads-win32-owner@sourceware.org X-SW-Source: 2012/txt/msg00017.txt.bz2 --8323329-1127620997-1343420741=:5282 Content-Type: text/plain; format=flowed; charset="US-ASCII" Content-length: 1624 My next patch is an overhaul of autostatic.c that adds support for older MSVC versions, fixes the no-init bug in small-static builds, and smooths out a number of rough edges. ++ autostatic.c * Move the #includes up to the top, in case PTW32_STATIC_LIB is defined in a header file (and a later patch from me will need a symbol from implement.h early on) * Added a big fat comment documenting the pre/post-main() black magic and the anchoring business * The init/exit routines are supposed to return int, not void, and return a value of 0 to indicate "no error" (see the "Addendum: int Instead of void" section in the Codeguru article) * I got rid of the attribute_section() macro (in favor of writing things out longhand) because it's not enough to abstract away all the differences between the various forms of declarations needed (for example, #pragma is needed in some cases, and that can't be stuffed into a macro (and __pragma() isn't supported by older MSVC versions)) * The way that MSVC pre/post-main() black magic is done changed in 8.0, so the code now implements the "old" and "new" ways. I've tested that this works for everything back to MSVC6. * Added a bit at the end to avoid warnings when PTW32_STATIC_LIB is not defined in non-inlined builds ++ implement.h * This bit sticks a reference to autostatic.obj into every object file, so that the linker won't optimize it away (for "small static" builds) --Daniel -- Daniel Richard G. || danielg@teragram.com || Software Developer Teragram Linguistic Technologies (a division of SAS) http://www.teragram.com/ --8323329-1127620997-1343420741=:5282 Content-Type: text/x-diff; name="ptw32-autostatic.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Patch against git master Content-Disposition: attachment; filename="ptw32-autostatic.patch" Content-length: 5145 ZGlmZiAtLWdpdCBhL2F1dG9zdGF0aWMuYyBiL2F1dG9zdGF0aWMuYw0KaW5k ZXggMDkyYWZmMi4uMjFjMTc0OCAxMDA3NTUNCi0tLSBhL2F1dG9zdGF0aWMu Yw0KKysrIGIvYXV0b3N0YXRpYy5jDQpAQCAtMzQsMzYgKzM0LDczIEBADQog ICogICAgICA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEtMTMwNywgVVNBDQogICovDQogDQorI2luY2x1ZGUgInB0aHJl YWQuaCINCisjaW5jbHVkZSAiaW1wbGVtZW50LmgiDQorDQogI2lmIGRlZmlu ZWQoUFRXMzJfU1RBVElDX0xJQikNCiANCiAjaWYgZGVmaW5lZChfX01JTkdX NjRfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykgfHwgZGVmaW5lZChfTVND X1ZFUikNCiANCi0jaW5jbHVkZSAicHRocmVhZC5oIg0KLSNpbmNsdWRlICJp bXBsZW1lbnQuaCINCisvKiBGb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhpcyBj b2RlIChhdCBsZWFzdCB0aGUgTVNWQyBwYXJ0cyksIHJlZmVyIHRvDQorICoN CisgKiBodHRwOi8vd3d3LmNvZGVndXJ1LmNvbS9jcHAvbWlzYy9taXNjL3Ro cmVhZHNwcm9jZXNzZXMvYXJ0aWNsZS5waHAvYzY5NDUvDQorICogKCJSdW5u aW5nIENvZGUgQmVmb3JlIGFuZCBBZnRlciBNYWluIikNCisgKg0KKyAqIENv bXBhdGliaWxpdHkgd2l0aCBNU1ZDOCB3YXMgY3JpYmJlZCBmcm9tIEJvb3N0 Og0KKyAqDQorICogaHR0cDovL3N2bi5ib29zdC5vcmcvc3ZuL2Jvb3N0L3Ry dW5rL2xpYnMvdGhyZWFkL3NyYy93aW4zMi90c3NfcGUuY3BwDQorICoNCisg KiBJbiBhZGRpdGlvbiB0byB0aGF0LCBiZWNhdXNlIHdlIGFyZSBpbiBhIHN0 YXRpYyBsaWJyYXJ5LCBhbmQgdGhlIGxpbmtlcg0KKyAqIGNhbid0IHRlbGwg dGhhdCB0aGUgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBmdW5jdGlvbnMgYXJl IGFjdHVhbGx5DQorICogbmVlZGVkLCB3ZSBuZWVkIGEgd2F5IHRvIHByZXZl bnQgdGhlIGxpbmtlciBmcm9tIG9wdGltaXppbmcgYXdheSB0aGlzDQorICog bW9kdWxlLiBUaGUgcHRocmVhZF93aW4zMl9hdXRvc3RhdGljX2FuY2hvcigp IGhhY2sgYmVsb3cgKGFuZCBpbg0KKyAqIGltcGxlbWVudC5oKSBkb2VzIHRo ZSBqb2IgaW4gYSBwb3J0YWJsZSBtYW5uZXIuDQorICovDQogDQotc3RhdGlj IHZvaWQgb25fcHJvY2Vzc19pbml0KHZvaWQpDQorc3RhdGljIGludCBvbl9w cm9jZXNzX2luaXQodm9pZCkNCiB7DQogICAgIHB0aHJlYWRfd2luMzJfcHJv Y2Vzc19hdHRhY2hfbnAgKCk7DQorICAgIHJldHVybiAwOw0KIH0NCiANCi1z dGF0aWMgdm9pZCBvbl9wcm9jZXNzX2V4aXQodm9pZCkNCitzdGF0aWMgaW50 IG9uX3Byb2Nlc3NfZXhpdCh2b2lkKQ0KIHsNCiAgICAgcHRocmVhZF93aW4z Ml90aHJlYWRfZGV0YWNoX25wICAoKTsNCiAgICAgcHRocmVhZF93aW4zMl9w cm9jZXNzX2RldGFjaF9ucCAoKTsNCisgICAgcmV0dXJuIDA7DQogfQ0KIA0K ICNpZiBkZWZpbmVkKF9fTUlOR1c2NF9fKSB8fCBkZWZpbmVkKF9fTUlOR1cz Ml9fKQ0KLSMgZGVmaW5lIGF0dHJpYnV0ZV9zZWN0aW9uKGEpIF9fYXR0cmli dXRlX18oKHNlY3Rpb24oYSkpKQ0KK19fYXR0cmlidXRlX18oKHNlY3Rpb24o Ii5jdG9ycyIpLCB1c2VkKSkgc3RhdGljIGludCAoKmdjY19jdG9yKSh2b2lk KSA9IG9uX3Byb2Nlc3NfaW5pdDsNCitfX2F0dHJpYnV0ZV9fKChzZWN0aW9u KCIuZHRvcnMiKSwgdXNlZCkpIHN0YXRpYyBpbnQgKCpnY2NfZHRvcikodm9p ZCkgPSBvbl9wcm9jZXNzX2V4aXQ7DQogI2VsaWYgZGVmaW5lZChfTVNDX1ZF UikNCi0jIGRlZmluZSBhdHRyaWJ1dGVfc2VjdGlvbihhKSBfX3ByYWdtYShz ZWN0aW9uKGEsbG9uZyxyZWFkKSk7IF9fZGVjbHNwZWMoYWxsb2NhdGUoYSkp DQorIyAgaWYgX01TQ19WRVIgPj0gMTQwMAkvKiBNU1ZDOCAqLw0KKyMgICAg cHJhZ21hIHNlY3Rpb24oIi5DUlQkWENVIiwgbG9uZywgcmVhZCkNCisjICAg IHByYWdtYSBzZWN0aW9uKCIuQ1JUJFhQVSIsIGxvbmcsIHJlYWQpDQorX19k ZWNsc3BlYyhhbGxvY2F0ZSgiLkNSVCRYQ1UiKSkgc3RhdGljIGludCAoKm1z Y19jdG9yKSh2b2lkKSA9IG9uX3Byb2Nlc3NfaW5pdDsNCitfX2RlY2xzcGVj KGFsbG9jYXRlKCIuQ1JUJFhQVSIpKSBzdGF0aWMgaW50ICgqbXNjX2R0b3Ip KHZvaWQpID0gb25fcHJvY2Vzc19leGl0Ow0KKyMgIGVsc2UNCisjICAgIHBy YWdtYSBkYXRhX3NlZygiLkNSVCRYQ1UiKQ0KK3N0YXRpYyBpbnQgKCptc2Nf Y3Rvcikodm9pZCkgPSBvbl9wcm9jZXNzX2luaXQ7DQorIyAgICBwcmFnbWEg ZGF0YV9zZWcoIi5DUlQkWFBVIikNCitzdGF0aWMgaW50ICgqbXNjX2R0b3Ip KHZvaWQpID0gb25fcHJvY2Vzc19leGl0Ow0KKyMgICAgcHJhZ21hIGRhdGFf c2VnKCkJLyogcmVzZXQgZGF0YSBzZWdtZW50ICovDQorIyAgZW5kaWYNCiAj ZW5kaWYNCiANCi1hdHRyaWJ1dGVfc2VjdGlvbigiLmN0b3JzIikgdm9pZCAq Z2NjX2N0b3IgPSBvbl9wcm9jZXNzX2luaXQ7DQotYXR0cmlidXRlX3NlY3Rp b24oIi5kdG9ycyIpIHZvaWQgKmdjY19kdG9yID0gb25fcHJvY2Vzc19leGl0 Ow0KLQ0KLWF0dHJpYnV0ZV9zZWN0aW9uKCIuQ1JUJFhDVSIpIHZvaWQgKm1z Y19jdG9yID0gb25fcHJvY2Vzc19pbml0Ow0KLWF0dHJpYnV0ZV9zZWN0aW9u KCIuQ1JUJFhQVSIpIHZvaWQgKm1zY19kdG9yID0gb25fcHJvY2Vzc19leGl0 Ow0KLQ0KICNlbmRpZiAvKiBkZWZpbmVkKF9fTUlOR1c2NF9fKSB8fCBkZWZp bmVkKF9fTUlOR1czMl9fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSAqLw0KIA0K Ky8qIFRoaXMgZHVtbXkgZnVuY3Rpb24gZXhpc3RzIHNvbGVseSB0byBiZSBy ZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMNCisgKiAoc3BlY2lmaWNhbGx5 LCBpbiBpbXBsZW1lbnQuaCksIHNvIHRoYXQgdGhlIGxpbmtlciBjYW4ndCBv cHRpbWl6ZSBhd2F5DQorICogdGhpcyBtb2R1bGUuIERvbid0IGNhbGwgaXQu DQorICovDQordm9pZCBwdGhyZWFkX3dpbjMyX2F1dG9zdGF0aWNfYW5jaG9y KHZvaWQpIHsgYWJvcnQoKTsgfQ0KKw0KICNlbmRpZiAvKiBQVFczMl9TVEFU SUNfTElCICovDQorDQorI2lmICEgZGVmaW5lZChQVFczMl9CVUlMRF9JTkxJ TkVEKQ0KKy8qDQorICogQXZvaWQgInRyYW5zbGF0aW9uIHVuaXQgaXMgZW1w dHkiIHdhcm5pbmdzDQorICovDQordHlwZWRlZiBpbnQgZm9vOw0KKyNlbmRp Zg0KZGlmZiAtLWdpdCBhL2ltcGxlbWVudC5oIGIvaW1wbGVtZW50LmgNCmlu ZGV4IDkyZjU3NDAuLjc1MjlhZDIgMTAwNjQ0DQotLS0gYS9pbXBsZW1lbnQu aA0KKysrIGIvaW1wbGVtZW50LmgNCkBAIC0xMDksNiArMTA5LDE2IEBAIHR5 cGVkZWYgVk9JRCAoQVBJRU5UUlkgKlBBUENGVU5DKShEV09SRCBkd1BhcmFt KTsNCiAjICBpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA8IDEz MDANCiAgICAgIHR5cGVkZWYgbG9uZyBpbnRwdHJfdDsNCiAjICBlbmRpZg0K Kw0KKy8qDQorICogRG9uJ3QgYWxsb3cgdGhlIGxpbmtlciB0byBvcHRpbWl6 ZSBhd2F5IGF1dG9zdGF0aWMub2JqIGluIHN0YXRpYyBidWlsZHMuDQorICov DQorI2lmIGRlZmluZWQoUFRXMzJfU1RBVElDX0xJQikNCit2b2lkIHB0aHJl YWRfd2luMzJfYXV0b3N0YXRpY19hbmNob3Iodm9pZCk7DQorIyAgaWYgZGVm aW5lZChfX01JTkdXNjRfXykgfHwgZGVmaW5lZChfX01JTkdXMzJfXykNCitf X2F0dHJpYnV0ZV9fKCh1bnVzZWQsIHVzZWQpKQ0KKyMgIGVuZGlmDQorc3Rh dGljIHZvaWQgKCpsb2NhbF9hdXRvc3RhdGljX2FuY2hvcikodm9pZCkgPSBw dGhyZWFkX3dpbjMyX2F1dG9zdGF0aWNfYW5jaG9yOw0KICNlbmRpZg0KIA0K IHR5cGVkZWYgZW51bQ0K --8323329-1127620997-1343420741=:5282--