From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Iob9c-0003OJ-7c for qemu-devel@nongnu.org; Sun, 04 Nov 2007 03:48:24 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Iob9X-0003Nw-9T for qemu-devel@nongnu.org; Sun, 04 Nov 2007 03:48:23 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Iob9X-0003Np-4e for qemu-devel@nongnu.org; Sun, 04 Nov 2007 03:48:19 -0500 Received: from nf-out-0910.google.com ([64.233.182.191]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Iob9W-0007LF-Dn for qemu-devel@nongnu.org; Sun, 04 Nov 2007 03:48:18 -0500 Received: by nf-out-0910.google.com with SMTP id 30so1028145nfu for ; Sun, 04 Nov 2007 01:48:17 -0700 (PDT) Message-ID: Date: Sun, 4 Nov 2007 10:48:17 +0200 From: "Blue Swirl" Subject: Re: [Qemu-devel] How to split vl.h In-Reply-To: <4729B592.5080006@bellard.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_23171_27613368.1194166097274" References: <4729B592.5080006@bellard.org> Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_23171_27613368.1194166097274 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 11/1/07, Fabrice Bellard wrote: > Blue Swirl wrote: > > Hi, > > > > With the automatic dependency rule installed, modifying vl.h causes > > all files to be recompiled. This is of course the correct action, but > > it's a major slowdown for development too. > > There must be an option in the Makefile to disable the automatic > dependency check. > > > How should we split vl.h into smaller pieces? Give each device a > > header file, like m48t59? What about other stuff exported from vl.c? > > The net result is that you will have dozens of header files with only > one line in them as most devices only export one function. I have another solution: include all architecture specific files from the main file. This actually makes the compilation faster and the resulting binary is smaller (maybe faster). Changing the architecture specific code needs no changes to vl.h, just a recompile of sun4m.c, but this is instantaneous on my machine. Automatic dependencies also handle this case. I guess some may find this style pretty ugly. Similar approach could be taken with the network adapters, sound cards, Slirp (for the speed, not vl.h effect) etc. by introducing .c files that include all the others. ------=_Part_23171_27613368.1194166097274 Content-Type: text/x-diff; name=sun4m_include_code.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_f8lbaufc Content-Disposition: attachment; filename=sun4m_include_code.diff SW5kZXg6IHFlbXUvTWFrZWZpbGUudGFyZ2V0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUub3JpZy9NYWtl ZmlsZS50YXJnZXQJMjAwNy0xMS0wNCAwODoxNzowMC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUv TWFrZWZpbGUudGFyZ2V0CTIwMDctMTEtMDQgMDg6MjA6NDEuMDAwMDAwMDAwICswMDAwCkBAIC01 MDUsOSArNTA1LDcgQEAKIFZMX09CSlMrPSBmZGMubyBtYzE0NjgxOHJ0Yy5vIHNlcmlhbC5vIG00 OHQ1OS5vCiBWTF9PQkpTKz0gY2lycnVzX3ZnYS5vIHBhcmFsbGVsLm8gcHRpbWVyLm8KIGVsc2UK LVZMX09CSlMrPSBzdW40bS5vIHRjeC5vIHBjbmV0Lm8gaW9tbXUubyBtNDh0NTkubyBzbGF2aW9f aW50Y3RsLm8KLVZMX09CSlMrPSBzbGF2aW9fdGltZXIubyBzbGF2aW9fc2VyaWFsLm8gc2xhdmlv X21pc2MubyBmZGMubyBlc3AubyBzcGFyYzMyX2RtYS5vCi1WTF9PQkpTKz0gY3M0MjMxLm8gcHRp bWVyLm8KK1ZMX09CSlMrPSBzdW40bS5vCiBlbmRpZgogZW5kaWYKIGlmZXEgKCQoVEFSR0VUX0JB U0VfQVJDSCksIGFybSkKSW5kZXg6IHFlbXUvaHcvY3M0MjMxLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVt dS5vcmlnL2h3L2NzNDIzMS5jCTIwMDctMTEtMDQgMDg6MTc6MDAuMDAwMDAwMDAwICswMDAwCisr KyBxZW11L2h3L2NzNDIzMS5jCTIwMDctMTEtMDQgMDg6MjA6NDEuMDAwMDAwMDAwICswMDAwCkBA IC0xNjQsNyArMTY0LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBjc19pbml0KHRhcmdl dF9waHlzX2FkZHJfdCBiYXNlLCBpbnQgaXJxLCB2b2lkICppbnRjdGwpCitzdGF0aWMgdm9pZCBj c19pbml0KHRhcmdldF9waHlzX2FkZHJfdCBiYXNlLCBpbnQgaXJxLCB2b2lkICppbnRjdGwpCiB7 CiAgICAgaW50IGNzX2lvX21lbW9yeTsKICAgICBDU1N0YXRlICpzOwpJbmRleDogcWVtdS9ody9l c3AuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvZXNwLmMJMjAwNy0xMS0wNCAwODoxNzow MC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvZXNwLmMJMjAwNy0xMS0wNCAwODoyMDo0MS4w MDAwMDAwMDAgKzAwMDAKQEAgLTU1MSw3ICs1NTEsNyBAQAogICAgIHJldHVybiAwOwogfQogCi12 b2lkIGVzcF9zY3NpX2F0dGFjaCh2b2lkICpvcGFxdWUsIEJsb2NrRHJpdmVyU3RhdGUgKmJkLCBp bnQgaWQpCitzdGF0aWMgdm9pZCBlc3Bfc2NzaV9hdHRhY2godm9pZCAqb3BhcXVlLCBCbG9ja0Ry aXZlclN0YXRlICpiZCwgaW50IGlkKQogewogICAgIEVTUFN0YXRlICpzID0gKEVTUFN0YXRlICop b3BhcXVlOwogCkBAIC01NzQsOCArNTc0LDggQEAKICAgICBzLT5zY3NpX2RldltpZF0gPSBzY3Np X2Rpc2tfaW5pdChiZCwgMCwgZXNwX2NvbW1hbmRfY29tcGxldGUsIHMpOwogfQogCi12b2lkICpl c3BfaW5pdChCbG9ja0RyaXZlclN0YXRlICoqYmQsIHRhcmdldF9waHlzX2FkZHJfdCBlc3BhZGRy LAotICAgICAgICAgICAgICAgdm9pZCAqZG1hX29wYXF1ZSwgcWVtdV9pcnEgaXJxLCBxZW11X2ly cSAqcmVzZXQpCitzdGF0aWMgdm9pZCAqZXNwX2luaXQoQmxvY2tEcml2ZXJTdGF0ZSAqKmJkLCB0 YXJnZXRfcGh5c19hZGRyX3QgZXNwYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICB2b2lkICpk bWFfb3BhcXVlLCBxZW11X2lycSBpcnEsIHFlbXVfaXJxICpyZXNldCkKIHsKICAgICBFU1BTdGF0 ZSAqczsKICAgICBpbnQgZXNwX2lvX21lbW9yeTsKSW5kZXg6IHFlbXUvaHcvaW9tbXUuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvaW9tbXUuYwkyMDA3LTExLTA0IDA4OjE3OjAwLjAwMDAw MDAwMCArMDAwMAorKysgcWVtdS9ody9pb21tdS5jCTIwMDctMTEtMDQgMDg6MjA6NDEuMDAwMDAw MDAwICswMDAwCkBAIC0yNDQsOCArMjQ0LDggQEAKICAgICBzLT5yZWdzW0lPTU1VX0FGQVJdID0g YWRkcjsKIH0KIAotdm9pZCBzcGFyY19pb21tdV9tZW1vcnlfcncodm9pZCAqb3BhcXVlLCB0YXJn ZXRfcGh5c19hZGRyX3QgYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3Qg KmJ1ZiwgaW50IGxlbiwgaW50IGlzX3dyaXRlKQorc3RhdGljIHZvaWQgc3BhcmNfaW9tbXVfbWVt b3J5X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQgbGVuLCBpbnQgaXNfd3Jp dGUpCiB7CiAgICAgaW50IGw7CiAgICAgdWludDMyX3QgZmxhZ3M7CkBAIC0zMTEsNyArMzExLDcg QEAKICAgICBzLT5yZWdzW0lPTU1VX0NUUkxdID0gSU9NTVVfVkVSU0lPTjsKIH0KIAotdm9pZCAq aW9tbXVfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYWRkcikKK3N0YXRpYyB2b2lkICppb21tdV9p bml0KHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKQogewogICAgIElPTU1VU3RhdGUgKnM7CiAgICAg aW50IGlvbW11X2lvX21lbW9yeTsKSW5kZXg6IHFlbXUvaHcvc2xhdmlvX2ludGN0bC5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHFlbXUub3JpZy9ody9zbGF2aW9faW50Y3RsLmMJMjAwNy0xMS0wNCAwODoxNzow MC4wMDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvc2xhdmlvX2ludGN0bC5jCTIwMDctMTEtMDQg MDg6MjA6NDEuMDAwMDAwMDAwICswMDAwCkBAIC0yMDEsNyArMjAxLDcgQEAKICAgICBzbGF2aW9f aW50Y3RsbV9tZW1fd3JpdGVsLAogfTsKIAotdm9pZCBzbGF2aW9fcGljX2luZm8odm9pZCAqb3Bh cXVlKQorc3RhdGljIHZvaWQgc2xhdmlvX3BpY19pbmZvKHZvaWQgKm9wYXF1ZSkKIHsKICAgICBT TEFWSU9fSU5UQ1RMU3RhdGUgKnMgPSBvcGFxdWU7CiAgICAgaW50IGk7CkBAIC0yMTIsNyArMjEy LDcgQEAKICAgICB0ZXJtX3ByaW50ZigibWFzdGVyOiBwZW5kaW5nIDB4JTA4eCwgZGlzYWJsZWQg MHglMDh4XG4iLCBzLT5pbnRyZWdtX3BlbmRpbmcsIHMtPmludHJlZ21fZGlzYWJsZWQpOwogfQog Ci12b2lkIHNsYXZpb19pcnFfaW5mbyh2b2lkICpvcGFxdWUpCitzdGF0aWMgdm9pZCBzbGF2aW9f aXJxX2luZm8odm9pZCAqb3BhcXVlKQogewogI2lmbmRlZiBERUJVR19JUlFfQ09VTlQKICAgICB0 ZXJtX3ByaW50ZigiaXJxIHN0YXRpc3RpYyBjb2RlIG5vdCBjb21waWxlZC5cbiIpOwpAQCAtMzQ5 LDEwICszNDksMTEgQEAKICAgICBzbGF2aW9fY2hlY2tfaW50ZXJydXB0cyhzKTsKIH0KIAotdm9p ZCAqc2xhdmlvX2ludGN0bF9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLCB0YXJnZXRfcGh5 c19hZGRyX3QgYWRkcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3Qg KmludGJpdF90b19sZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBxZW11X2lycSAqKmly cSwgcWVtdV9pcnEgKipjcHVfaXJxLAotICAgICAgICAgICAgICAgICAgICAgICAgIHFlbXVfaXJx ICoqcGFyZW50X2lycSwgdW5zaWduZWQgaW50IGNwdXRpbWVyKQorc3RhdGljIHZvaWQgKnNsYXZp b19pbnRjdGxfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHJnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqaW50Yml0X3RvX2xldmVsLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBxZW11X2lycSAqKmlycSwgcWVtdV9pcnEgKipjcHVf aXJxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxZW11X2lycSAqKnBhcmVudF9p cnEsIHVuc2lnbmVkIGludCBjcHV0aW1lcikKIHsKICAgICBpbnQgc2xhdmlvX2ludGN0bF9pb19t ZW1vcnksIHNsYXZpb19pbnRjdGxtX2lvX21lbW9yeSwgaTsKICAgICBTTEFWSU9fSU5UQ1RMU3Rh dGUgKnM7CkluZGV4OiBxZW11L2h3L3NsYXZpb19taXNjLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcWVtdS5v cmlnL2h3L3NsYXZpb19taXNjLmMJMjAwNy0xMS0wNCAwODoxNzowMC4wMDAwMDAwMDAgKzAwMDAK KysrIHFlbXUvaHcvc2xhdmlvX21pc2MuYwkyMDA3LTExLTA0IDA4OjIwOjQxLjAwMDAwMDAwMCAr MDAwMApAQCAtNzAsNyArNzAsNyBAQAogICAgIHMtPmNvbmZpZyA9IHMtPmF1eDEgPSBzLT5hdXgy ID0gcy0+bWN0cmwgPSAwOwogfQogCi12b2lkIHNsYXZpb19zZXRfcG93ZXJfZmFpbCh2b2lkICpv cGFxdWUsIGludCBwb3dlcl9mYWlsaW5nKQorc3RhdGljIHZvaWQgc2xhdmlvX3NldF9wb3dlcl9m YWlsKHZvaWQgKm9wYXF1ZSwgaW50IHBvd2VyX2ZhaWxpbmcpCiB7CiAgICAgTWlzY1N0YXRlICpz ID0gb3BhcXVlOwogCkBAIC0yMTIsOCArMjEyLDkgQEAKICAgICByZXR1cm4gMDsKIH0KIAotdm9p ZCAqc2xhdmlvX21pc2NfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYmFzZSwgdGFyZ2V0X3BoeXNf YWRkcl90IHBvd2VyX2Jhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgIHFlbXVfaXJxIGlycSkK K3N0YXRpYyB2b2lkICpzbGF2aW9fbWlzY19pbml0KHRhcmdldF9waHlzX2FkZHJfdCBiYXNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3BoeXNfYWRkcl90IHBvd2VyX2Jh c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxZW11X2lycSBpcnEpCiB7CiAgICAg aW50IHNsYXZpb19taXNjX2lvX21lbW9yeTsKICAgICBNaXNjU3RhdGUgKnM7CkluZGV4OiBxZW11 L2h3L3NsYXZpb19zZXJpYWwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvaHcvc2xhdmlvX3Nl cmlhbC5jCTIwMDctMTEtMDQgMDg6MTc6MDAuMDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3Ns YXZpb19zZXJpYWwuYwkyMDA3LTExLTA0IDA4OjIwOjQxLjAwMDAwMDAwMCArMDAwMApAQCAtNTkw LDggKzU5MCw5IEBACiAKIH0KIAotU2VyaWFsU3RhdGUgKnNsYXZpb19zZXJpYWxfaW5pdCh0YXJn ZXRfcGh5c19hZGRyX3QgYmFzZSwgcWVtdV9pcnEgaXJxLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDaGFyRHJpdmVyU3RhdGUgKmNocjEsIENoYXJEcml2ZXJTdGF0ZSAqY2hyMikK K3N0YXRpYyBTZXJpYWxTdGF0ZSAqc2xhdmlvX3NlcmlhbF9pbml0KHRhcmdldF9waHlzX2FkZHJf dCBiYXNlLCBxZW11X2lycSBpcnEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBDaGFyRHJpdmVyU3RhdGUgKmNocjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBDaGFyRHJpdmVyU3RhdGUgKmNocjIpCiB7CiAgICAgaW50IHNsYXZpb19zZXJp YWxfaW9fbWVtb3J5LCBpOwogICAgIFNlcmlhbFN0YXRlICpzOwpAQCAtNzU5LDcgKzc2MCw3IEBA CiAgICAgcHV0X3F1ZXVlKHMsIDApOwogfQogCi12b2lkIHNsYXZpb19zZXJpYWxfbXNfa2JkX2lu aXQodGFyZ2V0X3BoeXNfYWRkcl90IGJhc2UsIHFlbXVfaXJxIGlycSkKK3N0YXRpYyB2b2lkIHNs YXZpb19zZXJpYWxfbXNfa2JkX2luaXQodGFyZ2V0X3BoeXNfYWRkcl90IGJhc2UsIHFlbXVfaXJx IGlycSkKIHsKICAgICBpbnQgc2xhdmlvX3NlcmlhbF9pb19tZW1vcnksIGk7CiAgICAgU2VyaWFs U3RhdGUgKnM7CkluZGV4OiBxZW11L2h3L3NsYXZpb190aW1lci5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFl bXUub3JpZy9ody9zbGF2aW9fdGltZXIuYwkyMDA3LTExLTA0IDA4OjE3OjAwLjAwMDAwMDAwMCAr MDAwMAorKysgcWVtdS9ody9zbGF2aW9fdGltZXIuYwkyMDA3LTExLTA0IDA4OjIwOjQxLjAwMDAw MDAwMCArMDAwMApAQCAtMzI1LDggKzMyNSw4IEBACiAgICAgcmV0dXJuIHM7CiB9CiAKLXZvaWQg c2xhdmlvX3RpbWVyX2luaXRfYWxsKHRhcmdldF9waHlzX2FkZHJfdCBiYXNlLCBxZW11X2lycSBt YXN0ZXJfaXJxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9pcnEgKmNwdV9pcnFz KQorc3RhdGljIHZvaWQgc2xhdmlvX3RpbWVyX2luaXRfYWxsKHRhcmdldF9waHlzX2FkZHJfdCBi YXNlLCBxZW11X2lycSBtYXN0ZXJfaXJxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHFlbXVfaXJxICpjcHVfaXJxcykKIHsKICAgICBTTEFWSU9fVElNRVJTdGF0ZSAqbWFzdGVy OwogICAgIHVuc2lnbmVkIGludCBpOwpJbmRleDogcWVtdS9ody9zcGFyYzMyX2RtYS5jCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHFlbXUub3JpZy9ody9zcGFyYzMyX2RtYS5jCTIwMDctMTEtMDQgMDg6MTc6MDAu MDAwMDAwMDAwICswMDAwCisrKyBxZW11L2h3L3NwYXJjMzJfZG1hLmMJMjAwNy0xMS0wNCAwODoy MDo0MS4wMDAwMDAwMDAgKzAwMDAKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIH0KIH0KIAotdm9p ZCBlc3BkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4p CitzdGF0aWMgdm9pZCBlc3BkbWFfbWVtb3J5X3JlYWQodm9pZCAqb3BhcXVlLCB1aW50OF90ICpi dWYsIGludCBsZW4pCiB7CiAgICAgRE1BU3RhdGUgKnMgPSBvcGFxdWU7CiAKQEAgLTEzOSw3ICsx MzksNyBAQAogICAgIHMtPmRtYXJlZ3NbMV0gKz0gbGVuOwogfQogCi12b2lkIGVzcGRtYV9tZW1v cnlfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4pCitzdGF0aWMgdm9p ZCBlc3BkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqYnVmLCBpbnQgbGVu KQogewogICAgIERNQVN0YXRlICpzID0gb3BhcXVlOwogCkBAIC0yMzcsNyArMjM3LDcgQEAKICAg ICByZXR1cm4gMDsKIH0KIAotdm9pZCAqc3BhcmMzMl9kbWFfaW5pdCh0YXJnZXRfcGh5c19hZGRy X3QgZGFkZHIsIHFlbXVfaXJxIHBhcmVudF9pcnEsCitzdGF0aWMgdm9pZCAqc3BhcmMzMl9kbWFf aW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgZGFkZHIsIHFlbXVfaXJxIHBhcmVudF9pcnEsCiAgICAg ICAgICAgICAgICAgICAgICAgIHZvaWQgKmlvbW11LCBxZW11X2lycSAqKmRldl9pcnEsIHFlbXVf aXJxICoqcmVzZXQpCiB7CiAgICAgRE1BU3RhdGUgKnM7CkluZGV4OiBxZW11L2h3L3N1bjRtLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcWVtdS5vcmlnL2h3L3N1bjRtLmMJMjAwNy0xMS0wNCAwODoxNzowMC4w MDAwMDAwMDAgKzAwMDAKKysrIHFlbXUvaHcvc3VuNG0uYwkyMDA3LTExLTA0IDA4OjIwOjQxLjAw MDAwMDAwMCArMDAwMApAQCAtMjIsNiArMjIsNDAgQEAKICAqIFRIRSBTT0ZUV0FSRS4KICAqLwog I2luY2x1ZGUgInZsLmgiCisvKiBpb21tdS5jICovCitzdGF0aWMgdm9pZCBzcGFyY19pb21tdV9t ZW1vcnlfcncodm9pZCAqb3BhcXVlLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4sIGludCBpc193 cml0ZSk7CitzdGF0aWMgaW5saW5lIHZvaWQgc3BhcmNfaW9tbXVfbWVtb3J5X3JlYWQodm9pZCAq b3BhcXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl dF9waHlzX2FkZHJfdCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKK3sKKyAgICBzcGFyY19pb21tdV9tZW1vcnlf cncob3BhcXVlLCBhZGRyLCBidWYsIGxlbiwgMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBz cGFyY19pb21tdV9tZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYnVmLCBpbnQg bGVuKQoreworICAgIHNwYXJjX2lvbW11X21lbW9yeV9ydyhvcGFxdWUsIGFkZHIsIGJ1ZiwgbGVu LCAxKTsKK30KKworLyogc3BhcmMzMl9kbWEuYyAqLworc3RhdGljIHZvaWQgZXNwZG1hX21lbW9y eV9yZWFkKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqYnVmLCBpbnQgbGVuKTsKK3N0YXRpYyB2b2lk IGVzcGRtYV9tZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4p OworCisjaW5jbHVkZSAidGN4LmMiCisjaW5jbHVkZSAiaW9tbXUuYyIKKyNpbmNsdWRlICJtNDh0 NTkuYyIKKyNpbmNsdWRlICJzbGF2aW9faW50Y3RsLmMiCisjaW5jbHVkZSAic2xhdmlvX3RpbWVy LmMiCisjaW5jbHVkZSAic2xhdmlvX3NlcmlhbC5jIgorI2luY2x1ZGUgInNsYXZpb19taXNjLmMi CisjaW5jbHVkZSAiZmRjLmMiCisjaW5jbHVkZSAiZXNwLmMiCisjaW5jbHVkZSAic3BhcmMzMl9k bWEuYyIKKyNpbmNsdWRlICJjczQyMzEuYyIKKyNpbmNsdWRlICJwdGltZXIuYyIKKwogLy8jZGVm aW5lIERFQlVHX0lSUQogCiAvKgpJbmRleDogcWVtdS9ody90Y3guYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBx ZW11Lm9yaWcvaHcvdGN4LmMJMjAwNy0xMS0wNCAwODoxNzowMC4wMDAwMDAwMDAgKzAwMDAKKysr IHFlbXUvaHcvdGN4LmMJMjAwNy0xMS0wNCAwODoyMDo0MS4wMDAwMDAwMDAgKzAwMDAKQEAgLTQ4 OCw5ICs0ODgsMTAgQEAKICAgICB0Y3hfZHVtbXlfd3JpdGVsLAogfTsKIAotdm9pZCB0Y3hfaW5p dChEaXNwbGF5U3RhdGUgKmRzLCB0YXJnZXRfcGh5c19hZGRyX3QgYWRkciwgdWludDhfdCAqdnJh bV9iYXNlLAotICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZyYW1fb2Zmc2V0LCBpbnQgdnJh bV9zaXplLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgIGludCBkZXB0aCkK K3N0YXRpYyB2b2lkIHRjeF9pbml0KERpc3BsYXlTdGF0ZSAqZHMsIHRhcmdldF9waHlzX2FkZHJf dCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqdnJhbV9iYXNlLAorICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2cmFtX29mZnNldCwgaW50IHZyYW1fc2l6ZSwK KyAgICAgICAgICAgICAgICAgICAgIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGRlcHRoKQog ewogICAgIFRDWFN0YXRlICpzOwogICAgIGludCBpb19tZW1vcnksIGR1bW15X21lbW9yeTsKSW5k ZXg6IHFlbXUvdmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBxZW11Lm9yaWcvdmwuaAkyMDA3LTExLTA0IDA4 OjE3OjAwLjAwMDAwMDAwMCArMDAwMAorKysgcWVtdS92bC5oCTIwMDctMTEtMDQgMDg6MjA6NDEu MDAwMDAwMDAwICswMDAwCkBAIC0xMjQ1LDM3ICsxMjQ1LDYgQEAKIC8qIHN1bjRtLmMgKi8KIGV4 dGVybiBRRU1VTWFjaGluZSBzczVfbWFjaGluZSwgc3MxMF9tYWNoaW5lOwogCi0vKiBpb21tdS5j ICovCi12b2lkICppb21tdV9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBhZGRyKTsKLXZvaWQgc3Bh cmNfaW9tbXVfbWVtb3J5X3J3KHZvaWQgKm9wYXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpidWYsIGludCBsZW4s IGludCBpc193cml0ZSk7Ci1zdGF0aWMgaW5saW5lIHZvaWQgc3BhcmNfaW9tbXVfbWVtb3J5X3Jl YWQodm9pZCAqb3BhcXVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHRhcmdldF9waHlzX2FkZHJfdCBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbikKLXsKLSAgICBzcGFyY19pb21t dV9tZW1vcnlfcncob3BhcXVlLCBhZGRyLCBidWYsIGxlbiwgMCk7Ci19Ci0KLXN0YXRpYyBpbmxp bmUgdm9pZCBzcGFyY19pb21tdV9tZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGh5c19hZGRyX3QgYWRk ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAq YnVmLCBpbnQgbGVuKQotewotICAgIHNwYXJjX2lvbW11X21lbW9yeV9ydyhvcGFxdWUsIGFkZHIs IGJ1ZiwgbGVuLCAxKTsKLX0KLQotLyogdGN4LmMgKi8KLXZvaWQgdGN4X2luaXQoRGlzcGxheVN0 YXRlICpkcywgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsIHVpbnQ4X3QgKnZyYW1fYmFzZSwKLSAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2cmFtX29mZnNldCwgaW50IHZyYW1fc2l6ZSwgaW50 IHdpZHRoLCBpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICBpbnQgZGVwdGgpOwotCi0vKiBzbGF2 aW9faW50Y3RsLmMgKi8KLXZvaWQgKnNsYXZpb19pbnRjdGxfaW5pdCh0YXJnZXRfcGh5c19hZGRy X3QgYWRkciwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHJnLAotICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQzMl90ICppbnRiaXRfdG9fbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgcWVtdV9pcnEgKippcnEsIHFlbXVfaXJxICoqY3B1X2lycSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICBxZW11X2lycSAqKnBhcmVudF9pcnEsIHVuc2lnbmVkIGludCBjcHV0aW1lcik7 Ci12b2lkIHNsYXZpb19waWNfaW5mbyh2b2lkICpvcGFxdWUpOwotdm9pZCBzbGF2aW9faXJxX2lu Zm8odm9pZCAqb3BhcXVlKTsKLQogLyogbG9hZGVyLmMgKi8KIGludCBnZXRfaW1hZ2Vfc2l6ZShj b25zdCBjaGFyICpmaWxlbmFtZSk7CiBpbnQgbG9hZF9pbWFnZShjb25zdCBjaGFyICpmaWxlbmFt ZSwgdWludDhfdCAqYWRkcik7CkBAIC0xMjg0LDM4ICsxMjUzLDExIEBACiBpbnQgbG9hZF9hb3V0 KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCB1aW50OF90ICphZGRyKTsKIGludCBsb2FkX3Vib290KGNv bnN0IGNoYXIgKmZpbGVuYW1lLCB0YXJnZXRfdWxvbmcgKmVwLCBpbnQgKmlzX2xpbnV4KTsKIAot Lyogc2xhdmlvX3RpbWVyLmMgKi8KLXZvaWQgc2xhdmlvX3RpbWVyX2luaXRfYWxsKHRhcmdldF9w aHlzX2FkZHJfdCBiYXNlLCBxZW11X2lycSBtYXN0ZXJfaXJxLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgcWVtdV9pcnEgKmNwdV9pcnFzKTsKLQotLyogc2xhdmlvX3NlcmlhbC5jICovCi1T ZXJpYWxTdGF0ZSAqc2xhdmlvX3NlcmlhbF9pbml0KHRhcmdldF9waHlzX2FkZHJfdCBiYXNlLCBx ZW11X2lycSBpcnEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJEcml2ZXJT dGF0ZSAqY2hyMSwgQ2hhckRyaXZlclN0YXRlICpjaHIyKTsKLXZvaWQgc2xhdmlvX3NlcmlhbF9t c19rYmRfaW5pdCh0YXJnZXRfcGh5c19hZGRyX3QgYmFzZSwgcWVtdV9pcnEgaXJxKTsKLQotLyog c2xhdmlvX21pc2MuYyAqLwotdm9pZCAqc2xhdmlvX21pc2NfaW5pdCh0YXJnZXRfcGh5c19hZGRy X3QgYmFzZSwgdGFyZ2V0X3BoeXNfYWRkcl90IHBvd2VyX2Jhc2UsCi0gICAgICAgICAgICAgICAg ICAgICAgIHFlbXVfaXJxIGlycSk7Ci12b2lkIHNsYXZpb19zZXRfcG93ZXJfZmFpbCh2b2lkICpv cGFxdWUsIGludCBwb3dlcl9mYWlsaW5nKTsKLQotLyogZXNwLmMgKi8KLXZvaWQgZXNwX3Njc2lf YXR0YWNoKHZvaWQgKm9wYXF1ZSwgQmxvY2tEcml2ZXJTdGF0ZSAqYmQsIGludCBpZCk7Ci12b2lk ICplc3BfaW5pdChCbG9ja0RyaXZlclN0YXRlICoqYmQsIHRhcmdldF9waHlzX2FkZHJfdCBlc3Bh ZGRyLAotICAgICAgICAgICAgICAgdm9pZCAqZG1hX29wYXF1ZSwgcWVtdV9pcnEgaXJxLCBxZW11 X2lycSAqcmVzZXQpOwotCiAvKiBzcGFyYzMyX2RtYS5jICovCi12b2lkICpzcGFyYzMyX2RtYV9p bml0KHRhcmdldF9waHlzX2FkZHJfdCBkYWRkciwgcWVtdV9pcnEgcGFyZW50X2lycSwKLSAgICAg ICAgICAgICAgICAgICAgICAgdm9pZCAqaW9tbXUsIHFlbXVfaXJxICoqZGV2X2lycSwgcWVtdV9p cnEgKipyZXNldCk7CiB2b2lkIGxlZG1hX21lbW9yeV9yZWFkKHZvaWQgKm9wYXF1ZSwgdGFyZ2V0 X3BoeXNfYWRkcl90IGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1Ziwg aW50IGxlbiwgaW50IGRvX2Jzd2FwKTsKIHZvaWQgbGVkbWFfbWVtb3J5X3dyaXRlKHZvaWQgKm9w YXF1ZSwgdGFyZ2V0X3BoeXNfYWRkcl90IGFkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICB1 aW50OF90ICpidWYsIGludCBsZW4sIGludCBkb19ic3dhcCk7Ci12b2lkIGVzcGRtYV9tZW1vcnlf cmVhZCh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmJ1ZiwgaW50IGxlbik7Ci12b2lkIGVzcGRtYV9t ZW1vcnlfd3JpdGUodm9pZCAqb3BhcXVlLCB1aW50OF90ICpidWYsIGludCBsZW4pOwotCi0vKiBj czQyMzEuYyAqLwotdm9pZCBjc19pbml0KHRhcmdldF9waHlzX2FkZHJfdCBiYXNlLCBpbnQgaXJx LCB2b2lkICppbnRjdGwpOwotCiAvKiBzdW40dS5jICovCiBleHRlcm4gUUVNVU1hY2hpbmUgc3Vu NHVfbWFjaGluZTsKIAo= ------=_Part_23171_27613368.1194166097274--