Mailing-List: contact cygwin-apps-help AT sourceware DOT cygnus DOT com; run by ezmlm Sender: cygwin-apps-owner AT sourceware DOT cygnus DOT com List-Subscribe: List-Archive: List-Post: List-Help: , Delivered-To: mailing list cygwin-apps AT sources DOT redhat DOT com Message-ID: <20010517043410.19503.qmail@web6403.mail.yahoo.com> Date: Thu, 17 May 2001 14:34:10 +1000 (EST) From: =?iso-8859-1?q?Danny=20Smith?= Subject: gcc-2.95.3-4 to mingw To: cygwin-apps MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-440941406-990074050=:17212" Content-Transfer-Encoding: 8bit --0-440941406-990074050=:17212 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Disposition: inline Hello all, Attached diff file are my changes to cygwin's gcc-2.95.3-4 src to get it to build under mingw. I have also built from FSF gcc-2.95.3 (release) source with similar set of patches (on top of Mumits Jan 2000 diffs), but I thought keeping in sync with cygwin version would have advantages as far as maintenance and testing. I have additional gcc patches that I would like to add to both cygwin and mingw, which is another reason for me wanting to sync gcc src. These are the main differences to cygwin version libio _IO_pos_t/_IO_off_t type mismatch: These were necessitated by the type mismatches between header files and implementation files. Refer here: http://gcc.gnu.org/ml/gcc-patches/2000-09/msg01139.html It is only a problem with msvcrt version of mingw because in crtdll version, _IO_pos_t and _IO_off_t are same basic type. Ditto for cygwin. In mingw, the former resolves to long long, the latter long, as per resp. C runtime types. __gthread_getspecific steps on GetLastError: refer here http://www.geocrawler.com/archives/3/6013/2000/10/0/4465027/ One other little bit, a recurring problem with sys_nerr and sys_errlist[] and dllimport in libiberty/strerror.c. This should probably be sent to libiberty; I haven't included in ChangeLog. I haven't done much testing of above changes with this particular build, but they have not caused any problems since initial testing with 2.95.3 prerelease 1 in Jan (I think) and release in March. The main difference between my prior builds (which I have tested extensively) and this is: config/i386/cygwin.h: Recent changes to this get rid of use of builtin specs to accomodate mno-cygwin-all search dirs are specified in specs file. Perhaps that could be done for mingw as well, but the way I have built is to use the default builtin specs as in prior mingw releases. I've put a guard in so that cygwin's undefs don't get applied to a native mingw build. DIR_SEPARATOR: make '/' the default for mingw, like cygwin. version.c: insert mingw into the version string. I tried to use an #ifdef __MINGW32__ here to get distinct version string for mingw vs cygwin but that breaks the sed script in configure. The 'cygwin-mingw' bit of the string won't do of course, but is the last of my concerns at the moment. I configured like so: ../gcc-2.95.3/configure --prefix=/mingw --host=mingw32 --target=mingw32 --disable-nls --enable-threads=win32 --enable-languages=f77,c++ and built like so: make "CFLAGS=-O2" bootstrap This build, of course, will provide the mingw-extra bits for the cygwin -mno-cygwin folk. Danny _____________________________________________________________________________ http://messenger.yahoo.com.au - Yahoo! Messenger - Voice chat, mail alerts, stock quotes and favourite news and lots more! --0-440941406-990074050=:17212 Content-Type: application/octet-stream; name="gcc-2.95.3-4m.diff" Content-Transfer-Encoding: base64 Content-Description: gcc-2.95.3-4m.diff Content-Disposition: attachment; filename="gcc-2.95.3-4m.diff" Q2hhbmdlTG9nDQoNCgkyMDAxLTA1LTE3ICBEYW5ueSBTbWl0aCAgPGRhbm55 X3Jfc21pdGhfMjAwMUB5YWhvby5jb20ubno+DQoNCgkqIGdjYy9jb25maWcv aTM4Ni9taW5ndzMyLmggKE5BVElWRV9NSU5HVyk6IERlZmluZSBiZWZvcmUg aW5jbHVkaW5nDQoJY3lnd2luLmguDQoJKENQUF9QUkVERUZJTkVTKTogVXBk YXRlIF9fTUlOR1czMl9fIHRvIDAuNS4NCgkoU1RBTkRBUkRfSU5DTFVERV9E SVIpOiBHZXQgcmlkIG9mIGkzODYtIGluIGRpciBuYW1lLiANCgkoQ1BMVVNQ TFVTX0NQUF9TUEVDKTogVW5kZWZpbmUuDQoJKiBnY2MvY29uZmlnL2kzODYv Y3lnd2luLmg6IChOQVRJVkVfTUlOR1cpOiBHdWFyZCB1bmRlZnMgb2YNCglz cGVjIGRlZmluZXMgd2hlbiBidWlsZGluZyBmb3IgbmF0aXZlIG1pbmd3Lg0K CSogZ2NjL2NvbmZpZy9pMzg2L3htLW1pbmd3MzIuaCAoRElSX1NFUEFSQVRP UltfMl0pOiBNYWtlICcvJyBkZWZhdWx0Lg0KCSogZ2NjL2NvbmZpZ3VyZS5p biAodG0tZmlsZSk6IE1ha2UgbXN2Y3J0IGRlZmF1bHQgZm9yIG1pbmd3Lg0K CSogZ2NjL2NvbmZpZ3VyZTogUmVnZW5lcmF0ZS4NCgkqIGdjYy9saWJnY2My LmMgKE1BWFBBVEhMRU4pOiBJZiBub3QgZGVmaW5lZCwgZGVmaW5lIGFzIE1B WF9QQVRIIGlmDQoJYXZhaWxhYmxlLCBlbHNlIDEwMjQuDQoJKiBnY2MvdmVy c2lvbi5jOiBBZGQgIi1taW5ndyIgdG8gc3RyaW5nLiANCgkqIGdjYy9ndGhy LXdpbjMyLmggKF9fZ3RocmVhZF9nZXRzcGVjaWZpYyk6IFNhdmUgYW5kIHJl c3RvcmUgbGFzdCBlcnJvci4gDQoJKiBsaWJpby9nZW4tcGFyYW1zKFZUQUJM RV9MQUJFTF9QUkVGSVgpOiBGaXggc2VkIHNjcmlwdCB0byBoYW5kbGUNCgl2 dGFibGVfdGh1bmsgZGVjb3JhdGlvbi4gDQoNCglGaXggbGliaW8gaGVhZGVy L2ltcGxlbWVudGF0aW9uIHR5cGUgbWlzbWF0Y2hlcy4NCgkyMDAwLTA5LTI5 ICBKLiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4N Cg0KCSogbGliaW8vZmlsZW9wcy5jIChfSU9fZmlsZV9mb3Blbik6IENoYW5n ZSBpbXBsZW1lbnRhdGlvbiB0byBtYXRjaA0KCXByb3RvdHlwZSBpbiBsaWJp b1AuaC4NCgkoX0lPX2ZpbGVfc2Vla29mZik6IExpa2V3aXNlLg0KCShfSU9f ZmlsZV9zZWVrKTogTGlrZXdpc2UuDQoJKiBsaWJpby9nZW5vcHMuYyAoX0lP X2RlZmF1bHRfc2Vla3Bvcyk6IExpa2V3aXNlLg0KCShfSU9fZGVmYXVsdF9z ZWVrb2ZmKTogTGlrZXdpc2UuDQoJKF9JT19kZWZhdWx0X3NlZWspOiBMaWtl d2lzZS4NCgkqIGxpYmlvL2lvc2Vla29mZi5jIChfSU9fc2Vla29mZik6IExp a2V3aXNlLg0KCSogbGliaW8vaW9zZWVrcG9zLmMgKF9JT19zZWVrcG9zKTog TGlrZXdpc2UuDQoJKiBsaWJpby9zdHJvcHMuYyAoX0lPX3N0cl9zZWVrb2Zm KTogTGlrZXdpc2UuDQoJKiBsaWJpby9saWJpb1AuaDogQWx3YXlzIGNoZWNr IHRoYXQgX0dfSU9fSU9fRklMRV9WRVJTSU9OIGlzIGRlZmluZWQNCgliZWZv cmUgdGVzdGluZyB2ZXJzaW9uLg0KDQoNCg0KZGlmZiAtdXJwYiBnY2MtMi45 NS4zLTRcZ2NjXGNvbmZpZ1xpMzg2XGN5Z3dpbi5oIGdjYy0yLjk1LjMtNG1c Z2NjXGNvbmZpZ1xpMzg2XGN5Z3dpbi5oDQotLS0gZ2NjLTIuOTUuMy00XGdj Y1xjb25maWdcaTM4NlxjeWd3aW4uaAlUaHUgQXByIDI2IDExOjA0OjI0IDIw MDENCisrKyBnY2MtMi45NS4zLTRtXGdjY1xjb25maWdcaTM4NlxjeWd3aW4u aAlXZWQgTWF5IDE2IDE5OjM4OjIwIDIwMDENCkBAIC01OTIsNiArNTkyLDgg QEAgZXh0ZXJuIHZvaWQgaTM4Nl9wZV9hc21fZmlsZV9lbmQgU1RESU9fUA0K ICNkZWZpbmUgU0VUX0FTTV9PUCAiXHQuc2V0Ig0KICNlbmRpZg0KIA0KKy8q ICB0aGVzZSB1bmRlZnMgYnJlYWsgbWluZ3csIHdoaWNoIGN1cnJlbnRseSB1 c2VzIGJ1aWx0LWluIHNwZWNzICovDQorI2lmbmRlZiBOQVRJVkVfTUlOR1cg IA0KICN1bmRlZiBNRF9TVEFSVEZJTEVfUFJFRklYDQogI2lmIDANCiAjZGVm aW5lIE1EX1NUQVJURklMRV9QUkVGSVggICAgIENZR1dJTl9MSUINCkBAIC02 MTEsMyArNjEzLDQgQEAgZXh0ZXJuIHZvaWQgaTM4Nl9wZV9hc21fZmlsZV9l bmQgU1RESU9fUA0KICN1bmRlZiBTVEFOREFSRF9JTkNMVURFX0RJUg0KICNk ZWZpbmUgU1RBTkRBUkRfSU5DTFVERV9ESVIgMA0KICNlbmRpZg0KKyNlbmRp ZiAvKiBuZGVmIE5BVElWRV9NSU5HVyAqLw0KT25seSBpbiBnY2MtMi45NS4z LTRtXGdjY1xjb25maWdcaTM4NjogY3lnd2luLm1rLmgNCmRpZmYgLXVycGIg Z2NjLTIuOTUuMy00XGdjY1xjb25maWdcaTM4NlxtaW5ndzMyLmggZ2NjLTIu OTUuMy00bVxnY2NcY29uZmlnXGkzODZcbWluZ3czMi5oDQotLS0gZ2NjLTIu OTUuMy00XGdjY1xjb25maWdcaTM4NlxtaW5ndzMyLmgJV2VkIEphbiAxOSAx OToyMDo0MCAyMDAwDQorKysgZ2NjLTIuOTUuMy00bVxnY2NcY29uZmlnXGkz ODZcbWluZ3czMi5oCVdlZCBNYXkgMTYgMTk6Mzg6MjAgMjAwMQ0KQEAgLTIz LDcgKzIzLDEwIEBAIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAqLw0K IA0KIC8qIE1vc3Qgb2YgdGhpcyBpcyB0aGUgc2FtZSBhcyBmb3IgY3lnd2lu LCBleGNlcHQgZm9yIGNoYW5naW5nIHNvbWUNCiAgICBzcGVjcy4gICovDQot DQorI2lmbmRlZiBOQVRJVkVfTUlOR1cNCisgLyogdGhpcyBpcyB0byBxdWFy ZCBhZ2FpbnN0IHNvbWUgdW5kZWZzIG9mIGNvbW1hbmQtbGluZSBkZWZpbmVz IGJ5IGN5Z3dpbi5oICovDQorI2RlZmluZSBOQVRJVkVfTUlOR1cNCisjZW5k aWYNCiAjaW5jbHVkZSAiaTM4Ni9jeWd3aW4uaCINCiANCiAvKiBQbGVhc2Ug a2VlcCBjaGFuZ2VzIHRvIENQUF9QUkVERUZJTkVTIGluIHN5bmMgd2l0aCBp Mzg2L2NydGRsbC4gVGhlDQpAQCAtMzEsNyArMzQsNyBAQCBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4gKi8NCiAgICBkaXN0aW5ndWlzaCBNU1ZDIGZy b20gQ1JURExMIHJ1bnRpbWUgaW4gbWluZ3cgaGVhZGVycy4gKi8NCiAjdW5k ZWYgQ1BQX1BSRURFRklORVMNCiAjZGVmaW5lIENQUF9QUkVERUZJTkVTICIt RGkzODYgLURfV0lOMzIgLURXSU4zMiAtRF9fV0lOMzJfXyBcDQotICAtRF9f TUlOR1czMl9fPTAuMiAtRF9fTVNWQ1JUX18gLURXSU5OVCAgLURfWDg2Xz0x IC1EX19TVERDX189MVwNCisgIC1EX19NSU5HVzMyX189MC41IC1EX19NU1ZD UlRfXyAtRFdJTk5UICAtRF9YODZfPTEgLURfX1NURENfXz0xXA0KICAgLURf X3N0ZGNhbGw9X19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKSBcDQogICAt RF9zdGRjYWxsPV9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkgXA0KICAg LURfX2NkZWNsPV9fYXR0cmlidXRlX18oKF9fY2RlY2xfXykpIFwNCkBAIC00 MCw3ICs0Myw3IEBAIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAqLw0K IA0KIC8qIFNwZWNpZmljIGEgZGlmZmVyZW50IGRpcmVjdG9yeSBmb3IgdGhl IHN0YW5kYXJkIGluY2x1ZGUgZmlsZXMuICAqLw0KICN1bmRlZiBTVEFOREFS RF9JTkNMVURFX0RJUg0KLSNkZWZpbmUgU1RBTkRBUkRfSU5DTFVERV9ESVIg Ii91c3IvbG9jYWwvaTM4Ni1taW5ndzMyL2luY2x1ZGUiDQorI2RlZmluZSBT VEFOREFSRF9JTkNMVURFX0RJUiAiL3Vzci9sb2NhbC9taW5ndzMyL2luY2x1 ZGUiDQogDQogI2RlZmluZSBTVEFOREFSRF9JTkNMVURFX0NPTVBPTkVOVCAi TUlOR1czMiINCiANCkBAIC00OCw2ICs1MSw5IEBAIEJvc3RvbiwgTUEgMDIx MTEtMTMwNywgVVNBLiAqLw0KICNkZWZpbmUgQ1BQX1NQRUMgXA0KICAgIi1y ZW1hcCAlKGNwcF9jcHUpICV7cG9zaXg6LURfUE9TSVhfU09VUkNFfSAle210 aHJlYWRzOi1EX01UfSINCiANCisvKiBPdmVycmlkZSBDeWd3aW4gZGVmaW5p dGlvbiwgd2hpY2ggaXMgY29uZGl0aW9uYWwgb24gLW1uby1jeWd3aW4gICov DQorI3VuZGVmIENQTFVTUExVU19DUFBfU1BFQw0KKw0KIC8qIEZvciBXaW5k b3dzIGFwcGxpY2F0aW9ucywgaW5jbHVkZSBtb3JlIGxpYnJhcmllcywgYnV0 IGFsd2F5cyBpbmNsdWRlDQogICAga2VybmVsMzIuICAqLw0KICN1bmRlZiBM SUJfU1BFQw0KQEAgLTEwNSw0ICsxMTEsMyBAQCBkbyB7CQkJCQkJXA0KIC8q IE92ZXJyaWRlIEN5Z3dpbidzIGRlZmluaXRpb24uIFRoaXMgaXMgbmVjZXNz YXJ5IG5vdyBkdWUgdG8gdGhlIHdheQ0KICAgIEN5Z3dpbiBwcm9maWxpbmcg Y29kZSBpcyB3cml0dGVuLiBPbmNlICJmaXhlZCIsIHdlIGNhbiByZW1vdmUg dGhpcy4gICovDQogI3VuZGVmIFNVQlRBUkdFVF9QUk9MT0dVRQ0KLQ0KZGlm ZiAtdXJwYiBnY2MtMi45NS4zLTRcZ2NjXGNvbmZpZ1xpMzg2XHhtLW1pbmd3 MzIuaCBnY2MtMi45NS4zLTRtXGdjY1xjb25maWdcaTM4Nlx4bS1taW5ndzMy LmgNCi0tLSBnY2MtMi45NS4zLTRcZ2NjXGNvbmZpZ1xpMzg2XHhtLW1pbmd3 MzIuaAlGcmkgTm92IDA1IDE0OjA5OjU2IDE5OTkNCisrKyBnY2MtMi45NS4z LTRtXGdjY1xjb25maWdcaTM4Nlx4bS1taW5ndzMyLmgJVGh1IE1heSAxNyAx Mzo0MTo0NSAyMDAxDQpAQCAtMzUsOCArMzUsOCBAQCBCb3N0b24sIE1BIDAy MTExLTEzMDcsIFVTQS4gKi8NCiAjZGVmaW5lIGVudmlyb24gX2Vudmlyb24N CiANCiAvKiBFdmVuIHRob3VnaCB3ZSBzdXBwb3J0ICIvIiwgYWxsb3cgIlwi IHNpbmNlIGV2ZXJ5Ym9keSB0ZXN0cyBib3RoLiAgKi8NCi0jZGVmaW5lIERJ Ul9TRVBBUkFUT1IgJ1xcJw0KLSNkZWZpbmUgRElSX1NFUEFSQVRPUl8yICcv Jw0KKyNkZWZpbmUgRElSX1NFUEFSQVRPUiAnLycNCisjZGVmaW5lIERJUl9T RVBBUkFUT1JfMiAnXFwnDQogDQogLyogTWluZ3czMiBkb2VzIG5vdCB0cnkg dG8gaGlkZSB0aGUgdW5kZXJseWluZyBET1MtYmFzZWQgZmlsZSBzeXN0ZW0N CiAgICBsaWtlIEN5Z3dpbiBkb2VzLiAgKi8NCk9ubHkgaW4gZ2NjLTIuOTUu My00bVxnY2NcY29uZmlnXGkzODY6IHhtLW1pbmd3MzIuaC4kJCQNCmRpZmYg LXVycGIgZ2NjLTIuOTUuMy00XGdjY1xjb25maWd1cmUgZ2NjLTIuOTUuMy00 bVxnY2NcY29uZmlndXJlDQotLS0gZ2NjLTIuOTUuMy00XGdjY1xjb25maWd1 cmUJU2F0IE1hciAxNyAwNjo0Mjo1MiAyMDAxDQorKysgZ2NjLTIuOTUuMy00 bVxnY2NcY29uZmlndXJlCVRodSBNYXkgMTcgMTA6MjA6NDYgMjAwMQ0KQEAg LTM4OTYsMTAgKzM4OTYsMTAgQEAgZm9yIG1hY2hpbmUgaW4gJGJ1aWxkICRo b3N0ICR0YXJnZXQ7IGRvDQogCQlmaQ0KIAkJZXhlZXh0PS5leGUNCiAJCWNh c2UgJG1hY2hpbmUgaW4NCi0JCQkqbWluZ3czMm1zdiopDQotCQkJCTs7DQot CQkJKm1pbndnMzJjcnQqIHwgKm1pbmd3MzIqKQ0KKwkJCSptaW5ndzMyY3J0 KikNCiAJCQkJdG1fZmlsZT0iJHt0bV9maWxlfSBpMzg2L2NydGRsbC5oIg0K KyAJCQkJOzsNCisJCQkqbWluZ3czMm1zdiogfCAqbWluZ3czMiopDQogCQkJ CTs7DQogCQllc2FjDQogCQk7Ow0KZGlmZiAtdXJwYiBnY2MtMi45NS4zLTRc Z2NjXGNvbmZpZ3VyZS5pbiBnY2MtMi45NS4zLTRtXGdjY1xjb25maWd1cmUu aW4NCi0tLSBnY2MtMi45NS4zLTRcZ2NjXGNvbmZpZ3VyZS5pbglTYXQgTWFy IDE3IDA2OjM5OjQwIDIwMDENCisrKyBnY2MtMi45NS4zLTRtXGdjY1xjb25m aWd1cmUuaW4JV2VkIE1heSAxNiAxOTozODoxNiAyMDAxDQpAQCAtMTU1Miwx MSArMTU1MiwxMSBAQCBjaGFuZ2VxdW90ZShbLF0pZG5sDQogCQlmaQ0KIAkJ ZXhlZXh0PS5leGUNCiAJCWNhc2UgJG1hY2hpbmUgaW4NCi0JCQkqbWluZ3cz Mm1zdiopDQotCQkJCTs7DQotCQkJKm1pbndnMzJjcnQqIHwgKm1pbmd3MzIq KQ0KKwkJCQkqbWlud2czMmNydCogKQ0KIAkJCQl0bV9maWxlPSIke3RtX2Zp bGV9IGkzODYvY3J0ZGxsLmgiDQogCQkJCTs7DQorCQkJCSptaW5ndzMybXN2 KiB8ICptaW5ndzMyKikNCisJCQkJCTs7DQogCQllc2FjDQogCQk7Ow0KIGNo YW5nZXF1b3RlKCwpZG5sDQpkaWZmIC11cnBiIGdjYy0yLjk1LjMtNFxnY2Nc Z3Roci13aW4zMi5oIGdjYy0yLjk1LjMtNG1cZ2NjXGd0aHItd2luMzIuaA0K LS0tIGdjYy0yLjk1LjMtNFxnY2NcZ3Roci13aW4zMi5oCUZyaSBOb3YgMDUg MjE6Mzk6NDYgMTk5OQ0KKysrIGdjYy0yLjk1LjMtNG1cZ2NjXGd0aHItd2lu MzIuaAlXZWQgTWF5IDE2IDE5OjM4OjE2IDIwMDENCkBAIC0xNzIsNyArMTcy LDExIEBAIF9fZ3RocmVhZF9rZXlfZGVsZXRlIChfX2d0aHJlYWRfa2V5X3Qg a2UNCiBzdGF0aWMgaW5saW5lIHZvaWQgKg0KIF9fZ3RocmVhZF9nZXRzcGVj aWZpYyAoX19ndGhyZWFkX2tleV90IGtleSkNCiB7DQotICByZXR1cm4gVGxz R2V0VmFsdWUgKGtleSk7DQorICB2b2lkICpwdHI7DQorICBpbnQgbGFzdGVy cm9yID0gR2V0TGFzdEVycm9yKCk7DQorICBwdHIgPSBUbHNHZXRWYWx1ZSAo a2V5KTsNCisgIFNldExhc3RFcnJvciggbGFzdGVycm9yICk7DQorICByZXR1 cm4gcHRyOw0KIH0NCiANCiBzdGF0aWMgaW5saW5lIGludA0KZGlmZiAtdXJw YiBnY2MtMi45NS4zLTRcZ2NjXGxpYmdjYzIuYyBnY2MtMi45NS4zLTRtXGdj Y1xsaWJnY2MyLmMNCi0tLSBnY2MtMi45NS4zLTRcZ2NjXGxpYmdjYzIuYwlX ZWQgSmFuIDMxIDEwOjM2OjA2IDIwMDENCisrKyBnY2MtMi45NS4zLTRtXGdj Y1xsaWJnY2MyLmMJV2VkIE1heSAxNiAyMzowODoyOSAyMDAxDQpAQCAtNDgs NiArNDgsMTUgQEAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLw0K ICNpbmNsdWRlIDxzdGRkZWYuaD4NCiAjZW5kaWYNCiANCisjaWZuZGVmIE1B WFBBVEhMRU4NCisjaWZkZWYgTUFYX1BBVEgNCisjZGVmaW5lIE1BWFBBVEhM RU4gTUFYX1BBVEgNCisjZWxzZQ0KKyNkZWZpbmUgTUFYUEFUSExFTiAxMDI0 DQorI2VuZGlmDQorI2VuZGlmDQorDQorDQogLyogRG9uJ3QgdXNlIGBmYW5j eV9hYm9ydCcgaGVyZSBldmVuIGlmIGNvbmZpZy5oIHNheXMgdG8gdXNlIGl0 LiAgKi8NCiAjaWZkZWYgYWJvcnQNCiAjdW5kZWYgYWJvcnQNCk9ubHkgaW4g Z2NjLTIuOTUuMy00bVxnY2M6IHNqbGouZGlmZg0KZGlmZiAtdXJwYiBnY2Mt Mi45NS4zLTRcZ2NjXHZlcnNpb24uYyBnY2MtMi45NS4zLTRtXGdjY1x2ZXJz aW9uLmMNCi0tLSBnY2MtMi45NS4zLTRcZ2NjXHZlcnNpb24uYwlUaHUgQXBy IDI2IDA0OjM2OjAwIDIwMDENCisrKyBnY2MtMi45NS4zLTRtXGdjY1x2ZXJz aW9uLmMJVGh1IE1heSAxNyAxMTo0Mjo1MyAyMDAxDQpAQCAtMSArMSBAQA0K LWNoYXIgKnZlcnNpb25fc3RyaW5nID0gIjIuOTUuMy00IChjeWd3aW4gc3Bl Y2lhbCkiOw0KK2NoYXIgKnZlcnNpb25fc3RyaW5nID0gIjIuOTUuMy00IChj eWd3aW4tbWluZ3cgc3BlY2lhbCkiOw0KZGlmZiAtdXJwYiBnY2MtMi45NS4z LTRcbGliaWJlcnR5XHN0cmVycm9yLmMgZ2NjLTIuOTUuMy00bVxsaWJpYmVy dHlcc3RyZXJyb3IuYw0KLS0tIGdjYy0yLjk1LjMtNFxsaWJpYmVydHlcc3Ry ZXJyb3IuYwlUdWUgTWF5IDMwIDA5OjQ1OjMyIDIwMDANCisrKyBnY2MtMi45 NS4zLTRtXGxpYmliZXJ0eVxzdHJlcnJvci5jCVdlZCBNYXkgMTYgMTk6Mzg6 NDcgMjAwMQ0KQEAgLTQ2NCwxMCArNDY0LDEwIEBAIHN0YXRpYyBpbnQgc3lz X25lcnI7DQogc3RhdGljIGNvbnN0IGNoYXIgKipzeXNfZXJybGlzdDsNCiAN CiAjZWxzZQ0KLQ0KKyNpZiAhKGRlZmluZWQgIF9fTUlOR1czMl9fICkgLyog ZG9uJ3Qgb3ZlcnJpZGUgdGhlIF9fZGxsaW1wb3J0IGF0dHJpYnV0ZSAqLw0K IGV4dGVybiBpbnQgc3lzX25lcnI7DQogZXh0ZXJuIGNoYXIgKnN5c19lcnJs aXN0W107DQotDQorI2VuZGlmDQogI2VuZGlmDQogDQogDQpkaWZmIC11cnBi IGdjYy0yLjk1LjMtNFxsaWJpb1xmaWxlb3BzLmMgZ2NjLTIuOTUuMy00bVxs aWJpb1xmaWxlb3BzLmMNCi0tLSBnY2MtMi45NS4zLTRcbGliaW9cZmlsZW9w cy5jCUZyaSBOb3YgMDUgMTQ6MTA6MTYgMTk5OQ0KKysrIGdjYy0yLjk1LjMt NG1cbGliaW9cZmlsZW9wcy5jCVdlZCBNYXkgMTYgMTk6Mzg6NDcgMjAwMQ0K QEAgLTI2MCw3ICsyNjAsNyBAQCBfSU9fZG9fd3JpdGUgKGZwLCBkYXRhLCB0 b19kbykNCiAgICAgZnAtPl9vZmZzZXQgPSBfSU9fcG9zX0JBRDsNCiAgIGVs c2UgaWYgKGZwLT5fSU9fcmVhZF9lbmQgIT0gZnAtPl9JT193cml0ZV9iYXNl KQ0KICAgICB7DQotICAgICAgX0lPX3Bvc190IG5ld19wb3MNCisgICAgICBf SU9fb2ZmX3QgbmV3X3Bvcw0KIAk9IF9JT19TWVNTRUVLIChmcCwgZnAtPl9J T193cml0ZV9iYXNlIC0gZnAtPl9JT19yZWFkX2VuZCwgMSk7DQogICAgICAg aWYgKG5ld19wb3MgPT0gX0lPX3Bvc19CQUQpDQogCXJldHVybiBFT0Y7DQpA QCAtNDE5LDE0ICs0MTksMTQgQEAgX0lPX2ZpbGVfc3luYyAoZnApDQogICBy ZXR1cm4gcmV0dmFsOw0KIH0NCiANCi1fSU9fcG9zX3QNCitfSU9fb2ZmX3QN CiBfSU9fZmlsZV9zZWVrb2ZmIChmcCwgb2Zmc2V0LCBkaXIsIG1vZGUpDQog ICAgICBfSU9fRklMRSAqZnA7DQogICAgICBfSU9fb2ZmX3Qgb2Zmc2V0Ow0K ICAgICAgaW50IGRpcjsNCiAgICAgIGludCBtb2RlOw0KIHsNCi0gIF9JT19w b3NfdCByZXN1bHQ7DQorICBfSU9fb2ZmX3QgcmVzdWx0Ow0KICAgX0lPX29m Zl90IGRlbHRhLCBuZXdfb2Zmc2V0Ow0KICAgbG9uZyBjb3VudDsNCiAgIC8q IFBPU0lYLjEgOC4yLjMuNyBzYXlzIHRoYXQgYWZ0ZXIgYSBjYWxsIHRoZSBm Zmx1c2goKSB0aGUgZmlsZQ0KQEAgLTQ4OSw3ICs0ODksNyBAQCBfSU9fZmls ZV9zZWVrb2ZmIChmcCwgb2Zmc2V0LCBkaXIsIG1vZGUpDQogICAgICAgJiYg IV9JT19pbl9iYWNrdXAgKGZwKSkNCiAgICAgew0KICAgICAgIC8qIE9mZnNl dCByZWxhdGl2ZSB0byBzdGFydCBvZiBtYWluIGdldCBhcmVhLiAqLw0KLSAg ICAgIF9JT19wb3NfdCByZWxfb2Zmc2V0ID0gKG9mZnNldCAtIGZwLT5fb2Zm c2V0DQorICAgICAgX0lPX29mZl90IHJlbF9vZmZzZXQgPSAob2Zmc2V0IC0g ZnAtPl9vZmZzZXQNCiAJCQkgICAgICArIChmcC0+X0lPX3JlYWRfZW5kIC0g ZnAtPl9JT19yZWFkX2Jhc2UpKTsNCiAgICAgICBpZiAocmVsX29mZnNldCA+ PSAwKQ0KIAl7DQpAQCAtNTg3LDcgKzU4Nyw3IEBAIF9JT19maWxlX3JlYWQg KGZwLCBidWYsIHNpemUpDQogICByZXR1cm4gcmVhZCAoZnAtPl9maWxlbm8s IGJ1Ziwgc2l6ZSk7DQogfQ0KIA0KLV9JT19wb3NfdA0KK19JT19vZmZfdA0K IF9JT19maWxlX3NlZWsgKGZwLCBvZmZzZXQsIGRpcikNCiAgICAgIF9JT19G SUxFICpmcDsNCiAgICAgIF9JT19vZmZfdCBvZmZzZXQ7DQpkaWZmIC11cnBi IGdjYy0yLjk1LjMtNFxsaWJpb1xnZW4tcGFyYW1zIGdjYy0yLjk1LjMtNG1c bGliaW9cZ2VuLXBhcmFtcw0KLS0tIGdjYy0yLjk1LjMtNFxsaWJpb1xnZW4t cGFyYW1zCUZyaSBOb3YgMDUgMTQ6MTA6MTYgMTk5OQ0KKysrIGdjYy0yLjk1 LjMtNG1cbGliaW9cZ2VuLXBhcmFtcwlXZWQgTWF5IDE2IDE5OjM4OjQ3IDIw MDENCkBAIC0xMjYsMTEgKzEyNiwxMSBAQCBpZiB0ZXN0IC16ICIke05BTUVT X0hBVkVfVU5ERVJTQ09SRX0iIFwNCiAgICAgICAjIE5vdyB3ZSBnZXQgcmlk IG9mIHRoZSA8PiwgYW5kIGFueSBvdGhlciBqdW5rIG9uIHRoZSBubSBvdXRw dXQgbGluZS4NCiAgICAgICAjIChXZSBnZXQgcmlkIG9mIDxmaWxlYnVmPiBp biBjYXNlIG5tIGluY2x1ZGVkIGRlYnVnZ2luZyBvdXRwdXQgZm9yDQogICAg ICAgIyBjbGFzcyBmaWxlYnVmIGl0c2VsZi4pICBPbiB3aW5kb3dzMzIsIHdl IGFsc28gbmVlZCB0byBkZWxldGUgdGhlIA0KLSAgICAgICMgdW5pcXVlIHNl Y3Rpb25zICguZGF0YSRfdnQkKiksIG90aGVyd2lzZSB3ZSBnZXQgdGhlIHdy b25nIHJlc3VsdC4NCisgICAgICAjIHVuaXF1ZSBzZWN0aW9ucyAoLmRhdGFc JF8qdnRbJF9dKSwgb3RoZXJ3aXNlIHdlIGdldCB0aGUgd3JvbmcgcmVzdWx0 Lg0KICAgICAgICMgRmluYWxseSwgd2Ugc2VsZWN0IHRoZSBmaXJzdCBsaW5l IG9mIHRoZSByZXN1bHQsIGFuZCBob3BlIHRoYXQncyANCiAgICAgICAjIHdo YXQgd2Ugd2FudGVkIQ0KICAgICAgIHZ0YWJfbmFtZT1gJHtTRUR9IC1uIC1l ICcvPGZpbGVidWY+L2QnIFwNCi0gICAgICAgIC1lICcvXC5kYXRhWyRfLl08 X3Z0XCQ3ZmlsZWJ1Zj4vZCcgXA0KKyAgICAgICAgLWUgJy9cLmRhdGFbJF8u XTxfKnZ0WyRfXTdmaWxlYnVmPi9kJyBcDQogICAgICAgICAtZSAncy9eLio8 XCguKlwpPi4qJC9cMS9wJyBcDQogICAgICAgICA8ZHVtbXkub3V0IHwgJHtT RUR9IC1uIC1lICcxcCdgDQogICAgICAgY2FzZSAiJHt2dGFiX25hbWV9IiBp bg0KZGlmZiAtdXJwYiBnY2MtMi45NS4zLTRcbGliaW9cZ2Vub3BzLmMgZ2Nj LTIuOTUuMy00bVxsaWJpb1xnZW5vcHMuYw0KLS0tIGdjYy0yLjk1LjMtNFxs aWJpb1xnZW5vcHMuYwlGcmkgTm92IDA1IDE0OjEwOjE2IDE5OTkNCisrKyBn Y2MtMi45NS4zLTRtXGxpYmlvXGdlbm9wcy5jCVdlZCBNYXkgMTYgMTk6Mzg6 NDcgMjAwMQ0KQEAgLTQ2NywxMCArNDY3LDEwIEBAIF9JT19kZWZhdWx0X3Nl dGJ1ZiAoZnAsIHAsIGxlbikNCiAgICAgcmV0dXJuIGZwOw0KIH0NCiANCi1f SU9fcG9zX3QNCitfSU9fb2ZmX3QNCiBfSU9fZGVmYXVsdF9zZWVrcG9zIChm cCwgcG9zLCBtb2RlKQ0KICAgICAgX0lPX0ZJTEUgKmZwOw0KLSAgICAgX0lP X3Bvc190IHBvczsNCisgICAgIF9JT19vZmZfdCBwb3M7DQogICAgICBpbnQg bW9kZTsNCiB7DQogICByZXR1cm4gX0lPX1NFRUtPRkYgKGZwLCBfSU9fcG9z X2FzX29mZiAocG9zKSwgMCwgbW9kZSk7DQpAQCAtNTUxLDcgKzU1MSw3IEBA IF9JT19kZWZhdWx0X2ZpbmlzaCAoZnAsIGR1bW15KQ0KICAgX0lPX3VuX2xp bmsgKGZwKTsNCiB9DQogDQotX0lPX3Bvc190DQorX0lPX29mZl90DQogX0lP X2RlZmF1bHRfc2Vla29mZiAoZnAsIG9mZnNldCwgZGlyLCBtb2RlKQ0KICAg ICAgX0lPX0ZJTEUgKmZwOw0KICAgICAgX0lPX29mZl90IG9mZnNldDsNCkBA IC04ODIsNyArODgyLDcgQEAgX0lPX2RlZmF1bHRfcGJhY2tmYWlsIChmcCwg YykNCiAgIHJldHVybiAodW5zaWduZWQgY2hhcikgKmZwLT5fSU9fcmVhZF9w dHI7DQogfQ0KIA0KLV9JT19wb3NfdA0KK19JT19vZmZfdA0KIF9JT19kZWZh dWx0X3NlZWsgKGZwLCBvZmZzZXQsIGRpcikNCiAgICAgIF9JT19GSUxFICpm cDsNCiAgICAgIF9JT19vZmZfdCBvZmZzZXQ7DQpkaWZmIC11cnBiIGdjYy0y Ljk1LjMtNFxsaWJpb1xpb2Z0ZWxsLmMgZ2NjLTIuOTUuMy00bVxsaWJpb1xp b2Z0ZWxsLmMNCi0tLSBnY2MtMi45NS4zLTRcbGliaW9caW9mdGVsbC5jCUZy aSBOb3YgMDUgMTQ6MTA6MTYgMTk5OQ0KKysrIGdjYy0yLjk1LjMtNG1cbGli aW9caW9mdGVsbC5jCVdlZCBNYXkgMTYgMTk6Mzg6NDcgMjAwMQ0KQEAgLTMx LDcgKzMxLDcgQEAgbG9uZyBpbnQNCiBfSU9fZnRlbGwgKGZwKQ0KICAgICAg X0lPX0ZJTEUgKmZwOw0KIHsNCi0gIF9JT19wb3NfdCBwb3M7DQorICBfSU9f b2ZmX3QgcG9zOw0KICAgQ0hFQ0tfRklMRSAoZnAsIC0xTCk7DQogICBfSU9f Y2xlYW51cF9yZWdpb25fc3RhcnQgKCh2b2lkICgqKSBfX1AgKCh2b2lkICop KSkgX0lPX2Z1bmxvY2tmaWxlLCBmcCk7DQogICBfSU9fZmxvY2tmaWxlIChm cCk7DQpkaWZmIC11cnBiIGdjYy0yLjk1LjMtNFxsaWJpb1xpb3NlZWtvZmYu YyBnY2MtMi45NS4zLTRtXGxpYmlvXGlvc2Vla29mZi5jDQotLS0gZ2NjLTIu OTUuMy00XGxpYmlvXGlvc2Vla29mZi5jCUZyaSBOb3YgMDUgMTQ6MTA6MTYg MTk5OQ0KKysrIGdjYy0yLjk1LjMtNG1cbGliaW9caW9zZWVrb2ZmLmMJV2Vk IE1heSAxNiAxOTozODo0NyAyMDAxDQpAQCAtMjUsMTQgKzI1LDE0IEBADQog DQogI2luY2x1ZGUgPGxpYmlvUC5oPg0KIA0KLV9JT19wb3NfdA0KK19JT19v ZmZfdA0KIF9JT19zZWVrb2ZmIChmcCwgb2Zmc2V0LCBkaXIsIG1vZGUpDQog ICAgICBfSU9fRklMRSAqZnA7DQogICAgICBfSU9fb2ZmX3Qgb2Zmc2V0Ow0K ICAgICAgaW50IGRpcjsNCiAgICAgIGludCBtb2RlOw0KIHsNCi0gIF9JT19w b3NfdCByZXR2YWw7DQorICBfSU9fb2ZmX3QgcmV0dmFsOw0KIA0KICAgLyog SWYgd2UgaGF2ZSBhIGJhY2t1cCBidWZmZXIsIGdldCByaWQgb2YgaXQsIHNp bmNlIHRoZSBfX3NlZWtvZmYNCiAgICAgIGNhbGxiYWNrIG1heSBub3Qga25v dyB0byBkbyB0aGUgcmlnaHQgdGhpbmcgYWJvdXQgaXQuDQpkaWZmIC11cnBi IGdjYy0yLjk1LjMtNFxsaWJpb1xpb3NlZWtwb3MuYyBnY2MtMi45NS4zLTRt XGxpYmlvXGlvc2Vla3Bvcy5jDQotLS0gZ2NjLTIuOTUuMy00XGxpYmlvXGlv c2Vla3Bvcy5jCUZyaSBOb3YgMDUgMTQ6MTA6MTYgMTk5OQ0KKysrIGdjYy0y Ljk1LjMtNG1cbGliaW9caW9zZWVrcG9zLmMJV2VkIE1heSAxNiAxOTozODo0 NyAyMDAxDQpAQCAtMjUsMTMgKzI1LDEzIEBADQogDQogI2luY2x1ZGUgPGxp YmlvUC5oPg0KIA0KLV9JT19wb3NfdA0KK19JT19vZmZfdA0KIF9JT19zZWVr cG9zIChmcCwgcG9zLCBtb2RlKQ0KICAgICAgX0lPX0ZJTEUgKmZwOw0KLSAg ICAgX0lPX3Bvc190IHBvczsNCisgICAgIF9JT19vZmZfdCBwb3M7DQogICAg ICBpbnQgbW9kZTsNCiB7DQotICBfSU9fcG9zX3QgcmV0dmFsOw0KKyAgX0lP X29mZl90IHJldHZhbDsNCiANCiAgIC8qIElmIHdlIGhhdmUgYSBiYWNrdXAg YnVmZmVyLCBnZXQgcmlkIG9mIGl0LCBzaW5jZSB0aGUgX19zZWVrb2ZmDQog ICAgICBjYWxsYmFjayBtYXkgbm90IGtub3cgdG8gZG8gdGhlIHJpZ2h0IHRo aW5nIGFib3V0IGl0Lg0KZGlmZiAtdXJwYiBnY2MtMi45NS4zLTRcbGliaW9c c3RyZWFtYnVmLmNjIGdjYy0yLjk1LjMtNG1cbGliaW9cc3RyZWFtYnVmLmNj DQotLS0gZ2NjLTIuOTUuMy00XGxpYmlvXHN0cmVhbWJ1Zi5jYwlGcmkgTm92 IDA1IDE0OjEwOjE4IDE5OTkNCisrKyBnY2MtMi45NS4zLTRtXGxpYmlvXHN0 cmVhbWJ1Zi5jYwlXZWQgTWF5IDE2IDE5OjM4OjQ3IDIwMDENCkBAIC0xNTAs MTIgKzE1MCwxMiBAQCBzdGF0aWMgaW50IF9JT19zYl9zdGF0KF9JT19GSUxF ICpmcCwgdm9pDQogc3RhdGljIGludCBfSU9fc2JfZG9hbGxvY2F0ZShfSU9f RklMRSAqZnApDQogeyByZXR1cm4gKChzdHJlYW1idWYqKWZwKS0+ZG9hbGxv Y2F0ZSgpOyB9DQogDQotc3RhdGljIF9JT19wb3NfdCBfSU9fc2Jfc2Vla29m ZihfSU9fRklMRSAqZnAsIF9JT19vZmZfdCBwb3MsIGludCBkaXIsIGludCBt b2RlKQ0KK3N0YXRpYyBfSU9fb2ZmX3QgX0lPX3NiX3NlZWtvZmYoX0lPX0ZJ TEUgKmZwLCBfSU9fb2ZmX3QgcG9zLCBpbnQgZGlyLCBpbnQgbW9kZSkNCiB7 DQogICByZXR1cm4gKChzdHJlYW1idWYqKWZwKS0+c2Vla29mZihwb3MsIChp b3M6OnNlZWtfZGlyKWRpciwgbW9kZSk7DQogfQ0KIA0KLXN0YXRpYyBfSU9f cG9zX3QgX0lPX3NiX3NlZWtwb3MoX0lPX0ZJTEUgKmZwLCBfSU9fcG9zX3Qg cG9zLCBpbnQgbW9kZSkNCitzdGF0aWMgX0lPX29mZl90IF9JT19zYl9zZWVr cG9zKF9JT19GSUxFICpmcCwgX0lPX3Bvc190IHBvcywgaW50IG1vZGUpDQog ew0KICAgcmV0dXJuICgoc3RyZWFtYnVmKilmcCktPnNlZWtwb3MocG9zLCBt b2RlKTsNCiB9DQpkaWZmIC11cnBiIGdjYy0yLjk1LjMtNFxsaWJpb1xzdHJv cHMuYyBnY2MtMi45NS4zLTRtXGxpYmlvXHN0cm9wcy5jDQotLS0gZ2NjLTIu OTUuMy00XGxpYmlvXHN0cm9wcy5jCUZyaSBOb3YgMDUgMTQ6MTA6MTggMTk5 OQ0KKysrIGdjYy0yLjk1LjMtNG1cbGliaW9cc3Ryb3BzLmMJV2VkIE1heSAx NiAxOTozODo0NyAyMDAxDQpAQCAtMjA1LDcgKzIwNSw3IEBAIF9JT19zdHJf Y291bnQgKGZwKQ0KIAkgIC0gZnAtPl9JT19yZWFkX2Jhc2UpOw0KIH0NCiAN Ci1fSU9fcG9zX3QNCitfSU9fb2ZmX3QNCiBfSU9fc3RyX3NlZWtvZmYgKGZw LCBvZmZzZXQsIGRpciwgbW9kZSkNCiAgICAgIF9JT19GSUxFICpmcDsNCiAg ICAgIF9JT19vZmZfdCBvZmZzZXQ7DQpAQCAtMjEzLDcgKzIxMyw3IEBAIF9J T19zdHJfc2Vla29mZiAoZnAsIG9mZnNldCwgZGlyLCBtb2RlKQ0KICAgICAg aW50IG1vZGU7DQogew0KICAgX0lPX3NzaXplX3QgY3VyX3NpemUgPSBfSU9f c3RyX2NvdW50IChmcCk7DQotICBfSU9fcG9zX3QgbmV3X3BvcyA9IEVPRjsN CisgIF9JT19vZmZfdCBuZXdfcG9zID0gRU9GOw0KIA0KICAgLyogTW92ZSB0 aGUgZ2V0IHBvaW50ZXIsIGlmIHJlcXVlc3RlZC4gKi8NCiAgIGlmIChtb2Rl ICYgX0lPU19JTlBVVCkNCg== --0-440941406-990074050=:17212--