From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26303 invoked by alias); 6 Nov 2013 17:02:00 -0000 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 Received: (qmail 26255 invoked by uid 89); 6 Nov 2013 17:01:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=2.8 required=5.0 tests=AWL,BAYES_50,RDNS_NONE autolearn=no version=3.3.2 X-HELO: mail-wg0-f41.google.com Received: from Unknown (HELO mail-wg0-f41.google.com) (74.125.82.41) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Wed, 06 Nov 2013 17:00:45 +0000 Received: by mail-wg0-f41.google.com with SMTP id b13so4539978wgh.4 for ; Wed, 06 Nov 2013 09:00:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=pbjj/rvlNnOxsY65pbF5WyroP5fLSoJQxle7u37NAs4=; b=IvFnnyhJTOC0dYLU3U7uSv5n/o4epftRkoigvjmUSdmqYZ+XfRSjRy2wZ3LAzW813n jhOQYL5cX4aHxYQ9aPX6NFKF3tCAD76yWaaABFwoEg6aiw4Ph8ptFnyNUuchTcWyQVu4 XYmgzDtEFRzCZu20aPNpvJMI3jzHeXpl5EmDQoeaQkOnodVshT1WderNRPlrFhTiI+rW ZpZve7sokY9n0wu8S5zVdgLotvgOySnpinh8C0d/7YPE3gswZLpOQHxXjx9RV4wYDVat 8PhKHRGJyCdxNsgwcMpHDfor2LusOFmQmdjT8ue7EmWNAZ1nMMZ3MiPDpLhIUgRaNv7s fgyw== X-Gm-Message-State: ALoCoQkK5LuEBsUtk5qvvJBYgvfkG+zfBVRzpuIOirYbAHdEEvrmo5r6lA25wuoOja5/2io/bCA+ MIME-Version: 1.0 X-Received: by 10.180.73.70 with SMTP id j6mr21653820wiv.47.1383757235565; Wed, 06 Nov 2013 09:00:35 -0800 (PST) Received: by 10.216.73.198 with HTTP; Wed, 6 Nov 2013 09:00:35 -0800 (PST) Date: Wed, 06 Nov 2013 17:10:00 -0000 Message-ID: Subject: [PATCH] Move "types deeply equal" code from py-type.c to gdbtypes.c From: Doug Evans To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=f46d043890857b606904ea8516df X-IsSubscribed: yes X-SW-Source: 2013-11/txt/msg00123.txt.bz2 --f46d043890857b606904ea8516df Content-Type: text/plain; charset=ISO-8859-1 Content-length: 603 Hi. There's nothing python-specific about the bulk of this code so I've moved it out of py-type.c. Ok to check in? 2013-11-06 Doug Evans * gdbtypes.c: #include bcache.h, dwarf2loc.h. (type_equality_entry): Move here from python/py-type.c. (type_equality_entry_d): Ditto. (compare_maybe_null_strings, check_types_equal): Ditto. (check_types_worklist, types_deeply_equal): Ditto. * gdbtypes.h (types_deeply_equal): Declare. * python/py-type.c: Remove inclusion of bcache.h, dwarf2loc.h. (typy_richcompare): Update. --f46d043890857b606904ea8516df Content-Type: text/plain; charset=US-ASCII; name="gdb-131106-types-deeply-equal-1.patch.txt" Content-Disposition: attachment; filename="gdb-131106-types-deeply-equal-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hnot9dpo0 Content-length: 18992 MjAxMy0xMS0wNiAgRG91ZyBFdmFucyAgPGRqZUBzZWJhYmVhY2gub3JnPgoK CSogZ2RidHlwZXMuYzogI2luY2x1ZGUgYmNhY2hlLmgsIGR3YXJmMmxvYy5o LgoJKHR5cGVfZXF1YWxpdHlfZW50cnkpOiBNb3ZlIGhlcmUgZnJvbSBweXRo b24vcHktdHlwZS5jLgoJKHR5cGVfZXF1YWxpdHlfZW50cnlfZCk6IERpdHRv LgoJKGNvbXBhcmVfbWF5YmVfbnVsbF9zdHJpbmdzLCBjaGVja190eXBlc19l cXVhbCk6IERpdHRvLgoJKGNoZWNrX3R5cGVzX3dvcmtsaXN0LCB0eXBlc19k ZWVwbHlfZXF1YWwpOiBEaXR0by4KCSogZ2RidHlwZXMuaCAodHlwZXNfZGVl cGx5X2VxdWFsKTogRGVjbGFyZS4KCSogcHl0aG9uL3B5LXR5cGUuYzogUmVt b3ZlIGluY2x1c2lvbiBvZiBiY2FjaGUuaCwgZHdhcmYybG9jLmguCgkodHlw eV9yaWNoY29tcGFyZSk6IFVwZGF0ZS4KCmRpZmYgLS1naXQgYS9nZGIvZ2Ri dHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCmluZGV4IDkwNjlhMTEuLmY0YzRk ZWUgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKyBiL2dkYi9nZGJ0 eXBlcy5jCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiaGFzaHRhYi5o IgogI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJjcC1zdXBw b3J0LmgiCisjaW5jbHVkZSAiYmNhY2hlLmgiCisjaW5jbHVkZSAiZHdhcmYy bG9jLmgiCiAKIC8qIEluaXRpYWxpemUgQkFETkVTUyBjb25zdGFudHMuICAq LwogCkBAIC0yNDk0LDcgKzI0OTYsMjE1IEBAIHR5cGVzX2VxdWFsIChzdHJ1 Y3QgdHlwZSAqYSwgc3RydWN0IHR5cGUgKmIpCiAKICAgcmV0dXJuIDA7CiB9 CisMCisvKiBEZWVwIGNvbXBhcmlzb24gb2YgdHlwZXMuICAqLworCisvKiBB biBlbnRyeSBpbiB0aGUgdHlwZS1lcXVhbGl0eSBiY2FjaGUuICAqLworCit0 eXBlZGVmIHN0cnVjdCB0eXBlX2VxdWFsaXR5X2VudHJ5Cit7CisgIHN0cnVj dCB0eXBlICp0eXBlMSwgKnR5cGUyOworfSB0eXBlX2VxdWFsaXR5X2VudHJ5 X2Q7CisKK0RFRl9WRUNfTyAodHlwZV9lcXVhbGl0eV9lbnRyeV9kKTsKKwor LyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gY29tcGFyZSB0d28gc3RyaW5ncy4g IFJldHVybnMgMSBpZiB0aGV5IGFyZQorICAgdGhlIHNhbWUsIDAgb3RoZXJ3 aXNlLiAgSGFuZGxlcyBOVUxMcyBwcm9wZXJseS4gICovCisKK3N0YXRpYyBp bnQKK2NvbXBhcmVfbWF5YmVfbnVsbF9zdHJpbmdzIChjb25zdCBjaGFyICpz LCBjb25zdCBjaGFyICp0KQoreworICBpZiAocyA9PSBOVUxMICYmIHQgIT0g TlVMTCkKKyAgICByZXR1cm4gMDsKKyAgZWxzZSBpZiAocyAhPSBOVUxMICYm IHQgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKyAgZWxzZSBpZiAocyA9PSBO VUxMICYmIHQ9PSBOVUxMKQorICAgIHJldHVybiAxOworICByZXR1cm4gc3Ry Y21wIChzLCB0KSA9PSAwOworfQorCisvKiBBIGhlbHBlciBmdW5jdGlvbiBm b3IgdHlzY21fcmljaGNvbXBhcmUgdGhhdCBjaGVja3MgdHdvIHR5cGVzIGZv cgorICAgImRlZXAiIGVxdWFsaXR5LiAgUmV0dXJucyBub24temVybyBpZiB0 aGUgdHlwZXMgYXJlIGNvbnNpZGVyZWQgdGhlCisgICBzYW1lLCB6ZXJvIG90 aGVyd2lzZS4gICovCisKK3N0YXRpYyBpbnQKK2NoZWNrX3R5cGVzX2VxdWFs IChzdHJ1Y3QgdHlwZSAqdHlwZTEsIHN0cnVjdCB0eXBlICp0eXBlMiwKKwkJ ICAgVkVDICh0eXBlX2VxdWFsaXR5X2VudHJ5X2QpICoqd29ya2xpc3QpCit7 CisgIENIRUNLX1RZUEVERUYgKHR5cGUxKTsKKyAgQ0hFQ0tfVFlQRURFRiAo dHlwZTIpOworCisgIGlmICh0eXBlMSA9PSB0eXBlMikKKyAgICByZXR1cm4g MTsKKworICBpZiAoVFlQRV9DT0RFICh0eXBlMSkgIT0gVFlQRV9DT0RFICh0 eXBlMikKKyAgICAgIHx8IFRZUEVfTEVOR1RIICh0eXBlMSkgIT0gVFlQRV9M RU5HVEggKHR5cGUyKQorICAgICAgfHwgVFlQRV9VTlNJR05FRCAodHlwZTEp ICE9IFRZUEVfVU5TSUdORUQgKHR5cGUyKQorICAgICAgfHwgVFlQRV9OT1NJ R04gKHR5cGUxKSAhPSBUWVBFX05PU0lHTiAodHlwZTIpCisgICAgICB8fCBU WVBFX1ZBUkFSR1MgKHR5cGUxKSAhPSBUWVBFX1ZBUkFSR1MgKHR5cGUyKQor ICAgICAgfHwgVFlQRV9WRUNUT1IgKHR5cGUxKSAhPSBUWVBFX1ZFQ1RPUiAo dHlwZTIpCisgICAgICB8fCBUWVBFX05PVFRFWFQgKHR5cGUxKSAhPSBUWVBF X05PVFRFWFQgKHR5cGUyKQorICAgICAgfHwgVFlQRV9JTlNUQU5DRV9GTEFH UyAodHlwZTEpICE9IFRZUEVfSU5TVEFOQ0VfRkxBR1MgKHR5cGUyKQorICAg ICAgfHwgVFlQRV9ORklFTERTICh0eXBlMSkgIT0gVFlQRV9ORklFTERTICh0 eXBlMikpCisgICAgcmV0dXJuIDA7CisKKyAgaWYgKCFjb21wYXJlX21heWJl X251bGxfc3RyaW5ncyAoVFlQRV9UQUdfTkFNRSAodHlwZTEpLAorCQkJCSAg IFRZUEVfVEFHX05BTUUgKHR5cGUyKSkpCisgICAgcmV0dXJuIDA7CisgIGlm ICghY29tcGFyZV9tYXliZV9udWxsX3N0cmluZ3MgKFRZUEVfTkFNRSAodHlw ZTEpLCBUWVBFX05BTUUgKHR5cGUyKSkpCisgICAgcmV0dXJuIDA7CiAKKyAg aWYgKFRZUEVfQ09ERSAodHlwZTEpID09IFRZUEVfQ09ERV9SQU5HRSkKKyAg ICB7CisgICAgICBpZiAobWVtY21wIChUWVBFX1JBTkdFX0RBVEEgKHR5cGUx KSwgVFlQRV9SQU5HRV9EQVRBICh0eXBlMiksCisJCSAgc2l6ZW9mICgqVFlQ RV9SQU5HRV9EQVRBICh0eXBlMSkpKSAhPSAwKQorCXJldHVybiAwOworICAg IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGludCBpOworCisgICAgICBmb3Ig KGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlMSk7ICsraSkKKwl7CisJ ICBjb25zdCBzdHJ1Y3QgZmllbGQgKmZpZWxkMSA9ICZUWVBFX0ZJRUxEICh0 eXBlMSwgaSk7CisJICBjb25zdCBzdHJ1Y3QgZmllbGQgKmZpZWxkMiA9ICZU WVBFX0ZJRUxEICh0eXBlMiwgaSk7CisJICBzdHJ1Y3QgdHlwZV9lcXVhbGl0 eV9lbnRyeSBlbnRyeTsKKworCSAgaWYgKEZJRUxEX0FSVElGSUNJQUwgKCpm aWVsZDEpICE9IEZJRUxEX0FSVElGSUNJQUwgKCpmaWVsZDIpCisJICAgICAg fHwgRklFTERfQklUU0laRSAoKmZpZWxkMSkgIT0gRklFTERfQklUU0laRSAo KmZpZWxkMikKKwkgICAgICB8fCBGSUVMRF9MT0NfS0lORCAoKmZpZWxkMSkg IT0gRklFTERfTE9DX0tJTkQgKCpmaWVsZDIpKQorCSAgICByZXR1cm4gMDsK KwkgIGlmICghY29tcGFyZV9tYXliZV9udWxsX3N0cmluZ3MgKEZJRUxEX05B TUUgKCpmaWVsZDEpLAorCQkJCQkgICBGSUVMRF9OQU1FICgqZmllbGQyKSkp CisJICAgIHJldHVybiAwOworCSAgc3dpdGNoIChGSUVMRF9MT0NfS0lORCAo KmZpZWxkMSkpCisJICAgIHsKKwkgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9C SVRQT1M6CisJICAgICAgaWYgKEZJRUxEX0JJVFBPUyAoKmZpZWxkMSkgIT0g RklFTERfQklUUE9TICgqZmllbGQyKSkKKwkJcmV0dXJuIDA7CisJICAgICAg YnJlYWs7CisJICAgIGNhc2UgRklFTERfTE9DX0tJTkRfRU5VTVZBTDoKKwkg ICAgICBpZiAoRklFTERfRU5VTVZBTCAoKmZpZWxkMSkgIT0gRklFTERfRU5V TVZBTCAoKmZpZWxkMikpCisJCXJldHVybiAwOworCSAgICAgIGJyZWFrOwor CSAgICBjYXNlIEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSOgorCSAgICAgIGlm IChGSUVMRF9TVEFUSUNfUEhZU0FERFIgKCpmaWVsZDEpCisJCSAgIT0gRklF TERfU1RBVElDX1BIWVNBRERSICgqZmllbGQyKSkKKwkJcmV0dXJuIDA7CisJ ICAgICAgYnJlYWs7CisJICAgIGNhc2UgRklFTERfTE9DX0tJTkRfUEhZU05B TUU6CisJICAgICAgaWYgKCFjb21wYXJlX21heWJlX251bGxfc3RyaW5ncyAo RklFTERfU1RBVElDX1BIWVNOQU1FICgqZmllbGQxKSwKKwkJCQkJICAgICAg IEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAoKmZpZWxkMikpKQorCQlyZXR1cm4g MDsKKwkgICAgICBicmVhazsKKwkgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9E V0FSRl9CTE9DSzoKKwkgICAgICB7CisJCXN0cnVjdCBkd2FyZjJfbG9jZXhw cl9iYXRvbiAqYmxvY2sxLCAqYmxvY2syOworCisJCWJsb2NrMSA9IEZJRUxE X0RXQVJGX0JMT0NLICgqZmllbGQxKTsKKwkJYmxvY2syID0gRklFTERfRFdB UkZfQkxPQ0sgKCpmaWVsZDIpOworCQlpZiAoYmxvY2sxLT5wZXJfY3UgIT0g YmxvY2syLT5wZXJfY3UKKwkJICAgIHx8IGJsb2NrMS0+c2l6ZSAhPSBibG9j azItPnNpemUKKwkJICAgIHx8IG1lbWNtcCAoYmxvY2sxLT5kYXRhLCBibG9j azItPmRhdGEsIGJsb2NrMS0+c2l6ZSkgIT0gMCkKKwkJICByZXR1cm4gMDsK KwkgICAgICB9CisJICAgICAgYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJICAg ICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywgXygiVW5z dXBwb3J0ZWQgZmllbGQga2luZCAiCisJCQkJCQkgICAgIiVkIGJ5IGNoZWNr X3R5cGVzX2VxdWFsIiksCisJCQkgICAgICBGSUVMRF9MT0NfS0lORCAoKmZp ZWxkMSkpOworCSAgICB9CisKKwkgIGVudHJ5LnR5cGUxID0gRklFTERfVFlQ RSAoKmZpZWxkMSk7CisJICBlbnRyeS50eXBlMiA9IEZJRUxEX1RZUEUgKCpm aWVsZDIpOworCSAgVkVDX3NhZmVfcHVzaCAodHlwZV9lcXVhbGl0eV9lbnRy eV9kLCAqd29ya2xpc3QsICZlbnRyeSk7CisJfQorICAgIH0KKworICBpZiAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZTEpICE9IE5VTEwpCisgICAgeworICAg ICAgc3RydWN0IHR5cGVfZXF1YWxpdHlfZW50cnkgZW50cnk7CisKKyAgICAg IGlmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlMikgPT0gTlVMTCkKKwlyZXR1 cm4gMDsKKworICAgICAgZW50cnkudHlwZTEgPSBUWVBFX1RBUkdFVF9UWVBF ICh0eXBlMSk7CisgICAgICBlbnRyeS50eXBlMiA9IFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUyKTsKKyAgICAgIFZFQ19zYWZlX3B1c2ggKHR5cGVfZXF1YWxp dHlfZW50cnlfZCwgKndvcmtsaXN0LCAmZW50cnkpOworICAgIH0KKyAgZWxz ZSBpZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZTIpICE9IE5VTEwpCisgICAg cmV0dXJuIDA7CisKKyAgcmV0dXJuIDE7Cit9CisKKy8qIENoZWNrIHR5cGVz IG9uIGEgd29ya2xpc3QgZm9yIGVxdWFsaXR5LiAgUmV0dXJucyB6ZXJvIGlm IGFueSBwYWlyCisgICBpcyBub3QgZXF1YWwsIG5vbi16ZXJvIGlmIHRoZXkg YXJlIGFsbCBjb25zaWRlcmVkIGVxdWFsLiAgKi8KKworc3RhdGljIGludAor Y2hlY2tfdHlwZXNfd29ya2xpc3QgKFZFQyAodHlwZV9lcXVhbGl0eV9lbnRy eV9kKSAqKndvcmtsaXN0LAorCQkgICAgICBzdHJ1Y3QgYmNhY2hlICpjYWNo ZSkKK3sKKyAgd2hpbGUgKCFWRUNfZW1wdHkgKHR5cGVfZXF1YWxpdHlfZW50 cnlfZCwgKndvcmtsaXN0KSkKKyAgICB7CisgICAgICBzdHJ1Y3QgdHlwZV9l cXVhbGl0eV9lbnRyeSBlbnRyeTsKKyAgICAgIGludCBhZGRlZDsKKworICAg ICAgZW50cnkgPSAqVkVDX2xhc3QgKHR5cGVfZXF1YWxpdHlfZW50cnlfZCwg KndvcmtsaXN0KTsKKyAgICAgIFZFQ19wb3AgKHR5cGVfZXF1YWxpdHlfZW50 cnlfZCwgKndvcmtsaXN0KTsKKworICAgICAgLyogSWYgdGhlIHR5cGUgcGFp ciBoYXMgYWxyZWFkeSBiZWVuIHZpc2l0ZWQsIHdlIGtub3cgaXQgaXMKKwkg b2suICAqLworICAgICAgYmNhY2hlX2Z1bGwgKCZlbnRyeSwgc2l6ZW9mIChl bnRyeSksIGNhY2hlLCAmYWRkZWQpOworICAgICAgaWYgKCFhZGRlZCkKKwlj b250aW51ZTsKKworICAgICAgaWYgKGNoZWNrX3R5cGVzX2VxdWFsIChlbnRy eS50eXBlMSwgZW50cnkudHlwZTIsIHdvcmtsaXN0KSA9PSAwKQorCXJldHVy biAwOworICAgIH0KKworICByZXR1cm4gMTsKK30KKworLyogUmV0dXJuIG5v bi16ZXJvIGlmIHR5cGVzIFRZUEUxIGFuZCBUWVBFMiBhcmUgZXF1YWwsIGFz IGRldGVybWluZWQgYnkgYQorICAgImRlZXAgY29tcGFyaXNvbiIuICBPdGhl cndpc2UgcmV0dXJuIHplcm8uICAqLworCitpbnQKK3R5cGVzX2RlZXBseV9l cXVhbCAoc3RydWN0IHR5cGUgKnR5cGUxLCBzdHJ1Y3QgdHlwZSAqdHlwZTIp Cit7CisgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsK KyAgaW50IHJlc3VsdCA9IDA7CisgIHN0cnVjdCBiY2FjaGUgKmNhY2hlOwor ICBWRUMgKHR5cGVfZXF1YWxpdHlfZW50cnlfZCkgKndvcmtsaXN0ID0gTlVM TDsKKyAgc3RydWN0IHR5cGVfZXF1YWxpdHlfZW50cnkgZW50cnk7CisKKyAg LyogRWFybHkgZXhpdCBmb3IgdGhlIHNpbXBsZSBjYXNlLiAgKi8KKyAgaWYg KHR5cGUxID09IHR5cGUyKQorICAgIHJldHVybiAxOworCisgIGNhY2hlID0g YmNhY2hlX3htYWxsb2MgKE5VTEwsIE5VTEwpOworCisgIGVudHJ5LnR5cGUx ID0gdHlwZTE7CisgIGVudHJ5LnR5cGUyID0gdHlwZTI7CisgIFZFQ19zYWZl X3B1c2ggKHR5cGVfZXF1YWxpdHlfZW50cnlfZCwgd29ya2xpc3QsICZlbnRy eSk7CisKKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkK KyAgICB7CisgICAgICByZXN1bHQgPSBjaGVja190eXBlc193b3JrbGlzdCAo JndvcmtsaXN0LCBjYWNoZSk7CisgICAgfQorICAvKiBjaGVja190eXBlc193 b3JrbGlzdCBjYWxscyBzZXZlcmFsIG5lc3RlZCBoZWxwZXIgZnVuY3Rpb25z LAorICAgICBzb21lIG9mIHdoaWNoIGNhbiByYWlzZSBhIEdEQiBFeGNlcHRp b24sIHNvIHdlIGp1c3QgY2hlY2sKKyAgICAgYW5kIHJldGhyb3cgaGVyZS4g IElmIHRoZXJlIGlzIGEgR0RCIGV4Y2VwdGlvbiwgYSBjb21wYXJpc29uCisg ICAgIGlzIG5vdCBjYXBhYmxlIChvciB0cnVzdGVkKSwgc28gZXhpdC4gICov CisgIGJjYWNoZV94ZnJlZSAoY2FjaGUpOworICBWRUNfZnJlZSAodHlwZV9l cXVhbGl0eV9lbnRyeV9kLCB3b3JrbGlzdCk7CisgIC8qIFJldGhyb3cgaWYg dGhlcmUgd2FzIGEgcHJvYmxlbS4gICovCisgIGlmIChleGNlcHQucmVhc29u IDwgMCkKKyAgICB0aHJvd19leGNlcHRpb24gKGV4Y2VwdCk7CisKKyAgcmV0 dXJuIHJlc3VsdDsKK30KKwwKIC8qIENvbXBhcmUgb25lIHR5cGUgKFBBUk0p IGZvciBjb21wYXRpYmlsaXR5IHdpdGggYW5vdGhlciAoQVJHKS4KICAqIFBB Uk0gaXMgaW50ZW5kZWQgdG8gYmUgdGhlIHBhcmFtZXRlciB0eXBlIG9mIGEg ZnVuY3Rpb247IGFuZAogICogQVJHIGlzIHRoZSBzdXBwbGllZCBhcmd1bWVu dCdzIHR5cGUuICBUaGlzIGZ1bmN0aW9uIHRlc3RzIGlmCmRpZmYgLS1naXQg YS9nZGIvZ2RidHlwZXMuaCBiL2dkYi9nZGJ0eXBlcy5oCmluZGV4IGQ3ZmRl ZGYuLmM3YmVmNWYgMTAwNjQ0Ci0tLSBhL2dkYi9nZGJ0eXBlcy5oCisrKyBi L2dkYi9nZGJ0eXBlcy5oCkBAIC0xNjY0LDQgKzE2NjQsNiBAQCBleHRlcm4g c3RydWN0IHR5cGUgKmNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5 cGUpOwogCiBleHRlcm4gaW50IHR5cGVzX2VxdWFsIChzdHJ1Y3QgdHlwZSAq LCBzdHJ1Y3QgdHlwZSAqKTsKIAorZXh0ZXJuIGludCB0eXBlc19kZWVwbHlf ZXF1YWwgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICopOworCiAjZW5k aWYgLyogR0RCVFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9w eS10eXBlLmMgYi9nZGIvcHl0aG9uL3B5LXR5cGUuYwppbmRleCAzMzdlMzA3 Li42MjhhNzY0IDEwMDY0NAotLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYwor KysgYi9nZGIvcHl0aG9uL3B5LXR5cGUuYwpAQCAtMjgsOCArMjgsNiBAQAog I2luY2x1ZGUgIm9iamZpbGVzLmgiCiAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIK ICNpbmNsdWRlICJ2ZWMuaCIKLSNpbmNsdWRlICJiY2FjaGUuaCIKLSNpbmNs dWRlICJkd2FyZjJsb2MuaCIKICNpbmNsdWRlICJ0eXBlcHJpbnQuaCIKIAog dHlwZWRlZiBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdApAQCAtOTYxLDE3MyAr OTU5LDYgQEAgdHlweV9zdHIgKFB5T2JqZWN0ICpzZWxmKQogICByZXR1cm4g cmVzdWx0OwogfQogCi0vKiBBbiBlbnRyeSBpbiB0aGUgdHlwZS1lcXVhbGl0 eSBiY2FjaGUuICAqLwotCi10eXBlZGVmIHN0cnVjdCB0eXBlX2VxdWFsaXR5 X2VudHJ5Ci17Ci0gIHN0cnVjdCB0eXBlICp0eXBlMSwgKnR5cGUyOwotfSB0 eXBlX2VxdWFsaXR5X2VudHJ5X2Q7Ci0KLURFRl9WRUNfTyAodHlwZV9lcXVh bGl0eV9lbnRyeV9kKTsKLQotLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gY29t cGFyZSB0d28gc3RyaW5ncy4gIFJldHVybnMgMSBpZiB0aGV5IGFyZQotICAg dGhlIHNhbWUsIDAgb3RoZXJ3aXNlLiAgSGFuZGxlcyBOVUxMcyBwcm9wZXJs eS4gICovCi0KLXN0YXRpYyBpbnQKLWNvbXBhcmVfbWF5YmVfbnVsbF9zdHJp bmdzIChjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICp0KQotewotICBpZiAo cyA9PSBOVUxMICYmIHQgIT0gTlVMTCkKLSAgICByZXR1cm4gMDsKLSAgZWxz ZSBpZiAocyAhPSBOVUxMICYmIHQgPT0gTlVMTCkKLSAgICByZXR1cm4gMDsK LSAgZWxzZSBpZiAocyA9PSBOVUxMICYmIHQ9PSBOVUxMKQotICAgIHJldHVy biAxOwotICByZXR1cm4gc3RyY21wIChzLCB0KSA9PSAwOwotfQotCi0vKiBB IGhlbHBlciBmdW5jdGlvbiBmb3IgdHlweV9yaWNoY29tcGFyZSB0aGF0IGNo ZWNrcyB0d28gdHlwZXMgZm9yCi0gICAiZGVlcCIgZXF1YWxpdHkuICBSZXR1 cm5zIFB5X0VRIGlmIHRoZSB0eXBlcyBhcmUgY29uc2lkZXJlZCB0aGUKLSAg IHNhbWUsIFB5X05FIG90aGVyd2lzZS4gICovCi0KLXN0YXRpYyBpbnQKLWNo ZWNrX3R5cGVzX2VxdWFsIChzdHJ1Y3QgdHlwZSAqdHlwZTEsIHN0cnVjdCB0 eXBlICp0eXBlMiwKLQkJICAgVkVDICh0eXBlX2VxdWFsaXR5X2VudHJ5X2Qp ICoqd29ya2xpc3QpCi17Ci0gIENIRUNLX1RZUEVERUYgKHR5cGUxKTsKLSAg Q0hFQ0tfVFlQRURFRiAodHlwZTIpOwotCi0gIGlmICh0eXBlMSA9PSB0eXBl MikKLSAgICByZXR1cm4gUHlfRVE7Ci0KLSAgaWYgKFRZUEVfQ09ERSAodHlw ZTEpICE9IFRZUEVfQ09ERSAodHlwZTIpCi0gICAgICB8fCBUWVBFX0xFTkdU SCAodHlwZTEpICE9IFRZUEVfTEVOR1RIICh0eXBlMikKLSAgICAgIHx8IFRZ UEVfVU5TSUdORUQgKHR5cGUxKSAhPSBUWVBFX1VOU0lHTkVEICh0eXBlMikK LSAgICAgIHx8IFRZUEVfTk9TSUdOICh0eXBlMSkgIT0gVFlQRV9OT1NJR04g KHR5cGUyKQotICAgICAgfHwgVFlQRV9WQVJBUkdTICh0eXBlMSkgIT0gVFlQ RV9WQVJBUkdTICh0eXBlMikKLSAgICAgIHx8IFRZUEVfVkVDVE9SICh0eXBl MSkgIT0gVFlQRV9WRUNUT1IgKHR5cGUyKQotICAgICAgfHwgVFlQRV9OT1RU RVhUICh0eXBlMSkgIT0gVFlQRV9OT1RURVhUICh0eXBlMikKLSAgICAgIHx8 IFRZUEVfSU5TVEFOQ0VfRkxBR1MgKHR5cGUxKSAhPSBUWVBFX0lOU1RBTkNF X0ZMQUdTICh0eXBlMikKLSAgICAgIHx8IFRZUEVfTkZJRUxEUyAodHlwZTEp ICE9IFRZUEVfTkZJRUxEUyAodHlwZTIpKQotICAgIHJldHVybiBQeV9ORTsK LQotICBpZiAoIWNvbXBhcmVfbWF5YmVfbnVsbF9zdHJpbmdzIChUWVBFX1RB R19OQU1FICh0eXBlMSksCi0JCQkJICAgVFlQRV9UQUdfTkFNRSAodHlwZTIp KSkKLSAgICByZXR1cm4gUHlfTkU7Ci0gIGlmICghY29tcGFyZV9tYXliZV9u dWxsX3N0cmluZ3MgKFRZUEVfTkFNRSAodHlwZTEpLCBUWVBFX05BTUUgKHR5 cGUyKSkpCi0gICAgcmV0dXJuIFB5X05FOwotCi0gIGlmIChUWVBFX0NPREUg KHR5cGUxKSA9PSBUWVBFX0NPREVfUkFOR0UpCi0gICAgewotICAgICAgaWYg KG1lbWNtcCAoVFlQRV9SQU5HRV9EQVRBICh0eXBlMSksIFRZUEVfUkFOR0Vf REFUQSAodHlwZTIpLAotCQkgIHNpemVvZiAoKlRZUEVfUkFOR0VfREFUQSAo dHlwZTEpKSkgIT0gMCkKLQlyZXR1cm4gUHlfTkU7Ci0gICAgfQotICBlbHNl Ci0gICAgewotICAgICAgaW50IGk7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkg PCBUWVBFX05GSUVMRFMgKHR5cGUxKTsgKytpKQotCXsKLQkgIGNvbnN0IHN0 cnVjdCBmaWVsZCAqZmllbGQxID0gJlRZUEVfRklFTEQgKHR5cGUxLCBpKTsK LQkgIGNvbnN0IHN0cnVjdCBmaWVsZCAqZmllbGQyID0gJlRZUEVfRklFTEQg KHR5cGUyLCBpKTsKLQkgIHN0cnVjdCB0eXBlX2VxdWFsaXR5X2VudHJ5IGVu dHJ5OwotCi0JICBpZiAoRklFTERfQVJUSUZJQ0lBTCAoKmZpZWxkMSkgIT0g RklFTERfQVJUSUZJQ0lBTCAoKmZpZWxkMikKLQkgICAgICB8fCBGSUVMRF9C SVRTSVpFICgqZmllbGQxKSAhPSBGSUVMRF9CSVRTSVpFICgqZmllbGQyKQot CSAgICAgIHx8IEZJRUxEX0xPQ19LSU5EICgqZmllbGQxKSAhPSBGSUVMRF9M T0NfS0lORCAoKmZpZWxkMikpCi0JICAgIHJldHVybiBQeV9ORTsKLQkgIGlm ICghY29tcGFyZV9tYXliZV9udWxsX3N0cmluZ3MgKEZJRUxEX05BTUUgKCpm aWVsZDEpLAotCQkJCQkgICBGSUVMRF9OQU1FICgqZmllbGQyKSkpCi0JICAg IHJldHVybiBQeV9ORTsKLQkgIHN3aXRjaCAoRklFTERfTE9DX0tJTkQgKCpm aWVsZDEpKQotCSAgICB7Ci0JICAgIGNhc2UgRklFTERfTE9DX0tJTkRfQklU UE9TOgotCSAgICAgIGlmIChGSUVMRF9CSVRQT1MgKCpmaWVsZDEpICE9IEZJ RUxEX0JJVFBPUyAoKmZpZWxkMikpCi0JCXJldHVybiBQeV9ORTsKLQkgICAg ICBicmVhazsKLQkgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9FTlVNVkFMOgot CSAgICAgIGlmIChGSUVMRF9FTlVNVkFMICgqZmllbGQxKSAhPSBGSUVMRF9F TlVNVkFMICgqZmllbGQyKSkKLQkJcmV0dXJuIFB5X05FOwotCSAgICAgIGJy ZWFrOwotCSAgICBjYXNlIEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSOgotCSAg ICAgIGlmIChGSUVMRF9TVEFUSUNfUEhZU0FERFIgKCpmaWVsZDEpCi0JCSAg IT0gRklFTERfU1RBVElDX1BIWVNBRERSICgqZmllbGQyKSkKLQkJcmV0dXJu IFB5X05FOwotCSAgICAgIGJyZWFrOwotCSAgICBjYXNlIEZJRUxEX0xPQ19L SU5EX1BIWVNOQU1FOgotCSAgICAgIGlmICghY29tcGFyZV9tYXliZV9udWxs X3N0cmluZ3MgKEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAoKmZpZWxkMSksCi0J CQkJCSAgICAgICBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKCpmaWVsZDIpKSkK LQkJcmV0dXJuIFB5X05FOwotCSAgICAgIGJyZWFrOwotCSAgICBjYXNlIEZJ RUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLOgotCSAgICAgIHsKLQkJc3RydWN0 IGR3YXJmMl9sb2NleHByX2JhdG9uICpibG9jazEsICpibG9jazI7Ci0KLQkJ YmxvY2sxID0gRklFTERfRFdBUkZfQkxPQ0sgKCpmaWVsZDEpOwotCQlibG9j azIgPSBGSUVMRF9EV0FSRl9CTE9DSyAoKmZpZWxkMik7Ci0JCWlmIChibG9j azEtPnBlcl9jdSAhPSBibG9jazItPnBlcl9jdQotCQkgICAgfHwgYmxvY2sx LT5zaXplICE9IGJsb2NrMi0+c2l6ZQotCQkgICAgfHwgbWVtY21wIChibG9j azEtPmRhdGEsIGJsb2NrMi0+ZGF0YSwgYmxvY2sxLT5zaXplKSAhPSAwKQot CQlyZXR1cm4gUHlfTkU7Ci0JICAgICAgfQotCSAgICAgIGJyZWFrOwotCSAg ICBkZWZhdWx0OgotCSAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywg X19MSU5FX18sIF8oIlVuc3VwcG9ydGVkIGZpZWxkIGtpbmQgIgotCQkJCQkJ ICAgICIlZCBieSBjaGVja190eXBlc19lcXVhbCIpLAotCQkJICAgICAgRklF TERfTE9DX0tJTkQgKCpmaWVsZDEpKTsKLQkgICAgfQotCi0JICBlbnRyeS50 eXBlMSA9IEZJRUxEX1RZUEUgKCpmaWVsZDEpOwotCSAgZW50cnkudHlwZTIg PSBGSUVMRF9UWVBFICgqZmllbGQyKTsKLQkgIFZFQ19zYWZlX3B1c2ggKHR5 cGVfZXF1YWxpdHlfZW50cnlfZCwgKndvcmtsaXN0LCAmZW50cnkpOwotCX0K LSAgICB9Ci0KLSAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUxKSAhPSBO VUxMKQotICAgIHsKLSAgICAgIHN0cnVjdCB0eXBlX2VxdWFsaXR5X2VudHJ5 IGVudHJ5OwotCi0gICAgICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZTIp ID09IE5VTEwpCi0JcmV0dXJuIFB5X05FOwotCi0gICAgICBlbnRyeS50eXBl MSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUxKTsKLSAgICAgIGVudHJ5LnR5 cGUyID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZTIpOwotICAgICAgVkVDX3Nh ZmVfcHVzaCAodHlwZV9lcXVhbGl0eV9lbnRyeV9kLCAqd29ya2xpc3QsICZl bnRyeSk7Ci0gICAgfQotICBlbHNlIGlmIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlMikgIT0gTlVMTCkKLSAgICByZXR1cm4gUHlfTkU7Ci0KLSAgcmV0dXJu IFB5X0VROwotfQotCi0vKiBDaGVjayB0eXBlcyBvbiBhIHdvcmtsaXN0IGZv ciBlcXVhbGl0eS4gIFJldHVybnMgUHlfTkUgaWYgYW55IHBhaXIKLSAgIGlz IG5vdCBlcXVhbCwgUHlfRVEgaWYgdGhleSBhcmUgYWxsIGNvbnNpZGVyZWQg ZXF1YWwuICAqLwotCi1zdGF0aWMgaW50Ci1jaGVja190eXBlc193b3JrbGlz dCAoVkVDICh0eXBlX2VxdWFsaXR5X2VudHJ5X2QpICoqd29ya2xpc3QsCi0J CSAgICAgIHN0cnVjdCBiY2FjaGUgKmNhY2hlKQotewotICB3aGlsZSAoIVZF Q19lbXB0eSAodHlwZV9lcXVhbGl0eV9lbnRyeV9kLCAqd29ya2xpc3QpKQot ICAgIHsKLSAgICAgIHN0cnVjdCB0eXBlX2VxdWFsaXR5X2VudHJ5IGVudHJ5 OwotICAgICAgaW50IGFkZGVkOwotCi0gICAgICBlbnRyeSA9ICpWRUNfbGFz dCAodHlwZV9lcXVhbGl0eV9lbnRyeV9kLCAqd29ya2xpc3QpOwotICAgICAg VkVDX3BvcCAodHlwZV9lcXVhbGl0eV9lbnRyeV9kLCAqd29ya2xpc3QpOwot Ci0gICAgICAvKiBJZiB0aGUgdHlwZSBwYWlyIGhhcyBhbHJlYWR5IGJlZW4g dmlzaXRlZCwgd2Uga25vdyBpdCBpcwotCSBvay4gICovCi0gICAgICBiY2Fj aGVfZnVsbCAoJmVudHJ5LCBzaXplb2YgKGVudHJ5KSwgY2FjaGUsICZhZGRl ZCk7Ci0gICAgICBpZiAoIWFkZGVkKQotCWNvbnRpbnVlOwotCi0gICAgICBp ZiAoY2hlY2tfdHlwZXNfZXF1YWwgKGVudHJ5LnR5cGUxLCBlbnRyeS50eXBl Miwgd29ya2xpc3QpID09IFB5X05FKQotCXJldHVybiBQeV9ORTsKLSAgICB9 Ci0KLSAgcmV0dXJuIFB5X0VROwotfQotCiAvKiBJbXBsZW1lbnQgdGhlIHJp Y2hjb21wYXJlIG1ldGhvZC4gICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBA IC0xMTUwLDMwICs5ODEsMTYgQEAgdHlweV9yaWNoY29tcGFyZSAoUHlPYmpl Y3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQogICAgIHJlc3Vs dCA9IFB5X0VROwogICBlbHNlCiAgICAgewotICAgICAgc3RydWN0IGJjYWNo ZSAqY2FjaGU7Ci0gICAgICBWRUMgKHR5cGVfZXF1YWxpdHlfZW50cnlfZCkg KndvcmtsaXN0ID0gTlVMTDsKLSAgICAgIHN0cnVjdCB0eXBlX2VxdWFsaXR5 X2VudHJ5IGVudHJ5OwotCi0gICAgICBjYWNoZSA9IGJjYWNoZV94bWFsbG9j IChOVUxMLCBOVUxMKTsKLQotICAgICAgZW50cnkudHlwZTEgPSB0eXBlMTsK LSAgICAgIGVudHJ5LnR5cGUyID0gdHlwZTI7Ci0gICAgICBWRUNfc2FmZV9w dXNoICh0eXBlX2VxdWFsaXR5X2VudHJ5X2QsIHdvcmtsaXN0LCAmZW50cnkp OwotCiAgICAgICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxM KQogCXsKLQkgIHJlc3VsdCA9IGNoZWNrX3R5cGVzX3dvcmtsaXN0ICgmd29y a2xpc3QsIGNhY2hlKTsKKwkgIHJlc3VsdCA9IHR5cGVzX2RlZXBseV9lcXVh bCAodHlwZTEsIHR5cGUyKTsKIAl9Ci0gICAgICAvKiBjaGVja190eXBlc193 b3JrbGlzdCBjYWxscyBzZXZlcmFsIG5lc3RlZCBQeXRob24gaGVscGVyCi0J IGZ1bmN0aW9ucywgc29tZSBvZiB3aGljaCBjYW4gcmFpc2UgYSBHREIgRXhj ZXB0aW9uLCBzbyB3ZQotCSBqdXN0IGNoZWNrIGFuZCBjb252ZXJ0IGhlcmUu ICBJZiB0aGVyZSBpcyBhIEdEQiBleGNlcHRpb24sIGEKLQkgY29tcGFyaXNv biBpcyBub3QgY2FwYWJsZSAob3IgdHJ1c3RlZCksIHNvIGV4aXQuICAqLwot ICAgICAgYmNhY2hlX3hmcmVlIChjYWNoZSk7Ci0gICAgICBWRUNfZnJlZSAo dHlwZV9lcXVhbGl0eV9lbnRyeV9kLCB3b3JrbGlzdCk7CisgICAgICAvKiBJ ZiB0aGVyZSBpcyBhIEdEQiBleGNlcHRpb24sIGEgY29tcGFyaXNvbiBpcyBu b3QgY2FwYWJsZQorCSAob3IgdHJ1c3RlZCksIHNvIGV4aXQuICAqLwogICAg ICAgR0RCX1BZX0hBTkRMRV9FWENFUFRJT04gKGV4Y2VwdCk7CiAgICAgfQog Ci0gIGlmIChvcCA9PSByZXN1bHQpCisgIGlmIChvcCA9PSAocmVzdWx0ID8g UHlfRVEgOiBQeV9ORSkpCiAgICAgUHlfUkVUVVJOX1RSVUU7CiAgIFB5X1JF VFVSTl9GQUxTRTsKIH0K --f46d043890857b606904ea8516df--