From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755503AbZIVItY (ORCPT ); Tue, 22 Sep 2009 04:49:24 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753957AbZIVItW (ORCPT ); Tue, 22 Sep 2009 04:49:22 -0400 Received: from mail-pz0-f173.google.com ([209.85.222.173]:35614 "EHLO mail-pz0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753851AbZIVItV (ORCPT ); Tue, 22 Sep 2009 04:49:21 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:from:date:message-id:subject:to:content-type; b=h+Q9yksifteEyi1h9CBYqyZgeVvHW+7HqorrozO7fllN0rGcyotAPxn+fHNaR1i81H ZB8vOlbadLdBfL0FPXw2JuAmVfOGHdnDDa9VRa+OkEB72432k3Y8pXH6stTdeREQW7OW LjvGfi/DxyXeayiF3Ml3QhzaM/483tUh/Xviw= MIME-Version: 1.0 From: Hui Zhu Date: Tue, 22 Sep 2009 16:41:55 +0800 Message-ID: Subject: [Demo/lkm] Kcoredump -- Do coredump in any where of kernel(not same with kcore) To: linux-kernel@vger.kernel.org Content-Type: multipart/mixed; boundary=001636e1f81f43b8870474269312 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --001636e1f81f43b8870474269312 Content-Type: text/plain; charset=ISO-8859-1 Hi guys, Kcoredump do a coredump in most part of kernel (it use kprobe, it can be set most of part of kernel). For example: insmod kcoredump.ko name=do_fork offset=11 gdb ./vmlinux /proc/kcoredump Core was generated by `'. [New process 0] #0 do_fork (clone_flags=18874385, stack_start=3219612376, regs=0xc6c8ffb4, stack_size=0, parent_tidptr=0x0, child_tidptr=0xb764b758) at /home/teawater/kernel/linux-2.6/kernel/fork.c:1343 warning: Source file is more recent than executable. 1343 if (clone_flags & CLONE_NEWUSER) { (gdb) bt #0 do_fork (clone_flags=18874385, stack_start=3219612376, regs=0xc6c8ffb4, stack_size=0, parent_tidptr=0x0, child_tidptr=0xb764b758) at /home/teawater/kernel/linux-2.6/kernel/fork.c:1343 #1 0xc01016d5 in sys_clone (regs=0xc6c8ffb4) at /home/teawater/kernel/linux-2.6/arch/x86/kernel/process_32.c:445 #2 0xc0102da1 in system_call () at /home/teawater/kernel/linux-2.6/arch/x86/kernel/entry_32.S:529 #3 0x00000000 in ?? () Now, it is just a demo version. It just support x86_32. But make it support other arch is not very hard. Thanks, Hui --001636e1f81f43b8870474269312 Content-Type: text/x-csrc; charset=US-ASCII; name="kcoredump.c" Content-Disposition: attachment; filename="kcoredump.c" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fzwehfea0 LyoKICogS2VybmVsIGNvcmUgZHVtcC4KICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICog VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwg NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K ICoKICogQ29weXJpZ2h0IChDKSBIdWkgWmh1ICh0ZWF3YXRlckBnbWFpbC5jb20pLCAyMDA5CiAq CiAqIDIwMDItMDktMjIJRGVtbyByZWxlYXNlLiAgSnVzdCBzdXBwb3J0IFg4Nl8zMi4KICovCgoj aW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgojaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiNpbmNs dWRlIDxsaW51eC9tb2R1bGUuaD4KI2luY2x1ZGUgPGxpbnV4L2twcm9iZXMuaD4KI2luY2x1ZGUg PGxpbnV4L2VsZmNvcmUuaD4KI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KI2luY2x1ZGUgPGxpbnV4 L3VhY2Nlc3MuaD4KI2luY2x1ZGUgPGxpbnV4L3Byb2NfZnMuaD4KI2luY2x1ZGUgPGxpbnV4L3Nl cV9maWxlLmg+CgojaWZuZGVmIENPTkZJR19LUFJPQkVTCiNlcnJvciAiTGludXggS2VybmVsIGRv ZXNuJ3Qgc3VwcG9ydCBLUFJPQkVTLiAgUGxlYXNlIG9wZW4gaXQgaW4gJ0dlbmVyYWwgc2V0dXAt Pktwcm9iZXMnLiIKI2VuZGlmCgojZGVmaW5lIEtOQU1FX05PVF9TRVQJCSJOT1QgU0VUIgojZGVm aW5lIEVMRk5PVEVMRU4oZGF0YWxlbikJKHNpemVvZihzdHJ1Y3QgZWxmX25vdGUpICsgcm91bmR1 cChzaXplb2YgKCJDT1JFIiksIDQpICsgcm91bmR1cChkYXRhbGVuLCA0KSkKI2RlZmluZSBTVEFD S0xFTgkJNTEyCiNkZWZpbmUgS0JVRkxFTgkJCShzaXplb2Yoc3RydWN0IGVsZmhkcikgKyBzaXpl b2Yoc3RydWN0IGVsZl9waGRyKSAqIDIgKyBFTEZOT1RFTEVOKHNpemVvZihzdHJ1Y3QgZWxmX3By c3RhdHVzKSkgKyBFTEZOT1RFTEVOKHNpemVvZihzdHJ1Y3QgZWxmX3BycHNpbmZvKSkgKyBTVEFD S0xFTikKCnN0YXRpYyBjaGFyCQkJKmtuYW1lID0gS05BTUVfTk9UX1NFVDsKc3RhdGljIHVuc2ln bmVkIGludAkJa29mZnNldCA9IDA7CnN0YXRpYyB1bnNpZ25lZCBpbnQJCWthZGRyID0gMDsKc3Rh dGljIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeQkqa2NvcmVkdW1wX2ZpbGUgPSBOVUxMOwoKc3RhdGlj IHVpbnQ4X3QJCQlrYnVmW0tCVUZMRU5dOwpzdGF0aWMgc3RydWN0IGVsZl9wcnN0YXR1cwkqa3Bz dGF0ID0gTlVMTDsKc3RhdGljIHN0cnVjdCBlbGZfcGhkcgkJKmtwaGRyID0gTlVMTDsKc3RhdGlj IHVpbnQ4X3QJCQkqa3N0YWNrOwoKc3RhdGljIGludApoYW5kbGVyX3ByZShzdHJ1Y3Qga3Byb2Jl ICpwLCBzdHJ1Y3QgcHRfcmVncyAqcmVncykKewoJc3RhdGljIGludCBkdW1wZWQgPSAwOwoJc3Rh dGljIERFRklORV9TUElOTE9DSyhkdW1wZWRfbG9jayk7CgoJc3Bpbl9sb2NrKCZkdW1wZWRfbG9j ayk7CglpZiAoZHVtcGVkKSB7CgkJc3Bpbl91bmxvY2soJmR1bXBlZF9sb2NrKTsKCQlyZXR1cm4g MDsKCX0KCWR1bXBlZCA9IDE7CglzcGluX3VubG9jaygmZHVtcGVkX2xvY2spOwoKI2lmZGVmIENP TkZJR19YODZfMzIKCS8qIFNldCByZWdzIHRvIGtwc3RhdC0+cHJfcmVnLiAqLwojaWYgKExJTlVY X1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwyNCkpCglrcHN0YXQtPnByX3JlZ1sw XSA9IHJlZ3MtPmJ4OwoJa3BzdGF0LT5wcl9yZWdbMV0gPSByZWdzLT5jeDsKCWtwc3RhdC0+cHJf cmVnWzJdID0gcmVncy0+ZHg7CglrcHN0YXQtPnByX3JlZ1szXSA9IHJlZ3MtPnNpOwoJa3BzdGF0 LT5wcl9yZWdbNF0gPSByZWdzLT5kaTsKCWtwc3RhdC0+cHJfcmVnWzVdID0gcmVncy0+YnA7Cglr cHN0YXQtPnByX3JlZ1s2XSA9IHJlZ3MtPmF4OwoJa3BzdGF0LT5wcl9yZWdbN10gPSByZWdzLT5k czsKCWtwc3RhdC0+cHJfcmVnWzhdID0gcmVncy0+ZXM7CglrcHN0YXQtPnByX3JlZ1s5XSA9IHJl Z3MtPmZzOwojaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNiwyOSkp CglrcHN0YXQtPnByX3JlZ1sxMF0gPSByZWdzLT5nczsKI2Vsc2UKCWtwc3RhdC0+cHJfcmVnWzEw XSA9IDA7CiNlbmRpZgoJa3BzdGF0LT5wcl9yZWdbMTFdID0gcmVncy0+b3JpZ19heDsKCWtwc3Rh dC0+cHJfcmVnWzEyXSA9IHJlZ3MtPmlwIC0gMTsKCWtwc3RhdC0+cHJfcmVnWzEzXSA9IHJlZ3Mt PmNzOwoJa3BzdGF0LT5wcl9yZWdbMTRdID0gcmVncy0+ZmxhZ3M7CglrcHN0YXQtPnByX3JlZ1sx NV0gPSAodW5zaWduZWQgbG9uZykmcmVncy0+c3A7CglrcHN0YXQtPnByX3JlZ1sxNl0gPSAwOwoj ZWxzZQoJa3BzdGF0LT5wcl9yZWdbMF0gPSByZWdzLT5lYng7CglrcHN0YXQtPnByX3JlZ1sxXSA9 IHJlZ3MtPmVjeDsKCWtwc3RhdC0+cHJfcmVnWzJdID0gcmVncy0+ZWR4OwoJa3BzdGF0LT5wcl9y ZWdbM10gPSByZWdzLT5lc2k7CglrcHN0YXQtPnByX3JlZ1s0XSA9IHJlZ3MtPmVkaTsKCWtwc3Rh dC0+cHJfcmVnWzVdID0gcmVncy0+ZWJwOwoJa3BzdGF0LT5wcl9yZWdbNl0gPSByZWdzLT5lYXg7 CglrcHN0YXQtPnByX3JlZ1s3XSA9IHJlZ3MtPnhkczsKCWtwc3RhdC0+cHJfcmVnWzhdID0gcmVn cy0+eGVzOwoJa3BzdGF0LT5wcl9yZWdbOV0gPSByZWdzLT54ZnM7CgkvKiBrcHN0YXQtPnByX3Jl Z1sxMF0gPSByZWdzLT5nczsgKi8KCWtwc3RhdC0+cHJfcmVnWzExXSA9IHJlZ3MtPm9yaWdfZWF4 OwoJa3BzdGF0LT5wcl9yZWdbMTJdID0gcmVncy0+ZWlwIC0gMTsKCWtwc3RhdC0+cHJfcmVnWzEz XSA9IHJlZ3MtPnhjczsKCWtwc3RhdC0+cHJfcmVnWzE0XSA9IHJlZ3MtPmVmbGFnczsKCWtwc3Rh dC0+cHJfcmVnWzE1XSA9ICh1bnNpZ25lZCBsb25nKSZyZWdzLT5lc3A7CglrcHN0YXQtPnByX3Jl Z1sxNl0gPSAwOwojZW5kaWYKCS8qIFNldCBrcHN0YXQtPnByX3JlZ1sxNV0gdG8ga3BoZHItPnBf dmFkZHIuICovCglrcGhkci0+cF92YWRkciA9IGtwc3RhdC0+cHJfcmVnWzE1XSAmIH42MzsKCiNp ZiAoTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVMX1ZFUlNJT04oMiw2LDI1KSkKCWlmIChwcm9i ZV9rZXJuZWxfcmVhZCAoa3N0YWNrLCAodm9pZCAqKWtwaGRyLT5wX3ZhZGRyLCBTVEFDS0xFTikp CgkJbWVtc2V0IChrc3RhY2ssIDAsIFNUQUNLTEVOKTsKI2Vsc2UKCW1lbWNweSAoa3N0YWNrLCAo dm9pZCAqKWtwaGRyLT5wX3ZhZGRyLCBTVEFDS0xFTik7CiNlbmRpZgoKCXJldHVybiAwOwojZWxz ZQojZXJyb3IgIlRoaXMgYXJjaGl0ZWN0dXJlIGRvZXNuJ3Qgc3VwcG9ydCBrY29yZWR1bXAuIgoj ZW5kaWYKfQoKc3RhdGljIHZvaWQKaGFuZGxlcl9wb3N0KHN0cnVjdCBrcHJvYmUgKnAsIHN0cnVj dCBwdF9yZWdzICpyZWdzLAoJCQkJdW5zaWduZWQgbG9uZyBmbGFncykKewp9CgpzdGF0aWMgaW50 CmhhbmRsZXJfZmF1bHQoc3RydWN0IGtwcm9iZSAqcCwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGlu dCB0cmFwbnIpCnsKCXByaW50ayhLRVJOX0VSUiAia2NvcmVkdW1wOiBnZXQgZmF1bHQgYWRkciA9 IDB4JXAsIHRyYXAgIyVkblxuIiwKCQlwLT5hZGRyLCB0cmFwbnIpOwoJcmV0dXJuIDA7Cn0KCnN0 YXRpYyBzdHJ1Y3Qga3Byb2JlIGtwID0gewoJLnByZV9oYW5kbGVyCT0gaGFuZGxlcl9wcmUsCgku cG9zdF9oYW5kbGVyCT0gaGFuZGxlcl9wb3N0LAoJLmZhdWx0X2hhbmRsZXIJPSBoYW5kbGVyX2Zh dWx0LAp9OwoKc3RhdGljIGludApmaWxsX2VsZl9ub3RlICh1aW50OF90ICpwLCBjb25zdCBjaGFy ICpuYW1lLCBpbnQgdHlwZSwgdm9pZCAqKmRhdGEsIGludCBkYXRhX2xlbikKewoJaW50CQlyZXQg PSAwOwoJc3RydWN0IGVsZl9ub3RlCSplbiA9IChzdHJ1Y3QgZWxmX25vdGUgKikgcDsKCgllbiA9 IChzdHJ1Y3QgZWxmX25vdGUgKikgcDsKCXAgKz0gc2l6ZW9mKHN0cnVjdCBlbGZfbm90ZSk7Cgly ZXQgKz0gc2l6ZW9mKHN0cnVjdCBlbGZfbm90ZSk7Cgllbi0+bl9uYW1lc3ogPSBzdHJsZW4obmFt ZSkgKyAxOwoJZW4tPm5fdHlwZSA9IHR5cGU7Cgllbi0+bl9kZXNjc3ogPSBkYXRhX2xlbjsKCglt ZW1jcHkgKHAsIG5hbWUsIGVuLT5uX25hbWVzeik7CglwICs9IGVuLT5uX25hbWVzejsKCXAgPSAo dWludDhfdCAqKSByb3VuZHVwKCh1bnNpZ25lZCBsb25nKSBwLCA0KTsKCXJldCArPSByb3VuZHVw KChlbi0+bl9uYW1lc3opLCA0KTsKCgkqZGF0YSA9IHA7CglwICs9IGRhdGFfbGVuOwoJcCA9ICh1 aW50OF90ICopIHJvdW5kdXAoKHVuc2lnbmVkIGxvbmcpIHAsIDQpOwoJcmV0ICs9IHJvdW5kdXAo ZGF0YV9sZW4sIDQpOwoKCXJldHVybiByZXQ7Cn0KCnN0YXRpYyBpbnQKaW5pdF9rYnVmICh2b2lk KQp7Cgl1aW50OF90CQkJKndwID0ga2J1ZjsKCXN0cnVjdCBlbGZoZHIJCSplbGY7CglzdHJ1Y3Qg ZWxmX3BoZHIJCSpuaGRyOwoJc3RydWN0IGVsZl9wcnBzaW5mbwkqcGluZm87CgoJLyogZWxmIGhl YWQgKi8KCWVsZiA9IChzdHJ1Y3QgZWxmaGRyICopIHdwOwoJd3AgKz0gc2l6ZW9mKHN0cnVjdCBl bGZoZHIpOwoJbWVtc2V0KGVsZiwgMCwgc2l6ZW9mKCplbGYpKTsKCW1lbWNweShlbGYtPmVfaWRl bnQsIEVMRk1BRywgU0VMRk1BRyk7CgllbGYtPmVfaWRlbnRbRUlfQ0xBU1NdID0gRUxGX0NMQVNT OwoJZWxmLT5lX2lkZW50W0VJX0RBVEFdID0gRUxGX0RBVEE7CgllbGYtPmVfaWRlbnRbRUlfVkVS U0lPTl0gPSBFVl9DVVJSRU5UOwoJZWxmLT5lX2lkZW50W0VJX09TQUJJXSA9IEVMRl9PU0FCSTsK CWVsZi0+ZV90eXBlID0gRVRfQ09SRTsKCWVsZi0+ZV9tYWNoaW5lID0gRUxGX0FSQ0g7CgllbGYt PmVfdmVyc2lvbiA9IEVWX0NVUlJFTlQ7CgllbGYtPmVfcGhvZmYgPSBzaXplb2Yoc3RydWN0IGVs Zmhkcik7CgllbGYtPmVfZmxhZ3MgPSAwOwoJZWxmLT5lX2Voc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg ZWxmaGRyKTsKCWVsZi0+ZV9waGVudHNpemUgPSBzaXplb2Yoc3RydWN0IGVsZl9waGRyKTsKCS8q IHNlY3Rpb25zIG51bWJlciAodm1hICsgMSkgKi8KCWVsZi0+ZV9waG51bSA9IDEgKyAxOwoKCS8q IG5oZHIgKi8KCW5oZHIgPSAoc3RydWN0IGVsZl9waGRyICopIHdwOwoJd3AgKz0gc2l6ZW9mKHN0 cnVjdCBlbGZfcGhkcik7CgluaGRyLT5wX3R5cGUJPSBQVF9OT1RFOwoJbmhkci0+cF9vZmZzZXQJ PSBzaXplb2Yoc3RydWN0IGVsZmhkcikgKyBzaXplb2Yoc3RydWN0IGVsZl9waGRyKSAqIDI7Cglu aGRyLT5wX3ZhZGRyCT0gMDsKCW5oZHItPnBfcGFkZHIJPSAwOwoJbmhkci0+cF9maWxlc3oJPSAw OwoJbmhkci0+cF9tZW1zegk9IDA7CgluaGRyLT5wX2ZsYWdzCT0gMDsKCW5oZHItPnBfYWxpZ24J PSAwOwoKCS8qIGtwaGRyICovCglrcGhkciA9IChzdHJ1Y3QgZWxmX3BoZHIgKikgd3A7Cgl3cCAr PSBzaXplb2Yoc3RydWN0IGVsZl9waGRyKTsKCWtwaGRyLT5wX3R5cGUgPSBQVF9MT0FEOwoJa3Bo ZHItPnBfZmxhZ3MgPSBQRl9SOwoJa3BoZHItPnBfb2Zmc2V0ID0gbmhkci0+cF9vZmZzZXQ7Cgkv KiBrcGhkci0+cF92YWRkciB3aWxsIGJlIHNldCBpbiBoYW5kbGVyX3ByZS4gICovCglrcGhkci0+ cF92YWRkciA9IDA7CglrcGhkci0+cF9wYWRkciA9IDA7CglrcGhkci0+cF9maWxlc3ogPSBrcGhk ci0+cF9tZW1zeiA9IFNUQUNLTEVOOwoJa3BoZHItPnBfYWxpZ24gPSAxOwoKCS8qIG5vdGUwIGtw c3RhdCAqLwoJaWYgKGZpbGxfZWxmX25vdGUgKHdwLCAiQ09SRSIsIE5UX1BSU1RBVFVTLCAoKHZv aWQgKiopJmtwc3RhdCksCgkJCQlzaXplb2Yoc3RydWN0IGVsZl9wcnN0YXR1cykpICE9IEVMRk5P VEVMRU4oc2l6ZW9mKHN0cnVjdCBlbGZfcHJzdGF0dXMpKSkKCQlyZXR1cm4gLTE7Cgl3cCArPSBF TEZOT1RFTEVOKHNpemVvZihzdHJ1Y3QgZWxmX3Byc3RhdHVzKSk7CgluaGRyLT5wX2ZpbGVzeiAr PSBFTEZOT1RFTEVOKHNpemVvZihzdHJ1Y3QgZWxmX3Byc3RhdHVzKSk7CgkvKiBrcHN0YXQtPnBy X3JlZyB3aWxsIGJlIHNldCBpbiBoYW5kbGVyX3ByZS4gICovCgltZW1zZXQgKGtwc3RhdCwgMCwg c2l6ZW9mKHN0cnVjdCBlbGZfcHJzdGF0dXMpKTsKCgkvKiBub3RlMSBwaW5mbyAqLwoJaWYgKGZp bGxfZWxmX25vdGUgKHdwLCAiQ09SRSIsIE5UX1BSUFNJTkZPLCAoKHZvaWQgKiopJnBpbmZvKSwK CQkJCXNpemVvZihzdHJ1Y3QgZWxmX3BycHNpbmZvKSkgIT0gRUxGTk9URUxFTihzaXplb2Yoc3Ry dWN0IGVsZl9wcnBzaW5mbykpKQoJCXJldHVybiAtMTsKCXdwICs9IEVMRk5PVEVMRU4oc2l6ZW9m KHN0cnVjdCBlbGZfcHJwc2luZm8pKTsKCW5oZHItPnBfZmlsZXN6ICs9IEVMRk5PVEVMRU4oc2l6 ZW9mKHN0cnVjdCBlbGZfcHJwc2luZm8pKTsKCW1lbXNldCAocGluZm8sIDAsIHNpemVvZihzdHJ1 Y3QgZWxmX3BycHNpbmZvKSk7CglwaW5mby0+cHJfc3RhdGUgPSAwOwoJcGluZm8tPnByX3NuYW1l ID0gJ1InOwoJcGluZm8tPnByX3pvbWIgPSAwOwoJc25wcmludGYocGluZm8tPnByX2ZuYW1lLCAx NiwgIiVzIiwgInZtbGludXgiKTsKCS8vc25wcmludGYocGluZm8tPnByX3BzYXJncywgRUxGX1BS QVJHU1osICIlcyIsIHNhdmVkX2NvbW1hbmRfbGluZSk7CglzbnByaW50ZihwaW5mby0+cHJfcHNh cmdzLCBFTEZfUFJBUkdTWiwgIiVzIiwgIiIpOwoKCS8qIGtzdGFjayAqLwoJa3BoZHItPnBfb2Zm c2V0ICs9IG5oZHItPnBfZmlsZXN6OwoJa3N0YWNrID0gd3A7CgltZW1zZXQgKGtzdGFjaywgMCwg U1RBQ0tMRU4pOwoJd3AgKz0gU1RBQ0tMRU47CgoJLyogQ2hlY2sgc2l6ZS4gICovCglpZiAod3Ag LSBrYnVmICE9IEtCVUZMRU4pCgkJcmV0dXJuIC0xOwoKCXJldHVybiAwOwp9CgojaWYgKExJTlVY X1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDIsNiwzMSkpCnN0YXRpYyBpbnQKc2VxX3dy aXRlKHN0cnVjdCBzZXFfZmlsZSAqc2VxLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3QgbGVuKQp7 CglpZiAoc2VxLT5jb3VudCArIGxlbiA8IHNlcS0+c2l6ZSkgewoJCW1lbWNweShzZXEtPmJ1ZiAr IHNlcS0+Y291bnQsIGRhdGEsIGxlbik7CgkJc2VxLT5jb3VudCArPSBsZW47CgkJcmV0dXJuIDA7 Cgl9CglzZXEtPmNvdW50ID0gc2VxLT5zaXplOwoJcmV0dXJuIC0xOwp9CiNlbmRpZgoKc3RhdGlj IGludAprY29yZWR1bXBfc2VxX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp2KQp7Cgly ZXR1cm4gc2VxX3dyaXRlIChzLCBrYnVmLCBLQlVGTEVOKTsKfQoKc3RhdGljIGludAprY29yZWR1 bXBfcHJvY19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQp7Cgly ZXR1cm4gc2luZ2xlX29wZW4oZmlsZSwga2NvcmVkdW1wX3NlcV9zaG93LCBOVUxMKTsKfQoKc3Rh dGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMga2NvcmVkdW1wX3Byb2Nfb3BzID0gewoJ Lm93bmVyCQk9IFRISVNfTU9EVUxFLAoJLm9wZW4JCT0ga2NvcmVkdW1wX3Byb2Nfb3BlbiwKCS5y ZWFkCQk9IHNlcV9yZWFkLAoJLmxsc2VlawkJPSBzZXFfbHNlZWssCgkucmVsZWFzZQk9IHNlcV9y ZWxlYXNlLAp9OwoKI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigyLDYs MjUpKQpzdGF0aWMgaW5saW5lIHN0cnVjdCBwcm9jX2Rpcl9lbnRyeSAqCnByb2NfY3JlYXRlKGNv bnN0IGNoYXIgKm5hbWUsIG1vZGVfdCBtb2RlLCBzdHJ1Y3QgcHJvY19kaXJfZW50cnkgKnBhcmVu dCwKCQljb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpwcm9jX2ZvcHMpCnsKCXN0cnVjdCBw cm9jX2Rpcl9lbnRyeSAqcmV0ID0gY3JlYXRlX3Byb2NfZW50cnkobmFtZSwgbW9kZSwgcGFyZW50 KTsKCWlmICghcmV0KQoJCXJldHVybiBOVUxMOwoKCXJldC0+cHJvY19mb3BzID0gcHJvY19mb3Bz OwoKCXJldHVybiByZXQ7Cn0KI2VuZGlmCgppbnQgaW5pdF9tb2R1bGUodm9pZCkKewoJaW50CXJl dCA9IDA7CgoJLyogQ2hlY2sgYXJndW1lbnQuICAqLwoJaWYgKHN0cmNtcCAoa25hbWUsIEtOQU1F X05PVF9TRVQpKSB7CgkJa3Auc3ltYm9sX25hbWUgPSBrbmFtZTsKCQlrcC5vZmZzZXQgPSBrb2Zm c2V0OwoJfQoJZWxzZSB7CgkJaWYgKGthZGRyKSB7CgkJCWtwLmFkZHIgPSAoa3Byb2JlX29wY29k ZV90ICopa2FkZHI7CgkJfQoJCWVsc2UgewoJCQlwcmludGsgKEtFUk5fRVJSICJrY29yZWR1bXA6 IG11c3Qgc2V0IHRoZSBuYW1lIG9yIGFkZHIuXG4iKTsKCQkJcmV0dXJuIC1FSU5WQUw7CgkJfQoJ fQoKCWlmIChpbml0X2tidWYgKCkpIHsKCQlwcmludGsgKEtFUk5fRVJSICJrY29yZWR1bXA6IGlu aXQgYnVmIGVycm9yLlxuIik7CgkJcmV0dXJuIC1FSU87Cgl9CgoJa2NvcmVkdW1wX2ZpbGUgPSBw cm9jX2NyZWF0ZSAoImtjb3JlZHVtcCIsIDA0NDQsIE5VTEwsICZrY29yZWR1bXBfcHJvY19vcHMp OwoJaWYgKCFrY29yZWR1bXBfZmlsZSkgewoJCXByaW50ayAoS0VSTl9FUlIgImtjb3JlZHVtcDog Y3JlYXRlIHByb2MgZmlsZSBlcnJvci5cbiIpOwoJCXJldHVybiAtRU5PTUVNOwoJfQoJLyoga2Nv cmVkdW1wX2ZpbGUtPm93bmVyID0gVEhJU19NT0RVTEU7ICovCglrY29yZWR1bXBfZmlsZS0+c2l6 ZSA9IEtCVUZMRU47CgoJcmV0ID0gcmVnaXN0ZXJfa3Byb2JlKCZrcCk7CglpZiAocmV0IDwgMCkg ewoJCXByaW50ayAoS0VSTl9FUlIgImtjb3JlZHVtcDogcmVnaXN0ZXIga3Byb2JlIGVycm9yLlxu Iik7CgkJcmVtb3ZlX3Byb2NfZW50cnkoImtjb3JlZHVtcCIsIE5VTEwpOwoJCXJldHVybiByZXQ7 Cgl9CgoJcHJpbnRrKEtFUk5fTk9USUNFICJrY29yZWR1bXA6IGR1bXAgaW4gMHglcC5cbiIsIGtw LmFkZHIpOwoKCXJldHVybiAwOwp9Cgp2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpCnsKCXVucmVn aXN0ZXJfa3Byb2JlKCZrcCk7CglyZW1vdmVfcHJvY19lbnRyeSgia2NvcmVkdW1wIiwgTlVMTCk7 Cn0KCm1vZHVsZV9wYXJhbV9uYW1lZChuYW1lLCBrbmFtZSwgY2hhcnAsIDA2NDQpOwptb2R1bGVf cGFyYW1fbmFtZWQob2Zmc2V0LCBrb2Zmc2V0LCB1aW50LCAwNjQ0KTsKbW9kdWxlX3BhcmFtX25h bWVkKGFkZHIsIGthZGRyLCB1aW50LCAwNjQ0KTsKCk1PRFVMRV9BVVRIT1IoIkh1aSBaaHUiKTsK TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo= --001636e1f81f43b8870474269312 Content-Type: application/octet-stream; name=Makefile Content-Disposition: attachment; filename=Makefile Content-Transfer-Encoding: base64 X-Attachment-Id: f_fzwehg991 b2JqLW0gOj0ga2NvcmVkdW1wLm8KCktFUk5FTERJUiA6PSAvbGliL21vZHVsZXMvYHVuYW1lIC1y YC9idWlsZApQV0QgIDo9ICQoc2hlbGwgcHdkKQoKZGVmYXVsdDoKCSQoTUFLRSkgQ1JPU1NfQ09N UElMRT0kKENST1NTX0NPTVBJTEUpIC1DICQoS0VSTkVMRElSKSBNPSQoUFdEKSBtb2R1bGVzCgpj bGVhbjoKCSQoTUFLRSkgQ1JPU1NfQ09NUElMRT0kKENST1NTX0NPTVBJTEUpIC1DICQoS0VSTkVM RElSKSBNPSQoUFdEKSBjbGVhbgo= --001636e1f81f43b8870474269312--