From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14661 invoked by alias); 21 Aug 2012 20:59:08 -0000 Received: (qmail 14651 invoked by uid 22791); 21 Aug 2012 20:59:07 -0000 X-SWARE-Spam-Status: No, hits=-5.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,KHOP_RCVD_TRUST,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-gh0-f169.google.com (HELO mail-gh0-f169.google.com) (209.85.160.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 21 Aug 2012 20:58:53 +0000 Received: by ghrr18 with SMTP id r18so281699ghr.0 for ; Tue, 21 Aug 2012 13:58:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type :x-system-of-record:x-gm-message-state; bh=CcfdKiZ9SqcQdD4G8Abx/XbIgSxdUheZDaKbocpj3Us=; b=Hdn2CH2Jyt8Vvnv0xKdiEdnP733DeOZOOZt1DUVRuoLmx4FK/akYbam4JcF1LjFmz2 JiHl30ZIWAbbALVH5fF/XOhWPJjuQvs9TeaE9s8pacTVgHDJQziEVmZ4QhmzO1/kfIsQ HdaOS1ZPku+2+LO0K0oZmhY0ZeD+wJ/ZSP/w3SM+7roJdWNvuZpJScdxtVA8lkJzdrw9 eBKSOF6zARE8bbcFfTsTGXjnExrA+X8gkC/aLdlQ2mPYKhn2MiTBXjZ4iWZCKmYRR4Uc OLokPktoz0BQwIQmkB3JO2ocrvdlv6CXoO+KHJBRMbBE2xoeRHEY8LRu56NV51djEuBt CodQ== Received: by 10.50.106.166 with SMTP id gv6mr14970242igb.46.1345582732233; Tue, 21 Aug 2012 13:58:52 -0700 (PDT) MIME-Version: 1.0 Received: by 10.50.106.166 with SMTP id gv6mr14970216igb.46.1345582731604; Tue, 21 Aug 2012 13:58:51 -0700 (PDT) Received: by 10.50.160.198 with HTTP; Tue, 21 Aug 2012 13:58:51 -0700 (PDT) Date: Tue, 21 Aug 2012 20:59:00 -0000 Message-ID: Subject: [RFC] Thread Name Printers From: Aaron Gamble To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=e89a8f23535bbbb46204c7cce420 X-System-Of-Record: true X-Gm-Message-State: ALoCoQlOd0P7pDy3GHa7PLMjrq+wWvNlMfK1JJZQWNymjb8qM7+/TKUNH3Gad0NtxTHTmwP68bpNqF2L+s/y+2LKfkbtcUk0WpOyCwZS/rd/FmWzZTJ9G2BNTtGmBciy+hoGCf1JhkM2kqME4UE7cRrN1ZwwmHC1KdLxHpQGOZURcYhC1MvKLVOE7d368mbBWUjZUP9yfYwTFbf1pIq7MLRHMUeVYbJJ4w== 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: 2012-08/txt/msg00599.txt.bz2 --e89a8f23535bbbb46204c7cce420 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 2199 Hi all, This is a patch that adds thread name printers to GDB. Like pretty-printers, they are Python classes that augment the output of thread names. gdb/ChangeLog: * data-directory/Makefile.in: Add gdb/thread_printing.py. * doc/gdb.texinfo: Add section about thread name printers in Python section. Add reference to thread name printers in 'info threads' section. * python/lib/gdb/__init__.py: Import ThreadNamePrinter. * python/lib/gdb/thread_printing.py: new file. (class ThreadNamePrinter): base class, contains helper functions and list of registered printers. (class ExamplePrinter): example printer class for reference. (class EnableThreadNamePrinter, DisableThreadNamePrinter, InfoThreadNamePrinter): gdb.commands for managing and getting information about thread name printers. (register_thread_name_printer_commands): Registers thread name printer commands. * python/py-inferior.c (add_thread_object): Save pointer to thread_object in thread_info. * python/py-infthread.c (prepare_thread_name_printers): Prepares all the registered thread name printers and returns a list of the printers. Called once by thread.c:print_thread_info. (thread_printer_enabled): Returns TRUE if printer enabled. (apply_thread_name_pretty_printers): Iterates through the list of printers calling print_thread until one returns a string. Called for each thread by thread.c:print_thread_info * python/python-internal.h: Extern gdbpy_print_thread_cst PyObject string object. * pyhon/python.c: Declare and assign gdbpy_print_thread_cst. * testsuite/gdb.python/Makefile.in: add py-threadprettyprint. * testsuite/gdb.python/py-threadprettyprint.c: Basic threaded program for testing thread name printing. * testsuite/gdb.python/py-threadprettyprint.exp: Tests for thread name printers. * thread.c (print_thread_info): Calls prepare_thread_name_printers to initialize printers and get list of printers. Calls apply_thread_name_pretty_printers for each thread if no name for thread is already stored. (_initialize_thread): Add aliases for 'info threads' to disambiguate between 'info thread-name-printer' --e89a8f23535bbbb46204c7cce420 Content-Type: application/octet-stream; name="thread_name_printer.patch" Content-Disposition: attachment; filename="thread_name_printer.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h65h70sn0 Content-length: 38117 RnJvbSBlYTk0MzUxZDFmZmFlYjJmMGU1MTNmMTgzYWZhMGY3NGU3YWZkZTU5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBYXJvbiBHYW1ibGUg PGFnYW1ibGVAZ29vZ2xlLmNvbT4KRGF0ZTogVHVlLCAyMSBBdWcgMjAxMiAx MTo1MDozOCAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIHRocmVhZCBuYW1lIHBy aW50ZXJzCgotLS0KIGdkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiAg ICAgICAgICAgICAgICAgICAgfCAgICAxICsKIGdkYi9kb2MvZ2RiLnRleGlu Zm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDM4ICsrKyst CiBnZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkgICAgICAgICAgICAg ICAgICAgIHwgICAgNiArCiBnZGIvcHl0aG9uL2xpYi9nZGIvdGhyZWFkX3By aW50aW5nLnB5ICAgICAgICAgICAgIHwgIDIwMCArKysrKysrKysrKysrKysr KysrKysKIGdkYi9weXRob24vcHktaW5mZXJpb3IuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAyICsKIGdkYi9weXRob24vcHktaW5mdGhyZWFk LmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTE2ICsrKysrKysrKysr KwogZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaCAgICAgICAgICAgICAg ICAgICAgICB8ICAgIDEgKwogZ2RiL3B5dGhvbi9weXRob24uYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwogZ2RiL3B5dGhvbi9w eXRob24uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYg KwogZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluICAgICAg ICAgICAgICB8ICAgIDIgKy0KIGdkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS10aHJlYWRwcmV0dHlwcmludC5jICAgfCAgMTIyICsrKysrKysrKysrKysK IGdkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10aHJlYWRwcmV0dHlwcmlu dC5leHAgfCAgIDg3ICsrKysrKysrKwogZ2RiL3RocmVhZC5jICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjcgKysrCiAxMyBm aWxlcyBjaGFuZ2VkLCA2MDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvcHl0aG9uL2xpYi9nZGIvdGhy ZWFkX3ByaW50aW5nLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXRocmVhZHByZXR0eXByaW50LmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdGhy ZWFkcHJldHR5cHJpbnQuZXhwCgpkaWZmIC0tZ2l0IGEvZ2RiL2RhdGEtZGly ZWN0b3J5L01ha2VmaWxlLmluIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2Vm aWxlLmluCmluZGV4IDQxOTQ3YzYuLjMwZjVlODggMTAwNjQ0Ci0tLSBhL2dk Yi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbgorKysgYi9nZGIvZGF0YS1k aXJlY3RvcnkvTWFrZWZpbGUuaW4KQEAgLTU1LDYgKzU1LDcgQEAgUFlUSE9O X0ZJTEVTID0gXAogCWdkYi9fX2luaXRfXy5weSBcCiAJZ2RiL3R5cGVzLnB5 IFwKIAlnZGIvcHJpbnRpbmcucHkgXAorCWdkYi90aHJlYWRfcHJpbnRpbmcu cHkgXAogCWdkYi9wcm9tcHQucHkgXAogCWdkYi9jb21tYW5kL19faW5pdF9f LnB5IFwKIAlnZGIvY29tbWFuZC9wcmV0dHlfcHJpbnRlcnMucHkgXApkaWZm IC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRl eGluZm8KaW5kZXggMDhiYTkyZC4uZTk4YTNiNSAxMDA2NDQKLS0tIGEvZ2Ri L2RvYy9nZGIudGV4aW5mbworKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCkBA IC0yNzY2LDggKzI3NjYsOCBAQCB0aGUgdGFyZ2V0IHN5c3RlbSdzIHRocmVh ZCBpZGVudGlmaWVyIChAdmFye3N5c3RhZ30pCiAKIEBpdGVtCiB0aGUgdGhy ZWFkJ3MgbmFtZSwgaWYgb25lIGlzIGtub3duLiAgQSB0aHJlYWQgY2FuIGVp dGhlciBiZSBuYW1lZCBieQotdGhlIHVzZXIgKHNlZSBAY29kZXt0aHJlYWQg bmFtZX0sIGJlbG93KSwgb3IsIGluIHNvbWUgY2FzZXMsIGJ5IHRoZQotcHJv Z3JhbSBpdHNlbGYuCit0aGUgdXNlciAoc2VlIEBjb2Rle3RocmVhZCBuYW1l fSwgYmVsb3cpLCBieSBUaHJlYWQgTmFtZSBQcmludGVycworKEBweHJlZntU aHJlYWQgTmFtZSBQcmludGVyc30pLCBvciwgaW4gc29tZSBjYXNlcywgYnkg dGhlIHByb2dyYW0gaXRzZWxmLgogCiBAaXRlbQogdGhlIGN1cnJlbnQgc3Rh Y2sgZnJhbWUgc3VtbWFyeSBmb3IgdGhhdCB0aHJlYWQKQEAgLTIyNTg1LDYg KzIyNTg1LDcgQEAgc2l0dWF0aW9uLCBhIFB5dGhvbiBAY29kZXtLZXlib2Fy ZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KICogSW5mZXJpb3Jz IEluIFB5dGhvbjo6ICAgICAgICAgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9m IGluZmVyaW9ycyAocHJvY2Vzc2VzKQogKiBFdmVudHMgSW4gUHl0aG9uOjog ICAgICAgICAgICBMaXN0ZW5pbmcgZm9yIGV2ZW50cyBmcm9tIEB2YWx1ZXtH REJOfS4KICogVGhyZWFkcyBJbiBQeXRob246OiAgICAgICAgICAgQWNjZXNz aW5nIGluZmVyaW9yIHRocmVhZHMgZnJvbSBQeXRob24uCisqIFRocmVhZCBO YW1lIFByaW50ZXJzOjogICAgICAgIEN1c3RvbSB0aHJlYWQgbmFtZSBwcmlu dGluZyBmcm9tIFB5dGhvbi4KICogQ29tbWFuZHMgSW4gUHl0aG9uOjogICAg ICAgICAgSW1wbGVtZW50aW5nIG5ldyBjb21tYW5kcyBpbiBQeXRob24uCiAq IFBhcmFtZXRlcnMgSW4gUHl0aG9uOjogICAgICAgIEFkZGluZyBuZXcgQHZh bHVle0dEQk59IHBhcmFtZXRlcnMuCiAqIEZ1bmN0aW9ucyBJbiBQeXRob246 OiAgICAgICAgIFdyaXRpbmcgbmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4K QEAgLTI0MTc1LDYgKzI0MTc2LDM5IEBAIFJldHVybiBhIEJvb2xlYW4gaW5k aWNhdGluZyB3aGV0aGVyIHRoZSB0aHJlYWQgaXMgZXhpdGVkLgogQGVuZCBk ZWZ1bgogQGVuZCB0YWJsZQogCitAbm9kZSBUaHJlYWQgTmFtZSBQcmludGVy cworQHN1YnN1YnNlY3Rpb24gVGhyZWFkIE5hbWUgUHJpbnRlcnMKK0BjaW5k ZXggdGhyZWFkIG5hbWUgcHJpbnRlcnMKKworVGhyZWFkIG5hbWUgcHJpbnRl cnMgYXJlIHVzZWQgdG8gcHJpbnQgY3VzdG9tIHRocmVhZCBuYW1lcy4gVGhl eSBhcmUKK2ltcGxlbWVudGVkIGFzIFB5dGhvbiBjbGFzc2VzIHRoYXQgZGVm aW5lIHR3byBtZXRob2RzOiBAY29kZXtwcmVwYXJlfSBhbmQgQGNvZGV7cHJp bnRfdGhyZWFkfS4KKworVGhyZWFkIG5hbWUgcHJpbnRlcnMgYXJlIHJlZ2lz dGVyZWQgYW5kIG1heSBiZSBkaXNhYmxlZCBhbmQgZW5hYmxlZCBieSB0aGUK K3Byb3ZpZGVkIGFsaWFzIHdoZW4gdGhlIHByaW50ZXIgd2FzIHJlZ2lzdGVy ZWQuCisKK09uY2UgYSBwcmludGVyIGhhcyBiZWVuIGRlZmluZWQsIGl0IG1h eSBiZSBhZGRlZCB0byB0aGUgZ2xvYmFsIGxpc3QKK29mIHByaW50ZXJzIGlu IGdkYi50aHJlYWRfcHJpbnRpbmcuVGhyZWFkTmFtZVByaW50ZXIgYnkgdXNp bmcKK2dkYi50aHJlYWRfcHJpbnRpbmcuVGhyZWFkTmFtZVByaW50ZXIuYWRk X3ByaW50ZXIoQHZhcnthbGlhc30sIEB2YXJ7cHJpbnRlcn0pCisKK0BkZWZ1 biB0aHJlYWRfbmFtZV9wcmludGVyLnByZXBhcmUgKEB2YXJ7c2VsZn0pCitA dmFsdWV7R0RCTn0gd2lsbCBjYWxsIHRoaXMgbWV0aG9kIGZvciBlYWNoIHBy aW50ZXIgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKKydpbmZvIHRocmVhZHMn IGNvbW1hbmQuCisKK0luIHRoaXMgbWV0aG9kIHByaW50ZXJzIG1heSBnYXRo ZXIgYW55IGluZm9ybWF0aW9uIGFuZCBzdG9yZSBpdCBpbnRlcm5hbGx5Citm b3IgdXNlIHdoZW4gcHJpbnRpbmcgdGhyZWFkIG5hbWVzLiBBY2Nlc3MgdG8g Z2RiIGludGVybmFsIGRhdGEgaXMgcHJvdmlkZWQKK2J5IHRoZSBnZGIgbW9k dWxlIGZ1bmN0aW9ucy4KK0BlbmQgZGVmdW4KKworQGRlZnVuIHRocmVhZF9u YW1lX3ByaW50ZXIucHJpbnRfdGhyZWFkIChAdmFye3NlbGZ9LCBAdmFye25h bWV9LCBAdmFye3RocmVhZF9pbmZvfSkKK0ZvciBlYWNoIHRocmVhZCwgQHZh bHVle0dEQk59IHdpbGwgaXRlcmF0ZSB0aHJvdWdoIHRoZSByZWdpc3RlcmVk IHByaW50ZXJzIGFuZCBjYWxsIHRoaXMKK21ldGhvZCBpbiBlYWNoIGVuYWJs ZWQgcHJpbnRlciB1bnRpbCBhIHN0cmluZyBpcyByZXR1cm5lZC4gSXQgaXMg dXAgdG8gZWFjaCB0aHJlYWQgcHJpbnRlcgordG8gZGV0ZXJtaW5lIHdoZXRo ZXIgaXQgY2FuIG9yIHNob3VsZCBwcm92aWRlIGEgdGhyZWFkIG5hbWUuCisK K0B2YXJ7bmFtZX0gaXMgdGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhlIHRocmVh ZC4KKworQHZhcnt0aHJlYWRfaW5mb30gaXMgdGhlIEluZmVyaW9yVGhyZWFk IGFzIGRlZmluZWQgaW4gQHB4cmVme1RocmVhZHMgSW4gUHl0aG9ufS4KK0Bl bmQgZGVmdW4KKwogQG5vZGUgQ29tbWFuZHMgSW4gUHl0aG9uCiBAc3Vic3Vi c2VjdGlvbiBDb21tYW5kcyBJbiBQeXRob24KIApkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9saWIvZ2RiL19faW5pdF9fLnB5IGIvZ2RiL3B5dGhvbi9saWIv Z2RiL19faW5pdF9fLnB5CmluZGV4IGE4MmU0OTUuLjBjYWZkZWIgMTAwNjQ0 Ci0tLSBhL2dkYi9weXRob24vbGliL2dkYi9fX2luaXRfXy5weQorKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKQEAgLTM5LDMgKzM5LDkg QEAgZm9yIG1vZHVsZSwgbG9jYXRpb24gaW4gbW9kdWxlX2RpY3QuaXRlcml0 ZW1zKCk6CiAgICAgICAgICBleGVjKCdpbXBvcnQgJyArIHB5X2ZpbGUpCiAg ICAgICAgZXhjZXB0OgogICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwg dHJhY2ViYWNrLmZvcm1hdF9leGMoKQorCit0cnk6CisgICAgZnJvbSBnZGIu dGhyZWFkX3ByaW50aW5nIGltcG9ydCBUaHJlYWROYW1lUHJpbnRlcgorICAg IGdkYi5wcmVwYXJlX3RocmVhZF9uYW1lX3ByaW50ZXJzID0gIFRocmVhZE5h bWVQcmludGVyLnByZXBhcmVfdGhyZWFkX25hbWVfcHJpbnRlcnMKK2V4Y2Vw dDoKKyAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiVW5hYmxlIHRvIHNldHVw IHRocmVhZCBuYW1lIHByZXR0eSBwcmludGluZyIKZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vbGliL2dkYi90aHJlYWRfcHJpbnRpbmcucHkgYi9nZGIvcHl0 aG9uL2xpYi9nZGIvdGhyZWFkX3ByaW50aW5nLnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjM2Q3MmMKLS0tIC9kZXYvbnVsbAor KysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvdGhyZWFkX3ByaW50aW5nLnB5CkBA IC0wLDAgKzEsMjAwIEBACisjIFByZXR0eS1wcmludGVyIHV0aWxpdGllcy4K KyMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMK KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyIiIlV0aWxpdGll cyBhbmQgY2xhc3MgZGVmaW5pdGlvbnMgZm9yIHRocmVhZCBuYW1lIHByaW50 ZXJzLiIiIgorCitpbXBvcnQgZ2RiCisKK2NsYXNzIFRocmVhZE5hbWVQcmlu dGVyKG9iamVjdCk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgdGhyZWFkIG5h bWUgcHJpbnRlcnMuCisKKyAgICBTZWUgdGhlIEV4YW1wbGVQcmludGVyKFRo cmVhZE5hbWVQcmludGVyKSBiZWxvdyBmb3IgcmVmZXJlbmNlLgorICAgIFRo ZSBleGFtcGxlIHByaW50ZXIgd291bGQgYmUgdXNlZCBhcyBzdWNoOgorICAg ICAgVGhyZWFkTmFtZVByaW50ZXIuYWRkX3ByaW50ZXIoImV4YW1wbGUgcHJp bnRlciIsIEV4YW1wbGVQcmludGVyKQorCisgICAgQSBwcmludGVyIGlzIGEg Y2xhc3MgdGhhdCBpcyByZWdpc3RlcmVkIHdpdGggdGhlIGFkZF9wcmludGVy IGNvbW1hbmQuCisKKyAgICBXaGVuIGEgcHJpbnRlciBjbGFzcyBpcyBhZGRl ZCwgaXQgaXMgZmlyc3QgaW5zdGFudGlhdGVkIGFuZCB0aGVuIGFkZGVkCisg ICAgdG8gdGhlIGdsb2JhbCBsaXN0IG9mIHByaW50ZXJzLgorICAgICIiIgor CisgICAgIyBUaGlzIGlzIHRoZSBnbG9iYWwgbGlzdCBvZiB0aHJlYWQgcHJp bnRlcnMKKyAgICBwcmludGVycyA9IFtdCisKKyAgICBAY2xhc3NtZXRob2QK KyAgICBkZWYgcHJlcGFyZV90aHJlYWRfbmFtZV9wcmludGVycyhjbHMpOgor ICAgICAgICAiIiJSdW4gZm9yIGV2ZXJ5ICdpbmZvIHRocmVhZHMnIGNvbW1h bmQuCisgICAgICAgIEluaXRpYWxpemUgYWxsIHRoZSBwcmludGVycyBhbmQg cmV0dXJuIHRoZSBsaXN0LgorCisgICAgICAgIFRoaXMgaXMgY2FsbGVkIGJ5 IEdEQiBpbiB0aGUgJ2luZm8gdGhyZWFkJyBjb2RlLgorICAgICAgICAiIiIK KyAgICAgICAgZm9yIHAgaW4gY2xzLnByaW50ZXJzOgorICAgICAgICAgICAg cC5wcmVwYXJlKCkKKyAgICAgICAgcmV0dXJuIGNscy5wcmludGVycworCisg ICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGFkZF9wcmludGVyKGNscywgYWxp YXMsIHByaW50ZXIsIHJlcGxhY2UgPSBGYWxzZSk6CisgICAgICAgIGlmIG5v dCBoYXNhdHRyKHByaW50ZXIsICJwcmVwYXJlIik6CisgICAgICAgICAgICBy YWlzZSBUeXBlRXJyb3IoInByaW50ZXIgbWlzc2luZyBhdHRyaWJ1dGU6IHBy ZXBhcmUiKQorICAgICAgICBpZiBub3QgaGFzYXR0cihwcmludGVyLCAicHJp bnRfdGhyZWFkIik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInBy aW50ZXIgbWlzc2luZyBhdHRyaWJ1dGU6IHByaW50X3RocmVhZCIpCisKKyAg ICAgICAgaWYgbm90IGhhc2F0dHIocHJpbnRlciwgImVuYWJsZWQiKToKKyAg ICAgICAgICAgIHByaW50ZXIuZW5hYmxlZCA9IFRydWUKKworICAgICAgICBw cmludGVyX2luc3RhbmNlID0gcHJpbnRlcigpCisgICAgICAgIHByaW50ZXJf aW5zdGFuY2UuYWxpYXMgPSBhbGlhcworCisgICAgICAgIGZvciBpLCBwIGlu IGVudW1lcmF0ZShjbHMucHJpbnRlcnMpOgorICAgICAgICAgICAgaWYgaGFz YXR0cihwLCAiYWxpYXMiKSBhbmQgcC5hbGlhcyA9PSBhbGlhczoKKyAgICAg ICAgICAgICAgICBpZiByZXBsYWNlOgorICAgICAgICAgICAgICAgICAgICBk ZWwgY2xzLnByaW50ZXJzW2ldCisgICAgICAgICAgICAgICAgICAgIGJyZWFr ICMgYXNzdW1wdGlvbjogdGhlcmUgd2lsbCBvbmx5IG9uZSBpbiB0aGUgbGlz dC4KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAg ICAiVGhyZWFkIHByaW50ZXIgd2l0aCBhbGlhcyAlcyBhbHJlYWR5IHJlZ2lz dGVyZWQiICUgYWxpYXMpCisgICAgICAgIGNscy5wcmludGVycy5hcHBlbmQo cHJpbnRlcl9pbnN0YW5jZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl ZiByZW1vdmVfcHJpbnRlcihjbHMsIGFsaWFzKToKKyAgICAgICAgZm9yIGks IHAgaW4gZW51bWVyYXRlKGNscy5wcmludGVycyk6CisgICAgICAgICAgICBp ZiBwLmFsaWFzID09IGFsaWFzOgorICAgICAgICAgICAgICAgIGRlbCBjbHMu cHJpbnRlcnNbaV0KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAg cHJpbnQgIlByaW50ZXIgJyVzJyBub3QgZm91bmQiICUgYWxpYXMKKworICAg IEBjbGFzc21ldGhvZAorICAgIGRlZiBkaXNhYmxlX3ByaW50ZXIoY2xzLCBh bGlhcyk6CisgICAgICAgIGZvciBwIGluIGNscy5wcmludGVyczoKKyAgICAg ICAgICAgIGlmIHAuYWxpYXMgPT0gYWxpYXM6CisgICAgICAgICAgICAgIGNs cy5kaXNhYmxlX3ByaW50ZXJfaW5zdGFuY2UocCkKKyAgICAgICAgICAgICAg cmV0dXJuCisgICAgICAgIHByaW50ICJQcmludGVyICclcycgbm90IGZvdW5k IiAlIGFsaWFzCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZW5hYmxl X3ByaW50ZXIoY2xzLCBhbGlhcyk6CisgICAgICAgIGZvciBwIGluIGNscy5w cmludGVyczoKKyAgICAgICAgICAgIGlmIHAuYWxpYXMgPT0gYWxpYXM6Cisg ICAgICAgICAgICAgICAgY2xzLmVuYWJsZV9wcmludGVyX2luc3RhbmNlKHAp CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHByaW50ICJQcmlu dGVyICclcycgbm90IGZvdW5kIiAlIGFsaWFzCisKKyAgICBAc3RhdGljbWV0 aG9kCisgICAgZGVmIGRpc2FibGVfcHJpbnRlcl9pbnN0YW5jZShwKToKKyAg ICAgICAgcC5lbmFibGVkID0gRmFsc2UKKworICAgIEBzdGF0aWNtZXRob2QK KyAgICBkZWYgZW5hYmxlX3ByaW50ZXJfaW5zdGFuY2UocCk6CisgICAgICAg IHAuZW5hYmxlZCA9IFRydWUKKworY2xhc3MgRXhhbXBsZVByaW50ZXIoVGhy ZWFkTmFtZVByaW50ZXIpOgorICAgICIiIlJlZmVyZW5jZSBjbGFzcyBmb3Ig dGhyZWFkIG5hbWUgcHJpbnRlcnMuCisKKyAgICBUaHJlYWQgbmFtZSBwcmlu dGVycyBtdXN0IGltcGxlbWVudCB0aGUgdHdvIG1ldGhvZHMgYmVsb3cuCisg ICAgSW4gb3JkZXIgZm9yIGEgcHJpbnRlciB0byBiZSB1c2VkIGl0IG5lZWRz IHRvIGJlIGluc3RhbnRpYXRlZCBhbmQKKyAgICBhZGRlZCB0byB0aGUgZ2Ri LnRocmVhZF9wcmludGVycyBsaXN0LgorICAgIFVzZSB0aGUgYWRkX3ByaW50 ZXIoYWxpYXMsIHByaW50ZXIpIGZ1bmN0aW9uIGZvciB0aGlzIHRhc2suCisg ICAgVGhpcyBmdW5jdGlvbiB3aWxsIGluc3RhbnRpYXRlIHRoZSBwcmludGVy LCBzZXQgdGhlIGFsaWFzIG9mIHRoZSBpbnN0YW5jZQorICAgIGFuZCBhZGQg dGhlIGluc3RhbmNlIHRvIHRoZSBwcmludGVyIGxpc3QuCisgICAgIiIiCisK KyAgICBkZWYgcHJlcGFyZShzZWxmKToKKyAgICAgICAgIiIiQ2FsbGVkIG9u Y2UgZm9yIGVhY2ggJ2luZm8gdGhyZWFkcycgY29tbWFuZCBiZWZvcmUgdGhl IHRocmVhZHMKKyAgICAgICAgICAgYXJlIHByaW50ZWQuIFByaW50ZXJzIG1h eSByZS1kZWZpbmUgdGhpcyBtZXRob2QgdG8gaW5pdGlhbGl6ZQorICAgICAg ICAgICB0aGVpciBpbnRlcm5hbCBkYXRhLgorICAgICAgICAiIiIKKyAgICAg ICAgIyBVc3VhbGx5IHdlIHdpbGwgaGF2ZSBzb21lIG1hcCBvZiB0aHJlYWRz IHdlIG93bi4KKyAgICAgICAgIyBJZiBuZWNlc3NhcnksIFdlIHNob3VsZCBk aXNjb3ZlciB0aGVtIGhlcmUuCisgICAgICAgICMgRm9yIHRoaXMgZHVtbXkg ZXhhbXBsZSwgaXQgd2lsbCBiZSBlbXB0eS4KKyAgICAgICAgc2VsZi5teV90 aHJlYWRzID0ge30KKworICAgIGRlZiBwcmludF90aHJlYWQoc2VsZiwgbmFt ZSwgdGhyZWFkX2luZm8pOgorICAgICAgICAiIiJQcmludHMgYSB0aHJlYWQg bmFtZS4KKworICAgICAgICBQcmludGVycyBtdXN0IGRlZmluZSB0aGlzIGZ1 bmN0aW9uLCB3aGljaCB0YWtlcyBhIHRocmVhZCBuYW1lIGFuZCBpbmZvLAor ICAgICAgICBhbmQsIGlmIHRoZSB0aHJlYWQgbWF0Y2hlcyB0aGUgcHJpbnRl ciAodXN1YWxseSBhIHB0aWQgY2hlY2spIHJldHVybnMKKyAgICAgICAgYSBu ZXcgc3RyaW5nIGZvciB0aGUgdGhyZWFkcyBuYW1lLgorCisgICAgICAgIFBh cmFtZXRlcnM6CisgICAgICAgICAgICBuYW1lOiBFeGlzdGluZyBuYW1lIGZv ciB0aGUgdGhyZWFkLgorICAgICAgICAgICAgdGhyZWFkX2luZm86IEEgZ2Ri LmluZmVyaW9yX3RocmVhZCBvYmplY3QgZm9yIHRoZSB0aHJlYWQuCisKKyAg ICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIC1BIHN0cmluZywgaWYgdGhl IHRocmVhZCBtYXRjaGVzIHRoZSBwcmludGVyLgorICAgICAgICAgICAgLU5v bmUsIGlmIHRoZSB0aHJlYWQgZG9lcyBub3QgbWF0Y2guCisgICAgICAgICIi IgorICAgICAgICAjIFdlIG9ubHkgcmV0dXJuIGEgc3RyaW5nIG5hbWUgaWYg d2Ugb3duIHRoZSB0aHJlYWQuCisgICAgICAgIGlmIHRocmVhZF9pbmZvLnB0 aWRbMF0gaW4gc2VsZi5teV90aHJlYWQ6CisgICAgICAgICAgcmV0dXJuICJz b21lIGludGVyZXN0aW5nIG5hbWUiCisgICAgICAgIGVsc2U6CisgICAgICAg ICAgcmV0dXJuIE5vbmUKKworY2xhc3MgRW5hYmxlVGhyZWFkTmFtZVByaW50 ZXIgKGdkYi5Db21tYW5kKToKKyAgICAiIiJHREIgY29tbWFuZCB0byBlbmFi bGUgdGhlIHNwZWNpZmllZCB0aHJlYWQgcHJpbnRlci4KKworICAgIFVzYWdl OiBlbmFibGUgdGhyZWFkLW5hbWUtcHJpbnRlciBbYWxpYXNdCisKKyAgICBB TElBUyBpcyB0aGUgbmFtZSBnaXZlbiB0byB0aGUgcHJpbnRlciB3aGVuIGl0 IHdhcyByZWdpc3RlcmVkLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9f KHNlbGYpOgorICAgICAgICBzdXBlcihFbmFibGVUaHJlYWROYW1lUHJpbnRl ciwgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICAgICAgImVuYWJsZSB0 aHJlYWQtbmFtZS1wcmludGVyIiwKKyAgICAgICAgICAgICAgICBnZGIuQ09N TUFORF9EQVRBKQorCisgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21f dHR5KToKKyAgICAgICAgVGhyZWFkTmFtZVByaW50ZXIuZW5hYmxlX3ByaW50 ZXIoYXJnKQorCitjbGFzcyBEaXNhYmxlVGhyZWFkTmFtZVByaW50ZXIgKGdk Yi5Db21tYW5kKToKKyAgICAiIiJHREIgY29tbWFuZCB0byBkaXNhYmxlIHRo ZSBzcGVjaWZpZWQgdGhyZWFkIHByaW50ZXIuCisKKyAgICBVc2FnZTogZGlz YWJsZSB0aHJlYWQtbmFtZS1wcmludGVyIFthbGlhc10KKworICAgIEFMSUFT IGlzIHRoZSBuYW1lIGdpdmVuIHRvIHRoZSBwcmludGVyIHdoZW4gaXQgd2Fz IHJlZ2lzdGVyZWQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2Vs Zik6CisgICAgICAgIHN1cGVyKERpc2FibGVUaHJlYWROYW1lUHJpbnRlciwg c2VsZikuX19pbml0X18oCisgICAgICAgICAgICAgICAgImRpc2FibGUgdGhy ZWFkLW5hbWUtcHJpbnRlciIsCisgICAgICAgICAgICAgICAgZ2RiLkNPTU1B TkRfREFUQSkKKworICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJnLCBmcm9tX3R0 eSk6CisgICAgICAgIFRocmVhZE5hbWVQcmludGVyLmRpc2FibGVfcHJpbnRl cihhcmcpCisKK2NsYXNzIEluZm9UaHJlYWROYW1lUHJpbnRlciAoZ2RiLkNv bW1hbmQpOgorICAgICIiIkdEQiBjb21tYW5kIHRvIGxpc3QgYWxsIHRoZSBy ZWdpc3RlcmVkIHRocmVhZCBwcmludGVycy4KKworICAgIFVzYWdlOiBpbmZv IHRocmVhZC1uYW1lLXByaW50ZXIKKyAgICAiIiIKKworICAgIGRlZiBfX2lu aXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoSW5mb1RocmVhZE5hbWVQcmlu dGVyLCBzZWxmKS5fX2luaXRfXygKKyAgICAgICAgICAgICAgICAiaW5mbyB0 aHJlYWQtbmFtZS1wcmludGVyIiwKKyAgICAgICAgICAgICAgICBnZGIuQ09N TUFORF9EQVRBKQorCisgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZyb21f dHR5KToKKyAgICAgICAgcHJpbnQgIlRocmVhZCBuYW1lIHByZXR0eS1wcmlu dGVyczoiCisgICAgICAgIGZvciBwIGluIFRocmVhZE5hbWVQcmludGVyLnBy aW50ZXJzOgorICAgICAgICAgICAgcHJpbnQgIlslc10gJXMiICUgKCJ4IiBp ZiBwLmVuYWJsZWQgZWxzZSAiICIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcC5hbGlhcykKKworCitkZWYgcmVnaXN0ZXJfdGhyZWFkX25h bWVfcHJpbnRlcl9jb21tYW5kcygpOgorICAgIEVuYWJsZVRocmVhZE5hbWVQ cmludGVyKCkKKyAgICBEaXNhYmxlVGhyZWFkTmFtZVByaW50ZXIoKQorICAg IEluZm9UaHJlYWROYW1lUHJpbnRlcigpCisKK3JlZ2lzdGVyX3RocmVhZF9u YW1lX3ByaW50ZXJfY29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhv bi9weS1pbmZlcmlvci5jIGIvZ2RiL3B5dGhvbi9weS1pbmZlcmlvci5jCmlu ZGV4IDkwN2I3M2UuLmYwODdkM2MgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24v cHktaW5mZXJpb3IuYworKysgYi9nZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMK QEAgLTIzOSw2ICsyMzksOCBAQCBhZGRfdGhyZWFkX29iamVjdCAoc3RydWN0 IHRocmVhZF9pbmZvICp0cCkKICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg dHAtPnRocmVhZF9vYmplY3QgPSB0aHJlYWRfb2JqOworCiAgIGluZl9vYmog PSAoaW5mZXJpb3Jfb2JqZWN0ICopIHRocmVhZF9vYmotPmluZl9vYmo7CiAK ICAgZW50cnkgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCB0aHJlYWRsaXN0 X2VudHJ5KSk7CmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWluZnRocmVh ZC5jIGIvZ2RiL3B5dGhvbi9weS1pbmZ0aHJlYWQuYwppbmRleCA4ODIxZjIw Li4yYjk3MmM2IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5LWluZnRocmVh ZC5jCisrKyBiL2dkYi9weXRob24vcHktaW5mdGhyZWFkLmMKQEAgLTIxLDcg KzIxLDEwIEBACiAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogI2luY2x1ZGUg ImdkYnRocmVhZC5oIgogI2luY2x1ZGUgImluZmVyaW9yLmgiCisjaW5jbHVk ZSAicHl0aG9uL3B5dGhvbi5oIgogI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5h bC5oIgorI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyNpbmNsdWRlICJsYW5n dWFnZS5oIgogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHRocmVhZF9vYmplY3Rf dHlwZTsKIApAQCAtMzQwLDMgKzM0MywxMTYgQEAgc3RhdGljIFB5VHlwZU9i amVjdCB0aHJlYWRfb2JqZWN0X3R5cGUgPQogICAwLAkJCQkgIC8qIHRwX2lu aXQgKi8KICAgMAkJCQkgIC8qIHRwX2FsbG9jICovCiB9OworCisvKiBJbml0 aWFsaXplcyB0aGUgbGlzdCBvZiB0aHJlYWQgbmFtZSBwcmludGVycy4KKyAg IFJldHVybnMgYSBsaXN0IG9mIHByaW50ZXJzIG9yIE5VTEwuCisgICBGSVhN RTogUmV0dXJucyBhIFB5T2JqZWN0IHRvIG5vbi1weXRob24gY29kZQorICAg UGVyaGFwcyBkbyB0aGlzIGFub3RoZXIgd2F5LiAgKi8KKworUHlPYmplY3Qg KgorcHJlcGFyZV90aHJlYWRfbmFtZV9wcmludGVycyAodm9pZCkKK3sKKyAg UHlPYmplY3QgKnByaW50ZXJzID0gTlVMTDsKKyAgc3RydWN0IGNsZWFudXAg KmNsZWFudXBzOworCisgIGNsZWFudXBzID0gZW5zdXJlX3B5dGhvbl9lbnYg KGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworCisg IC8qIEZldGNoIGFuZCBwcmVwYXJlIGVhY2ggdGhyZWFkIHByaW50ZXIuICAq LworICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyAoZ2RiX21vZHVsZSwg InByZXBhcmVfdGhyZWFkX25hbWVfcHJpbnRlcnMiKSkKKyAgICB7CisgICAg ICBwcmludGVycyA9IFB5T2JqZWN0X0NhbGxNZXRob2QgKGdkYl9tb2R1bGUs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVw YXJlX3RocmVhZF9uYW1lX3ByaW50ZXJzIiwgTlVMTCk7CisgICAgICBpZiAo cHJpbnRlcnMgIT0gTlVMTCAmJiAocHJpbnRlcnMgPT0gUHlfTm9uZQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICghUHlMaXN0X0NoZWNr IChwcmludGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 fCBQeUxpc3RfU2l6ZSAocHJpbnRlcnMpID09IDApKSkKKyAgICAgICAgewor ICAgICAgICAgIFB5X0RFQ1JFRiAocHJpbnRlcnMpOworICAgICAgICAgIHBy aW50ZXJzID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgZG9fY2xlYW51 cHMgKGNsZWFudXBzKTsKKyAgcmV0dXJuIHByaW50ZXJzOworfQorCisvKiBS ZXR1cm5zIFRSVUUgaWYgdGhlIGdpdmVuIHByaW50ZXIgUHlPYmplY3QgaXMg ZW5hYmxlZC4KKyAgIFJldHVybnMgRkFMU0Ugb3RoZXJ3aXNlLiAgKi8KKwor c3RhdGljIGludAordGhyZWFkX3ByaW50ZXJfZW5hYmxlZCAoUHlPYmplY3Qg KnByaW50ZXIpCit7CisgIFB5T2JqZWN0ICplbmFibGVkID0gUHlPYmplY3Rf R2V0QXR0clN0cmluZyhwcmludGVyLCAiZW5hYmxlZCIpOworICBpbnQgcmV0 ID0gRkFMU0U7CisgIGlmIChlbmFibGVkKQorICAgIHsKKyAgICAgIGlmIChQ eU9iamVjdF9Jc1RydWUoZW5hYmxlZCkpCisgICAgICAgIHJldCA9IFRSVUU7 CisgICAgICBlbHNlCisgICAgICAgIHJldCA9IEZBTFNFOworCisgICAgICBQ eV9ERUNSRUYgKGVuYWJsZWQpOworICAgIH0KKyAgcmV0dXJuIHJldDsKK30K KworLyogR2V0cyBhIG5ldyB0aHJlYWQgbmFtZSBieSBhcHBseWluZyBlYWNo IHByaW50ZXIgaW4gYSBsaXN0IG9mIHByaW50ZXJzCisgICB0byBhIHRocmVh ZC4gSWYgYSBwcmludGVyIHJldHVybnMgYSBuZXcgbmFtZSwgYSBwb2ludGVy IHRvIHRoaXMgbmFtZQorICAgaXMgc3RvcmVkIGluIHRoZSB0aHJlYWRzIG5h bWUgbWVtYmVyLiBUaGUgbmFtZSBleGlzdHMgaW4gdGhlIGhlYXAgYW5kCisg ICB3aWxsIGJlIGZyZWVkIHdoZW4gdGhlIHRocmVhZCBpcyBkZXN0cm95ZWQu ICAqLworCitjaGFyICoKK2FwcGx5X3RocmVhZF9uYW1lX3ByZXR0eV9wcmlu dGVycyAoUHlPYmplY3QgKnByaW50ZXJzLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLCBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKmluZm8pCit7CisgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKKyAg dm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OworICBQeU9i amVjdCAqcmV0X3N0cjsKKyAgUHlPYmplY3QgKnB5X25hbWUgPSBOVUxMOwor ICBQeU9iamVjdCAqcHlfdGhyZWFkOworICBQeU9iamVjdCAqc2VxID0gTlVM TDsKKyAgUHlPYmplY3QgKnByaW50ZXI7CisgIGludCBsZW4sIGk7CisKKyAg aWYgKHByaW50ZXJzID09IE5VTEwpCisgICAgcmV0dXJuIG5hbWU7CisKKyAg Y2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJj aCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CisKKyAgcHlfdGhyZWFkID0gKFB5 T2JqZWN0KikgaW5mby0+dGhyZWFkX29iamVjdDsKKworICBUUllfQ0FUQ0gg KGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQorICB7CisgICAgcHlfbmFtZSA9 IFB5U3RyaW5nX0Zyb21TdHJpbmcgKG5hbWUpOworICAgIHNlcSA9IFB5U2Vx dWVuY2VfRmFzdCAocHJpbnRlcnMsICJleHBlY3RlZCBzZXF1ZW5jZSIpOwor ICAgIGxlbiA9IFB5U2VxdWVuY2VfU2l6ZSAocHJpbnRlcnMpOworCisgICAg Zm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgeworICAgICAgICBw cmludGVyID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNIChzZXEsIGkpOwor ICAgICAgICBpZiAoIXRocmVhZF9wcmludGVyX2VuYWJsZWQgKHByaW50ZXIp KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmV0X3N0ciA9 IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzIChwcmludGVyLCBnZGJweV9w cmludF90aHJlYWRfY3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHB5X25hbWUsIHB5X3RocmVhZCwgTlVMTCk7 CisgICAgICAgIGlmIChyZXRfc3RyCisgICAgICAgICAgICAmJiAoZ2RicHlf aXNfc3RyaW5nIChyZXRfc3RyKSB8fCBnZGJweV9pc19sYXp5X3N0cmluZyAo cmV0X3N0cikpKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFRoaXMg cHJpbnRlciBtYXRjaGVkIHRoZSB0aHJlYWQgYW5kIHJldHVybmVkIGEgbmV3 IG5hbWUuICAqLworICAgICAgICAgICAgbmFtZSA9IHB5dGhvbl9zdHJpbmdf dG9faG9zdF9zdHJpbmcgKHJldF9zdHIpOworICAgICAgICAgICAgLyogVGhp cyBuZXdseSBhbGxvY2F0ZWQgbmFtZSB3aWxsIGJlIGZyZWVkIGluIGZyZWVf dGhyZWFkLiAgKi8KKyAgICAgICAgICAgIHhmcmVlIChpbmZvLT5uYW1lKTsK KyAgICAgICAgICAgIGluZm8tPm5hbWUgPSBuYW1lOworICAgICAgICAgICAg UHlfREVDUkVGIChyZXRfc3RyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg ICAgICAgIH0KKworICAgICAgICAvKiByZXRfc3RyIHNob3VsZCBiZSBOb25l LiAgKi8KKyAgICAgICAgUHlfWERFQ1JFRiAocmV0X3N0cik7CisgICAgICB9 CisgIH0KKworICBQeV9YREVDUkVGIChzZXEpOworICBQeV9YREVDUkVGIChw eV9uYW1lKTsKKworICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworICByZXR1 cm4gbmFtZTsKK30KZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLWlu dGVybmFsLmggYi9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oCmluZGV4 IGJhZTYxYzIuLmM0NmQwNjEgMTAwNjQ0Ci0tLSBhL2dkYi9weXRob24vcHl0 aG9uLWludGVybmFsLmgKKysrIGIvZ2RiL3B5dGhvbi9weXRob24taW50ZXJu YWwuaApAQCAtMzI4LDYgKzMyOCw3IEBAIGV4dGVybiBQeU9iamVjdCAqZ2Ri cHlfdG9fc3RyaW5nX2NzdDsKIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfZGlz cGxheV9oaW50X2NzdDsKIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfZW5hYmxl ZF9jc3Q7CiBleHRlcm4gUHlPYmplY3QgKmdkYnB5X3ZhbHVlX2NzdDsKK2V4 dGVybiBQeU9iamVjdCAqZ2RicHlfcHJpbnRfdGhyZWFkX2NzdDsKIAogLyog RXhjZXB0aW9uIHR5cGVzLiAgKi8KIGV4dGVybiBQeU9iamVjdCAqZ2RicHlf Z2RiX2Vycm9yOwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBi L2dkYi9weXRob24vcHl0aG9uLmMKaW5kZXggYzY2ZWZlNC4uMzg3NTk0YiAx MDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYworKysgYi9nZGIvcHl0 aG9uL3B5dGhvbi5jCkBAIC04Miw2ICs4Miw3IEBAIFB5T2JqZWN0ICpnZGJw eV9kaXNwbGF5X2hpbnRfY3N0OwogUHlPYmplY3QgKmdkYnB5X2RvY19jc3Q7 CiBQeU9iamVjdCAqZ2RicHlfZW5hYmxlZF9jc3Q7CiBQeU9iamVjdCAqZ2Ri cHlfdmFsdWVfY3N0OworUHlPYmplY3QgKmdkYnB5X3ByaW50X3RocmVhZF9j c3Q7CiAKIC8qIFRoZSBHZGJFcnJvciBleGNlcHRpb24uICAqLwogUHlPYmpl Y3QgKmdkYnB5X2dkYmVycm9yX2V4YzsKQEAgLTEzMDUsNiArMTMwNiw3IEBA IG1lc3NhZ2UgPT0gYW4gZXJyb3IgbWVzc2FnZSB3aXRob3V0IGEgc3RhY2sg d2lsbCBiZSBwcmludGVkLiIpLAogICBnZGJweV9kb2NfY3N0ID0gUHlTdHJp bmdfRnJvbVN0cmluZyAoIl9fZG9jX18iKTsKICAgZ2RicHlfZW5hYmxlZF9j c3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nICgiZW5hYmxlZCIpOwogICBnZGJw eV92YWx1ZV9jc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nICgidmFsdWUiKTsK KyAgZ2RicHlfcHJpbnRfdGhyZWFkX2NzdCA9IFB5U3RyaW5nX0Zyb21TdHJp bmcgKCJwcmludF90aHJlYWQiKTsKIAogICAvKiBSZWxlYXNlIHRoZSBHSUwg d2hpbGUgZ2RiIHJ1bnMuICAqLwogICBQeVRocmVhZFN0YXRlX1N3YXAgKE5V TEwpOwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9w eXRob24vcHl0aG9uLmgKaW5kZXggZGQ3MDY2Zi4uZjdlNTQ3NiAxMDA2NDQK LS0tIGEvZ2RiL3B5dGhvbi9weXRob24uaAorKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5oCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5lIEdEQl9QWVRIT05f SAogCiAjaW5jbHVkZSAidmFsdWUuaCIKKyNpbmNsdWRlICJnZGJ0aHJlYWQu aCIKIAogc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0OwogCkBAIC0zNyw2ICsz OCwxMSBAQCBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAJCQkgICAg ICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywK IAkJCSAgICAgIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5ndWFn ZSk7CiAKK1B5T2JqZWN0ICpwcmVwYXJlX3RocmVhZF9uYW1lX3ByaW50ZXJz ICh2b2lkKTsKKworY2hhciAqYXBwbHlfdGhyZWFkX25hbWVfcHJldHR5X3By aW50ZXJzIChQeU9iamVjdCAqcHJpbnRlcnMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5hbWUsIHN0cnVjdCB0 aHJlYWRfaW5mbyAqaW5mbyk7CisKIHZvaWQgcHJlc2VydmVfcHl0aG9uX3Zh bHVlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGh0YWJfdCBjb3BpZWRf dHlwZXMpOwogCiB2b2lkIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9v YmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CmRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vTWFrZWZpbGUuaW4gYi9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vTWFrZWZpbGUuaW4KaW5kZXggNGUyODZi NS4uOTE1NWVhYyAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL01ha2VmaWxlLmluCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9NYWtlZmlsZS5pbgpAQCAtNiw3ICs2LDcgQEAgRVhFQ1VUQUJMRVMgPSBw eS10eXBlIHB5LXZhbHVlIHB5LXByZXR0eXByaW50IHB5LXRlbXBsYXRlIHB5 LWJsb2NrIFwKIAlweS1zaGFyZWQgcHl0aG9uIGxpYi10eXBlcyBweS1ldmVu dHMgcHktZXZ0aHJlYWRzIHB5LWZyYW1lIFwKIAlweS1taSBweS1wcC1tYWlu dCBweS1wcm9nc3BhY2UgcHktc2VjdGlvbi1zY3JpcHQgcHktb2JqZmlsZSBc CiAJcHktZmluaXNoLWJyZWFrcG9pbnQgcHktZmluaXNoLWJyZWFrcG9pbnQy IHB5LXZhbHVlLWNjIHB5LWV4cGxvcmUgXAotCXB5LWV4cGxvcmUtY2MKKwlw eS1leHBsb3JlLWNjIHB5LXRocmVhZHByZXR0eXByaW50CiAKIE1JU0NFTExB TkVPVVMgPSBweS1zaGFyZWQtc2wuc2wgcHktZXZlbnRzLXNobGliLnNvIHB5 LWV2ZW50cy1zaGxpYi1ub2RlYnVnLnNvIAogCmRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktdGhyZWFkcHJldHR5cHJpbnQuYyBi L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10aHJlYWRwcmV0dHlwcmlu dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYmEy ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktdGhyZWFkcHJldHR5cHJpbnQuYwpAQCAtMCwwICsxLDEyMiBAQAor LyogVGVzdCBjYXNlcyBmb3IgdGhyZWFkIG5hbWUgcHJpbnRlcnMuCisKKyAg IENvcHlyaWdodCAyMDA4LCAyMDEwLTIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisKKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4K KworICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPHB0 aHJlYWQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxp Yi5oPgorI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4K KworI2lmbmRlZiBOUl9USFJFQURTCisjZGVmaW5lIE5SX1RIUkVBRFMgNAor I2VuZGlmCisKK2ludCB0aHJlYWRfY291bnQ7CisKK3B0aHJlYWRfbXV0ZXhf dCB0aHJlYWRfY291bnRfbXV0ZXg7CisKK3B0aHJlYWRfY29uZF90IHRocmVh ZF9jb3VudF9jb25kdmFyOworCit2b2lkCitpbmNyX3RocmVhZF9jb3VudCAo dm9pZCkKK3sKKyAgcHRocmVhZF9tdXRleF9sb2NrICgmdGhyZWFkX2NvdW50 X211dGV4KTsKKyAgKyt0aHJlYWRfY291bnQ7CisgIGlmICh0aHJlYWRfY291 bnQgPT0gTlJfVEhSRUFEUykKKyAgICBwdGhyZWFkX2NvbmRfc2lnbmFsICgm dGhyZWFkX2NvdW50X2NvbmR2YXIpOworICBwdGhyZWFkX211dGV4X3VubG9j ayAoJnRocmVhZF9jb3VudF9tdXRleCk7Cit9CisKK3ZvaWQKK2NvbmRfd2Fp dCAocHRocmVhZF9jb25kX3QgKmNvbmQsIHB0aHJlYWRfbXV0ZXhfdCAqbXV0 KQoreworICBwdGhyZWFkX211dGV4X2xvY2sgKG11dCk7CisgIHB0aHJlYWRf Y29uZF93YWl0IChjb25kLCBtdXQpOworICBwdGhyZWFkX211dGV4X3VubG9j ayAobXV0KTsKK30KKwordm9pZAorbm9yZXR1cm4gKHZvaWQpCit7CisgIHB0 aHJlYWRfbXV0ZXhfdCBtdXQ7CisgIHB0aHJlYWRfY29uZF90IGNvbmQ7CisK KyAgcHRocmVhZF9tdXRleF9pbml0ICgmbXV0LCBOVUxMKTsKKyAgcHRocmVh ZF9jb25kX2luaXQgKCZjb25kLCBOVUxMKTsKKworICAvKiBXYWl0IGZvciBh IGNvbmRpdGlvbiB0aGF0IHdpbGwgbmV2ZXIgYmUgc2lnbmFsZWQsIHNvIHdl IGVmZmVjdGl2ZWx5CisgICAgIGJsb2NrIHRoZSB0aHJlYWQgaGVyZS4gICov CisgIGNvbmRfd2FpdCAoJmNvbmQsICZtdXQpOworfQorCit2b2lkICoKK2Zv cmV2ZXJfcHRocmVhZCAodm9pZCAqdW51c2VkKQoreworICBpbmNyX3RocmVh ZF9jb3VudCAoKTsKKyAgbm9yZXR1cm4gKCk7Cit9CisKKy8qIFdhaXQgdW50 aWwgYWxsIHRocmVhZHMgYXJlIHJ1bm5pbmcuICAqLworCit2b2lkCit3YWl0 X2FsbF90aHJlYWRzX3J1bm5pbmcgKHZvaWQpCit7CisgIHB0aHJlYWRfbXV0 ZXhfbG9jayAoJnRocmVhZF9jb3VudF9tdXRleCk7CisgIGlmICh0aHJlYWRf Y291bnQgPT0gTlJfVEhSRUFEUykKKyAgICB7CisgICAgICBwdGhyZWFkX211 dGV4X3VubG9jayAoJnRocmVhZF9jb3VudF9tdXRleCk7CisgICAgICByZXR1 cm47CisgICAgfQorICBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZF9jb3Vu dF9jb25kdmFyLCAmdGhyZWFkX2NvdW50X211dGV4KTsKKyAgaWYgKHRocmVh ZF9jb3VudCA9PSBOUl9USFJFQURTKQorICAgIHsKKyAgICAgIHB0aHJlYWRf bXV0ZXhfdW5sb2NrICgmdGhyZWFkX2NvdW50X211dGV4KTsKKyAgICAgIHJl dHVybjsKKyAgICB9CisgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmdGhyZWFk X2NvdW50X211dGV4KTsKKyAgcHJpbnRmICgiZmFpbGVkIHdhaXRpbmcgZm9y IGFsbCB0aHJlYWRzIHRvIHN0YXJ0XG4iKTsKKyAgYWJvcnQgKCk7Cit9CisK Ky8qIENhbGxlZCB3aGVuIGFsbCB0aHJlYWRzIGFyZSBydW5uaW5nLgorICAg RWFzeSBwbGFjZSBmb3IgYSBicmVha3BvaW50LiAgKi8KKwordm9pZAorYWxs X3RocmVhZHNfcnVubmluZyAodm9pZCkKK3sKK30KKworaW50CittYWluICh2 b2lkKQoreworICBwdGhyZWFkX3QgZm9yZXZlcltOUl9USFJFQURTXTsKKyAg aW50IGk7CisKKyAgcHRocmVhZF9tdXRleF9pbml0ICgmdGhyZWFkX2NvdW50 X211dGV4LCBOVUxMKTsKKyAgcHRocmVhZF9jb25kX2luaXQgKCZ0aHJlYWRf Y291bnRfY29uZHZhciwgTlVMTCk7CisKKyAgZm9yIChpID0gMDsgaSA8IE5S X1RIUkVBRFM7ICsraSkKKyAgICBwdGhyZWFkX2NyZWF0ZSAoJmZvcmV2ZXJb aV0sIE5VTEwsIGZvcmV2ZXJfcHRocmVhZCwgTlVMTCk7CisKKyAgd2FpdF9h bGxfdGhyZWFkc19ydW5uaW5nICgpOworICBhbGxfdGhyZWFkc19ydW5uaW5n ICgpOworCisgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktdGhyZWFkcHJldHR5cHJpbnQuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXRocmVhZHByZXR0eXByaW50 LmV4cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjBl Zjc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXRocmVhZHByZXR0eXByaW50LmV4cApAQCAtMCwwICsxLDg3IEBA CisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNy0yMDA4LCAyMDEwLTIwMTIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMuCisKKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMK KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisKKyMgVGVzdCB0aHJlYWQgbmFtZSBwcmV0dHkgcHJpbnRlciBm dW5jdGlvbmFsaXR5LgorCitzZXQgTlJfVEhSRUFEUyA0CisKK2xvYWRfbGli IGdkYi1weXRob24uZXhwCisKK3N0YW5kYXJkX3Rlc3RmaWxlCisKKyMgU3Rh cnQgd2l0aCBhIGZyZXNoIGdkYi4KK2NsZWFuX3Jlc3RhcnQgJHtiaW5maWxl fQorCitpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0K KworaWYge1tnZGJfY29tcGlsZV9wdGhyZWFkcyAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBbbGlz dCBkZWJ1ZyAiYWRkaXRpb25hbF9mbGFncz0tRE5SX1RIUkVBRFM9JE5SX1RI UkVBRFMiXV0gIT0gIiIgfSB7CisgICAgcmV0dXJuIC0xCit9CisKK2lmIHsg IVtydW50b19tYWluXSB9IHsKKyAgICBmYWlsICJDYW4ndCBydW4gdG8gbWFp biIKKyAgICByZXR1cm4gMAorfQorCitnZGJfdGVzdCAiYnJlYWsgYWxsX3Ro cmVhZHNfcnVubmluZyIgXAorICAgICAgICAgIkJyZWFrcG9pbnQgMiBhdCAu KjogZmlsZSAuKiR7c3JjZmlsZX0sIGxpbmUgLioiIFwKKyAgICAgICAgICJi cmVha3BvaW50IG9uIGFsbF90aHJlYWRzX3J1bm5pbmciCisKKyMgUnVuIHRo ZSBwcm9ncmFtIGFuZCBtYWtlIHN1cmUgR0RCIHJlcG9ydHMgdGhhdCB3ZSBz dG9wcGVkIGFmdGVyCisjIGhpdHRpbmcgYnJlYWtwb2ludCAyIGluIGFsbF90 aHJlYWRzX3J1bm5pbmcoKS4KKworZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisg ICAgICAgICAiLipCcmVha3BvaW50IDIsIGFsbF90aHJlYWRzX3J1bm5pbmcg KCkuKiIgXAorICAgICAgICAgInJ1biB0byBhbGxfdGhyZWFkc19ydW5uaW5n IgorCitnZGJfcHlfdGVzdF9tdWx0aXBsZSAiZGVmaW5lIHNvbWUgdGhyZWFk IHByaW50ZXJzIiBcCisgICJweXRob24iICIiIFwKKyAgImltcG9ydCBnZGIu dGhyZWFkX3ByaW50aW5nIiAiIiBcCisgICJjbGFzcyB0ZXN0X3RocmVhZF9w cmludGVyIChnZGIudGhyZWFkX3ByaW50aW5nLlRocmVhZE5hbWVQcmludGVy KToiICIiIFwKKyAgIiAgZGVmIHByZXBhcmUoc2VsZik6IiAiIiBcCisgICIg ICAgcGFzcyIgIiIgXAorICAiICBkZWYgcHJpbnRfdGhyZWFkKHNlbGYsIG5h bWUsIHRocmVhZCk6IiAiIiBcCisgICIgICAgcmV0dXJuIFwidGVzdF9uYW1l XCIgKyBzdHIodGhyZWFkLnB0aWRcWzFcXSkiICIiIFwKKyAgImdkYi50aHJl YWRfcHJpbnRpbmcuVGhyZWFkTmFtZVByaW50ZXIuYWRkX3ByaW50ZXIoJ3Rl c3RfcHJpbnRlcicsIiAiIiBcCisgICIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdGhyZWFkX3ByaW50 ZXIpIiAiIiBcCisgICJjbGFzcyBiYWRfbm9fbWV0aG9kcygpOiIgIiIgXAor ICAiICBwYXNzIiAiIiBcCisgICJjbGFzcyBiYWRfbm9fcHJpbnRfdGhyZWFk KCk6IiAiIiBcCisgICIgIGRlZiBwcmVwYXJlKHNlbGYpOiAiICIiIFwKKyAg IiAgICBwYXNzIiAiIiBcCisgICJlbmQiICIiCisKK2dkYl90ZXN0ICJpbmZv IHRocmVhZC1uYW1lLXByaW50ZXIiIFwKKyAgICAgICAgICJUaHJlYWQgbmFt ZSBwcmV0dHktcHJpbnRlcnM6XHJcblxcXFt4XFxcXSB0ZXN0X3ByaW50ZXIi IFwKKyAgICAgICAgICJwcmludCByZWdpc3RlcmVkIHRocmVhZCBuYW1lIHBy aW50ZXJzIgorCisjIENoZWNrIHdlIGFyZSBjb3JyZWN0bHkgcmVqZWN0aW5n IGJhZCBwcmludGVycy4KKyMgVGhlc2UgInByaW50ZXJzIiB3ZXJlIGRlZmlu aWVkIGluIHRoZSAiZGVmaW5lIHNvbWUgdGhyZWFkIHByaW50ZXJzIiB0ZXN0 IGFib3ZlLgorZ2RiX3Rlc3QgInB5dGhvbiBnZGIudGhyZWFkX3ByaW50aW5n LlRocmVhZE5hbWVQcmludGVyLmFkZF9wcmludGVyKCdiYWQgcHJpbnRlcics IGJhZF9ub19tZXRob2RzKSIgXAorICAgICAgICAgIi4qVHlwZUVycm9yOiBw cmludGVyIG1pc3NpbmcgYXR0cmlidXRlOiBwcmVwYXJlLioiIFwKKyAgICAg ICAgICJDYXRjaCBiYWQgcHJpbnRlcnMgLSBtaXNzaW5nIGF0dHJpYnV0ZSBw cmVwYXJlIgorCitnZGJfdGVzdCAicHl0aG9uIGdkYi50aHJlYWRfcHJpbnRp bmcuVGhyZWFkTmFtZVByaW50ZXIuYWRkX3ByaW50ZXIoJ2JhZCBwcmludGVy JywgYmFkX25vX3ByaW50X3RocmVhZCkiIFwKKyAgICAgICAgICIuKlR5cGVF cnJvcjogcHJpbnRlciBtaXNzaW5nIGF0dHJpYnV0ZTogcHJpbnRfdGhyZWFk LioiIFwKKyAgICAgICAgICJDYXRjaCBiYWQgcHJpbnRlcnMgLSBtaXNzaW5n IGF0dHJpYnV0ZSBwcmludF90aHJlYWQiCisKKworIyBXZSB3YW50IHRvIG1h a2Ugc3VyZSB0aGUgdGhyZWFkIGxpc3QgaGFzIHByaW50ZWQgYWxsIHRoZSB0 aHJlYWQgbmFtZXMgdG8gaW5jbHVkZSB0aGUgcHRpZCBhcyBvdXIKKyMgdGVz dCBwcmludGVyIHdhcyBkZWZpbmVkLgorIyBOb3RlOiB0aGUgXFwyIGJhY2ty ZWZlcmVuY2UgaXMgMiBiZWNhdXNlIGdkYl90ZXN0IGNvbnRhaW5zIHRoZSBm aXJzdCBtYXRjaGluZyBncm91cAorZ2RiX3Rlc3QgImluZm8gdGhyZWFkcyIg XAorICAgICAgICAgIiArSWQgK1RhcmdldCArSWQgK0ZyYW1lKD86LipUaHJl YWQgMHhcW0EtRmEtZjAtOVxdKyBcXFwoTFdQIChcXFxkKylcXFwpIFwidGVz dF9uYW1lXFwyLiopKyIgXAorICAgICAgICAgInRocmVhZCBuYW1lIHByaW50 ZXIgdGVzdCIKZGlmZiAtLWdpdCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJl YWQuYwppbmRleCA3ZThlZWM1Li4zMTQ3Mzg0IDEwMDY0NAotLS0gYS9nZGIv dGhyZWFkLmMKKysrIGIvZ2RiL3RocmVhZC5jCkBAIC0zNCw2ICszNCw4IEBA CiAjaW5jbHVkZSAicmVnY2FjaGUuaCIKICNpbmNsdWRlICJnZGIuaCIKICNp bmNsdWRlICJnZGJfc3RyaW5nLmgiCisjaW5jbHVkZSAicHl0aG9uL3B5dGhv bi5oIgorI2luY2x1ZGUgInB5dGhvbi9weXRob24taW50ZXJuYWwuaCIKIAog I2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBA IC03NjcsNiArNzY5LDkgQEAgcHJpbnRfdGhyZWFkX2luZm8gKHN0cnVjdCB1 aV9vdXQgKnVpb3V0LCBjaGFyICpyZXF1ZXN0ZWRfdGhyZWFkcywgaW50IHBp ZCkKICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKICAgY2hhciAqZXh0 cmFfaW5mbywgKm5hbWUsICp0YXJnZXRfaWQ7CiAgIGludCBjdXJyZW50X3Ro cmVhZCA9IC0xOworI2lmZGVmIEhBVkVfUFlUSE9OCisgIFB5T2JqZWN0ICpw cmludGVycyA9IE5VTEw7CisjZW5kaWYKIAogICB1cGRhdGVfdGhyZWFkX2xp c3QgKCk7CiAgIGN1cnJlbnRfcHRpZCA9IGluZmVyaW9yX3B0aWQ7CkBAIC03 NzQsNiArNzc5LDEzIEBAIHByaW50X3RocmVhZF9pbmZvIChzdHJ1Y3QgdWlf b3V0ICp1aW91dCwgY2hhciAqcmVxdWVzdGVkX3RocmVhZHMsIGludCBwaWQp CiAgIC8qIFdlJ2xsIGJlIHN3aXRjaGluZyB0aHJlYWRzIHRlbXBvcmFyaWx5 LiAgKi8KICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX3Jlc3RvcmVfY3Vy cmVudF90aHJlYWQgKCk7CiAKKyNpZmRlZiBIQVZFX1BZVEhPTgorICAvKiBH ZXQgbGlzdCBvZiBwcmludGVycywgdGhleSB3aWxsIGluaXRpYWxpemUgdGhl bXNlbHZlcyBoZXJlLiAgKi8KKyAgcHJpbnRlcnMgPSBwcmVwYXJlX3RocmVh ZF9uYW1lX3ByaW50ZXJzICgpOworICBpZiAocHJpbnRlcnMgIT0gTlVMTCkK KyAgICBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChwcmludGVycyk7CisjZW5k aWYKKwogICAvKiBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgd2UgbWFr ZSBhIGxpc3QgZm9yIE1JLiAgQSB0YWJsZSBpcwogICAgICBwcmVmZXJhYmxl IGZvciB0aGUgQ0xJLCB0aG91Z2gsIGJlY2F1c2UgaXQgc2hvd3MgdGFibGUK ICAgICAgaGVhZGVycy4gICovCkBAIC04NjcsNyArODc5LDE1IEBAIHByaW50 X3RocmVhZF9pbmZvIChzdHJ1Y3QgdWlfb3V0ICp1aW91dCwgY2hhciAqcmVx dWVzdGVkX3RocmVhZHMsIGludCBwaWQpCiAKICAgICAgIHRhcmdldF9pZCA9 IHRhcmdldF9waWRfdG9fc3RyICh0cC0+cHRpZCk7CiAgICAgICBleHRyYV9p bmZvID0gdGFyZ2V0X2V4dHJhX3RocmVhZF9pbmZvICh0cCk7CisjaWZkZWYg SEFWRV9QWVRIT04KKyAgICAgIG5hbWUgPSAodHAtPm5hbWUKKyAgICAgICAg ICAgICAgPyB0cC0+bmFtZQorICAgICAgICAgICAgICA6IGFwcGx5X3RocmVh ZF9uYW1lX3ByZXR0eV9wcmludGVycyAocHJpbnRlcnMsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn ZXRfdGhyZWFkX25hbWUgKHRwKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRwKSk7CisjZWxzZQogICAg ICAgbmFtZSA9IHRwLT5uYW1lID8gdHAtPm5hbWUgOiB0YXJnZXRfdGhyZWFk X25hbWUgKHRwKTsKKyNlbmRpZgogCiAgICAgICBpZiAodWlfb3V0X2lzX21p X2xpa2VfcCAodWlvdXQpKQogCXsKQEAgLTE0NjksNiArMTQ4OSwxMyBAQCBf aW5pdGlhbGl6ZV90aHJlYWQgKHZvaWQpCiBVc2FnZTogaW5mbyB0aHJlYWRz IFtJRF0uLi5cblwKIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgdGhyZWFkIElE cyB3aXRoIHNwYWNlcyBiZXR3ZWVuLlxuXAogSWYgbm8gYXJndW1lbnRzLCBh bGwgdGhyZWFkcyBhcmUgZGlzcGxheWVkLiIpKTsKKyAgLyogS2VlcCB0aGVz ZSBhYmJyZXZpYXRpb25zIG9mICJpbmZvIHRocmVhZHMiLCAiaW5mbyB0aHJl YWQtbmFtZS1wcmludGVyIgorICAgICBtYWtlcyB0aGVtIGFtYmlnb3VzIG90 aGVyd2lzZS4gICovCisgIGFkZF9pbmZvX2FsaWFzICgidGgiLCAidGhyZWFk cyIgLCAxKTsKKyAgYWRkX2luZm9fYWxpYXMgKCJ0aHIiLCAidGhyZWFkcyIg LCAxKTsKKyAgYWRkX2luZm9fYWxpYXMgKCJ0aHJlIiwgInRocmVhZHMiICwg MSk7CisgIGFkZF9pbmZvX2FsaWFzICgidGhyZWEiLCAidGhyZWFkcyIgLCAx KTsKKyAgYWRkX2luZm9fYWxpYXMgKCJ0aHJlYWQiLCAidGhyZWFkcyIgLCAx KTsKIAogICBhZGRfcHJlZml4X2NtZCAoInRocmVhZCIsIGNsYXNzX3J1biwg dGhyZWFkX2NvbW1hbmQsIF8oIlwKIFVzZSB0aGlzIGNvbW1hbmQgdG8gc3dp dGNoIGJldHdlZW4gdGhyZWFkcy5cblwKLS0gCjEuNy43LjMKCg== --e89a8f23535bbbb46204c7cce420--