From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30165 invoked by alias); 4 Feb 2011 15:59:34 -0000 Received: (qmail 30156 invoked by uid 22791); 4 Feb 2011 15:59:32 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_CP X-Spam-Check-By: sourceware.org Received: from mail-yx0-f169.google.com (HELO mail-yx0-f169.google.com) (209.85.213.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 04 Feb 2011 15:59:24 +0000 Received: by yxl31 with SMTP id 31so1166362yxl.0 for ; Fri, 04 Feb 2011 07:59:23 -0800 (PST) Received: by 10.150.158.11 with SMTP id g11mr1021458ybe.238.1296835162758; Fri, 04 Feb 2011 07:59:22 -0800 (PST) MIME-Version: 1.0 Received: by 10.147.34.12 with HTTP; Fri, 4 Feb 2011 07:59:02 -0800 (PST) In-Reply-To: References: <4D24D9DD.8090104@codesourcery.com> From: Hui Zhu Date: Fri, 04 Feb 2011 15:59:00 -0000 Message-ID: Subject: Re: [PATCH] tracepoint: add new trace command "printf"[0] gdb To: gdb-patches ml Cc: Stan Shebs Content-Type: multipart/mixed; boundary=000e0cd5d01a35608f049b76f7b0 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-02/txt/msg00063.txt.bz2 --000e0cd5d01a35608f049b76f7b0 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 848 The prev version cannot support %s. So make a new version to support it. And I think current way to handle printf is too much hack way. Maybe I need find out a more better way to handle the printf. Thanks, Hui 2011-02-04 Hui Zhu * ax-gdb.c (gen_printf_expr_callback): New function. * ax-general.c (ax_memcpy): New function. (aop_map): Add new entry for "printf". (ax_print): Handle "printf". (ax_reqs): Ditto. * ax.h (agent_op): Add aop_printf. (ax_memcpy): Forward declare. * printcmd.c (printf_callback): New typedef. (string_printf): New function from ui_printf. (ui_printf): Call string_printf. (printf_command): Remove static. * tracepoint.c (printf_command, gen_printf_expr_callback, printf_callback, string_printf): Forward declares. (validate_actionline, encode_actions_1): handle printf_command. --000e0cd5d01a35608f049b76f7b0 Content-Type: text/plain; charset=US-ASCII; name="tp_print.txt" Content-Disposition: attachment; filename="tp_print.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gjra4o6q1 Content-length: 13957 LS0tCiBheC1nZGIuYyAgICAgfCAgIDU4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGF4LWdl bmVyYWwuYyB8ICAgNTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0tCiBheC5oICAgICAgICAgfCAgICAz ICsrKwogcHJpbnRjbWQuYyAgIHwgICA0MSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLQogdHJhY2Vwb2ludC5jIHwgICA0NyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KwogNSBmaWxlcyBjaGFuZ2VkLCAxOTAgaW5zZXJ0aW9ucygrKSwgMTMgZGVs ZXRpb25zKC0pCgotLS0gYS9heC1nZGIuYworKysgYi9heC1nZGIuYwpAQCAt MjQ0Niw2ICsyNDQ2LDY0IEBAIGdlbl9ldmFsX2Zvcl9leHByIChDT1JFX0FE RFIgc2NvcGUsIHN0cnUKICAgcmV0dXJuIGF4OwogfQogCit2b2lkCitnZW5f cHJpbnRmX2V4cHJfY2FsbGJhY2sgKGNoYXIgKmZidWYsIGNoYXIgKipleHBw LCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYywKKwkJCSAgc3RydWN0IGFnZW50 X2V4cHIgKmFleHByKQoreworICBpZiAoZXhwcCkKKyAgICB7CisgICAgICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0gTlVMTDsKKyAgICAgIHN0cnVj dCBleHByZXNzaW9uICpleHByID0gTlVMTDsKKyAgICAgIHVuaW9uIGV4cF9l bGVtZW50ICpwYzsKKyAgICAgIHN0cnVjdCBheHNfdmFsdWUgdmFsdWU7CisK KyAgICAgIGV4cHIgPSBwYXJzZV9leHBfMSAoZXhwcCwgYmxvY2tfZm9yX3Bj IChsb2MtPmFkZHJlc3MpLCAxKTsKKyAgICAgIG9sZF9jaGFpbiA9IG1ha2Vf Y2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRzLCAmZXhwcik7CisKKyAg ICAgIHBjID0gZXhwci0+ZWx0czsKKyAgICAgIHRyYWNlX2tsdWRnZSA9IDA7 CisgICAgICB2YWx1ZS5vcHRpbWl6ZWRfb3V0ID0gMDsKKyAgICAgIGdlbl9l eHByIChleHByLCAmcGMsIGFleHByLCAmdmFsdWUpOworCisKKyAgICAgIGlm ICh2YWx1ZS5vcHRpbWl6ZWRfb3V0KQorICAgICAgICBlcnJvciAoXygidmFs dWUgaGFzIGJlZW4gb3B0aW1pemVkIG91dCIpKTsKKyAgICAgIHN3aXRjaCAo dmFsdWUua2luZCkKKyAgICAgICAgeworCWNhc2UgYXhzX2x2YWx1ZV9tZW1v cnk6CisJICBpZiAoVFlQRV9DT0RFICh2YWx1ZS50eXBlKSAhPSBUWVBFX0NP REVfQVJSQVkpCisJICAgIHsKKwkgICAgICBpbnQgbGVuZ3RoID0gVFlQRV9M RU5HVEggKGNoZWNrX3R5cGVkZWYgKHZhbHVlLnR5cGUpKTsKKwkgICAgICBz d2l0Y2ggKGxlbmd0aCkKKwkJeworCQljYXNlIDQ6CisJCSAgYXhfc2ltcGxl IChhZXhwciwgYW9wX3JlZjMyKTsKKwkJICBicmVhazsKKwkJY2FzZSA4Ogor CQkgIGF4X3NpbXBsZSAoYWV4cHIsIGFvcF9yZWY2NCk7CisJCSAgYnJlYWs7 CisJCWRlZmF1bHQ6CisJCSAgZXJyb3IgKF8oIlNpemUgb2YgdmFsdWUgaXMg bm90IE9LLiIpKTsKKwkJICBicmVhazsKKwkJfQorCSAgICB9CisJICBicmVh azsKKwljYXNlIGF4c19sdmFsdWVfcmVnaXN0ZXI6CisJICBheF9yZWcgKGFl eHByLCB2YWx1ZS51LnJlZyk7CisJICBicmVhazsKKyAgICAgICAgfQorCisg ICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKyAgICB9CisKKyAgYXhf c2ltcGxlIChhZXhwciwgYW9wX3ByaW50Zik7CisgIGlmIChleHBwKQorICAg IGF4X3NpbXBsZSAoYWV4cHIsIDEpOworICBlbHNlCisgICAgYXhfc2ltcGxl IChhZXhwciwgMCk7CisgIGF4X21lbWNweSAoYWV4cHIsIGZidWYsIHN0cmxl biAoZmJ1ZikgKyAxKTsKK30KKwogc3RhdGljIHZvaWQKIGFnZW50X2NvbW1h bmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogewotLS0gYS9heC1nZW5l cmFsLmMKKysrIGIvYXgtZ2VuZXJhbC5jCkBAIC0zMTksNiArMzE5LDE0IEBA IGF4X3RzdiAoc3RydWN0IGFnZW50X2V4cHIgKngsIGVudW0gYWdlbnQKICAg eC0+YnVmW3gtPmxlbiArIDJdID0gKG51bSkgJiAweGZmOwogICB4LT5sZW4g Kz0gMzsKIH0KKwordm9pZAorYXhfbWVtY3B5IChzdHJ1Y3QgYWdlbnRfZXhw ciAqeCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3QgbikKK3sKKyAgZ3Jvd19l eHByICh4LCBuKTsKKyAgbWVtY3B5ICh4LT5idWYgKyB4LT5sZW4sIHNyYywg bik7CisgIHgtPmxlbiArPSBuOworfQogDAogCiAKQEAgLTM3Niw2ICszODQs NyBAQCBzdHJ1Y3QgYW9wX21hcCBhb3BfbWFwW10gPQogICB7InRyYWNldiIs IDIsIDAsIDAsIDF9LAkvKiAweDJlICovCiAgIHswLCAwLCAwLCAwLCAwfSwJ CS8qIDB4MmYgKi8KICAgeyJ0cmFjZTE2IiwgMiwgMCwgMSwgMX0sCS8qIDB4 MzAgKi8KKyAgeyJwcmludGYiLCAwLCAwLCAwLCAwfSwJLyogMHgzMSAqLwog fTsKIAogCkBAIC00MDEsNiArNDEwLDcgQEAgYXhfcHJpbnQgKHN0cnVjdCB1 aV9maWxlICpmLCBzdHJ1Y3QgYWdlbgogICBmb3IgKGkgPSAwOyBpIDwgeC0+ bGVuOykKICAgICB7CiAgICAgICBlbnVtIGFnZW50X29wIG9wID0geC0+YnVm W2ldOworICAgICAgaW50IG9wX3NpemU7CiAKICAgICAgIGlmIChvcCA+PSAo c2l6ZW9mIChhb3BfbWFwKSAvIHNpemVvZiAoYW9wX21hcFswXSkpCiAJICB8 fCAhYW9wX21hcFtvcF0ubmFtZSkKQEAgLTQwOSw3ICs0MTksMTkgQEAgYXhf cHJpbnQgKHN0cnVjdCB1aV9maWxlICpmLCBzdHJ1Y3QgYWdlbgogCSAgaSsr OwogCSAgY29udGludWU7CiAJfQotICAgICAgaWYgKGkgKyAxICsgYW9wX21h cFtvcF0ub3Bfc2l6ZSA+IHgtPmxlbikKKyAgICAgIGlmIChvcCA9PSBhb3Bf cHJpbnRmKQorICAgICAgICB7CisJICBpZiAoaSArIDIgPj0geC0+bGVuKQor CSAgICB7CisJICAgICAgZnByaW50Zl9maWx0ZXJlZCAoZiwgXygiJTNkICA8 YmFkIG9wY29kZSAlMDJ4PlxuIiksIGksIG9wKTsKKwkgICAgICBpKys7CisJ ICAgICAgY29udGludWU7CisJICAgIH0KKwkgIG9wX3NpemUgPSAxICsgc3Ry bGVuICh4LT5idWYgKyBpICsgMikgKyAxOworCX0KKyAgICAgIGVsc2UKKwlv cF9zaXplID0gYW9wX21hcFtvcF0ub3Bfc2l6ZTsKKyAgICAgIGlmIChpICsg MSArIG9wX3NpemUgPiB4LT5sZW4pCiAJewogCSAgZnByaW50Zl9maWx0ZXJl ZCAoZiwgXygiJTNkICA8aW5jb21wbGV0ZSBvcGNvZGUgJXM+XG4iKSwKIAkJ CSAgICBpLCBhb3BfbWFwW29wXS5uYW1lKTsKQEAgLTQxNywxNSArNDM5LDE1 IEBAIGF4X3ByaW50IChzdHJ1Y3QgdWlfZmlsZSAqZiwgc3RydWN0IGFnZW4K IAl9CiAKICAgICAgIGZwcmludGZfZmlsdGVyZWQgKGYsICIlM2QgICVzIiwg aSwgYW9wX21hcFtvcF0ubmFtZSk7Ci0gICAgICBpZiAoYW9wX21hcFtvcF0u b3Bfc2l6ZSA+IDApCisgICAgICBpZiAob3Bfc2l6ZSA+IDApCiAJewogCSAg ZnB1dHNfZmlsdGVyZWQgKCIgIiwgZik7CiAKIAkgIHByaW50X2xvbmdlc3Qg KGYsICdkJywgMCwKLQkJCSByZWFkX2NvbnN0ICh4LCBpICsgMSwgYW9wX21h cFtvcF0ub3Bfc2l6ZSkpOworCQkJIHJlYWRfY29uc3QgKHgsIGkgKyAxLCBv cF9zaXplKSk7CiAJfQogICAgICAgZnByaW50Zl9maWx0ZXJlZCAoZiwgIlxu Iik7Ci0gICAgICBpICs9IDEgKyBhb3BfbWFwW29wXS5vcF9zaXplOworICAg ICAgaSArPSAxICsgb3Bfc2l6ZTsKIAogICAgICAgaXNfZmxvYXQgPSAob3Ag PT0gYW9wX2Zsb2F0KTsKICAgICB9CkBAIC00OTMsNiArNTE1LDggQEAgYXhf cmVxcyAoc3RydWN0IGFnZW50X2V4cHIgKmF4KQogICAvKiBQb2ludGVyIHRv IGEgZGVzY3JpcHRpb24gb2YgdGhlIHByZXNlbnQgb3AuICAqLwogICBzdHJ1 Y3QgYW9wX21hcCAqb3A7CiAKKyAgaW50IG9wX3NpemUgPSAwLCBjb25zdW1l ZCA9IDA7CisKICAgbWVtc2V0ICh0YXJnZXRzLCAwLCBheC0+bGVuICogc2l6 ZW9mICh0YXJnZXRzWzBdKSk7CiAgIG1lbXNldCAoYm91bmRhcnksIDAsIGF4 LT5sZW4gKiBzaXplb2YgKGJvdW5kYXJ5WzBdKSk7CiAKQEAgLTUwMCw3ICs1 MjQsNyBAQCBheF9yZXFzIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgpCiAgIGF4 LT5mbGF3ID0gYWdlbnRfZmxhd19ub25lOwogICBheC0+bWF4X2RhdGFfc2l6 ZSA9IDA7CiAKLSAgZm9yIChpID0gMDsgaSA8IGF4LT5sZW47IGkgKz0gMSAr IG9wLT5vcF9zaXplKQorICBmb3IgKGkgPSAwOyBpIDwgYXgtPmxlbjsgaSAr PSAxICsgb3Bfc2l6ZSkKICAgICB7CiAgICAgICBpZiAoYXgtPmJ1ZltpXSA+ IChzaXplb2YgKGFvcF9tYXApIC8gc2l6ZW9mIChhb3BfbWFwWzBdKSkpCiAJ ewpAQCAtNTE2LDcgKzU0MCwyMyBAQCBheF9yZXFzIChzdHJ1Y3QgYWdlbnRf ZXhwciAqYXgpCiAJICByZXR1cm47CiAJfQogCi0gICAgICBpZiAoaSArIDEg KyBvcC0+b3Bfc2l6ZSA+IGF4LT5sZW4pCisgICAgICBpZiAoYXgtPmJ1Zltp XSA9PSBhb3BfcHJpbnRmKQorICAgICAgICB7CisJICBpZiAoaSArIDIgPj0g YXgtPmxlbikKKwkgICAgeworCSAgICAgIGF4LT5mbGF3ID0gYWdlbnRfZmxh d19pbmNvbXBsZXRlX2luc3RydWN0aW9uOworCSAgICAgIHJldHVybjsKKwkg ICAgfQorCSAgY29uc3VtZWQgPSBheC0+YnVmW2kgKyAxXTsKKwkgIG9wX3Np emUgPSAxICsgc3RybGVuIChheC0+YnVmICsgaSArIDIpICsgMTsKKwl9Cisg ICAgICBlbHNlCisgICAgICAgIHsKKwkgIG9wX3NpemUgPSBvcC0+b3Bfc2l6 ZTsKKwkgIGNvbnN1bWVkID0gb3AtPmNvbnN1bWVkOworICAgICAgICB9CisK KyAgICAgIGlmIChpICsgMSArIG9wX3NpemUgPiBheC0+bGVuKQogCXsKIAkg IGF4LT5mbGF3ID0gYWdlbnRfZmxhd19pbmNvbXBsZXRlX2luc3RydWN0aW9u OwogCSAgcmV0dXJuOwpAQCAtNTM0LDcgKzU3NCw3IEBAIGF4X3JlcXMgKHN0 cnVjdCBhZ2VudF9leHByICpheCkKICAgICAgIGJvdW5kYXJ5W2ldID0gMTsK ICAgICAgIGhlaWdodHNbaV0gPSBoZWlnaHQ7CiAKLSAgICAgIGhlaWdodCAt PSBvcC0+Y29uc3VtZWQ7CisgICAgICBoZWlnaHQgLT0gY29uc3VtZWQ7CiAg ICAgICBpZiAoaGVpZ2h0IDwgYXgtPm1pbl9oZWlnaHQpCiAJYXgtPm1pbl9o ZWlnaHQgPSBoZWlnaHQ7CiAgICAgICBoZWlnaHQgKz0gb3AtPnByb2R1Y2Vk OwotLS0gYS9heC5oCisrKyBiL2F4LmgKQEAgLTIwNCw2ICsyMDQsNyBAQCBl bnVtIGFnZW50X29wCiAgICAgYW9wX3NldHYgPSAweDJkLAogICAgIGFvcF90 cmFjZXYgPSAweDJlLAogICAgIGFvcF90cmFjZTE2ID0gMHgzMCwKKyAgICBh b3BfcHJpbnRmID0gMHgzMSwKICAgICBhb3BfbGFzdAogICB9OwogDApAQCAt MjYwLDYgKzI2MSw4IEBAIGV4dGVybiB2b2lkIGF4X3JlZ19tYXNrIChzdHJ1 Y3QgYWdlbnRfZXgKIAogLyogQXNzZW1ibGUgY29kZSB0byBvcGVyYXRlIG9u IGEgdHJhY2Ugc3RhdGUgdmFyaWFibGUuICAqLwogZXh0ZXJuIHZvaWQgYXhf dHN2IChzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwgZW51bSBhZ2VudF9vcCBv cCwgaW50IG51bSk7CisKK2V4dGVybiB2b2lkIGF4X21lbWNweSAoc3RydWN0 IGFnZW50X2V4cHIgKngsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pOwog DAogCiAvKiBGdW5jdGlvbnMgZm9yIHByaW50aW5nIG91dCBleHByZXNzaW9u cywgYW5kIG90aGVyd2lzZSBkZWJ1Z2dpbmcKLS0tIGEvcHJpbnRjbWQuYwor KysgYi9wcmludGNtZC5jCkBAIC0xOTU4LDEwICsxOTU4LDEzIEBAIHByaW50 X3ZhcmlhYmxlX2FuZF92YWx1ZSAoY29uc3QgY2hhciAqbmEKICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXG4iKTsKIH0KIAotLyogcHJpbnRmICJw cmludGYgZm9ybWF0IHN0cmluZyIgQVJHIHRvIFNUUkVBTS4gICovCit0eXBl ZGVmIHZvaWQgKHByaW50Zl9jYWxsYmFjaykgKGNoYXIgKmZidWYsIGNoYXIg KipleHBwLAorCQkJCXN0cnVjdCBicF9sb2NhdGlvbiAqbG9jLAorCQkJCXN0 cnVjdCBhZ2VudF9leHByICphZXhwcik7CiAKLXN0YXRpYyB2b2lkCi11aV9w cmludGYgKGNoYXIgKmFyZywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKK3Zv aWQKK3N0cmluZ19wcmludGYgKGNoYXIgKmFyZywgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgcHJpbnRmX2NhbGxiYWNrIGNhbGxiYWNrLAorCSAgICAgICBz dHJ1Y3QgYnBfbG9jYXRpb24gKmxvYywgc3RydWN0IGFnZW50X2V4cHIgKmFl eHByKQogewogICBjaGFyICpmID0gTlVMTDsKICAgY2hhciAqcyA9IGFyZzsK QEAgLTIyOTQsMjYgKzIyOTcsNDIgQEAgdWlfcHJpbnRmIChjaGFyICphcmcs IHN0cnVjdCB1aV9maWxlICpzdAogICAgIC8qIE5vdywgcGFyc2UgYWxsIGFy Z3VtZW50cyBhbmQgZXZhbHVhdGUgdGhlbS4KICAgICAgICBTdG9yZSB0aGUg VkFMVUVzIGluIFZBTF9BUkdTLiAgKi8KIAorICAgIGlmIChjYWxsYmFjaykK KyAgICAgIGN1cnJlbnRfc3Vic3RyaW5nID0gc3Vic3RyaW5nczsKICAgICB3 aGlsZSAoKnMgIT0gJ1wwJykKICAgICAgIHsKIAljaGFyICpzMTsKIAorCXMx ID0gczsKIAlpZiAobmFyZ3MgPT0gYWxsb2NhdGVkX2FyZ3MpCiAJICB2YWxf YXJncyA9IChzdHJ1Y3QgdmFsdWUgKiopIHhyZWFsbG9jICgoY2hhciAqKSB2 YWxfYXJncywKIAkJCQkJCSAoYWxsb2NhdGVkX2FyZ3MgKj0gMikKIAkJCQkJ CSAqIHNpemVvZiAoc3RydWN0IHZhbHVlICopKTsKLQlzMSA9IHM7Ci0JdmFs X2FyZ3NbbmFyZ3NdID0gcGFyc2VfdG9fY29tbWFfYW5kX2V2YWwgKCZzMSk7 CisJaWYgKGNhbGxiYWNrKQorCSAgeworCSAgICBpZiAobmFyZ3MgPj0gbmFy Z3Nfd2FudGVkKQorCSAgICAgIGVycm9yIChfKCJXcm9uZyBudW1iZXIgb2Yg YXJndW1lbnRzIGZvciBzcGVjaWZpZWQgIgorCQkgICAgICAgImZvcm1hdC1z dHJpbmciKSk7CisJICAgIGNhbGxiYWNrIChjdXJyZW50X3N1YnN0cmluZywg JnMxLCBsb2MsIGFleHByKTsKKwkgICAgY3VycmVudF9zdWJzdHJpbmcgKz0g c3RybGVuIChjdXJyZW50X3N1YnN0cmluZykgKyAxOworCSAgfQorCWVsc2UK KwkgIHZhbF9hcmdzW25hcmdzXSA9IHBhcnNlX3RvX2NvbW1hX2FuZF9ldmFs ICgmczEpOwogCiAJbmFyZ3MrKzsKIAlzID0gczE7CiAJaWYgKCpzID09ICcs JykKIAkgIHMrKzsKICAgICAgIH0KKyAgICBpZiAoY2FsbGJhY2spCisgICAg ICBjYWxsYmFjayAobGFzdF9hcmcsIE5VTEwsIGxvYywgYWV4cHIpOwogCiAg ICAgaWYgKG5hcmdzICE9IG5hcmdzX3dhbnRlZCkKICAgICAgIGVycm9yIChf KCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBzcGVjaWZpZWQgZm9y bWF0LXN0cmluZyIpKTsKIAorICAgIGlmICghc3RyZWFtKQorICAgICAgZ290 byBhZnRlcl9wcmludDsKKwogICAgIC8qIE5vdyBhY3R1YWxseSBwcmludCB0 aGVtLiAgKi8KICAgICBjdXJyZW50X3N1YnN0cmluZyA9IHN1YnN0cmluZ3M7 CiAgICAgZm9yIChpID0gMDsgaSA8IG5hcmdzOyBpKyspCkBAIC0yNjY4LDEy ICsyNjg3LDIyIEBAIHVpX3ByaW50ZiAoY2hhciAqYXJnLCBzdHJ1Y3QgdWlf ZmlsZSAqc3QKICAgICAgICBieSBkZWZhdWx0LCB3aGljaCB3aWxsIHdhcm4g aGVyZSBpZiB0aGVyZSBpcyBubyBhcmd1bWVudC4gICovCiAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCBsYXN0X2FyZywgMCk7CiAgIH0KKworYWZ0 ZXJfcHJpbnQ6CiAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwogfQog Ci0vKiBJbXBsZW1lbnQgdGhlICJwcmludGYiIGNvbW1hbmQuICAqLworLyog cHJpbnRmICJwcmludGYgZm9ybWF0IHN0cmluZyIgQVJHIHRvIFNUUkVBTS4g ICovCiAKIHN0YXRpYyB2b2lkCit1aV9wcmludGYgKGNoYXIgKmFyZywgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSkKK3sKKyAgc3RyaW5nX3ByaW50ZiAoYXJn LCBzdHJlYW0sIE5VTEwsIE5VTEwsIE5VTEwpOworfQorCisvKiBJbXBsZW1l bnQgdGhlICJwcmludGYiIGNvbW1hbmQuICAqLworCit2b2lkCiBwcmludGZf Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiB7CiAgIHVpX3By aW50ZiAoYXJnLCBnZGJfc3Rkb3V0KTsKLS0tIGEvdHJhY2Vwb2ludC5jCisr KyBiL3RyYWNlcG9pbnQuYwpAQCAtMTg3LDYgKzE4NywxNSBAQCBleHRlcm4g dm9pZCBzZW5kX2Rpc2Nvbm5lY3RlZF90cmFjaW5nX3ZhCiBzdGF0aWMgdm9p ZCBmcmVlX3VwbG9hZGVkX3RwcyAoc3RydWN0IHVwbG9hZGVkX3RwICoqdXRw cCk7CiBzdGF0aWMgdm9pZCBmcmVlX3VwbG9hZGVkX3RzdnMgKHN0cnVjdCB1 cGxvYWRlZF90c3YgKip1dHN2cCk7CiAKK2V4dGVybiB2b2lkIHByaW50Zl9j b21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSk7CitleHRlcm4gdm9p ZCBnZW5fcHJpbnRmX2V4cHJfY2FsbGJhY2sgKGNoYXIgKipleHBwLCBzdHJ1 Y3QgYnBfbG9jYXRpb24gKmxvYywKKwkJCQkgICAgICBzdHJ1Y3QgYWdlbnRf ZXhwciAqYWV4cHIpOwordHlwZWRlZiB2b2lkIChwcmludGZfY2FsbGJhY2sp IChjaGFyICoqZXhwcCwgc3RydWN0IGJwX2xvY2F0aW9uICpsb2MsCisJCQkJ c3RydWN0IGFnZW50X2V4cHIgKmFleHByKTsKK2V4dGVybiB2b2lkIHN0cmlu Z19wcmludGYgKGNoYXIgKmFyZywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwK KwkJCSAgIHByaW50Zl9jYWxsYmFjayBjYWxsYmFjaywgc3RydWN0IGJwX2xv Y2F0aW9uICpsb2MsCisJCQkgICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHIp OworCiAKIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX3RyYWNlcG9pbnQgKHZv aWQpOwogCkBAIC03MjUsNiArNzM0LDI4IEBAIHZhbGlkYXRlX2FjdGlvbmxp bmUgKGNoYXIgKipsaW5lLCBzdHJ1Y3QKIAllcnJvciAoXygid2hpbGUtc3Rl cHBpbmcgc3RlcCBjb3VudCBgJXMnIGlzIG1hbGZvcm1lZC4iKSwgKmxpbmUp OwogICAgIH0KIAorICBlbHNlIGlmIChjbWRfY2Z1bmNfZXEgKGMsIHByaW50 Zl9jb21tYW5kKSkKKyAgICB7CisgICAgICBjaGFyIGZidWZbMTAxXTsKKwor ICAgICAgZm9yIChsb2MgPSB0LT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0 KQorCXsKKwkgIGludCBuYXJnczsKKwkgIGFleHByID0gbmV3X2FnZW50X2V4 cHIgKGxvYy0+Z2RiYXJjaCwgbG9jLT5hZGRyZXNzKTsKKwkgIG9sZF9jaGFp biA9IG1ha2VfY2xlYW51cF9mcmVlX2FnZW50X2V4cHIgKGFleHByKTsKKwkg IHN0cmluZ19wcmludGYgKHAsIE5VTEwsIGdlbl9wcmludGZfZXhwcl9jYWxs YmFjaywKKwkJCSBsb2MsIGFleHByKTsKKwkgIGF4X3NpbXBsZSAoYWV4cHIs IGFvcF9lbmQpOworCSAgLyogVGhlIGFnZW50IGV4cHIgaW5jbHVkZSBleHBy IGZvciBhcmd1bWVudHMsIGZvcm1hdCBzdHJpbmcsIDEgYnl0ZQorCSAgICog Zm9yIGFvcF9wcmludGYsIDEgYnl0ZSBmb3IgdGhlIG51bWJlciBvZiBhcmd1 bWVudHMsIDEgYnl0ZSBmb3IKKwkgICAqIHNpemUgb2YgZm9ybWF0IHN0cmlu ZywgMSBieXRlIGZvciBibGFuayBhZnRlciBmb3JtYXQgc3RyaW5nCisJICAg KiBhbmQgMSBieXRlIGZvciBhb3BfZW5kLiAgKi8KKwkgIGlmIChhZXhwci0+ bGVuID4gTUFYX0FHRU5UX0VYUFJfTEVOKQorCSAgICBlcnJvciAoXygiRXhw cmVzc2lvbiBpcyB0b28gY29tcGxpY2F0ZWQuIikpOworCSAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CisJfQorICAgIH0KKwogICBlbHNlIGlmIChjbWRf Y2Z1bmNfZXEgKGMsIGVuZF9hY3Rpb25zX3BzZXVkb2NvbW1hbmQpKQogICAg IDsKIApAQCAtMTQzNiw2ICsxNDY3LDIyIEBAIGVuY29kZV9hY3Rpb25zXzEg KHN0cnVjdCBjb21tYW5kX2xpbmUgKmEKIAkgIGVuY29kZV9hY3Rpb25zXzEg KGFjdGlvbi0+Ym9keV9saXN0WzBdLCB0LCB0bG9jLCBmcmFtZV9yZWcsCiAJ CQkgICAgZnJhbWVfb2Zmc2V0LCBzdGVwcGluZ19saXN0LCBOVUxMKTsKIAl9 CisgICAgICBlbHNlIGlmIChjbWRfY2Z1bmNfZXEgKGNtZCwgcHJpbnRmX2Nv bW1hbmQpKQorCXsKKyAgICAgICAgICBjaGFyIGZidWZbMTAxXTsKKwkgIHN0 cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOworCisJICBhZXhwciA9 IG5ld19hZ2VudF9leHByICh0bG9jLT5nZGJhcmNoLCB0bG9jLT5hZGRyZXNz KTsKKwkgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9mcmVlX2FnZW50X2V4 cHIgKGFleHByKTsKKwkgIHN0cmluZ19wcmludGYgKGFjdGlvbl9leHAsIE5V TEwsIGdlbl9wcmludGZfZXhwcl9jYWxsYmFjaywKKwkJCSB0bG9jLCBhZXhw cik7CisJICBheF9zaW1wbGUgKGFleHByLCBhb3BfZW5kKTsKKworCSAgYXhf cmVxcyAoYWV4cHIpOworCSAgcmVwb3J0X2FnZW50X3JlcXNfZXJyb3JzIChh ZXhwcik7CisJICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOworCSAg YWRkX2FleHByIChjb2xsZWN0LCBhZXhwcik7CisJfQogICAgICAgZWxzZQog CWVycm9yIChfKCJJbnZhbGlkIHRyYWNlcG9pbnQgY29tbWFuZCAnJXMnIiks IGFjdGlvbi0+bGluZSk7CiAgICAgfQkJCQkvKiBmb3IgKi8K --000e0cd5d01a35608f049b76f7b0--