From: "Gabor Z. Papp" Subject: Re: nfs-utils 1.1.3 and glibc 2.2 Date: Tue, 29 Jul 2008 11:22:58 +0200 Message-ID: References: <76bd70e30807281024q19b59f13j9466231afe9154e6@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Cc: linux-nfs@vger.kernel.org To: chucklever@gmail.com Return-path: Received: from odpn1.odpn.net ([212.40.96.53]:48182 "EHLO odpn1.odpn.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751612AbYG2JXC (ORCPT ); Tue, 29 Jul 2008 05:23:02 -0400 Sender: linux-nfs-owner@vger.kernel.org List-ID: --=-=-= * "Chuck Lever" : | > make[2]: Entering directory | > `/home/gzp/src/nfs-utils-1.1.3/utils/mount' | > gcc -DHAVE_CONFIG_H -I. -I../../support/include | > -I../../support/include -D_GNU_SOURCE -Wall -Wstrict-prototypes -pipe | > -g -O2 -MT network.o -MD -MP -MF .deps/network.Tpo -c -o network.o network.c | > network.c: In function 'nfs_name_to_address': | > network.c:154: error: 'AI_ADDRCONFIG' undeclared (first use in this function) | > network.c:154: error: (Each undeclared identifier is reported only once | > network.c:154: error: for each function it appears in.) | > network.c:160: error: 'AI_V4MAPPED' undeclared (first use in this function) | > network.c:160: error: 'AI_ALL' undeclared (first use in this function) | > make[2]: *** [network.o] Error 1 | > make[2]: Leaving directory `/home/gzp/src/nfs-utils-1.1.3/utils/mount' | > | > 1.1.2 compiles fine. | Can you tell me what distribution you are using? No distro. | In my distribution (Fedora), these macros, along with getaddrinfo(3), | are defined in /usr/include/netdb.h. utils/mount/network.c appears to | include this file directly, so I am still puzzled by this. I'll attach the glibc 2.2.5 netdb.h, and grep AI_ in /usr/include returns only this: $ grep AI_ * netdb.h:# define GAI_WAIT 0 netdb.h:# define GAI_NOWAIT 1 netdb.h:# define AI_PASSIVE 0x0001 /* Socket address is intended for `bind'. */ netdb.h:# define AI_CANONNAME 0x0002 /* Request for canonical name. */ netdb.h:# define AI_NUMERICHOST 0x0004 /* Don't use name resolution. */ netdb.h:# define EAI_BADFLAGS -1 /* Invalid value for `ai_flags' field. */ netdb.h:# define EAI_NONAME -2 /* NAME or SERVICE is unknown. */ netdb.h:# define EAI_AGAIN -3 /* Temporary failure in name resolution. */ netdb.h:# define EAI_FAIL -4 /* Non-recoverable failure in name res. */ netdb.h:# define EAI_NODATA -5 /* No address associated with NAME. */ netdb.h:# define EAI_FAMILY -6 /* `ai_family' not supported. */ netdb.h:# define EAI_SOCKTYPE -7 /* `ai_socktype' not supported. */ netdb.h:# define EAI_SERVICE -8 /* SERVICE not supported for `ai_socktype'. */ netdb.h:# define EAI_ADDRFAMILY -9 /* Address family for NAME no tsupported. */ netdb.h:# define EAI_MEMORY -10 /* Memory allocation failure. */ netdb.h:# define EAI_SYSTEM -11 /* System error returned in `errno'. */ netdb.h:# define EAI_INPROGRESS -100 /* Processing request in progress. */ netdb.h:# define EAI_CANCELED -101 /* Request canceled. */ netdb.h:# define EAI_NOTCANCELED -102 /* Request not canceled. */ netdb.h:# define EAI_ALLDONE -103 /* All requests done. */ netdb.h:# define EAI_INTR -104 /* Interrupted by a signal. */ netdb.h:/* Enqueue ENT requests from the LIST. If MODE is GAI_WAIT wait until all netdb.h: requests are handled. If WAIT is GAI_NOWAIT return immediately after --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=netdb.h Content-Transfer-Encoding: base64 LyogQ29weXJpZ2h0IChDKSAxOTk2LDE5OTcsMTk5OCwxOTk5LDIwMDAsMjAwMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExp YnJhcnkuCgogICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICAgdmVyc2lvbiAyLjEgb2YgdGhlIExp Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICBUaGUgR05V IEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgoKICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogICBMaWNlbnNlIGFsb25nIHdpdGggdGhl IEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUKICAgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKICAg MDIxMTEtMTMwNyBVU0EuICAqLwoKLyogQWxsIGRhdGEgcmV0dXJuZWQgYnkgdGhlIG5ldHdvcmsg ZGF0YSBiYXNlIGxpYnJhcnkgYXJlIHN1cHBsaWVkIGluCiAgIGhvc3Qgb3JkZXIgYW5kIHJldHVy bmVkIGluIG5ldHdvcmsgb3JkZXIgKHN1aXRhYmxlIGZvciB1c2UgaW4KICAgc3lzdGVtIGNhbGxz KS4gICovCgojaWZuZGVmCV9ORVREQl9ICiNkZWZpbmUJX05FVERCX0gJMQoKI2luY2x1ZGUgPGZl YXR1cmVzLmg+CgojaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgojaW5jbHVkZSA8c3RkaW50Lmg+CiNp ZmRlZiBfX1VTRV9NSVNDCi8qIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1ha2UgdGhpcyBpbmNsdWRl IGZpbGUgcHJvcGVybHkgcmVwbGFjZSB0aGUKICAgU3VuIHZlcnNpb24uICAqLwojIGluY2x1ZGUg PHJwYy9uZXRkYi5oPgojZW5kaWYKCiNpZmRlZiBfX1VTRV9HTlUKIyBkZWZpbmUgX19uZWVkX3Np Z2V2ZW50X3QKIyBpbmNsdWRlIDxiaXRzL3NpZ2luZm8uaD4KIyBkZWZpbmUgX19uZWVkX3RpbWVz cGVjCiMgaW5jbHVkZSA8dGltZS5oPgojZW5kaWYKCiNpbmNsdWRlIDxiaXRzL25ldGRiLmg+Cgov KiBBYnNvbHV0ZSBmaWxlIG5hbWUgZm9yIG5ldHdvcmsgZGF0YSBiYXNlIGZpbGVzLiAgKi8KI2Rl ZmluZQlfUEFUSF9IRVFVSVYJCSIvZXRjL2hvc3RzLmVxdWl2IgojZGVmaW5lCV9QQVRIX0hPU1RT CQkiL2V0Yy9ob3N0cyIKI2RlZmluZQlfUEFUSF9ORVRXT1JLUwkJIi9ldGMvbmV0d29ya3MiCiNk ZWZpbmUJX1BBVEhfTlNTV0lUQ0hfQ09ORgkiL2V0Yy9uc3N3aXRjaC5jb25mIgojZGVmaW5lCV9Q QVRIX1BST1RPQ09MUwkJIi9ldGMvcHJvdG9jb2xzIgojZGVmaW5lCV9QQVRIX1NFUlZJQ0VTCQki L2V0Yy9zZXJ2aWNlcyIKCgpfX0JFR0lOX0RFQ0xTCgovKiBFcnJvciBzdGF0dXMgZm9yIG5vbi1y ZWVudHJhbnQgbG9va3VwIGZ1bmN0aW9ucy4gICovCmV4dGVybiBpbnQgaF9lcnJubzsKCi8qIEZ1 bmN0aW9uIHRvIGdldCBhZGRyZXNzIG9mIGdsb2JhbCBgaF9lcnJubycgdmFyaWFibGUuICAqLwpl eHRlcm4gaW50ICpfX2hfZXJybm9fbG9jYXRpb24gKHZvaWQpIF9fVEhST1cgX19hdHRyaWJ1dGVf XyAoKF9fY29uc3RfXykpOwoKI2lmZGVmIF9MSUJDCiMgaWZkZWYgX0xJQkNfUkVFTlRSQU5UCnN0 YXRpYyBpbmxpbmUgaW50Cl9fc2V0X2hfZXJybm8gKGludCBfX2VycikKewogIHJldHVybiAqX19o X2Vycm5vX2xvY2F0aW9uICgpID0gX19lcnI7Cn0KIyBlbHNlCiMgIGRlZmluZSBfX3NldF9oX2Vy cm5vKHgpIChoX2Vycm5vID0gKHgpKQojIGVuZGlmCS8qIF9MSUJDX1JFRU5UUkFOVCAqLwojZW5k aWYgLyogX0xJQkMgKi8KCgojaWYgIWRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBfTElCQ19SRUVO VFJBTlQKLyogVXNlIGEgbWFjcm8gdG8gYWNjZXNzIGFsd2F5cyB0aGUgdGhyZWFkIHNwZWNpZmlj IGBoX2Vycm5vJyB2YXJpYWJsZS4gICovCiMgZGVmaW5lIGhfZXJybm8gKCpfX2hfZXJybm9fbG9j YXRpb24gKCkpCiNlbmRpZgoKCi8qIFBvc3NpYmxlIHZhbHVlcyBsZWZ0IGluIGBoX2Vycm5vJy4g ICovCiNkZWZpbmUJTkVUREJfSU5URVJOQUwJLTEJLyogU2VlIGVycm5vLiAgKi8KI2RlZmluZQlO RVREQl9TVUNDRVNTCTAJLyogTm8gcHJvYmxlbS4gICovCiNkZWZpbmUJSE9TVF9OT1RfRk9VTkQJ MQkvKiBBdXRob3JpdGF0aXZlIEFuc3dlciBIb3N0IG5vdCBmb3VuZC4gICovCiNkZWZpbmUJVFJZ X0FHQUlOCTIJLyogTm9uLUF1dGhvcml0YXRpdmUgSG9zdCBub3QgZm91bmQsCgkJCQkgICBvciBT RVJWRVJGQUlMLiAgKi8KI2RlZmluZQlOT19SRUNPVkVSWQkzCS8qIE5vbiByZWNvdmVyYWJsZSBl cnJvcnMsIEZPUk1FUlIsIFJFRlVTRUQsCgkJCQkgICBOT1RJTVAuICAqLwojZGVmaW5lCU5PX0RB VEEJCTQJLyogVmFsaWQgbmFtZSwgbm8gZGF0YSByZWNvcmQgb2YgcmVxdWVzdGVkCgkJCQkgICB0 eXBlLiAgKi8KI2RlZmluZQlOT19BRERSRVNTCU5PX0RBVEEJLyogTm8gYWRkcmVzcywgbG9vayBm b3IgTVggcmVjb3JkLiAgKi8KCiNpZmRlZiBfX1VTRV9YT1BFTjJLCi8qIEhpZ2hlc3QgcmVzZXJ2 ZWQgSW50ZXJuZXQgcG9ydCBudW1iZXIuICAqLwojIGRlZmluZSBJUFBPUlRfUkVTRVJWRUQJMTAy NAojZW5kaWYKCiNpZmRlZiBfX1VTRV9HTlUKLyogU2NvcGUgZGVsaW1pdGVyIGZvciBnZXRhZGRy aW5mbygpLCBnZXRuYW1laW5mbygpLiAgKi8KIyBkZWZpbmUgU0NPUEVfREVMSU1JVEVSCSclJwoj ZW5kaWYKCi8qIFByaW50IGVycm9yIGluZGljYXRlZCBieSBgaF9lcnJubycgdmFyaWFibGUgb24g c3RhbmRhcmQgZXJyb3IuICBTVFIKICAgaWYgbm9uLW51bGwgaXMgcHJpbnRlZCBiZWZvcmUgdGhl IGVycm9yIHN0cmluZy4gICovCmV4dGVybiB2b2lkIGhlcnJvciAoX19jb25zdCBjaGFyICpfX3N0 cikgX19USFJPVzsKCi8qIFJldHVybiBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIGVycm9yIEVSUl9O VU0uICAqLwpleHRlcm4gX19jb25zdCBjaGFyICpoc3RyZXJyb3IgKGludCBfX2Vycl9udW0pIF9f VEhST1c7CgoKCi8qIERlc2NyaXB0aW9uIG9mIGRhdGEgYmFzZSBlbnRyeSBmb3IgYSBzaW5nbGUg aG9zdC4gICovCnN0cnVjdCBob3N0ZW50CnsKICBjaGFyICpoX25hbWU7CQkJLyogT2ZmaWNpYWwg bmFtZSBvZiBob3N0LiAgKi8KICBjaGFyICoqaF9hbGlhc2VzOwkJLyogQWxpYXMgbGlzdC4gICov CiAgaW50IGhfYWRkcnR5cGU7CQkvKiBIb3N0IGFkZHJlc3MgdHlwZS4gICovCiAgaW50IGhfbGVu Z3RoOwkJCS8qIExlbmd0aCBvZiBhZGRyZXNzLiAgKi8KICBjaGFyICoqaF9hZGRyX2xpc3Q7CQkv KiBMaXN0IG9mIGFkZHJlc3NlcyBmcm9tIG5hbWUgc2VydmVyLiAgKi8KI2RlZmluZQloX2FkZHIJ aF9hZGRyX2xpc3RbMF0JLyogQWRkcmVzcywgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICAq Lwp9OwoKLyogT3BlbiBob3N0IGRhdGEgYmFzZSBmaWxlcyBhbmQgbWFyayB0aGVtIGFzIHN0YXlp bmcgb3BlbiBldmVuIGFmdGVyCiAgIGEgbGF0ZXIgc2VhcmNoIGlmIFNUQVlfT1BFTiBpcyBub24t emVyby4gICovCmV4dGVybiB2b2lkIHNldGhvc3RlbnQgKGludCBfX3N0YXlfb3BlbikgX19USFJP VzsKCi8qIENsb3NlIGhvc3QgZGF0YSBiYXNlIGZpbGVzIGFuZCBjbGVhciBgc3RheSBvcGVuJyBm bGFnLiAgKi8KZXh0ZXJuIHZvaWQgZW5kaG9zdGVudCAodm9pZCkgX19USFJPVzsKCi8qIEdldCBu ZXh0IGVudHJ5IGZyb20gaG9zdCBkYXRhIGJhc2UgZmlsZS4gIE9wZW4gZGF0YSBiYXNlIGlmCiAg IG5lY2Vzc2FyeS4gICovCmV4dGVybiBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGVudCAodm9pZCkg X19USFJPVzsKCi8qIFJldHVybiBlbnRyeSBmcm9tIGhvc3QgZGF0YSBiYXNlIHdoaWNoIGFkZHJl c3MgbWF0Y2ggQUREUiB3aXRoCiAgIGxlbmd0aCBMRU4gYW5kIHR5cGUgVFlQRS4gICovCmV4dGVy biBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5YWRkciAoX19jb25zdCB2b2lkICpfX2FkZHIsIF9f c29ja2xlbl90IF9fbGVuLAoJCQkJICAgICAgaW50IF9fdHlwZSkgX19USFJPVzsKCi8qIFJldHVy biBlbnRyeSBmcm9tIGhvc3QgZGF0YSBiYXNlIGZvciBob3N0IHdpdGggTkFNRS4gICovCmV4dGVy biBzdHJ1Y3QgaG9zdGVudCAqZ2V0aG9zdGJ5bmFtZSAoX19jb25zdCBjaGFyICpfX25hbWUpIF9f VEhST1c7CgojaWZkZWYgX19VU0VfTUlTQwovKiBSZXR1cm4gZW50cnkgZnJvbSBob3N0IGRhdGEg YmFzZSBmb3IgaG9zdCB3aXRoIE5BTUUuICBBRiBtdXN0IGJlCiAgIHNldCB0byB0aGUgYWRkcmVz cyB0eXBlIHdoaWNoIGlzIGBBRl9JTkVUJyBmb3IgSVB2NCBvciBgQUZfSU5FVDYnCiAgIGZvciBJ UHY2LiAgKi8KZXh0ZXJuIHN0cnVjdCBob3N0ZW50ICpnZXRob3N0YnluYW1lMiAoX19jb25zdCBj aGFyICpfX25hbWUsIGludCBfX2FmKSBfX1RIUk9XOwoKLyogUmVlbnRyYW50IHZlcnNpb25zIG9m IHRoZSBmdW5jdGlvbnMgYWJvdmUuICBUaGUgYWRkaXRpb25hbAogICBhcmd1bWVudHMgc3BlY2lm eSBhIGJ1ZmZlciBvZiBCVUZMRU4gc3RhcnRpbmcgYXQgQlVGLiAgVGhlIGxhc3QKICAgYXJndW1l bnQgaXMgYSBwb2ludGVyIHRvIGEgdmFyaWFibGUgd2hpY2ggZ2V0cyB0aGUgdmFsdWUgd2hpY2gK ICAgd291bGQgYmUgc3RvcmVkIGluIHRoZSBnbG9iYWwgdmFyaWFibGUgYGhlcnJubycgYnkgdGhl CiAgIG5vbi1yZWVudHJhbnQgZnVuY3Rpb25zLiAgKi8KZXh0ZXJuIGludCBnZXRob3N0ZW50X3Ig KHN0cnVjdCBob3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKCQkJIGNoYXIgKl9fcmVz dHJpY3QgX19idWYsIHNpemVfdCBfX2J1ZmxlbiwKCQkJIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0 cmljdCBfX3Jlc3VsdCwKCQkJIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKSBfX1RIUk9XOwoK ZXh0ZXJuIGludCBnZXRob3N0YnlhZGRyX3IgKF9fY29uc3Qgdm9pZCAqX19yZXN0cmljdCBfX2Fk ZHIsIF9fc29ja2xlbl90IF9fbGVuLAoJCQkgICAgaW50IF9fdHlwZSwKCQkJICAgIHN0cnVjdCBo b3N0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKCQkJICAgIGNoYXIgKl9fcmVzdHJpY3Qg X19idWYsIHNpemVfdCBfX2J1ZmxlbiwKCQkJICAgIHN0cnVjdCBob3N0ZW50ICoqX19yZXN0cmlj dCBfX3Jlc3VsdCwKCQkJICAgIGludCAqX19yZXN0cmljdCBfX2hfZXJybm9wKSBfX1RIUk9XOwoK ZXh0ZXJuIGludCBnZXRob3N0YnluYW1lX3IgKF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25h bWUsCgkJCSAgICBzdHJ1Y3QgaG9zdGVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCgkJCSAg ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCgkJCSAgICBzdHJ1Y3Qg aG9zdGVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQsCgkJCSAgICBpbnQgKl9fcmVzdHJpY3QgX19o X2Vycm5vcCkgX19USFJPVzsKCmV4dGVybiBpbnQgZ2V0aG9zdGJ5bmFtZTJfciAoX19jb25zdCBj aGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwgaW50IF9fYWYsCgkJCSAgICAgc3RydWN0IGhvc3RlbnQg Kl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAoJCQkgICAgIGNoYXIgKl9fcmVzdHJpY3QgX19idWYs IHNpemVfdCBfX2J1ZmxlbiwKCQkJICAgICBzdHJ1Y3QgaG9zdGVudCAqKl9fcmVzdHJpY3QgX19y ZXN1bHQsCgkJCSAgICAgaW50ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApIF9fVEhST1c7CiNlbmRp ZgkvKiBtaXNjICovCgoKLyogT3BlbiBuZXR3b3JrIGRhdGEgYmFzZSBmaWxlcyBhbmQgbWFyayB0 aGVtIGFzIHN0YXlpbmcgb3BlbiBldmVuCiAgIGFmdGVyIGEgbGF0ZXIgc2VhcmNoIGlmIFNUQVlf T1BFTiBpcyBub24temVyby4gICovCmV4dGVybiB2b2lkIHNldG5ldGVudCAoaW50IF9fc3RheV9v cGVuKSBfX1RIUk9XOwoKLyogQ2xvc2UgbmV0d29yayBkYXRhIGJhc2UgZmlsZXMgYW5kIGNsZWFy IGBzdGF5IG9wZW4nIGZsYWcuICAqLwpleHRlcm4gdm9pZCBlbmRuZXRlbnQgKHZvaWQpIF9fVEhS T1c7CgovKiBHZXQgbmV4dCBlbnRyeSBmcm9tIG5ldHdvcmsgZGF0YSBiYXNlIGZpbGUuICBPcGVu IGRhdGEgYmFzZSBpZgogICBuZWNlc3NhcnkuICAqLwpleHRlcm4gc3RydWN0IG5ldGVudCAqZ2V0 bmV0ZW50ICh2b2lkKSBfX1RIUk9XOwoKLyogUmV0dXJuIGVudHJ5IGZyb20gbmV0d29yayBkYXRh IGJhc2Ugd2hpY2ggYWRkcmVzcyBtYXRjaCBORVQgYW5kCiAgIHR5cGUgVFlQRS4gICovCmV4dGVy biBzdHJ1Y3QgbmV0ZW50ICpnZXRuZXRieWFkZHIgKHVpbnQzMl90IF9fbmV0LCBpbnQgX190eXBl KQogICAgIF9fVEhST1c7CgovKiBSZXR1cm4gZW50cnkgZnJvbSBuZXR3b3JrIGRhdGEgYmFzZSBm b3IgbmV0d29yayB3aXRoIE5BTUUuICAqLwpleHRlcm4gc3RydWN0IG5ldGVudCAqZ2V0bmV0Ynlu YW1lIChfX2NvbnN0IGNoYXIgKl9fbmFtZSkgX19USFJPVzsKCiNpZmRlZglfX1VTRV9NSVNDCi8q IFJlZW50cmFudCB2ZXJzaW9ucyBvZiB0aGUgZnVuY3Rpb25zIGFib3ZlLiAgVGhlIGFkZGl0aW9u YWwKICAgYXJndW1lbnRzIHNwZWNpZnkgYSBidWZmZXIgb2YgQlVGTEVOIHN0YXJ0aW5nIGF0IEJV Ri4gIFRoZSBsYXN0CiAgIGFyZ3VtZW50IGlzIGEgcG9pbnRlciB0byBhIHZhcmlhYmxlIHdoaWNo IGdldHMgdGhlIHZhbHVlIHdoaWNoCiAgIHdvdWxkIGJlIHN0b3JlZCBpbiB0aGUgZ2xvYmFsIHZh cmlhYmxlIGBoZXJybm8nIGJ5IHRoZQogICBub24tcmVlbnRyYW50IGZ1bmN0aW9ucy4gICovCmV4 dGVybiBpbnQgZ2V0bmV0ZW50X3IgKHN0cnVjdCBuZXRlbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRf YnVmLAoJCQljaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCgkJCXN0cnVj dCBuZXRlbnQgKipfX3Jlc3RyaWN0IF9fcmVzdWx0LAoJCQlpbnQgKl9fcmVzdHJpY3QgX19oX2Vy cm5vcCkgX19USFJPVzsKCmV4dGVybiBpbnQgZ2V0bmV0YnlhZGRyX3IgKHVpbnQzMl90IF9fbmV0 LCBpbnQgX190eXBlLAoJCQkgICBzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1 ZiwKCQkJICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAoJCQkgICBz dHJ1Y3QgbmV0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKCQkJICAgaW50ICpfX3Jlc3RyaWN0 IF9faF9lcnJub3ApIF9fVEhST1c7CgpleHRlcm4gaW50IGdldG5ldGJ5bmFtZV9yIChfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1lLAoJCQkgICBzdHJ1Y3QgbmV0ZW50ICpfX3Jlc3RyaWN0 IF9fcmVzdWx0X2J1ZiwKCQkJICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVm bGVuLAoJCQkgICBzdHJ1Y3QgbmV0ZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCwKCQkJICAgaW50 ICpfX3Jlc3RyaWN0IF9faF9lcnJub3ApIF9fVEhST1c7CiNlbmRpZgkvKiBtaXNjICovCgoKLyog RGVzY3JpcHRpb24gb2YgZGF0YSBiYXNlIGVudHJ5IGZvciBhIHNpbmdsZSBzZXJ2aWNlLiAgKi8K c3RydWN0IHNlcnZlbnQKewogIGNoYXIgKnNfbmFtZTsJCQkvKiBPZmZpY2lhbCBzZXJ2aWNlIG5h bWUuICAqLwogIGNoYXIgKipzX2FsaWFzZXM7CQkvKiBBbGlhcyBsaXN0LiAgKi8KICBpbnQgc19w b3J0OwkJCS8qIFBvcnQgbnVtYmVyLiAgKi8KICBjaGFyICpzX3Byb3RvOwkJLyogUHJvdG9jb2wg dG8gdXNlLiAgKi8KfTsKCi8qIE9wZW4gc2VydmljZSBkYXRhIGJhc2UgZmlsZXMgYW5kIG1hcmsg dGhlbSBhcyBzdGF5aW5nIG9wZW4gZXZlbgogICBhZnRlciBhIGxhdGVyIHNlYXJjaCBpZiBTVEFZ X09QRU4gaXMgbm9uLXplcm8uICAqLwpleHRlcm4gdm9pZCBzZXRzZXJ2ZW50IChpbnQgX19zdGF5 X29wZW4pIF9fVEhST1c7CgovKiBDbG9zZSBzZXJ2aWNlIGRhdGEgYmFzZSBmaWxlcyBhbmQgY2xl YXIgYHN0YXkgb3BlbicgZmxhZy4gICovCmV4dGVybiB2b2lkIGVuZHNlcnZlbnQgKHZvaWQpIF9f VEhST1c7CgovKiBHZXQgbmV4dCBlbnRyeSBmcm9tIHNlcnZpY2UgZGF0YSBiYXNlIGZpbGUuICBP cGVuIGRhdGEgYmFzZSBpZgogICBuZWNlc3NhcnkuICAqLwpleHRlcm4gc3RydWN0IHNlcnZlbnQg KmdldHNlcnZlbnQgKHZvaWQpIF9fVEhST1c7CgovKiBSZXR1cm4gZW50cnkgZnJvbSBuZXR3b3Jr IGRhdGEgYmFzZSBmb3IgbmV0d29yayB3aXRoIE5BTUUgYW5kCiAgIHByb3RvY29sIFBST1RPLiAg Ki8KZXh0ZXJuIHN0cnVjdCBzZXJ2ZW50ICpnZXRzZXJ2YnluYW1lIChfX2NvbnN0IGNoYXIgKl9f bmFtZSwKCQkJCSAgICAgIF9fY29uc3QgY2hhciAqX19wcm90bykgX19USFJPVzsKCi8qIFJldHVy biBlbnRyeSBmcm9tIHNlcnZpY2UgZGF0YSBiYXNlIHdoaWNoIG1hdGNoZXMgcG9ydCBQT1JUIGFu ZAogICBwcm90b2NvbCBQUk9UTy4gICovCmV4dGVybiBzdHJ1Y3Qgc2VydmVudCAqZ2V0c2VydmJ5 cG9ydCAoaW50IF9fcG9ydCwgX19jb25zdCBjaGFyICpfX3Byb3RvKQogICAgIF9fVEhST1c7CgoK I2lmZGVmCV9fVVNFX01JU0MKLyogUmVlbnRyYW50IHZlcnNpb25zIG9mIHRoZSBmdW5jdGlvbnMg YWJvdmUuICBUaGUgYWRkaXRpb25hbAogICBhcmd1bWVudHMgc3BlY2lmeSBhIGJ1ZmZlciBvZiBC VUZMRU4gc3RhcnRpbmcgYXQgQlVGLiAgKi8KZXh0ZXJuIGludCBnZXRzZXJ2ZW50X3IgKHN0cnVj dCBzZXJ2ZW50ICpfX3Jlc3RyaWN0IF9fcmVzdWx0X2J1ZiwKCQkJIGNoYXIgKl9fcmVzdHJpY3Qg X19idWYsIHNpemVfdCBfX2J1ZmxlbiwKCQkJIHN0cnVjdCBzZXJ2ZW50ICoqX19yZXN0cmljdCBf X3Jlc3VsdCkgX19USFJPVzsKCmV4dGVybiBpbnQgZ2V0c2VydmJ5bmFtZV9yIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19uYW1lLAoJCQkgICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f cHJvdG8sCgkJCSAgICBzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCgkJ CSAgICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCgkJCSAgICBzdHJ1 Y3Qgc2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIF9fVEhST1c7CgpleHRlcm4gaW50IGdl dHNlcnZieXBvcnRfciAoaW50IF9fcG9ydCwgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fcHJv dG8sCgkJCSAgICBzdHJ1Y3Qgc2VydmVudCAqX19yZXN0cmljdCBfX3Jlc3VsdF9idWYsCgkJCSAg ICBjaGFyICpfX3Jlc3RyaWN0IF9fYnVmLCBzaXplX3QgX19idWZsZW4sCgkJCSAgICBzdHJ1Y3Qg c2VydmVudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIF9fVEhST1c7CiNlbmRpZgkvKiBtaXNjICov CgoKLyogRGVzY3JpcHRpb24gb2YgZGF0YSBiYXNlIGVudHJ5IGZvciBhIHNpbmdsZSBzZXJ2aWNl LiAgKi8Kc3RydWN0IHByb3RvZW50CnsKICBjaGFyICpwX25hbWU7CQkJLyogT2ZmaWNpYWwgcHJv dG9jb2wgbmFtZS4gICovCiAgY2hhciAqKnBfYWxpYXNlczsJCS8qIEFsaWFzIGxpc3QuICAqLwog IGludCBwX3Byb3RvOwkJCS8qIFByb3RvY29sIG51bWJlci4gICovCn07CgovKiBPcGVuIHByb3Rv Y29sIGRhdGEgYmFzZSBmaWxlcyBhbmQgbWFyayB0aGVtIGFzIHN0YXlpbmcgb3BlbiBldmVuCiAg IGFmdGVyIGEgbGF0ZXIgc2VhcmNoIGlmIFNUQVlfT1BFTiBpcyBub24temVyby4gICovCmV4dGVy biB2b2lkIHNldHByb3RvZW50IChpbnQgX19zdGF5X29wZW4pIF9fVEhST1c7CgovKiBDbG9zZSBw cm90b2NvbCBkYXRhIGJhc2UgZmlsZXMgYW5kIGNsZWFyIGBzdGF5IG9wZW4nIGZsYWcuICAqLwpl eHRlcm4gdm9pZCBlbmRwcm90b2VudCAodm9pZCkgX19USFJPVzsKCi8qIEdldCBuZXh0IGVudHJ5 IGZyb20gcHJvdG9jb2wgZGF0YSBiYXNlIGZpbGUuICBPcGVuIGRhdGEgYmFzZSBpZgogICBuZWNl c3NhcnkuICAqLwpleHRlcm4gc3RydWN0IHByb3RvZW50ICpnZXRwcm90b2VudCAodm9pZCkgX19U SFJPVzsKCi8qIFJldHVybiBlbnRyeSBmcm9tIHByb3RvY29sIGRhdGEgYmFzZSBmb3IgbmV0d29y ayB3aXRoIE5BTUUuICAqLwpleHRlcm4gc3RydWN0IHByb3RvZW50ICpnZXRwcm90b2J5bmFtZSAo X19jb25zdCBjaGFyICpfX25hbWUpIF9fVEhST1c7CgovKiBSZXR1cm4gZW50cnkgZnJvbSBwcm90 b2NvbCBkYXRhIGJhc2Ugd2hpY2ggbnVtYmVyIGlzIFBST1RPLiAgKi8KZXh0ZXJuIHN0cnVjdCBw cm90b2VudCAqZ2V0cHJvdG9ieW51bWJlciAoaW50IF9fcHJvdG8pIF9fVEhST1c7CgoKI2lmZGVm CV9fVVNFX01JU0MKLyogUmVlbnRyYW50IHZlcnNpb25zIG9mIHRoZSBmdW5jdGlvbnMgYWJvdmUu ICBUaGUgYWRkaXRpb25hbAogICBhcmd1bWVudHMgc3BlY2lmeSBhIGJ1ZmZlciBvZiBCVUZMRU4g c3RhcnRpbmcgYXQgQlVGLiAgKi8KZXh0ZXJuIGludCBnZXRwcm90b2VudF9yIChzdHJ1Y3QgcHJv dG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAoJCQkgIGNoYXIgKl9fcmVzdHJpY3QgX19i dWYsIHNpemVfdCBfX2J1ZmxlbiwKCQkJICBzdHJ1Y3QgcHJvdG9lbnQgKipfX3Jlc3RyaWN0IF9f cmVzdWx0KSBfX1RIUk9XOwoKZXh0ZXJuIGludCBnZXRwcm90b2J5bmFtZV9yIChfX2NvbnN0IGNo YXIgKl9fcmVzdHJpY3QgX19uYW1lLAoJCQkgICAgIHN0cnVjdCBwcm90b2VudCAqX19yZXN0cmlj dCBfX3Jlc3VsdF9idWYsCgkJCSAgICAgY2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9f YnVmbGVuLAoJCQkgICAgIHN0cnVjdCBwcm90b2VudCAqKl9fcmVzdHJpY3QgX19yZXN1bHQpIF9f VEhST1c7CgpleHRlcm4gaW50IGdldHByb3RvYnludW1iZXJfciAoaW50IF9fcHJvdG8sCgkJCSAg ICAgICBzdHJ1Y3QgcHJvdG9lbnQgKl9fcmVzdHJpY3QgX19yZXN1bHRfYnVmLAoJCQkgICAgICAg Y2hhciAqX19yZXN0cmljdCBfX2J1Ziwgc2l6ZV90IF9fYnVmbGVuLAoJCQkgICAgICAgc3RydWN0 IHByb3RvZW50ICoqX19yZXN0cmljdCBfX3Jlc3VsdCkgX19USFJPVzsKI2VuZGlmCS8qIG1pc2Mg Ki8KCgovKiBFc3RhYmxpc2ggbmV0d29yayBncm91cCBORVRHUk9VUCBmb3IgZW51bWVyYXRpb24u ICAqLwpleHRlcm4gaW50IHNldG5ldGdyZW50IChfX2NvbnN0IGNoYXIgKl9fbmV0Z3JvdXApIF9f VEhST1c7CgovKiBGcmVlIGFsbCBzcGFjZSBhbGxvY2F0ZWQgYnkgcHJldmlvdXMgYHNldG5ldGdy ZW50JyBjYWxsLiAgKi8KZXh0ZXJuIHZvaWQgZW5kbmV0Z3JlbnQgKHZvaWQpIF9fVEhST1c7Cgov KiBHZXQgbmV4dCBtZW1iZXIgb2YgbmV0Z3JvdXAgZXN0YWJsaXNoZWQgYnkgbGFzdCBgc2V0bmV0 Z3JlbnQnIGNhbGwKICAgYW5kIHJldHVybiBwb2ludGVycyB0byBlbGVtZW50cyBpbiBIT1NUUCwg VVNFUlAsIGFuZCBET01BSU5QLiAgKi8KZXh0ZXJuIGludCBnZXRuZXRncmVudCAoY2hhciAqKl9f cmVzdHJpY3QgX19ob3N0cCwKCQkJY2hhciAqKl9fcmVzdHJpY3QgX191c2VycCwKCQkJY2hhciAq Kl9fcmVzdHJpY3QgX19kb21haW5wKSBfX1RIUk9XOwoKI2lmZGVmCV9fVVNFX01JU0MKLyogVGVz dCB3aGV0aGVyIE5FVEdST1VQIGNvbnRhaW5zIHRoZSB0cmlwbGUgKEhPU1QsVVNFUixET01BSU4p LiAgKi8KZXh0ZXJuIGludCBpbm5ldGdyIChfX2NvbnN0IGNoYXIgKl9fbmV0Z3JvdXAsIF9fY29u c3QgY2hhciAqX19ob3N0LAoJCSAgICBfX2NvbnN0IGNoYXIgKl9fdXNlciwgX19jb25zdCBjaGFy ICpkb21haW4pIF9fVEhST1c7CgovKiBSZWVudHJhbnQgdmVyc2lvbiBvZiBgZ2V0bmV0Z3JlbnQn IHdoZXJlIHJlc3VsdCBpcyBwbGFjZWQgaW4gQlVGRkVSLiAgKi8KZXh0ZXJuIGludCBnZXRuZXRn cmVudF9yIChjaGFyICoqX19yZXN0cmljdCBfX2hvc3RwLAoJCQkgIGNoYXIgKipfX3Jlc3RyaWN0 IF9fdXNlcnAsCgkJCSAgY2hhciAqKl9fcmVzdHJpY3QgX19kb21haW5wLAoJCQkgIGNoYXIgKl9f cmVzdHJpY3QgX19idWZmZXIsIHNpemVfdCBfX2J1ZmxlbikgX19USFJPVzsKI2VuZGlmCS8qIG1p c2MgKi8KCgojaWZkZWYgX19VU0VfQlNECi8qIENhbGwgYHJzaGQnIGF0IHBvcnQgUlBPUlQgb24g cmVtb3RlIG1hY2hpbmUgKkFIT1NUIHRvIGV4ZWN1dGUgQ01ELgogICBUaGUgbG9jYWwgdXNlciBp cyBMT0NVU0VSLCBvbiB0aGUgcmVtb3RlIG1hY2hpbmUgdGhlIGNvbW1hbmQgaXMKICAgZXhlY3V0 ZWQgYXMgUkVNVVNFUi4gIEluICpGRDJQIHRoZSBkZXNjcmlwdG9yIHRvIHRoZSBzb2NrZXQgZm9y IHRoZQogICBjb25uZWN0aW9uIGlzIHJldHVybmVkLiAgVGhlIGNhbGxlciBtdXN0IGhhdmUgdGhl IHJpZ2h0IHRvIHVzZSBhCiAgIHJlc2VydmVkIHBvcnQuICBXaGVuIHRoZSBmdW5jdGlvbiByZXR1 cm5zICpBSE9TVCBjb250YWlucyB0aGUKICAgb2ZmaWNpYWwgaG9zdCBuYW1lLiAgKi8KZXh0ZXJu IGludCByY21kIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCB1bnNpZ25lZCBzaG9ydCBpbnQg X19ycG9ydCwKCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbG9jdXNlciwKCQkgX19jb25z dCBjaGFyICpfX3Jlc3RyaWN0IF9fcmVtdXNlciwKCQkgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0 IF9fY21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwKQogICAgIF9fVEhST1c7CgovKiBUaGlzIGlz IHRoZSBlcXVpdmFsZW50IGZ1bmN0aW9uIHdoZXJlIHRoZSBwcm90b2NvbCBjYW4gYmUgc2VsZWN0 ZWQKICAgYW5kIHdoaWNoIHRoZXJlZm9yZSBjYW4gYmUgdXNlZCBmb3IgSVB2Ni4gICovCmV4dGVy biBpbnQgcmNtZF9hZiAoY2hhciAqKl9fcmVzdHJpY3QgX19haG9zdCwgdW5zaWduZWQgc2hvcnQg aW50IF9fcnBvcnQsCgkJICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX2xvY3VzZXIsCgkJ ICAgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX3JlbXVzZXIsCgkJICAgIF9fY29uc3QgY2hh ciAqX19yZXN0cmljdCBfX2NtZCwgaW50ICpfX3Jlc3RyaWN0IF9fZmQycCwKCQkgICAgc2FfZmFt aWx5X3QgX19hZikgX19USFJPVzsKCi8qIENhbGwgYHJleGVjZCcgYXQgcG9ydCBSUE9SVCBvbiBy ZW1vdGUgbWFjaGluZSAqQUhPU1QgdG8gZXhlY3V0ZQogICBDTUQuICBUaGUgcHJvY2VzcyBydW5z IGF0IHRoZSByZW1vdGUgbWFjaGluZSB1c2luZyB0aGUgSUQgb2YgdXNlcgogICBOQU1FIHdob3Nl IGNsZWFydGV4dCBwYXNzd29yZCBpcyBQQVNTV0QuICBJbiAqRkQyUCB0aGUgZGVzY3JpcHRvcgog ICB0byB0aGUgc29ja2V0IGZvciB0aGUgY29ubmVjdGlvbiBpcyByZXR1cm5lZC4gIFdoZW4gdGhl IGZ1bmN0aW9uCiAgIHJldHVybnMgKkFIT1NUIGNvbnRhaW5zIHRoZSBvZmZpY2lhbCBob3N0IG5h bWUuICAqLwpleHRlcm4gaW50IHJleGVjIChjaGFyICoqX19yZXN0cmljdCBfX2Fob3N0LCBpbnQg X19ycG9ydCwKCQkgIF9fY29uc3QgY2hhciAqX19yZXN0cmljdCBfX25hbWUsCgkJICBfX2NvbnN0 IGNoYXIgKl9fcmVzdHJpY3QgX19wYXNzLAoJCSAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9f Y21kLCBpbnQgKl9fcmVzdHJpY3QgX19mZDJwKQogICAgIF9fVEhST1c7CgovKiBUaGlzIGlzIHRo ZSBlcXVpdmFsZW50IGZ1bmN0aW9uIHdoZXJlIHRoZSBwcm90b2NvbCBjYW4gYmUgc2VsZWN0ZWQK ICAgYW5kIHdoaWNoIHRoZXJlZm9yZSBjYW4gYmUgdXNlZCBmb3IgSVB2Ni4gICovCmV4dGVybiBp bnQgcmV4ZWNfYWYgKGNoYXIgKipfX3Jlc3RyaWN0IF9fYWhvc3QsIGludCBfX3Jwb3J0LAoJCSAg ICAgX19jb25zdCBjaGFyICpfX3Jlc3RyaWN0IF9fbmFtZSwKCQkgICAgIF9fY29uc3QgY2hhciAq X19yZXN0cmljdCBfX3Bhc3MsCgkJICAgICBfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19jbWQs IGludCAqX19yZXN0cmljdCBfX2ZkMnAsCgkJICAgICBzYV9mYW1pbHlfdCBfX2FmKSBfX1RIUk9X OwoKLyogQ2hlY2sgd2hldGhlciB1c2VyIFJFTVVTRVIgb24gc3lzdGVtIFJIT1NUIGlzIGFsbG93 ZWQgdG8gbG9naW4gYXMgTE9DVVNFUi4KICAgSWYgU1VTRVIgaXMgbm90IHplcm8gdGhlIHVzZXIg dHJpZXMgdG8gYmVjb21lIHN1cGVydXNlci4gIFJldHVybiAwIGlmCiAgIGl0IGlzIHBvc3NpYmxl LiAgKi8KZXh0ZXJuIGludCBydXNlcm9rIChfX2NvbnN0IGNoYXIgKl9fcmhvc3QsIGludCBfX3N1 c2VyLAoJCSAgICBfX2NvbnN0IGNoYXIgKl9fcmVtdXNlciwgX19jb25zdCBjaGFyICpfX2xvY3Vz ZXIpIF9fVEhST1c7CgovKiBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IGZ1bmN0aW9uIHdoZXJlIHRo ZSBwcm90b2NvbCBjYW4gYmUgc2VsZWN0ZWQKICAgYW5kIHdoaWNoIHRoZXJlZm9yZSBjYW4gYmUg dXNlZCBmb3IgSVB2Ni4gICovCmV4dGVybiBpbnQgcnVzZXJva19hZiAoX19jb25zdCBjaGFyICpf X3Job3N0LCBpbnQgX19zdXNlciwKCQkgICAgICAgX19jb25zdCBjaGFyICpfX3JlbXVzZXIsIF9f Y29uc3QgY2hhciAqX19sb2N1c2VyLAoJCSAgICAgICBzYV9mYW1pbHlfdCBfX2FmKSBfX1RIUk9X OwoKLyogVHJ5IHRvIGFsbG9jYXRlIHJlc2VydmVkIHBvcnQsIHJldHVybmluZyBhIGRlc2NyaXB0 b3IgZm9yIGEgc29ja2V0IG9wZW5lZAogICBhdCB0aGlzIHBvcnQgb3IgLTEgaWYgdW5zdWNjZXNz ZnVsLiAgVGhlIHNlYXJjaCBmb3IgYW4gYXZhaWxhYmxlIHBvcnQKICAgd2lsbCBzdGFydCBhdCBB TFBPUlQgYW5kIGNvbnRpbnVlcyB3aXRoIGxvd2VyIG51bWJlcnMuICAqLwpleHRlcm4gaW50IHJy ZXN2cG9ydCAoaW50ICpfX2FscG9ydCkgX19USFJPVzsKCi8qIFRoaXMgaXMgdGhlIGVxdWl2YWxl bnQgZnVuY3Rpb24gd2hlcmUgdGhlIHByb3RvY29sIGNhbiBiZSBzZWxlY3RlZAogICBhbmQgd2hp Y2ggdGhlcmVmb3JlIGNhbiBiZSB1c2VkIGZvciBJUHY2LiAgKi8KZXh0ZXJuIGludCBycmVzdnBv cnRfYWYgKGludCAqX19hbHBvcnQsIHNhX2ZhbWlseV90IF9fYWYpIF9fVEhST1c7CiNlbmRpZgoK Ci8qIEV4dGVuc2lvbiBmcm9tIFBPU0lYLjFnLiAgKi8KI2lmZGVmCV9fVVNFX1BPU0lYCi8qIFN0 cnVjdHVyZSB0byBjb250YWluIGluZm9ybWF0aW9uIGFib3V0IGFkZHJlc3Mgb2YgYSBzZXJ2aWNl IHByb3ZpZGVyLiAgKi8Kc3RydWN0IGFkZHJpbmZvCnsKICBpbnQgYWlfZmxhZ3M7CQkJLyogSW5w dXQgZmxhZ3MuICAqLwogIGludCBhaV9mYW1pbHk7CQkvKiBQcm90b2NvbCBmYW1pbHkgZm9yIHNv Y2tldC4gICovCiAgaW50IGFpX3NvY2t0eXBlOwkJLyogU29ja2V0IHR5cGUuICAqLwogIGludCBh aV9wcm90b2NvbDsJCS8qIFByb3RvY29sIGZvciBzb2NrZXQuICAqLwogIHNvY2tsZW5fdCBhaV9h ZGRybGVuOwkJLyogTGVuZ3RoIG9mIHNvY2tldCBhZGRyZXNzLiAgKi8KICBzdHJ1Y3Qgc29ja2Fk ZHIgKmFpX2FkZHI7CS8qIFNvY2tldCBhZGRyZXNzIGZvciBzb2NrZXQuICAqLwogIGNoYXIgKmFp X2Nhbm9ubmFtZTsJCS8qIENhbm9uaWNhbCBuYW1lIGZvciBzZXJ2aWNlIGxvY2F0aW9uLiAgKi8K ICBzdHJ1Y3QgYWRkcmluZm8gKmFpX25leHQ7CS8qIFBvaW50ZXIgdG8gbmV4dCBpbiBsaXN0LiAg Ki8KfTsKCiMgaWZkZWYgX19VU0VfR05VCi8qIFN0cnVjdHVyZSB1c2VkIGFzIGNvbnRyb2wgYmxv Y2sgZm9yIGFzeW5jaHJvbm91cyBsb29rdXAuICAqLwpzdHJ1Y3QgZ2FpY2IKewogIGNvbnN0IGNo YXIgKmFyX25hbWU7CQkvKiBOYW1lIHRvIGxvb2sgdXAuICAqLwogIGNvbnN0IGNoYXIgKmFyX3Nl cnZpY2U7CS8qIFNlcnZpY2UgbmFtZS4gICovCiAgY29uc3Qgc3RydWN0IGFkZHJpbmZvICphcl9y ZXF1ZXN0OyAvKiBBZGRpdGlvbmFsIHJlcXVlc3Qgc3BlY2lmaWNhdGlvbi4gICovCiAgc3RydWN0 IGFkZHJpbmZvICphcl9yZXN1bHQ7CS8qIFBvaW50ZXIgdG8gcmVzdWx0LiAgKi8KICAvKiBUaGUg Zm9sbG93aW5nIGFyZSBpbnRlcm5hbCBlbGVtZW50cy4gICovCiAgaW50IF9fcmV0dXJuOwogIGlu dCBfX3VudXNlZFs1XTsKfTsKCi8qIExvb2t1cCBtb2RlLiAgKi8KIyAgZGVmaW5lIEdBSV9XQUlU CTAKIyAgZGVmaW5lIEdBSV9OT1dBSVQJMQojIGVuZGlmCgovKiBQb3NzaWJsZSB2YWx1ZXMgZm9y IGBhaV9mbGFncycgZmllbGQgaW4gYGFkZHJpbmZvJyBzdHJ1Y3R1cmUuICAqLwojIGRlZmluZSBB SV9QQVNTSVZFCTB4MDAwMQkvKiBTb2NrZXQgYWRkcmVzcyBpcyBpbnRlbmRlZCBmb3IgYGJpbmQn LiAgKi8KIyBkZWZpbmUgQUlfQ0FOT05OQU1FCTB4MDAwMgkvKiBSZXF1ZXN0IGZvciBjYW5vbmlj YWwgbmFtZS4gICovCiMgZGVmaW5lIEFJX05VTUVSSUNIT1NUCTB4MDAwNAkvKiBEb24ndCB1c2Ug bmFtZSByZXNvbHV0aW9uLiAgKi8KCi8qIEVycm9yIHZhbHVlcyBmb3IgYGdldGFkZHJpbmZvJyBm dW5jdGlvbi4gICovCiMgZGVmaW5lIEVBSV9CQURGTEFHUwkgIC0xCS8qIEludmFsaWQgdmFsdWUg Zm9yIGBhaV9mbGFncycgZmllbGQuICAqLwojIGRlZmluZSBFQUlfTk9OQU1FCSAgLTIJLyogTkFN RSBvciBTRVJWSUNFIGlzIHVua25vd24uICAqLwojIGRlZmluZSBFQUlfQUdBSU4JICAtMwkvKiBU ZW1wb3JhcnkgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uICAqLwojIGRlZmluZSBFQUlfRkFJ TAkgIC00CS8qIE5vbi1yZWNvdmVyYWJsZSBmYWlsdXJlIGluIG5hbWUgcmVzLiAgKi8KIyBkZWZp bmUgRUFJX05PREFUQQkgIC01CS8qIE5vIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIE5BTUUuICAq LwojIGRlZmluZSBFQUlfRkFNSUxZCSAgLTYJLyogYGFpX2ZhbWlseScgbm90IHN1cHBvcnRlZC4g ICovCiMgZGVmaW5lIEVBSV9TT0NLVFlQRQkgIC03CS8qIGBhaV9zb2NrdHlwZScgbm90IHN1cHBv cnRlZC4gICovCiMgZGVmaW5lIEVBSV9TRVJWSUNFCSAgLTgJLyogU0VSVklDRSBub3Qgc3VwcG9y dGVkIGZvciBgYWlfc29ja3R5cGUnLiAgKi8KIyBkZWZpbmUgRUFJX0FERFJGQU1JTFkJICAtOQkv KiBBZGRyZXNzIGZhbWlseSBmb3IgTkFNRSBub3Qgc3VwcG9ydGVkLiAgKi8KIyBkZWZpbmUgRUFJ X01FTU9SWQkgIC0xMAkvKiBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLiAgKi8KIyBkZWZpbmUg RUFJX1NZU1RFTQkgIC0xMQkvKiBTeXN0ZW0gZXJyb3IgcmV0dXJuZWQgaW4gYGVycm5vJy4gICov CiMgaWZkZWYgX19VU0VfR05VCiMgIGRlZmluZSBFQUlfSU5QUk9HUkVTUyAgLTEwMAkvKiBQcm9j ZXNzaW5nIHJlcXVlc3QgaW4gcHJvZ3Jlc3MuICAqLwojICBkZWZpbmUgRUFJX0NBTkNFTEVECSAg LTEwMQkvKiBSZXF1ZXN0IGNhbmNlbGVkLiAgKi8KIyAgZGVmaW5lIEVBSV9OT1RDQU5DRUxFRCAt MTAyCS8qIFJlcXVlc3Qgbm90IGNhbmNlbGVkLiAgKi8KIyAgZGVmaW5lIEVBSV9BTExET05FCSAg LTEwMwkvKiBBbGwgcmVxdWVzdHMgZG9uZS4gICovCiMgIGRlZmluZSBFQUlfSU5UUgkgIC0xMDQJ LyogSW50ZXJydXB0ZWQgYnkgYSBzaWduYWwuICAqLwojIGVuZGlmCgojIGRlZmluZSBOSV9NQVhI T1NUICAgICAgMTAyNQojIGRlZmluZSBOSV9NQVhTRVJWICAgICAgMzIKCiMgZGVmaW5lIE5JX05V TUVSSUNIT1NUCTEJLyogRG9uJ3QgdHJ5IHRvIGxvb2sgdXAgaG9zdG5hbWUuICAqLwojIGRlZmlu ZSBOSV9OVU1FUklDU0VSViAyCS8qIERvbid0IGNvbnZlcnQgcG9ydCBudW1iZXIgdG8gbmFtZS4g ICovCiMgZGVmaW5lIE5JX05PRlFETgk0CS8qIE9ubHkgcmV0dXJuIG5vZGVuYW1lIHBvcnRpb24u ICAqLwojIGRlZmluZSBOSV9OQU1FUkVRRAk4CS8qIERvbid0IHJldHVybiBudW1lcmljIGFkZHJl c3Nlcy4gICovCiMgZGVmaW5lIE5JX0RHUkFNCTE2CS8qIExvb2sgdXAgVURQIHNlcnZpY2UgcmF0 aGVyIHRoYW4gVENQLiAgKi8KCi8qIFRyYW5zbGF0ZSBuYW1lIG9mIGEgc2VydmljZSBsb2NhdGlv biBhbmQvb3IgYSBzZXJ2aWNlIG5hbWUgdG8gc2V0IG9mCiAgIHNvY2tldCBhZGRyZXNzZXMuICAq LwpleHRlcm4gaW50IGdldGFkZHJpbmZvIChfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19uYW1l LAoJCQlfX2NvbnN0IGNoYXIgKl9fcmVzdHJpY3QgX19zZXJ2aWNlLAoJCQlfX2NvbnN0IHN0cnVj dCBhZGRyaW5mbyAqX19yZXN0cmljdCBfX3JlcSwKCQkJc3RydWN0IGFkZHJpbmZvICoqX19yZXN0 cmljdCBfX3BhaSkgX19USFJPVzsKCi8qIEZyZWUgYGFkZHJpbmZvJyBzdHJ1Y3R1cmUgQUkgaW5j bHVkaW5nIGFzc29jaWF0ZWQgc3RvcmFnZS4gICovCmV4dGVybiB2b2lkIGZyZWVhZGRyaW5mbyAo c3RydWN0IGFkZHJpbmZvICpfX2FpKSBfX1RIUk9XOwoKLyogQ29udmVydCBlcnJvciByZXR1cm4g ZnJvbSBnZXRhZGRyaW5mbygpIHRvIGEgc3RyaW5nLiAgKi8KZXh0ZXJuIF9fY29uc3QgY2hhciAq Z2FpX3N0cmVycm9yIChpbnQgX19lY29kZSkgX19USFJPVzsKCi8qIFRyYW5zbGF0ZSBhIHNvY2tl dCBhZGRyZXNzIHRvIGEgbG9jYXRpb24gYW5kIHNlcnZpY2UgbmFtZS4gICovCmV4dGVybiBpbnQg Z2V0bmFtZWluZm8gKF9fY29uc3Qgc3RydWN0IHNvY2thZGRyICpfX3Jlc3RyaWN0IF9fc2EsCgkJ CXNvY2tsZW5fdCBfX3NhbGVuLCBjaGFyICpfX3Jlc3RyaWN0IF9faG9zdCwKCQkJc29ja2xlbl90 IF9faG9zdGxlbiwgY2hhciAqX19yZXN0cmljdCBfX3NlcnYsCgkJCXNvY2tsZW5fdCBfX3NlcnZs ZW4sIHVuc2lnbmVkIGludCBfX2ZsYWdzKSBfX1RIUk9XOwoKIyBpZmRlZiBfX1VTRV9HTlUKLyog RW5xdWV1ZSBFTlQgcmVxdWVzdHMgZnJvbSB0aGUgTElTVC4gIElmIE1PREUgaXMgR0FJX1dBSVQg d2FpdCB1bnRpbCBhbGwKICAgcmVxdWVzdHMgYXJlIGhhbmRsZWQuICBJZiBXQUlUIGlzIEdBSV9O T1dBSVQgcmV0dXJuIGltbWVkaWF0ZWx5IGFmdGVyCiAgIHF1ZXVlaW5nIHRoZSByZXF1ZXN0cyBh bmQgc2lnbmFsIGNvbXBsZXRpb24gYWNjb3JkaW5nIHRvIFNJRy4gICovCmV4dGVybiBpbnQgZ2V0 YWRkcmluZm9fYSAoaW50IF9fbW9kZSwgc3RydWN0IGdhaWNiICpfX2xpc3RbX19yZXN0cmljdF9h cnJdLAoJCQkgIGludCBfX2VudCwgc3RydWN0IHNpZ2V2ZW50ICpfX3Jlc3RyaWN0IF9fc2lnKQog ICAgIF9fVEhST1c7CgovKiBTdXNwZW5kIGV4ZWN1dGlvbiBvZiB0aGUgdGhyZWFkIHVudGlsIGF0 IGxlYXN0IG9uZSBvZiB0aGUgRU5UIHJlcXVlc3RzCiAgIGluIExJU1QgaXMgaGFuZGxlZC4gIElm IFRJTUVPVVQgaXMgbm90IGEgbnVsbCBwb2ludGVyIGl0IHNwZWNpZmllcyB0aGUKICAgbG9uZ2Vz dCB0aW1lIHRoZSBmdW5jdGlvbiBrZWVwcyB3YWl0aW5nIGJlZm9yZSByZXR1cm5pbmcgd2l0aCBh biBlcnJvci4gICovCmV4dGVybiBpbnQgZ2FpX3N1c3BlbmQgKF9fY29uc3Qgc3RydWN0IGdhaWNi ICpfX2NvbnN0IF9fbGlzdFtdLCBpbnQgX19lbnQsCgkJCV9fY29uc3Qgc3RydWN0IHRpbWVzcGVj ICpfX3RpbWVvdXQpIF9fVEhST1c7CgovKiBHZXQgdGhlIGVycm9yIHN0YXR1cyBvZiB0aGUgcmVx dWVzdCBSRVEuICAqLwpleHRlcm4gaW50IGdhaV9lcnJvciAoc3RydWN0IGdhaWNiICpfX3JlcSkg X19USFJPVzsKCi8qIENhbmNlbCB0aGUgcmVxdWVzdHMgYXNzb2NpYXRlZCB3aXRoIEdBSUNCUC4g ICovCmV4dGVybiBpbnQgZ2FpX2NhbmNlbCAoc3RydWN0IGdhaWNiICpfX2dhaWNicCkgX19USFJP VzsKIyBlbmRpZgkvKiBHTlUgKi8KI2VuZGlmCS8qIFBPU0lYICovCgpfX0VORF9ERUNMUwoKI2Vu ZGlmCS8qIG5ldGRiLmggKi8K --=-=-=--