From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 112179 invoked by alias); 17 Apr 2019 20:06:33 -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 112165 invoked by uid 89); 17 Apr 2019 20:06:33 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-1.6 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=no version=3.3.1 spammy=H*RU:sk:broadba, HX-Spam-Relays-External:sk:broadba, H*r:sk:broadba, H*r:192.168.4 X-HELO: mail-lj1-f178.google.com Received: from mail-lj1-f178.google.com (HELO mail-lj1-f178.google.com) (209.85.208.178) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 17 Apr 2019 20:06:30 +0000 Received: by mail-lj1-f178.google.com with SMTP id f23so2234487ljc.0 for ; Wed, 17 Apr 2019 13:06:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:autocrypt:message-id:date:user-agent :mime-version:in-reply-to; bh=pgYWs9v0xeZtnEJtmQt/d6ru9mYPYU1uisHuZmBNYrY=; b=ug084en3lEOEwBlNpZR95FddfG1VegEeoX0frl239irlSmJVDk44g5ITC1soD1q4xd k2RSCtYLi2n+3i/Gb8mbV08No6HX4LIjfXa4cdDmQCD8riH9v9a+QUGlTySa+/spJovN IH0vhypHvNIcISh4uxIuzbz0hnmw4yJDHGuGiwVo++OeQ9HV3wpKAO6NDcFPvMPPu61H cmj7Ny0NdaCaRSatAZ+9YIPTXcUyVlDjLhRn6+4p2WgXmM+SvvRAEJmrRiavEAdDN4iH A1l1/mf8Y4MGfPY0Sykl4YCxOFtPYFzl0RtS3Dgp+ZANAeUgQIdnVjJw0z26MOuR/stZ SFlQ== Return-Path: Received: from [192.168.4.39] (broadband-95-84-200-6.ip.moscow.rt.ru. [95.84.200.6]) by smtp.gmail.com with ESMTPSA id z206sm1090473lfa.53.2019.04.17.13.06.25 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 17 Apr 2019 13:06:26 -0700 (PDT) Subject: Re: Warning when using separate debug info file To: gdb-patches@sourceware.org References: <83y348edoi.fsf@gnu.org> From: LRN Message-ID: <20439f48-c0ff-e4b2-5cfc-6bb4b594d88c@gmail.com> Date: Wed, 17 Apr 2019 20:06:00 -0000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <83y348edoi.fsf@gnu.org> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="59rzKj3hxrVSwRmwc5PMzB4HUgKdcILJc" X-IsSubscribed: yes X-SW-Source: 2019-04/txt/msg00300.txt.bz2 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --59rzKj3hxrVSwRmwc5PMzB4HUgKdcILJc Content-Type: multipart/mixed; boundary="4Q2yWPLTagpaLpmGMTQYSfCDHkYrAUm8T"; protected-headers="v1" From: LRN To: gdb-patches@sourceware.org Message-ID: <20439f48-c0ff-e4b2-5cfc-6bb4b594d88c@gmail.com> Subject: Re: Warning when using separate debug info file --4Q2yWPLTagpaLpmGMTQYSfCDHkYrAUm8T Content-Type: multipart/mixed; boundary="------------AA18A5291E6A3B978439D1C1" Content-Language: en-US This is a multi-part message in MIME format. --------------AA18A5291E6A3B978439D1C1 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-length: 677 On 17.04.2019 20:37, Eli Zaretskii wrote: > I tried debugging a program on MS-Windows after moving the debug info > to a separate file > When I then invoke GDB, it does find the symbols, but emits a warning: >=20 > Reading symbols from ./e.exe...Reading symbols from d:\foo\bar\e.debug.= .. > warning: section .gnu_debuglink not found in d:\foo\bar\e.debug >=20 I'm too lazy to explain this right now. Here's a Python program (attached) = that creates separate debug info files that do not produce this warning. I've reported it to the bugtracker, but no one seems to be interested in fi= xing this, and i have no idea why this happens (although i do have a hypothesis). --------------AA18A5291E6A3B978439D1C1 Content-Type: text/plain; charset=UTF-8; name="split-debug.py" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="split-debug.py" Content-length: 15328 IyEvbWluZ3cvYmluL3B5dGhvbgojIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQoj ICAgIHNwbGl0LWRlYnVnLnB5IC0gc3BsaXRzIGRlYnVnIHN5bWJvbHMgZnJv bSBleGVjdXRhYmxlcyBpbnRvIHNlcGFyYXRlIGZpbGVzCiMgICAgQ29weXJp Z2h0IKkgMjAxMiAgTFJOCiMKIyAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQojICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKIyAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgojCiMgICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKIyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojICAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCgpmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9u CgppbXBvcnQgb3MKaW1wb3J0IHN5cwppbXBvcnQgc3VicHJvY2VzcwppbXBv cnQgaGFzaGxpYgppbXBvcnQgc3RhdAppbXBvcnQgcmUKaW1wb3J0IHN0cnVj dAppbXBvcnQgcGxhdGZvcm0KCmRlZiB3aGljaCAocHJvZ3JhbSk6CiAgICBp bXBvcnQgb3MKICAgIGRlZiBpc19leGUoZnBhdGgpOgogICAgICAgIHJldHVy biBvcy5wYXRoLmlzZmlsZShmcGF0aCkgYW5kIG9zLmFjY2VzcyhmcGF0aCwg b3MuWF9PSykKCiAgICBmcGF0aCwgZm5hbWUgPSBvcy5wYXRoLnNwbGl0KHBy b2dyYW0pCiAgICBpZiBmcGF0aDoKICAgICAgICBpZiBpc19leGUocHJvZ3Jh bSk6CiAgICAgICAgICAgIHJldHVybiBwcm9ncmFtCiAgICAgICAgZWxpZiBu b3QgcHJvZ3JhbS5lbmRzd2l0aCAoJy5leGUnKSBhbmQgaXNfZXhlIChwcm9n cmFtICsgJy5leGUnKToKICAgICAgICAgICAgcmV0dXJuIHByb2dyYW0gKyAn LmV4ZScKICAgIGVsc2U6CiAgICAgICAgZm9yIHBhdGggaW4gb3MuZW52aXJv blsiUEFUSCJdLnNwbGl0KG9zLnBhdGhzZXApOgogICAgICAgICAgICBwYXRo ID0gcGF0aC5zdHJpcCgnIicpCiAgICAgICAgICAgIGV4ZV9maWxlID0gb3Mu cGF0aC5qb2luKHBhdGgsIHByb2dyYW0pCiAgICAgICAgICAgIGlmIGlzX2V4 ZShleGVfZmlsZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gZXhlX2ZpbGUK ICAgICAgICAgICAgZWxpZiBub3QgcHJvZ3JhbS5lbmRzd2l0aCAoJy5leGUn KSBhbmQgaXNfZXhlIChleGVfZmlsZSArICcuZXhlJyk6CiAgICAgICAgICAg ICAgICByZXR1cm4gZXhlX2ZpbGUgKyAnLmV4ZScKCiAgICByZXR1cm4gTm9u ZQoKX19rbm93bl9iaW5hcnlfZmlsZXMgPSB7fQpfX2tub3duX25vbl9iaW5h cnlfZmlsZXMgPSB7fQpfX2xpbmtlZF9iaW5hcnlfZmlsZXMgPSB7fQpfX3Rh cmdldF9wZV9tYWdpYyA9IE5vbmUKCmlmIG9zLm5hbWUgPT0gJ250JzoKICBp bXBvcnQgd2luMzJmaWxlCgogIGRlZiBnZXRfcmVhZF9oYW5kbGUgKGZpbGVu YW1lKToKICAgIGlmIG9zLnBhdGguaXNkaXIoZmlsZW5hbWUpOgogICAgICBk d0ZsYWdzQW5kQXR0cmlidXRlcyA9IHdpbjMyZmlsZS5GSUxFX0ZMQUdfQkFD S1VQX1NFTUFOVElDUwogICAgZWxzZToKICAgICAgZHdGbGFnc0FuZEF0dHJp YnV0ZXMgPSAwCiAgICByZXR1cm4gd2luMzJmaWxlLkNyZWF0ZUZpbGUgKAog ICAgICBmaWxlbmFtZSwKICAgICAgd2luMzJmaWxlLkdFTkVSSUNfUkVBRCwK ICAgICAgd2luMzJmaWxlLkZJTEVfU0hBUkVfUkVBRCwKICAgICAgTm9uZSwK ICAgICAgd2luMzJmaWxlLk9QRU5fRVhJU1RJTkcsCiAgICAgIGR3RmxhZ3NB bmRBdHRyaWJ1dGVzLAogICAgICBOb25lCiAgICApCgogIGRlZiBnZXRfdW5p cXVlX2lkIChoRmlsZSk6CiAgICAoCiAgICAgIGF0dHJpYnV0ZXMsCiAgICAg IGNyZWF0ZWRfYXQsIGFjY2Vzc2VkX2F0LCB3cml0dGVuX2F0LAogICAgICB2 b2x1bWUsCiAgICAgIGZpbGVfaGksIGZpbGVfbG8sCiAgICAgIG5fbGlua3Ms CiAgICAgIGluZGV4X2hpLCBpbmRleF9sbwogICAgKSA9IHdpbjMyZmlsZS5H ZXRGaWxlSW5mb3JtYXRpb25CeUhhbmRsZSAoaEZpbGUpCiAgICByZXR1cm4g dm9sdW1lLCBpbmRleF9oaSwgaW5kZXhfbG8KCiAgZGVmIGlzX3NhbWVfZmls ZSAoZmlsZW5hbWUxLCBmaWxlbmFtZTIpOgogICAgaEZpbGUxID0gZ2V0X3Jl YWRfaGFuZGxlIChmaWxlbmFtZTEpCiAgICBoRmlsZTIgPSBnZXRfcmVhZF9o YW5kbGUgKGZpbGVuYW1lMikKICAgIGFyZV9lcXVhbCA9IChnZXRfdW5pcXVl X2lkIChoRmlsZTEpID09IGdldF91bmlxdWVfaWQgKGhGaWxlMikpCiAgICBo RmlsZTIuQ2xvc2UgKCkKICAgIGhGaWxlMS5DbG9zZSAoKQogICAgcmV0dXJu IGFyZV9lcXVhbAoKICBkZWYgbnRfaXNfbGluayAoZmlsZW5hbWUpOgogICAg YnNfZmlsZW5hbWUgPSBmaWxlbmFtZS5yZXBsYWNlICgnLycsICdcXCcpCiAg ICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lIChic19maWxlbmFtZSkKICAg IHAgPSBzdWJwcm9jZXNzLlBvcGVuIChbb3MuZW52aXJvblsnQ29tU3BlYydd LCAnL0MnLCAnZGlyJywgZGlybmFtZV0sIHN0ZG91dD1zdWJwcm9jZXNzLlBJ UEUpCiAgICBvLCBlID0gcC5jb21tdW5pY2F0ZSAoKQogICAgaWYgcC5yZXR1 cm5jb2RlICE9IDA6CiAgICAgIHJldHVybiBUcnVlCiAgICBibiA9IG9zLnBh dGguYmFzZW5hbWUgKGZpbGVuYW1lKQogICAgaWYgJzxTWU1MSU5LPiAgICAg ICcgKyBibiArICcgWycgaW4gbyBhbmQgJyAnICsgYm4gKyAnXG4nIG5vdCBp biBvOgogICAgICByZXR1cm4gVHJ1ZQogICAgcmV0dXJuIEZhbHNlCgplbHNl OgogIGRlZiBpc19zYW1lX2ZpbGUgKGZpbGVuYW1lMSwgZmlsZW5hbWUyKToK ICAgIHMxID0gb3Muc3RhdCAoZmlsZW5hbWUxKQogICAgczIgPSBvcy5zdGF0 IChmaWxlbmFtZTIpCiAgICBhcmVfZXF1YWwgPSBzMS5zdF9pbm8gPT0gczIu c3RfaW5vCiAgICByZXR1cm4gYXJlX2VxdWFsCgpkZWYgaXNfYmluYXJ5X2Zp bGUgKGYpOgogIGlmIGYgaW4gX19rbm93bl9ub25fYmluYXJ5X2ZpbGVzOgog ICAgcmV0dXJuIEZhbHNlCiAgaWYgZiBpbiBfX2tub3duX2JpbmFyeV9maWxl czoKICAgIHJldHVybiBUcnVlCiAgcmV0dXJuIGlzX3BlX2ZpbGUgKGYpCgpk ZWYgaXNfcGVfZmlsZSAoZik6CiAgaGVhZCA9IFtdCiAgdHJ5OgogICAgd2l0 aCBvcGVuIChmLCAncmInKSBhcyByOgogICAgICBiID0gci5yZWFkICgzMCoy ICsgNCkKICAgICAgaWYgbGVuIChiKSAhPSAzMCoyICsgNDoKICAgICAgICBf X2tub3duX25vbl9iaW5hcnlfZmlsZXNbZl0gPSBGYWxzZQogICAgICAgIHJl dHVybiBGYWxzZQogICAgICBzaWduYXR1cmUsIGJ5dGVzX2luX2xhc3RfYmxv Y2ssIGJsb2Nrc19pbl9maWxlLCBudW1fcmVsb2NzLCBoZWFkZXJfcGFyYWdy YXBocywgbWluX2V4dHJhX3BhcmFncmFwaHMsIG1heF9leHRyYV9wYXJhZ3Jh cGhzLCBzcywgc3AsIGNoZWNrc3VtLCBpcCwgY3MsIFwKICAgICAgICAgIHJl bG9jX3RhYmxlX29mZnNldCwgb3ZlcmxheV9udW1iZXIsIHJlc2VydmVkMSwg b2VtaWQsIG9lbWluZm8sIHJlc2VydmVkMiwgZXhlX29mZnNldCA9IHN0cnVj dC51bnBhY2sgKCcycyBISEhISEhISEhISEhIIDhzIEhIIDIwcyBpJywgYikK ICAgICAgaWYgc2lnbmF0dXJlICE9ICdNWic6CiAgICAgICAgX19rbm93bl9u b25fYmluYXJ5X2ZpbGVzW2ZdID0gRmFsc2UKICAgICAgICByZXR1cm4gRmFs c2UKICAgICAgYiA9IHIucmVhZCAoNCkKICAgICAgci5zZWVrIChleGVfb2Zm c2V0KQogICAgICBiID0gci5yZWFkICg0KQogICAgICBpZiBiICE9ICdQRVww XDAnOgogICAgICAgIF9fa25vd25fbm9uX2JpbmFyeV9maWxlc1tmXSA9IEZh bHNlCiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgIGIgPSByLnJlYWQgKDIw KQogICAgICBpZiBsZW4gKGIpICE9IDIwOgogICAgICAgIF9fa25vd25fbm9u X2JpbmFyeV9maWxlc1tmXSA9IEZhbHNlCiAgICAgICAgcmV0dXJuIEZhbHNl CiAgICAgIG1hY2hpbmUsIG51bWJlcl9vZl9zZWN0aW9ucywgdGltZV9kYXRl X3N0YW1wLCBwb2ludGVyX3RvX3N5bWJvbF90YWJsZSwgbnVtYmVyX29mX3N5 bWJvbHMsIHNpemVfb2Zfb3B0aW9uYWxfaGVhZGVyLCBjaGFyYWN0ZXJpc3Rp Y3MgPSBzdHJ1Y3QudW5wYWNrICgnSCBIIEkgSSBJIEggSCcsIGIpCiAgICAg IGIgPSByLnJlYWQgKDk2KQogICAgICBpZiBsZW4gKGIpICE9IDk2OgogICAg ICAgIF9fa25vd25fbm9uX2JpbmFyeV9maWxlc1tmXSA9IEZhbHNlCiAgICAg ICAgcmV0dXJuIEZhbHNlCiAgICAgIG1hZ2ljLCBtYWpvcl9saW5rZXJfdmVy LCBtaW5vcl9saW5rZXJfdmVyLCBzaXplX29mX2NvZGUsIHNpemVfb2ZfaW5p dF9kYXRhLCBzaXplX29mX3VuaW50X2RhdGEsIGFkZHJlc3Nfb2ZfZW50cnlf cG9pbnQsIFwKICAgICAgICAgIGJhc2Vfb2ZfY29kZSwgYmFzZV9vZl9kYXRh LCBpbWFnZV9iYXNlLCBzZWN0aW9uX2FsaWdubWVudCwgZmlsZV9hbGlnbm1l bnQsIG1ham9yX29zX3ZlcnNpb24sIG1pbm9yX29zX3ZlcnNpb24sIG1ham9y X2ltYWdlX3ZlcnNpb24sIG1pbm9yX2ltYWdlX3ZlcnNpb24sIFwKICAgICAg ICAgIG1ham9yX3N1YnN5c192ZXJzaW9uLCBtaW5vcl9zdWJzeXNfdmVyc2lv biwgdzMyX3ZlcnNpb25fdmFsdWUsIHNpemVfb2ZfaW1hZ2UsIHNpemVfb2Zf aGVhZGVycywgY2hlY2tzdW0sIHN1YnN5c3RlbSwgZGxsX2NoYXJhY3Rlcmlz dGljcywgc2l6ZV9vZl9zdGFja19yZXNlcnZlLCBcCiAgICAgICAgICBzaXpl X29mX3N0YWNrX2NvbW1pdCwgc2l6ZV9vZl9oZWFwX3Jlc2VydmUsIHNpemVf b2ZfaGVhcF9jb21taXQsIGxvYWRlcl9mbGFncywgbnVtYmVyX29mX3J2YV9h bmRfc2l6ZXMgPSBzdHJ1Y3QudW5wYWNrICgnSCBCQiBJSUlJSUlJSUkgSEhI SEhIIElJSUkgSEggSUlJSUlJJywgYikKICAgICAgaWYgbWFnaWMgIT0gX190 YXJnZXRfcGVfbWFnaWM6CiAgICAgICAgX19rbm93bl9ub25fYmluYXJ5X2Zp bGVzW2ZdID0gRmFsc2UKICAgICAgICByZXR1cm4gRmFsc2UKICBleGNlcHQ6 CiAgICAjIEZhaWxzIGZvciBmaWxlcyB3aXRoIHdlaXJkIG5hbWVzICh0aGV5 IGFyZSB1c3VhbGx5IG5vdCBQRSBiaW5hcmllcyBhbnl3YXksIHNvIHJldHVy biBGYWxzZSkKICAgIHJldHVybiBGYWxzZQogIF9fa25vd25fYmluYXJ5X2Zp bGVzW2ZdID0gVHJ1ZQogIHJldHVybiBUcnVlCgojZGVmIGlzX2FyY2hpdmVf ZmlsZSAoZik6CiMgIGhlYWQgPSBbXQojICB3aXRoIG9wZW4gKGYsICdyYicp IGFzIHI6CiMgICAgaGVhZCA9IHIucmVhZCAoOCkKIyAgaWYgbGVuIChoZWFk KSA9PSA4IGFuZCBoZWFkID09ICchPGFyY2g+XG4nOgojICAgIF9fa25vd25f YmluYXJ5X2ZpbGVzW2ZdID0gVHJ1ZQojICAgIHJldHVybiBUcnVlCiMgIF9f a25vd25fbm9uX2JpbmFyeV9maWxlc1tmXSA9IEZhbHNlCiMgIHJldHVybiBG YWxzZQoKZGVmIG1haW4gKCk6CiAgZ2xvYmFsIF9fdGFyZ2V0X3BlX21hZ2lj CiAgZGlyX3RvX3NjYW4gPSBzeXMuYXJndlsxXQogIG5vc3RyaXAgPSBbXQog IG5vc3RyaXBfdW5uZWVkZWQgPSBbXQogIGlnbm9yZSA9IFtdCiAgdGFyZ2V0 ID0gTm9uZQogIGZvciBhIGluIHN5cy5hcmd2WzE6XToKICAgIGlmIGFbOjEw XSA9PSAnLS1ub3N0cmlwPSc6CiAgICAgIG5vc3RyaXAuYXBwZW5kIChhWzEw Ol0pCiAgICBlbGlmIGFbOjE5XSA9PSAnLS1ub3N0cmlwLXVubmVlZGVkPSc6 CiAgICAgIG5vc3RyaXBfdW5uZWVkZWQuYXBwZW5kIChhWzE5Ol0pCiAgICBl bGlmIGFbOjldID09ICctLWlnbm9yZT0nOgogICAgICBpZ25vcmUuYXBwZW5k IChhWzk6XSkKICAgIGVsaWYgYVs6OV0gPT0gJy0tdGFyZ2V0PSc6CiAgICAg IHRhcmdldCA9IGFbOTpdCiAgaWYgdGFyZ2V0IGlzIE5vbmU6CiAgICBjcHkg PSAib2JqY29weSIKICAgIGlmIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSAoKVsw XSA9PSAnMzJiaXQnOgogICAgICBfX3RhcmdldF9wZV9tYWdpYyA9IDB4MTBi CiAgICBlbHNlOgogICAgICBfX3RhcmdldF9wZV9tYWdpYyA9IDB4MjBiCiAg ZWxzZToKICAgIGNweSA9IHRhcmdldCArICctb2JqY29weScKICAgIGlmICd4 ODZfNjQnIGluIHRhcmdldDoKICAgICAgX190YXJnZXRfcGVfbWFnaWMgPSAw eDIwYgogICAgZWxzZToKICAgICAgX190YXJnZXRfcGVfbWFnaWMgPSAweDEw YgogIG9iamNvcHkgPSB3aGljaCAoY3B5KQogIGlmIG9iamNvcHkgaXMgTm9u ZToKICAgIHByaW50ICgiRmFpbGVkIHRvIGZpbmQge30iLmZvcm1hdCAoY3B5 KSkKICAgIHJldHVybiAtMQogIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBv cy53YWxrIChkaXJfdG9fc2Nhbik6CiAgICBmb3IgZm4gaW4gZmlsZXM6CiAg ICAgIGYgPSBvcy5wYXRoLmpvaW4gKHJvb3QsIGZuKQogICAgICBpZiBpc19i aW5hcnlfZmlsZSAoZik6CiAgICAgICAgaWYgZm5bLTQ6XSA9PSAnLmRiZyc6 CiAgICAgICAgICBjb250aW51ZQogICAgICAgIGlmIG9zLm5hbWUgPT0gJ250 JzoKICAgICAgICAgIGlzX2xpbmsgPSBudF9pc19saW5rIChmKQogICAgICAg IGVsc2U6CiAgICAgICAgICBzdCA9IG9zLmxzdGF0IChmKQogICAgICAgICAg aXNfbGluayA9IHN0YXQuU19JU0xOSyAoc3Quc3RfbW9kZSkKICAgICAgICBp ZiBpc19saW5rOgogICAgICAgICAgcHJpbnQgKCJTa2lwcGluZywgc2luY2Ug dGhpcyBmaWxlIGlzIGEgc3ltbGluayAtIHt9Ii5mb3JtYXQgKGYpKQogICAg ICAgICAgY29udGludWUKICAgICAgICBwcmludCAoIlByb2Nlc3NpbmcgZmls ZSB7fSBpbiBkaXJlY3Rvcnkge30iLmZvcm1hdCAoZm4sIHJvb3QpKQogICAg ICAgIHJjID0gcHJvY2Vzc19iaW5hcnlfZmlsZSAocm9vdCwgZm4sIGYsIG5v c3RyaXAsIG5vc3RyaXBfdW5uZWVkZWQsIGlnbm9yZSwgb2JqY29weSkKICAg ICAgICBpZiBub3QgcmMgPT0gMDoKICAgICAgICAgIHByaW50ICgiRVJST1I6 IHt9Ii5mb3JtYXQgKHJjKSkKICAgICAgICAgIGNvbnRpbnVlCiAgcmV0dXJu IDAKCmRlZiBnZXRfZmlsZV9oYXNoIChmKToKICBoID0gaGFzaGxpYi5tZDUg KCkKICB3aXRoIG9wZW4gKGYsICdyYicpIGFzIHNyYzoKICAgIHdoaWxlIFRy dWU6CiAgICAgIHIgPSBzcmMucmVhZCAoMTAyNCAqIDY0KQogICAgICBpZiBu b3QgcjoKICAgICAgICBicmVhawogICAgICBoLnVwZGF0ZSAocikKICByZXR1 cm4gaC5kaWdlc3QgKCkKCgpkZWYgcHJvY2Vzc19iaW5hcnlfZmlsZSAocm9v dCwgZm4sIGYsIG5vc3RyaXBfbGlzdCwgbm9zdHJpcF91bm5lZWRlZF9saXN0 LCBpZ25vcmVfbGlzdCwgb2JqY29weSk6CiAgZGJnID0gInt9LmRiZyIuZm9y bWF0IChmbikKICBkYmdfYWJzID0gb3MucGF0aC5qb2luIChyb290LCBkYmcp CiAgaWYgb3MucGF0aC5leGlzdHMgKGRiZ19hYnMpIGFuZCBvcy5wYXRoLmlz ZmlsZSAoZGJnX2FicykgYW5kIGlzX2JpbmFyeV9maWxlIChkYmdfYWJzKToK ICAgIHByaW50ICgiU2tpcHBpbmc6IGRiZyBmaWxlIGFscmVhZHkgZXhpc3Rz OiB7fSIuZm9ybWF0IChkYmdfYWJzKSkKICAgIHJldHVybiAwCiAgaCA9IGdl dF9maWxlX2hhc2ggKGYpCiAgbGlua2VkID0gX19saW5rZWRfYmluYXJ5X2Zp bGVzLmdldCAoaCwgTm9uZSkKICBpZiBsaW5rZWQgaXMgbm90IE5vbmUgYW5k IGlzX3NhbWVfZmlsZSAoZiwgbGlua2VkWzBdKToKICAgIHByaW50ICgiU2tp cHBpbmc6IGZpbGUge30gaXMgYWxyZWFkeSBzdHJpcHBlZCBhcyB7fSBhbmQg bGlua2VkIHRvIHt9Ii5mb3JtYXQgKGYsIGxpbmtlZFswXSwgbGlua2VkWzFd KSkKICAgIHJldHVybiAwCiAgICAKICAjIFRoaXMgaXMgY2FuIGJlIGRvbmUg aW4gYSBtdWNoIHNob3J0ZXIgd2F5LCBidXQgZ2RiIHdpbGwgd2FybiBhYm91 dCBtaXNzaW5nCiAgIyAgLmdudV9kZWJ1Z2xpbmsgc2VjdGlvbiBpbiBfLmRi Z18gZmlsZSAoYmVjYXVzZSBpdCBkb2VzIG5vdCBoYXZlIG9uZTsKICAjICBi dXQgaXQgaXNuJ3QgcmVxdWlyZWQgdG8gaGF2ZSBvbmUhKQogICMgSGVyZSdz IHdoYXQgaXQgZG9lczoKICAjICAgY3JlYXRlIGEgZGJnIGZpbGUgd2l0aCBw cm9wZXIgZGVidWcgaW5mbzoKICAjIG9iamNvcHkgLS1vbmx5LWtlZXAtZGVi dWcgb3JpZyBkYmcKICAjICAgYWRkIGEgbGluayB0byB0aGUgb3JpZ2luYWwg ZmlsZSwgcG9pbnRpbmcgYXQgdGhlIGRiZyBmaWxlIChhZGRzIHRoZQogICMg ICAuZ251X2RlYnVnbGluayBzZWN0aW9uKQogICMgb2JqY29weSAtLWFkZC1n bnUtZGVidWdsaW5rPSJkYmciIG9yaWcKICAjICAgcmUtY3JlYXRlIHRoZSBk YmcgZmlsZTsgdGhpcyB0aW1lIGl0IHdpbGwgQUxTTyBoYXZlIHRoZSAuZ251 X2RlYnVnbGluawogICMgICBzZWN0aW9uCiAgIyBvYmpjb3B5IC0tb25seS1r ZWVwLWRlYnVnIG9yaWcgZGJnCiAgIyAgIHJlbW92ZSBvbGQgLmdudV9kZWJ1 Z2xpbmsgc2VjdGlvbiBmcm9tIHRoZSBvcmlnaW5hbCBmaWxlCiAgIyBvYmpj b3B5IC0tcmVtb3ZlLXNlY3Rpb249LmdudV9kZWJ1Z2xpbmsgb3JpZwogICMg ICBzdHJpcCBkZWJ1Zy1pbmZvIGZyb20gdGhlIG9yaWdpbmFsIGZpbGUKICAj IG9iamNvcHkgLS1zdHJpcC1kZWJ1ZyBvcmlnCiAgIyAgIGFkZCBhIG5ldyAu Z251X2RlYnVnbGluayBzZWN0aW9uIHRvIHRoZSBvcmlnaW5hbCBmaWxlCiAg IyBvYmpjb3B5IC0tYWRkLWdudS1kZWJ1Z2xpbms9ImRiZyIgb3JpZwogICMg VGhpcyB3YXkgZGJnIGZpbGUgZ2V0cyBhIC5nbnVfZGVidWdsaW5rIHNlY3Rp b24gKGRvZXNuJ3QgbWF0dGVyIHdoZXJlCiAgIyBpdCdzIHBvaW50aW5nKSwg YW5kIGl0cyBjb250ZW50cyBwYXNzIHRoZSBDUkMzMiBjaGVjawogICMgU2hv cnRlciB3YXk6CiAgIyBvYmpjb3B5IC0tb25seS1rZWVwLWRlYnVnIG9yaWcg ZGJnCiAgIyBvYmpjb3B5IC0tc3RyaXAtZGVidWcgb3JpZwogICMgb2JqY29w eSAtLWFkZC1nbnUtZGVidWdsaW5rPSJkYmciIG9yaWcKICAKICBkZWYgcG9w ZW5fYW5kX3ByaW50IChsKToKICAgIHByaW50ICgnIicgKyAnIiAiJy5qb2lu IChsKSArICciJykKICAgIHN5cy5zdGRvdXQuZmx1c2ggKCkKICAgIHJldHVy biBzdWJwcm9jZXNzLlBvcGVuIChsKQoKICBmb3IgaWduIGluIGlnbm9yZV9s aXN0OgogICAgaWYgZi5lbmRzd2l0aCAoaWduKToKICAgICAgcHJpbnQgKCJJ Z25vcmUge30iLmZvcm1hdCAoZikpCiAgICAgIHJldHVybiAwCgogIHByaW50 ICgiU2VwYXJhdGluZyBkZWJ1ZyBpbmZvIGZyb20ge30gaW50byB7fSIuZm9y bWF0IChmLCBkYmdfYWJzKSkKICBvYyA9IHBvcGVuX2FuZF9wcmludCAoW29i amNvcHksICctLW9ubHkta2VlcC1kZWJ1ZycsIGYsIGRiZ19hYnNdKQogIG9j LmNvbW11bmljYXRlICgpCiAgaWYgbm90IG9jLnJldHVybmNvZGUgPT0gMDoK ICAgIHJldHVybiBvYy5yZXR1cm5jb2RlCiAgcHJpbnQgKCJDcmVhdGluZyBh IGRlYnVnaW5mbyBsaW5rIHRvIHt9IGluIHt9Ii5mb3JtYXQgKGRiZ19hYnMs IGYpKQogIG9jID0gcG9wZW5fYW5kX3ByaW50IChbb2JqY29weSwgJy0tYWRk LWdudS1kZWJ1Z2xpbms9e30nLmZvcm1hdCAoZGJnX2FicyksIGZdKQogIG9j LmNvbW11bmljYXRlICgpCiAgaWYgbm90IG9jLnJldHVybmNvZGUgPT0gMDoK ICAgIHJldHVybiBvYy5yZXR1cm5jb2RlCiAgcHJpbnQgKCJTZXBhcmF0aW5n IChhZ2FpbikgZGVidWcgaW5mbyBmcm9tIHt9IGludG8ge30iLmZvcm1hdCAo ZiwgZGJnX2FicykpCiAgb2MgPSBwb3Blbl9hbmRfcHJpbnQgKFtvYmpjb3B5 LCAnLS1vbmx5LWtlZXAtZGVidWcnLCBmLCBkYmdfYWJzXSkKICBvYy5jb21t dW5pY2F0ZSAoKQogIGlmIG5vdCBvYy5yZXR1cm5jb2RlID09IDA6CiAgICBy ZXR1cm4gb2MucmV0dXJuY29kZQogIHByaW50ICgiUmVtb3Zpbmcgb2xkIC5n bnVfZGVidWdsaW5rIHNlY3Rpb24gZnJvbSB7fSIuZm9ybWF0IChmKSkKICBz dCA9IHBvcGVuX2FuZF9wcmludCAoW29iamNvcHksICctLXJlbW92ZS1zZWN0 aW9uPS5nbnVfZGVidWdsaW5rJywgZl0pCiAgc3QuY29tbXVuaWNhdGUgKCkK ICBpZiBub3Qgc3QucmV0dXJuY29kZSA9PSAwOgogICAgcmV0dXJuIG9jLnJl dHVybmNvZGUKICBkb19zdHJpcCA9IFRydWUKICBkb19zdHJpcF91bm5lZWRl ZCA9IFRydWUKICBmb3Igbm9zdHJpcCBpbiBub3N0cmlwX2xpc3Q6CiAgICBp ZiBmLmVuZHN3aXRoIChub3N0cmlwKToKICAgICAgZG9fc3RyaXAgPSBGYWxz ZQogICAgICBicmVhawogIGZvciBub3N0cmlwIGluIG5vc3RyaXBfdW5uZWVk ZWRfbGlzdDoKICAgIGlmIGYuZW5kc3dpdGggKG5vc3RyaXApOgogICAgICBk b19zdHJpcF91bm5lZWRlZCA9IEZhbHNlCiAgICAgIGJyZWFrCiAgaWYgZG9f c3RyaXA6CiAgICBzdHJpcF91bm5lZWRlZCA9IFtdCiAgICBpZiBub3QgZG9f c3RyaXBfdW5uZWVkZWQ6CiAgICAgIHN0cmlwX3VubmVlZGVkLmFwcGVuZCAo Jy0tc3RyaXAtdW5uZWVkZWQnKQogICAgcHJpbnQgKCJTdHJpcHBpbmcgZGVi dWcgaW5mbyBmcm9tIHt9Ii5mb3JtYXQgKGYpKQogICAgc3QgPSBwb3Blbl9h bmRfcHJpbnQgKFtvYmpjb3B5LCAnLS1zdHJpcC1kZWJ1ZyddICsgc3RyaXBf dW5uZWVkZWQgKyBbZl0pCiAgICBzdC5jb21tdW5pY2F0ZSAoKQogICAgaWYg bm90IHN0LnJldHVybmNvZGUgPT0gMDoKICAgICAgcmV0dXJuIHN0LnJldHVy bmNvZGUKICBlbHNlOgogICAgcHJpbnQgKCJOb3Qgc3RyaXBwaW5nIHt9Ii5m b3JtYXQgKGYpKQogIHByaW50ICgiQ3JlYXRpbmcgKGFnYWluKSBhIGRlYnVn aW5mbyBsaW5rIHRvIHt9IGluIHt9Ii5mb3JtYXQgKGRiZ19hYnMsIGYpKQog IG9jID0gcG9wZW5fYW5kX3ByaW50IChbb2JqY29weSwgJy0tYWRkLWdudS1k ZWJ1Z2xpbms9e30nLmZvcm1hdCAoZGJnX2FicyksIGZdKQogIG9jLmNvbW11 bmljYXRlICgpCiAgaWYgbm90IG9jLnJldHVybmNvZGUgPT0gMDoKICAgIHJl dHVybiBvYy5yZXR1cm5jb2RlCiAgaCA9IGdldF9maWxlX2hhc2ggKGYpCiAg X19saW5rZWRfYmluYXJ5X2ZpbGVzW2hdID0gKGYsIGRiZ19hYnMpCiAgcmV0 dXJuIDAKIAppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogIHN5cy5leGl0 IChtYWluICgpKQo= --------------AA18A5291E6A3B978439D1C1-- --4Q2yWPLTagpaLpmGMTQYSfCDHkYrAUm8T-- --59rzKj3hxrVSwRmwc5PMzB4HUgKdcILJc Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" Content-length: 833 -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEE4MWzR43wYaAzEA49ja3pJ2dZunQFAly3hzsACgkQja3pJ2dZ unS7tw//QyX2az3HazqaT7jOpayatWurD89w8Qz06Emrf5wIv4FQD807gs8HeZ4/ fhbaDqvP3YHaPDYLu+Zo06r6SnpAj2mkzmRNmFZMb6c+ev6f+Ea/otKa0yKcTLNN reI9zS2PVqn/wETnJXsjWwIQ47W2Ue5ST9kd74XVns936bx/M6YA2KMoBiSTP1Wk YmAG4942XlQwoTG2PV4cWTMX4hggVUoQZsD6EI2BfXAJKz9UpyAzMRY9qK7F2ozp XmhfcGB1CPinx54hoblMvNd24wHXQrqJtBaVwt5FrFLtSUmxQBIHAns66q2d1KNU nH729MHlrAB6uB91d1zGFGXKD/hQjRhRbG5RURSBsue1QthBLRHmqT+S7ExeqRQu s2Xjs4NS4HqdZOPs4UXp3urO/7taFZc/U+qnflyi0UVRpOujH9wB61hov3F4tqKf Of12CF1f54iksY8HpQjtWvu0xrnjMkt2Vyqa+Uj1y5PJKK4h7Yd+AYHkMM9BTWJW nZSleoV7XPzLGQbC0n7qmmtoKCB4kQyjVl/3/L3q1uU3ElWUtikKGyHJNCGRC0Pq cro2qP3a/xTK8syjSgkC0PU40xy3kvaM21jZli+4rnywCSe+5wpOrdf6btqQu/ja X9uk3eWLEg6p7te0vrwQ/TWO2ZsiyFMLDMV6nt+uNzUMFfzTZiQ= =QtHG -----END PGP SIGNATURE----- --59rzKj3hxrVSwRmwc5PMzB4HUgKdcILJc--