From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9327 invoked by alias); 16 Sep 2002 13:59:50 -0000 Mailing-List: contact gdb-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sources.redhat.com Received: (qmail 9312 invoked from network); 16 Sep 2002 13:59:49 -0000 Received: from unknown (HELO devserv.devel.redhat.com) (66.187.233.200) by sources.redhat.com with SMTP; 16 Sep 2002 13:59:49 -0000 Received: from localhost (alexl@localhost) by devserv.devel.redhat.com (8.11.6/8.11.0) with ESMTP id g8GDxmD05813; Mon, 16 Sep 2002 09:59:48 -0400 X-Authentication-Warning: devserv.devel.redhat.com: alexl owned process doing -bs Date: Mon, 16 Sep 2002 06:59:00 -0000 From: Alexander Larsson X-X-Sender: alexl@devserv.devel.redhat.com To: gdb@sources.redhat.com, Jim Blandy Subject: Re: External debug symbols In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="279707962-413542381-1032184788=:17256" X-SW-Source: 2002-09/txt/msg00200.txt.bz2 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --279707962-413542381-1032184788=:17256 Content-Type: TEXT/PLAIN; charset=US-ASCII Content-length: 1733 On Tue, 27 Aug 2002, Alexander Larsson wrote: > On 21 Aug 2002, Jim Blandy wrote: > > > Wow, that's a lot less work than I expected it to be. It doesn't look > > especially wrong to me. Basically, the presence of a .debuglink > > section tells GDB that, whenever it loads one objfile, it should also > > load the other. When the stripped objfile is freed, the other one is > > freed, too. > > Ok. Here is a new, more "productized" patch. It is slightly larger, since > it does a bit more. New in this patch is: > * Some more memory handling code to handle the cases Jim mentioned. > * Verify the crc32 checksum of the debug symbol file > * look for separate debug files in several places: > 1 - In the same directory as the original file > 2 - In a .debug subdirectory > 3 - In a gloal directory, with the full pathname appended. > So if the global path is /usr/lib/debug it would look for > debug info for /usr/bin/ls in /usr/lib/debug/usr/bin/ls. > (global directory is settable in gdb, defaults to $libdir/debug) > > The last place is what we want to use for the Red Hat distribution. It > makes it very nice from a packaging standpoint. There was a slight bug in the old patch regarding the ALL_OBJFILES_SAFE macro, but here is an updated one that should work. I'd like to hear some comments on this patch. -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Alexander Larsson Red Hat, Inc alexl@redhat.com alla@lysator.liu.se He's a globe-trotting neurotic grifter with acid for blood. She's a mistrustful antique-collecting snake charmer with the power to see death. They fight crime! --279707962-413542381-1032184788=:17256 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="gdb_debug.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="gdb_debug.patch" Content-length: 19468 ZGlmZiAtLWV4Y2x1ZGUgJyp+JyAtLWV4Y2x1ZGUgJyoub3JpZycgLS1leGNs dWRlICcqLnJlaicgLS1leGNsdWRlICcuIyonIC0tZXhjbHVkZSAnKi5vJyAt LWV4Y2x1ZGUgQ1ZTIC0tZXhjbHVkZSBTQ0NTIC0tZXhjbHVkZSBSQ1MgLS1l eGNsdWRlICcuKi5mbGFncycgLS1leGNsdWRlIC5jdnNpZ25vcmUgLS1leGNs dWRlIC5kZXBlbmQgLXVyIGdkYi01LjIuMS9nZGIvYWNjb25maWcuaCBnZGIt NS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9scy9nZGIvYWNjb25maWcuaA0K LS0tIGdkYi01LjIuMS9nZGIvYWNjb25maWcuaAlTYXQgSmFuICA1IDE5OjM2 OjMyIDIwMDINCisrKyBnZGItNS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9s cy9nZGIvYWNjb25maWcuaAlNb24gQXVnIDI2IDE2OjQ0OjE0IDIwMDINCkBA IC0xNzMsMyArMTczLDcgQEANCiANCiAvKiBuYXRpdmVmaWxlICovDQogI3Vu ZGVmIEdEQl9OTV9GSUxFDQorDQorLyogZGVidWdkaXIgKi8NCisjdW5kZWYg REVCVUdESVINCisNCmRpZmYgLS1leGNsdWRlICcqficgLS1leGNsdWRlICcq Lm9yaWcnIC0tZXhjbHVkZSAnKi5yZWonIC0tZXhjbHVkZSAnLiMqJyAtLWV4 Y2x1ZGUgJyoubycgLS1leGNsdWRlIENWUyAtLWV4Y2x1ZGUgU0NDUyAtLWV4 Y2x1ZGUgUkNTIC0tZXhjbHVkZSAnLiouZmxhZ3MnIC0tZXhjbHVkZSAuY3Zz aWdub3JlIC0tZXhjbHVkZSAuZGVwZW5kIC11ciBnZGItNS4yLjEvZ2RiL2Fj aW5jbHVkZS5tNCBnZGItNS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9scy9n ZGIvYWNpbmNsdWRlLm00DQotLS0gZ2RiLTUuMi4xL2dkYi9hY2luY2x1ZGUu bTQJTW9uIEFwciAxNSAwNjoyODo0OSAyMDAyDQorKysgZ2RiLTUuMi4xLnNl cGFyYXRlX2RlYnVnX3N5bWJvbHMvZ2RiL2FjaW5jbHVkZS5tNAlNb24gQXVn IDI2IDExOjE2OjQwIDIwMDINCkBAIC05NzYsMyArOTc2LDE4IEBADQogICAq KSBDQz0iJENDICRhbV9jdl9wcm9nX2NjX3N0ZGMiIDs7DQogZXNhYw0KIF0p DQorDQorZG5sIHdyaXR0ZW4gYnkgR3VpZG8gRHJhaGVpbSA8Z3VpZG9kQGdt eC5kZT4sIG9yaWdpbmFsIGJ5IEFsZXhhbmRyZSBPbGl2YSANCitkbmwgVmVy c2lvbiAxLjMgKDIwMDEvMDMvMDIpDQorZG5sIHNvdXJjZSBodHRwOi8vd3d3 LmdudS5vcmcvc29mdHdhcmUvYWMtYXJjaGl2ZS9NaXNjZWxsYW5lb3VzL2Fj X2RlZmluZV9kaXIuaHRtbA0KKw0KK0FDX0RFRlVOKFtBQ19ERUZJTkVfRElS XSwgWw0KKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIk YWNfZGVmYXVsdF9wcmVmaXgiDQorICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9 IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nDQorICBhY19kZWZp bmVfZGlyPWBldmFsIGVjaG8gWyRdJDJgDQorICBhY19kZWZpbmVfZGlyPWBl dmFsIGVjaG8gWyRdYWNfZGVmaW5lX2RpcmANCisgIGlmZWxzZSgkMywgLA0K KyAgICBBQ19ERUZJTkVfVU5RVU9URUQoJDEsICIkYWNfZGVmaW5lX2RpciIp LA0KKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoJDEsICIkYWNfZGVmaW5lX2Rp ciIsICQzKSkNCitdKQ0KKw0KZGlmZiAtLWV4Y2x1ZGUgJyp+JyAtLWV4Y2x1 ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgLS1leGNsdWRlICcuIyon IC0tZXhjbHVkZSAnKi5vJyAtLWV4Y2x1ZGUgQ1ZTIC0tZXhjbHVkZSBTQ0NT IC0tZXhjbHVkZSBSQ1MgLS1leGNsdWRlICcuKi5mbGFncycgLS1leGNsdWRl IC5jdnNpZ25vcmUgLS1leGNsdWRlIC5kZXBlbmQgLXVyIGdkYi01LjIuMS9n ZGIvY29uZmlndXJlLmluIGdkYi01LjIuMS5zZXBhcmF0ZV9kZWJ1Z19zeW1i b2xzL2dkYi9jb25maWd1cmUuaW4NCi0tLSBnZGItNS4yLjEvZ2RiL2NvbmZp Z3VyZS5pbglUaHUgTWFyIDI4IDA1OjI4OjAwIDIwMDINCisrKyBnZGItNS4y LjEuc2VwYXJhdGVfZGVidWdfc3ltYm9scy9nZGIvY29uZmlndXJlLmluCU1v biBBdWcgMjYgMTc6MDI6NDggMjAwMg0KQEAgLTIzNCw2ICsyMzQsMTQgQEAN CiBBQ19DSEVDS19MSUIoc29ja2V0LCBzb2NrZXRwYWlyKQ0KIEFDX0NIRUNL X0ZVTkNTKHNvY2tldHBhaXIpDQogDQorZGVidWdkaXI9JHtsaWJkaXJ9L2Rl YnVnDQorCSANCitBQ19BUkdfV0lUSChzZXBhcmF0ZS1kZWJ1Zy1kaXIsDQor WyAgLS13aXRoLXNlcGFyYXRlLWRlYnVnLWRpcj1wYXRoICAgTG9vayBmb3Ig Z2xvYmFsIHNlcGFyYXRlIGRlYnVnIGluZm8gaW4gdGhpcyBwYXRoIFtMSUJE SVIvZGVidWddXSwNCitbZGVidWdkaXI9IiR7d2l0aHZhbH0iXSkNCisJDQor QUNfREVGSU5FX0RJUihERUJVR0RJUiwgZGVidWdkaXIpDQorI0FDX0RFRklO RV9VTlFVT1RFRChERUJVR0RJUiwgIiRkZWJ1Z2RpciIpLA0KIA0KIEJGRF9O RUVEX0RFQ0xBUkFUSU9OKG1hbGxvYykNCiBCRkRfTkVFRF9ERUNMQVJBVElP TihyZWFsbG9jKQ0KZGlmZiAtLWV4Y2x1ZGUgJyp+JyAtLWV4Y2x1ZGUgJyou b3JpZycgLS1leGNsdWRlICcqLnJlaicgLS1leGNsdWRlICcuIyonIC0tZXhj bHVkZSAnKi5vJyAtLWV4Y2x1ZGUgQ1ZTIC0tZXhjbHVkZSBTQ0NTIC0tZXhj bHVkZSBSQ1MgLS1leGNsdWRlICcuKi5mbGFncycgLS1leGNsdWRlIC5jdnNp Z25vcmUgLS1leGNsdWRlIC5kZXBlbmQgLXVyIGdkYi01LjIuMS9nZGIvb2Jq ZmlsZXMuYyBnZGItNS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9scy9nZGIv b2JqZmlsZXMuYw0KLS0tIGdkYi01LjIuMS9nZGIvb2JqZmlsZXMuYwlUaHUg RGVjICA2IDIxOjU5OjExIDIwMDENCisrKyBnZGItNS4yLjEuc2VwYXJhdGVf ZGVidWdfc3ltYm9scy9nZGIvb2JqZmlsZXMuYwlNb24gU2VwIDE2IDE0OjAx OjQ1IDIwMDINCkBAIC0zMjUsNiArMzI1LDI3IEBADQogICByZXR1cm4gKG9i amZpbGUpOw0KIH0NCiANCit2b2lkDQorcHV0X29iamZpbGVfYmVmb3JlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IG9iamZpbGUgKmJlZm9y ZV90aGlzKQ0KK3sNCisgIHN0cnVjdCBvYmpmaWxlICoqb2JqcDsNCisNCisg IHVubGlua19vYmpmaWxlIChvYmpmaWxlKTsNCisgIA0KKyAgZm9yIChvYmpw ID0gJm9iamVjdF9maWxlczsgKm9ianAgIT0gTlVMTDsgb2JqcCA9ICYoKCpv YmpwKS0+bmV4dCkpDQorICAgIHsNCisgICAgICBpZiAoKm9ianAgPT0gYmVm b3JlX3RoaXMpDQorCXsNCisJICBvYmpmaWxlLT5uZXh0ID0gKm9ianA7DQor CSAgKm9ianAgPSBvYmpmaWxlOw0KKwkgIHJldHVybjsNCisJfQ0KKyAgICB9 DQorICANCisgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18s DQorCQkgICJwdXRfb2JqZmlsZV9iZWZvcmU6IGJlZm9yZSBvYmpmaWxlIG5v dCBpbiBsaXN0Iik7DQorfQ0KKw0KIC8qIFB1dCBPQkpGSUxFIGF0IHRoZSBm cm9udCBvZiB0aGUgbGlzdC4gICovDQogDQogdm9pZA0KQEAgLTM5Nyw2ICs0 MTgsMTggQEANCiB2b2lkDQogZnJlZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkNCiB7DQorICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVi dWdfb2JqZmlsZSkNCisgICAgew0KKyAgICAgIGZyZWVfb2JqZmlsZSAob2Jq ZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSk7DQorICAgIH0NCisgIA0K KyAgaWYgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xp bmspDQorICAgIHsNCisgICAgICAvKiBXZSBmcmVlZCB0aGUgc2VwYXJhdGUg ZGVidWcgZmlsZSwgbWFrZSBzdXJlIHRoZSBiYXNlIG9iamZpbGUNCisJIGRv ZXNuJ3QgcmVmZXJlbmNlIGl0LiAgKi8NCisgICAgICBvYmpmaWxlLT5zZXBh cmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rLT5zZXBhcmF0ZV9kZWJ1Z19v YmpmaWxlID0gTlVMTDsNCisgICAgfQ0KKyAgDQogICAvKiBGaXJzdCBkbyBh bnkgc3ltYm9sIGZpbGUgc3BlY2lmaWMgYWN0aW9ucyByZXF1aXJlZCB3aGVu IHdlIGFyZQ0KICAgICAgZmluaXNoZWQgd2l0aCBhIHBhcnRpY3VsYXIgc3lt Ym9sIGZpbGUuICBOb3RlIHRoYXQgaWYgdGhlIG9iamZpbGUNCiAgICAgIGlz IHVzaW5nIHJldXNhYmxlIHN5bWJvbCBpbmZvcm1hdGlvbiAodmlhIG1tYWxs b2MpIHRoZW4gZWFjaCBvZg0KZGlmZiAtLWV4Y2x1ZGUgJyp+JyAtLWV4Y2x1 ZGUgJyoub3JpZycgLS1leGNsdWRlICcqLnJlaicgLS1leGNsdWRlICcuIyon IC0tZXhjbHVkZSAnKi5vJyAtLWV4Y2x1ZGUgQ1ZTIC0tZXhjbHVkZSBTQ0NT IC0tZXhjbHVkZSBSQ1MgLS1leGNsdWRlICcuKi5mbGFncycgLS1leGNsdWRl IC5jdnNpZ25vcmUgLS1leGNsdWRlIC5kZXBlbmQgLXVyIGdkYi01LjIuMS9n ZGIvb2JqZmlsZXMuaCBnZGItNS4yLjEuc2VwYXJhdGVfZGVidWdfc3ltYm9s cy9nZGIvb2JqZmlsZXMuaA0KLS0tIGdkYi01LjIuMS9nZGIvb2JqZmlsZXMu aAlTYXQgSnVuIDI5IDAwOjA1OjQ3IDIwMDINCisrKyBnZGItNS4yLjEuc2Vw YXJhdGVfZGVidWdfc3ltYm9scy9nZGIvb2JqZmlsZXMuaAlNb24gU2VwIDE2 IDEzOjE1OjE1IDIwMDINCkBAIC00MDksNiArNDA5LDkgQEANCiAgICAgRXhw b3J0RW50cnkgKmV4cG9ydF9saXN0Ow0KICAgICBpbnQgZXhwb3J0X2xpc3Rf c2l6ZTsNCiANCisgICAgc3RydWN0IG9iamZpbGUgKnNlcGFyYXRlX2RlYnVn X29iamZpbGU7DQorICAgIHN0cnVjdCBvYmpmaWxlICpzZXBhcmF0ZV9kZWJ1 Z19vYmpmaWxlX2JhY2tsaW5rOw0KKyAgICANCiAgICAgLyogUGxhY2UgdG8g c3Rhc2ggdmFyaW91cyBzdGF0aXN0aWNzIGFib3V0IHRoaXMgb2JqZmlsZSAq Lw0KICAgICAgIE9CSlNUQVRTOw0KICAgfTsNCkBAIC01MDAsNiArNTAzLDgg QEANCiANCiBleHRlcm4gaW50IGJ1aWxkX29iamZpbGVfc2VjdGlvbl90YWJs ZSAoc3RydWN0IG9iamZpbGUgKik7DQogDQorZXh0ZXJuIHZvaWQgcHV0X29i amZpbGVfYmVmb3JlIChzdHJ1Y3Qgb2JqZmlsZSAqLCBzdHJ1Y3Qgb2JqZmls ZSAqKTsNCisNCiBleHRlcm4gdm9pZCBvYmpmaWxlX3RvX2Zyb250IChzdHJ1 Y3Qgb2JqZmlsZSAqKTsNCiANCiBleHRlcm4gdm9pZCB1bmxpbmtfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKik7DQpkaWZmIC0tZXhjbHVkZSAnKn4nIC0t ZXhjbHVkZSAnKi5vcmlnJyAtLWV4Y2x1ZGUgJyoucmVqJyAtLWV4Y2x1ZGUg Jy4jKicgLS1leGNsdWRlICcqLm8nIC0tZXhjbHVkZSBDVlMgLS1leGNsdWRl IFNDQ1MgLS1leGNsdWRlIFJDUyAtLWV4Y2x1ZGUgJy4qLmZsYWdzJyAtLWV4 Y2x1ZGUgLmN2c2lnbm9yZSAtLWV4Y2x1ZGUgLmRlcGVuZCAtdXIgZ2RiLTUu Mi4xL2dkYi9zeW1maWxlLmMgZ2RiLTUuMi4xLnNlcGFyYXRlX2RlYnVnX3N5 bWJvbHMvZ2RiL3N5bWZpbGUuYw0KLS0tIGdkYi01LjIuMS9nZGIvc3ltZmls ZS5jCVNhdCBKdW4gMjIgMTg6NDk6MzMgMjAwMg0KKysrIGdkYi01LjIuMS5z ZXBhcmF0ZV9kZWJ1Z19zeW1ib2xzL2dkYi9zeW1maWxlLmMJTW9uIFNlcCAx NiAxNTowNzoxNyAyMDAyDQpAQCAtMTYwLDYgKzE2MCw4IEBADQogDQogc3Rh dGljIHZvaWQgaW5mb19leHRfbGFuZ19jb21tYW5kIChjaGFyICphcmdzLCBp bnQgZnJvbV90dHkpOw0KIA0KK3N0YXRpYyBjaGFyICpmaW5kX3NlcGFyYXRl X2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBj aGFyICpuYW1lKTsNCisNCiBzdGF0aWMgdm9pZCBpbml0X2ZpbGVuYW1lX2xh bmd1YWdlX3RhYmxlICh2b2lkKTsNCiANCiB2b2lkIF9pbml0aWFsaXplX3N5 bWZpbGUgKHZvaWQpOw0KQEAgLTgzNiw3ICs4MzgsMTIgQEANCiB7DQogICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsNCiAgIHN0cnVjdCBwYXJ0aWFsX3N5 bXRhYiAqcHN5bXRhYjsNCisgIGNoYXIgKmRlYnVnZmlsZTsNCiAgIGJmZCAq YWJmZDsNCisgIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyBvcmlnX2FkZHJz Ow0KKyAgDQorICBpZiAoYWRkcnMpDQorICAgIG9yaWdfYWRkcnMgPSAqYWRk cnM7DQogDQogICAvKiBPcGVuIGEgYmZkIGZvciB0aGUgZmlsZSwgYW5kIGdp dmUgdXNlciBhIGNoYW5jZSB0byBidXJwIGlmIHdlJ2QgYmUNCiAgICAgIGlu dGVyYWN0aXZlbHkgd2lwaW5nIG91dCBhbnkgZXhpc3Rpbmcgc3ltYm9scy4g ICovDQpAQCAtOTI2LDYgKzkzMywyMSBAQA0KICAgaWYgKHRhcmdldF9uZXdf b2JqZmlsZV9ob29rKQ0KICAgICB0YXJnZXRfbmV3X29iamZpbGVfaG9vayAo b2JqZmlsZSk7DQogDQorICBkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2Rl YnVnX2ZpbGUgKG9iamZpbGUsIG5hbWUpOw0KKyAgaWYgKGRlYnVnZmlsZSkN CisgICAgew0KKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoImxvYWRpbmcgc2Vw YXJhdGUgZGVidWcgaW5mbyBmcm9tICclcydcbiIsIGRlYnVnZmlsZSk7DQor DQorICAgICAgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9IHN5 bWJvbF9maWxlX2FkZCAoZGVidWdmaWxlLCBmcm9tX3R0eSwgKGFkZHJzICE9 IE5VTEwpID8gJm9yaWdfYWRkcnMgOiBOVUxMLCAwLCBmbGFncyk7DQorICAg ICAgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZS0+c2VwYXJhdGVf ZGVidWdfb2JqZmlsZV9iYWNrbGluayA9IG9iamZpbGU7DQorICAgICAgDQor ICAgICAgLyogUHV0IHRoZSBzZXBhcmF0ZSBkZWJ1ZyBvYmplY3QgYmVmb3Jl IHRoZSBub3JtYWwgb25lLCB0aGlzIGlzIHNvIHRoYXQNCisgICAgICAgICB1 c2FnZSBvZiB0aGUgQUxMX09CSkZJTEVTX1NBRkUgbWFjcm8gd2lsbCBzdGF5 IHNhZmUuICovDQorICAgICAgcHV0X29iamZpbGVfYmVmb3JlIChvYmpmaWxl LT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlLCBvYmpmaWxlKTsNCisgICAgICAN CisgICAgICB4ZnJlZSAoZGVidWdmaWxlKTsNCisgICAgfQ0KKyAgDQogICBy ZXR1cm4gKG9iamZpbGUpOw0KIH0NCiANCkBAIC05ODUsNiArMTAwNywxODgg QEANCiAjZW5kaWYNCiB9DQogDQorc3RhdGljIHVuc2lnbmVkIGxvbmcgY3Jj MzIgKHVuc2lnbmVkIGxvbmcgY3JjLCB1bnNpZ25lZCBjaGFyICpidWYsIHNp emVfdCBsZW4pDQorew0KKyAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcg Y3JjMzJfdGFibGVbMjU2XSA9DQorICAgIHsNCisgICAgICAweDAwMDAwMDAw LCAweDc3MDczMDk2LCAweGVlMGU2MTJjLCAweDk5MDk1MWJhLCAweDA3NmRj NDE5LA0KKyAgICAgIDB4NzA2YWY0OGYsIDB4ZTk2M2E1MzUsIDB4OWU2NDk1 YTMsIDB4MGVkYjg4MzIsIDB4NzlkY2I4YTQsDQorICAgICAgMHhlMGQ1ZTkx ZSwgMHg5N2QyZDk4OCwgMHgwOWI2NGMyYiwgMHg3ZWIxN2NiZCwgMHhlN2I4 MmQwNywNCisgICAgICAweDkwYmYxZDkxLCAweDFkYjcxMDY0LCAweDZhYjAy MGYyLCAweGYzYjk3MTQ4LCAweDg0YmU0MWRlLA0KKyAgICAgIDB4MWFkYWQ0 N2QsIDB4NmRkZGU0ZWIsIDB4ZjRkNGI1NTEsIDB4ODNkMzg1YzcsIDB4MTM2 Yzk4NTYsDQorICAgICAgMHg2NDZiYThjMCwgMHhmZDYyZjk3YSwgMHg4YTY1 YzllYywgMHgxNDAxNWM0ZiwgMHg2MzA2NmNkOSwNCisgICAgICAweGZhMGYz ZDYzLCAweDhkMDgwZGY1LCAweDNiNmUyMGM4LCAweDRjNjkxMDVlLCAweGQ1 NjA0MWU0LA0KKyAgICAgIDB4YTI2NzcxNzIsIDB4M2MwM2U0ZDEsIDB4NGIw NGQ0NDcsIDB4ZDIwZDg1ZmQsIDB4YTUwYWI1NmIsDQorICAgICAgMHgzNWI1 YThmYSwgMHg0MmIyOTg2YywgMHhkYmJiYzlkNiwgMHhhY2JjZjk0MCwgMHgz MmQ4NmNlMywNCisgICAgICAweDQ1ZGY1Yzc1LCAweGRjZDYwZGNmLCAweGFi ZDEzZDU5LCAweDI2ZDkzMGFjLCAweDUxZGUwMDNhLA0KKyAgICAgIDB4Yzhk NzUxODAsIDB4YmZkMDYxMTYsIDB4MjFiNGY0YjUsIDB4NTZiM2M0MjMsIDB4 Y2ZiYTk1OTksDQorICAgICAgMHhiOGJkYTUwZiwgMHgyODAyYjg5ZSwgMHg1 ZjA1ODgwOCwgMHhjNjBjZDliMiwgMHhiMTBiZTkyNCwNCisgICAgICAweDJm NmY3Yzg3LCAweDU4Njg0YzExLCAweGMxNjExZGFiLCAweGI2NjYyZDNkLCAw eDc2ZGM0MTkwLA0KKyAgICAgIDB4MDFkYjcxMDYsIDB4OThkMjIwYmMsIDB4 ZWZkNTEwMmEsIDB4NzFiMTg1ODksIDB4MDZiNmI1MWYsDQorICAgICAgMHg5 ZmJmZTRhNSwgMHhlOGI4ZDQzMywgMHg3ODA3YzlhMiwgMHgwZjAwZjkzNCwg MHg5NjA5YTg4ZSwNCisgICAgICAweGUxMGU5ODE4LCAweDdmNmEwZGJiLCAw eDA4NmQzZDJkLCAweDkxNjQ2Yzk3LCAweGU2NjM1YzAxLA0KKyAgICAgIDB4 NmI2YjUxZjQsIDB4MWM2YzYxNjIsIDB4ODU2NTMwZDgsIDB4ZjI2MjAwNGUs IDB4NmMwNjk1ZWQsDQorICAgICAgMHgxYjAxYTU3YiwgMHg4MjA4ZjRjMSwg MHhmNTBmYzQ1NywgMHg2NWIwZDljNiwgMHgxMmI3ZTk1MCwNCisgICAgICAw eDhiYmViOGVhLCAweGZjYjk4ODdjLCAweDYyZGQxZGRmLCAweDE1ZGEyZDQ5 LCAweDhjZDM3Y2YzLA0KKyAgICAgIDB4ZmJkNDRjNjUsIDB4NGRiMjYxNTgs IDB4M2FiNTUxY2UsIDB4YTNiYzAwNzQsIDB4ZDRiYjMwZTIsDQorICAgICAg MHg0YWRmYTU0MSwgMHgzZGQ4OTVkNywgMHhhNGQxYzQ2ZCwgMHhkM2Q2ZjRm YiwgMHg0MzY5ZTk2YSwNCisgICAgICAweDM0NmVkOWZjLCAweGFkNjc4ODQ2 LCAweGRhNjBiOGQwLCAweDQ0MDQyZDczLCAweDMzMDMxZGU1LA0KKyAgICAg IDB4YWEwYTRjNWYsIDB4ZGQwZDdjYzksIDB4NTAwNTcxM2MsIDB4MjcwMjQx YWEsIDB4YmUwYjEwMTAsDQorICAgICAgMHhjOTBjMjA4NiwgMHg1NzY4YjUy NSwgMHgyMDZmODViMywgMHhiOTY2ZDQwOSwgMHhjZTYxZTQ5ZiwNCisgICAg ICAweDVlZGVmOTBlLCAweDI5ZDljOTk4LCAweGIwZDA5ODIyLCAweGM3ZDdh OGI0LCAweDU5YjMzZDE3LA0KKyAgICAgIDB4MmViNDBkODEsIDB4YjdiZDVj M2IsIDB4YzBiYTZjYWQsIDB4ZWRiODgzMjAsIDB4OWFiZmIzYjYsDQorICAg ICAgMHgwM2I2ZTIwYywgMHg3NGIxZDI5YSwgMHhlYWQ1NDczOSwgMHg5ZGQy NzdhZiwgMHgwNGRiMjYxNSwNCisgICAgICAweDczZGMxNjgzLCAweGUzNjMw YjEyLCAweDk0NjQzYjg0LCAweDBkNmQ2YTNlLCAweDdhNmE1YWE4LA0KKyAg ICAgIDB4ZTQwZWNmMGIsIDB4OTMwOWZmOWQsIDB4MGEwMGFlMjcsIDB4N2Qw NzllYjEsIDB4ZjAwZjkzNDQsDQorICAgICAgMHg4NzA4YTNkMiwgMHgxZTAx ZjI2OCwgMHg2OTA2YzJmZSwgMHhmNzYyNTc1ZCwgMHg4MDY1NjdjYiwNCisg ICAgICAweDE5NmMzNjcxLCAweDZlNmIwNmU3LCAweGZlZDQxYjc2LCAweDg5 ZDMyYmUwLCAweDEwZGE3YTVhLA0KKyAgICAgIDB4NjdkZDRhY2MsIDB4Zjli OWRmNmYsIDB4OGViZWVmZjksIDB4MTdiN2JlNDMsIDB4NjBiMDhlZDUsDQor ICAgICAgMHhkNmQ2YTNlOCwgMHhhMWQxOTM3ZSwgMHgzOGQ4YzJjNCwgMHg0 ZmRmZjI1MiwgMHhkMWJiNjdmMSwNCisgICAgICAweGE2YmM1NzY3LCAweDNm YjUwNmRkLCAweDQ4YjIzNjRiLCAweGQ4MGQyYmRhLCAweGFmMGExYjRjLA0K KyAgICAgIDB4MzYwMzRhZjYsIDB4NDEwNDdhNjAsIDB4ZGY2MGVmYzMsIDB4 YTg2N2RmNTUsIDB4MzE2ZThlZWYsDQorICAgICAgMHg0NjY5YmU3OSwgMHhj YjYxYjM4YywgMHhiYzY2ODMxYSwgMHgyNTZmZDJhMCwgMHg1MjY4ZTIzNiwN CisgICAgICAweGNjMGM3Nzk1LCAweGJiMGI0NzAzLCAweDIyMDIxNmI5LCAw eDU1MDUyNjJmLCAweGM1YmEzYmJlLA0KKyAgICAgIDB4YjJiZDBiMjgsIDB4 MmJiNDVhOTIsIDB4NWNiMzZhMDQsIDB4YzJkN2ZmYTcsIDB4YjVkMGNmMzEs DQorICAgICAgMHgyY2Q5OWU4YiwgMHg1YmRlYWUxZCwgMHg5YjY0YzJiMCwg MHhlYzYzZjIyNiwgMHg3NTZhYTM5YywNCisgICAgICAweDAyNmQ5MzBhLCAw eDljMDkwNmE5LCAweGViMGUzNjNmLCAweDcyMDc2Nzg1LCAweDA1MDA1NzEz LA0KKyAgICAgIDB4OTViZjRhODIsIDB4ZTJiODdhMTQsIDB4N2JiMTJiYWUs IDB4MGNiNjFiMzgsIDB4OTJkMjhlOWIsDQorICAgICAgMHhlNWQ1YmUwZCwg MHg3Y2RjZWZiNywgMHgwYmRiZGYyMSwgMHg4NmQzZDJkNCwgMHhmMWQ0ZTI0 MiwNCisgICAgICAweDY4ZGRiM2Y4LCAweDFmZGE4MzZlLCAweDgxYmUxNmNk LCAweGY2YjkyNjViLCAweDZmYjA3N2UxLA0KKyAgICAgIDB4MThiNzQ3Nzcs IDB4ODgwODVhZTYsIDB4ZmYwZjZhNzAsIDB4NjYwNjNiY2EsIDB4MTEwMTBi NWMsDQorICAgICAgMHg4ZjY1OWVmZiwgMHhmODYyYWU2OSwgMHg2MTZiZmZk MywgMHgxNjZjY2Y0NSwgMHhhMDBhZTI3OCwNCisgICAgICAweGQ3MGRkMmVl LCAweDRlMDQ4MzU0LCAweDM5MDNiM2MyLCAweGE3NjcyNjYxLCAweGQwNjAx NmY3LA0KKyAgICAgIDB4NDk2OTQ3NGQsIDB4M2U2ZTc3ZGIsIDB4YWVkMTZh NGEsIDB4ZDlkNjVhZGMsIDB4NDBkZjBiNjYsDQorICAgICAgMHgzN2Q4M2Jm MCwgMHhhOWJjYWU1MywgMHhkZWJiOWVjNSwgMHg0N2IyY2Y3ZiwgMHgzMGI1 ZmZlOSwNCisgICAgICAweGJkYmRmMjFjLCAweGNhYmFjMjhhLCAweDUzYjM5 MzMwLCAweDI0YjRhM2E2LCAweGJhZDAzNjA1LA0KKyAgICAgIDB4Y2RkNzA2 OTMsIDB4NTRkZTU3MjksIDB4MjNkOTY3YmYsIDB4YjM2NjdhMmUsIDB4YzQ2 MTRhYjgsDQorICAgICAgMHg1ZDY4MWIwMiwgMHgyYTZmMmI5NCwgMHhiNDBi YmUzNywgMHhjMzBjOGVhMSwgMHg1YTA1ZGYxYiwNCisgICAgICAweDJkMDJl ZjhkDQorICAgIH07DQorICB1bnNpZ25lZCBjaGFyICplbmQ7DQorDQorICBj cmMgPSB+Y3JjICYgMHhmZmZmZmZmZjsNCisgIGZvciAoZW5kID0gYnVmICsg bGVuOyBidWYgPCBlbmQ7ICsrYnVmKQ0KKyAgICBjcmMgPSBjcmMzMl90YWJs ZVsoY3JjIF4gKmJ1ZikgJiAweGZmXSBeIChjcmMgPj4gOCk7DQorICByZXR1 cm4gfmNyYyAmIDB4ZmZmZmZmZmY7Ow0KK30NCisNCitpbnQNCitzZXBhcmF0 ZV9kZWJ1Z19maWxlX2V4aXN0cyAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWdu ZWQgbG9uZyBjcmMpDQorew0KKyAgdW5zaWduZWQgbG9uZyBmaWxlX2NyYyA9 IDA7DQorICBpbnQgZmQ7DQorICBjaGFyIGJ1ZmZlcls4KjEwMjRdOw0KKyAg aW50IGNvdW50Ow0KKw0KKyAgZmQgPSBvcGVuIChuYW1lLCBPX1JET05MWSk7 DQorICBpZiAoZmQgPCAwKQ0KKyAgICByZXR1cm4gMDsNCisNCisgIHdoaWxl ICgoY291bnQgPSByZWFkIChmZCwgYnVmZmVyLCBzaXplb2YgKGJ1ZmZlcikp KSA+IDApDQorICAgIGZpbGVfY3JjID0gY3JjMzIgKGZpbGVfY3JjLCBidWZm ZXIsIGNvdW50KTsNCisNCisgIGNsb3NlIChmZCk7DQorDQorICByZXR1cm4g Y3JjID09IGZpbGVfY3JjOw0KK30NCisNCitzdGF0aWMgY2hhciAqZGVidWdf ZmlsZV9zZWFyY2hfcGF0aCA9IE5VTEw7DQorDQorc3RhdGljIGNoYXIgKg0K K2ZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpDQorew0KKyAgYXNlY3Rpb24gKnNl Y3Q7DQorICBjaGFyICpiYXNlbmFtZTsNCisgIGNoYXIgKmRpcjsNCisgIGNo YXIgKmRlYnVnZmlsZTsNCisgIGNoYXIgKm5hbWVfY29weTsNCisgIGJmZF9z aXplX3R5cGUgZGVidWdsaW5rX3NpemU7DQorICB1bnNpZ25lZCBsb25nIGNy YzMyOw0KKyAgaW50IGNyY19vZmZzZXQ7DQorICB1bnNpZ25lZCBjaGFyICpj cmNfZGF0YTsNCisgIHVuc2lnbmVkIGNoYXIgKnA7DQorDQorICBzZWN0ID0g YmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQsICIuZ251 X2RlYnVnbGluayIpOw0KKw0KKyAgaWYgKHNlY3QgPT0gTlVMTCkNCisgICAg cmV0dXJuIE5VTEw7DQorDQorICBkZWJ1Z2xpbmtfc2l6ZSA9IGJmZF9zZWN0 aW9uX3NpemUgKG9iamZpbGUtPm9iZmQsIHNlY3QpOw0KKyAgDQorICBiYXNl bmFtZSA9IGFsbG9jYSAoZGVidWdsaW5rX3NpemUpOw0KKyAgYmZkX2dldF9z ZWN0aW9uX2NvbnRlbnRzIChvYmpmaWxlLT5vYmZkLCBzZWN0LCBiYXNlbmFt ZSwNCisJCQkgICAgKGZpbGVfcHRyKTAsIChiZmRfc2l6ZV90eXBlKWRlYnVn bGlua19zaXplKTsNCisNCisgIC8qIENyYyB2YWx1ZSBpcyBzdG9yZWQgYWZ0 ZXIgdGhlIGZpbGVuYW1lLCBhbGlnbmVkIHVwIHRvIDQgYnl0ZXMuICovDQor ICBjcmNfb2Zmc2V0ID0gc3RybGVuIChiYXNlbmFtZSkgKyAxOw0KKyAgaWYg KGNyY19vZmZzZXQgJiAzKQ0KKyAgICBjcmNfb2Zmc2V0ICs9IDQgLSAoY3Jj X29mZnNldCAmIDMpOw0KKyAgY3JjX2RhdGEgPSBiYXNlbmFtZSArIGNyY19v ZmZzZXQ7DQorDQorICBjcmMzMiA9IDA7DQorICBpZiAoVEFSR0VUX0JZVEVf T1JERVIgPT0gQkZEX0VORElBTl9CSUcpDQorICAgIHsNCisgICAgICBmb3Ig KHAgPSBjcmNfZGF0YTsgcCA8IGNyY19kYXRhICsgNDsgKytwKQ0KKwljcmMz MiA9IChjcmMzMiA8PCA4KSB8ICpwOw0KKyAgICB9DQorICBlbHNlDQorICAg IHsNCisgICAgICBmb3IgKHAgPSBjcmNfZGF0YSArIDQgLSAxOyBwID49IGNy Y19kYXRhOyAtLXApDQorCWNyYzMyID0gKGNyYzMyIDw8IDgpIHwgKnA7DQor ICAgIH0NCisgIA0KKyAgZGlyID0geHN0cmR1cCAobmFtZSk7DQorICBwID0g c3RycmNociAoZGlyLCAnLycpOw0KKyAgaWYgKHAgIT0gTlVMTCkNCisgICAg ew0KKyAgICAgICoocCsxKSA9IDA7DQorICAgIH0NCisgIGVsc2UNCisgICAg ew0KKyAgICAgICpkaXIgPSAwOw0KKyAgICB9DQorDQorICBkZWJ1Z2ZpbGUg PSBhbGxvY2EgKHN0cmxlbiAoZGVidWdfZmlsZV9zZWFyY2hfcGF0aCkgKyAx ICsNCisJCSAgICAgIHN0cmxlbiAoZGlyKSArIHN0cmxlbiAoIi5kZWJ1Zy8i KSArIHN0cmxlbiAoYmFzZW5hbWUpICsgMSk7DQorDQorICAvKiBGaXJzdCB0 cnkgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBvcmlnaW5hbCBmaWxl OiAqLw0KKyAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRpcik7DQorICBzdHJjYXQg KGRlYnVnZmlsZSwgYmFzZW5hbWUpOw0KKw0KKyAgaWYgKHNlcGFyYXRlX2Rl YnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkNCisgICAgew0K KyAgICAgIHhmcmVlIChkaXIpOw0KKyAgICAgIHJldHVybiB4c3RyZHVwIChk ZWJ1Z2ZpbGUpOw0KKyAgICB9DQorICANCisgIC8qIFRoZW4gdHJ5IGluIGEg c3ViZGlyZWN0b3J5IGNhbGxlZCAuZGVidWcgKi8NCisgIHN0cmNweSAoZGVi dWdmaWxlLCBkaXIpOw0KKyAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIuZGVidWcv Iik7DQorICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOw0KKw0KKyAg aWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNy YzMyKSkNCisgICAgew0KKyAgICAgIHhmcmVlIChkaXIpOw0KKyAgICAgIHJl dHVybiB4c3RyZHVwIChkZWJ1Z2ZpbGUpOw0KKyAgICB9DQorICANCisgIC8q IFRoZW4gdHJ5IGluIHRoZSBnbG9iYWwgZGVidWdmaWxlIGRpcmVjdG9yeSAq Lw0KKyAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRlYnVnX2ZpbGVfc2VhcmNoX3Bh dGgpOw0KKyAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIvIik7DQorICBzdHJjYXQg KGRlYnVnZmlsZSwgZGlyKTsNCisgIHN0cmNhdCAoZGVidWdmaWxlLCAiLyIp Ow0KKyAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsNCisNCisgIGlm IChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMz MikpDQorICAgIHsNCisgICAgICB4ZnJlZSAoZGlyKTsNCisgICAgICByZXR1 cm4geHN0cmR1cCAoZGVidWdmaWxlKTsNCisgICAgfQ0KKyAgDQorICByZXR1 cm4gTlVMTDsNCit9DQorDQorDQogLyogVGhpcyBpcyB0aGUgc3ltYm9sLWZp bGUgY29tbWFuZC4gIFJlYWQgdGhlIGZpbGUsIGFuYWx5emUgaXRzDQogICAg c3ltYm9scywgYW5kIGFkZCBhIHN0cnVjdCBzeW10YWIgdG8gYSBzeW10YWIg bGlzdC4gIFRoZSBzeW50YXggb2YNCiAgICB0aGUgY29tbWFuZCBpcyByYXRo ZXIgYml6YXJyZS0tKDEpIGJ1aWxkYXJndiBpbXBsZW1lbnRzIHZhcmlvdXMN CkBAIC0zMzM2LDQgKzM1NDAsMTcgQEANCiAJCSAgImNhY2hlLlxuIiwNCiAJ CSAgJnNldGxpc3QpLA0KICAgICAgJnNob3dsaXN0KTsNCisNCisgIGRlYnVn X2ZpbGVfc2VhcmNoX3BhdGggPSB4c3RyZHVwIChERUJVR0RJUik7DQorICBj ID0gYWRkX3NldF9jbWQgKCJkZWJ1Zy1maWxlLXNlYXJjaC1wYXRoIiwgY2xh c3Nfc3VwcG9ydCwgdmFyX3N0cmluZywNCisJCSAgIChjaGFyICopICZkZWJ1 Z19maWxlX3NlYXJjaF9wYXRoLA0KKwkJICAgIlNldCB0aGUgc2VhcmNoIHBh dGggZm9yIGxvYWRpbmcgc2VwYXJhdGUgZGVidWcgc3ltYm9scy5cbiINCisJ CSAgICJTZXBhcmF0ZSBkZWJ1ZyBzeW1ib2xzIGFyZSBmaXJzdCBzZWFyY2hl ZCBmb3IgaW4gdGhlIHNhbWVcbiINCisJCSAgICJkaXJlY3RvcnkgYXMgdGhl IGJpbmFyeSwgdGhlbiBpbiB0aGUgLmRlYnVnIHN1YmRpcmVjdG9yeSxcbiIN CisJCSAgICJhbmQgbGFzdGx5IGF0IHRoZSBwYXRoIG9mIHRoZSBkaXJlY3Rv cnkgb2YgdGhlIGJpbmFyeSB3aXRoXG4iDQorCQkgICAidGhlIGdsb2JhbCBk ZWJ1Zy1maWxlIHNlYXJjaCBwYXRoIHByZXBlbmRlZFxuIiwNCisJCSAgICZz ZXRsaXN0KTsNCisgIGFkZF9zaG93X2Zyb21fc2V0IChjLCAmc2hvd2xpc3Qp Ow0KKyAgYy0+Y29tcGxldGVyID0gZmlsZW5hbWVfY29tcGxldGVyOw0KKw0K IH0NCg== --279707962-413542381-1032184788=:17256--