From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31041 invoked by alias); 21 May 2010 08:44:08 -0000 Received: (qmail 31028 invoked by uid 22791); 21 May 2010 08:44:06 -0000 X-SWARE-Spam-Status: No, hits=-2.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.44.51) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 21 May 2010 08:44:00 +0000 Received: from hpaq1.eem.corp.google.com (hpaq1.eem.corp.google.com [172.25.149.1]) by smtp-out.google.com with ESMTP id o4L8htI1021128 for ; Fri, 21 May 2010 01:43:55 -0700 Received: from pxi14 (pxi14.prod.google.com [10.243.27.14]) by hpaq1.eem.corp.google.com with ESMTP id o4L8hrbx003193 for ; Fri, 21 May 2010 01:43:54 -0700 Received: by pxi14 with SMTP id 14so315021pxi.6 for ; Fri, 21 May 2010 01:43:52 -0700 (PDT) MIME-Version: 1.0 Received: by 10.141.214.35 with SMTP id r35mr945940rvq.264.1274431432698; Fri, 21 May 2010 01:43:52 -0700 (PDT) Received: by 10.140.255.14 with HTTP; Fri, 21 May 2010 01:43:52 -0700 (PDT) In-Reply-To: <1274380803-25266-3-git-send-email-brobecker@adacore.com> References: <1274380803-25266-1-git-send-email-brobecker@adacore.com> <1274380803-25266-3-git-send-email-brobecker@adacore.com> Date: Fri, 21 May 2010 09:33:00 -0000 Message-ID: Subject: Re: [PATCH 2/2] Add gdb_libdir/python- in front of Python search path. From: Doug Evans To: Joel Brobecker Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd17e94d6326f048716b017 X-System-Of-Record: true X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-05/txt/msg00477.txt.bz2 --000e0cd17e94d6326f048716b017 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 4094 On Thu, May 20, 2010 at 11:40 AM, Joel Brobecker wr= ote: > This patch puts gdb_libdir/python- at the beginning of > the python search path. =A0This allows GDB to use its own copy/version > of the Python library. > > 2010-05-20 =A0Joel Brobecker =A0 > > =A0 =A0 =A0 =A0* python.c (_initialize_python): Add variable libdir in gd= b module. > =A0 =A0 =A0 =A0Insert gdb_libdir/python- at head of python searc= h path. > > Tested on x86_64-linux. No regression. > > --- > =A0gdb/python/python.c | =A0 =A06 ++++++ > =A01 files changed, 6 insertions(+), 0 deletions(-) > > diff --git a/gdb/python/python.c b/gdb/python/python.c > index 3110328..fa76838 100644 > --- a/gdb/python/python.c > +++ b/gdb/python/python.c > @@ -654,6 +654,7 @@ Enables or disables printing of Python stack traces."= ), > =A0 PyModule_AddStringConstant (gdb_module, "VERSION", (char*) version); > =A0 PyModule_AddStringConstant (gdb_module, "HOST_CONFIG", (char*) host_n= ame); > =A0 PyModule_AddStringConstant (gdb_module, "TARGET_CONFIG", (char*) targ= et_name); > + =A0PyModule_AddStringConstant (gdb_module, "libdir", (char*) gdb_libdir= ); > > =A0 gdbpy_initialize_auto_load (); > =A0 gdbpy_initialize_values (); > @@ -702,6 +703,11 @@ class GdbOutputFile:\n\ > =A0\n\ > =A0sys.stderr =3D GdbOutputFile()\n\ > =A0sys.stdout =3D GdbOutputFile()\n\ > +\n\ > +# Put gdb_libdir/python- in the python search path. =A0This all= ows\n\ > +# us to provide GDB bundled with its own python runtime (the .py/pyc fil= es).\n\ > +sys.path.insert(0, gdb.libdir + \"/python-%d.%d\" % (sys.version_info[0]= ,\n\ > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 sys.version_info[1]))\n\ > =A0"); > > =A0 /* Release the GIL while gdb runs. =A0*/ > -- > 1.7.1 > > Hi. I think(!) this is a better approach. Could be wrong of course. :-) I think adding one directory to sys.path is insufficient, and from what I've read it seems like Py_SetProgramName is the preferred solution to this problem. This patch doesn't currently handle your case, where the relationship between the location of python and gdb at build time is different than at runtime. I think the solution to that is another config parameter to specify where to find python at run time. Currently, when given a path, --with-python specifies where to find python at build time, and, for now, also at runtime. I can create another patch to add this new option (--with-python-libdir or some such) if you think it's worth pursuing. Regardless of whether --with-python-libdir is useful to add to the FSF tree, I think the attached patch is worthy. Note that Python's initialization assumes a particular layout that your current plan violates (I think!). [ref Modules/getpath.c in the python sources] /foo/bin/python /foo/lib/pythonX.Y/... The attached patch will work with your --with-gdb-libdir, but python would need to be installed as ${gdb_libdir}/lib/pythonX.Y [or ${gdb_libdir}/foo/lib/pythonX.Y]. The important part is to not separate "lib" from "pythonX.Y". [ref: variable lib_python in Modules/getpath.c] Tested with: python configure --prefix=3D/mumble/lib/gdb gdb configure --prefix=3D/mumble --with-python=3D/mumble/lib/gdb and then renaming /mumble to /mumble2 and then trying "python import itertools" after starting gdb. 2010-05-21 Doug Evans Allow python to find its files if moved from original location. * acinclude.m4 (GDB_AC_DEFINE_RELOCATABLE): New function. (GDB_AC_WITH_DIR): Call it. * configure.ac: If a path is provided to --with-python, define WITH_PYTHON_PATH. * config.in: Regenerate. * configure: Regenerate. * defs.h (python_libdir): Declare. * main.c (python_libdir): Define. (captured_main): Initialize python_libdir. * python/python.c (_initialize_python): If configured with --with-python=3D/path, call Py_SetProgramName to make sure python can find its libraries and modules. --000e0cd17e94d6326f048716b017 Content-Type: text/plain; charset=US-ASCII; name="gdb-100521-with-python-path-1.patch.txt" Content-Disposition: attachment; filename="gdb-100521-with-python-path-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g9grgkwi0 Content-length: 8919 MjAxMC0wNS0yMSAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCUFs bG93IHB5dGhvbiB0byBmaW5kIGl0cyBmaWxlcyBpZiBtb3ZlZCBmcm9tIG9y aWdpbmFsIGxvY2F0aW9uLgoJKiBhY2luY2x1ZGUubTQgKEdEQl9BQ19ERUZJ TkVfUkVMT0NBVEFCTEUpOiBOZXcgZnVuY3Rpb24uCgkoR0RCX0FDX1dJVEhf RElSKTogQ2FsbCBpdC4KCSogY29uZmlndXJlLmFjOiBJZiBhIHBhdGggaXMg cHJvdmlkZWQgdG8gLS13aXRoLXB5dGhvbiwKCWRlZmluZSBXSVRIX1BZVEhP Tl9QQVRILgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3Vy ZTogUmVnZW5lcmF0ZS4KCSogZGVmcy5oIChweXRob25fbGliZGlyKTogRGVj bGFyZS4KCSogbWFpbi5jIChweXRob25fbGliZGlyKTogRGVmaW5lLgoJKGNh cHR1cmVkX21haW4pOiBJbml0aWFsaXplIHB5dGhvbl9saWJkaXIuCgkqIHB5 dGhvbi9weXRob24uYyAoX2luaXRpYWxpemVfcHl0aG9uKTogSWYgY29uZmln dXJlZCB3aXRoCgktLXdpdGgtcHl0aG9uPS9wYXRoLCBjYWxsIFB5X1NldFBy b2dyYW1OYW1lIHRvIG1ha2Ugc3VyZSBweXRob24KCWNhbiBmaW5kIGl0cyBs aWJyYXJpZXMgYW5kIG1vZHVsZXMuCgpJbmRleDogYWNpbmNsdWRlLm00Cj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9n ZGIvYWNpbmNsdWRlLm00LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM1CmRp ZmYgLXUgLXAgLXIxLjM1IGFjaW5jbHVkZS5tNAotLS0gYWNpbmNsdWRlLm00 CTggSmFuIDIwMTAgMDc6MTY6NDMgLTAwMDAJMS4zNQorKysgYWNpbmNsdWRl Lm00CTIxIE1heSAyMDEwIDA4OjA0OjEyIC0wMDAwCkBAIC00MDMsMjIgKzQw MywxMiBAQCBBQ19ERUZVTihbQ1lfQUNfVEtfUFJJVkFURV9IRUFERVJTXSwg WwogICBmaQogXSkKIAotZG5sIEdEQl9BQ19XSVRIX0RJUihbVkFSSUFCTEVd LCBbQVJHLU5BTUVdLCBbSEVMUF0sIFtERUZBVUxUXSkKLWRubCBBZGQgYSBu ZXcgLS13aXRoIG9wdGlvbiB0aGF0IGRlZmluZXMgYSBkaXJlY3RvcnkuCi1k bmwgVGhlIHJlc3VsdCBpcyBzdG9yZWQgaW4gVkFSSUFCTEUuICBBQ19ERUZJ TkVfRElSIGlzIGNhbGxlZAotZG5sIG9uIHRoaXMgdmFyaWFibGUsIGFzIGlz IEFDX1NVQlNULgotZG5sIEFSRy1OQU1FIGlzIHRoZSBiYXNlIG5hbWUgb2Yg dGhlIGFyZ3VtZW50ICh3aXRob3V0ICItLXdpdGgiKS4KLWRubCBIRUxQIGlz IHRoZSBoZWxwIHRleHQgdG8gdXNlLgotZG5sIElmIHRoZSB1c2VyJ3MgY2hv aWNlIGlzIHJlbGF0aXZlIHRvIHRoZSBwcmVmaXgsIHRoZW4gdGhlCitkbmwg R0RCX0FDX0RFRklORV9SRUxPQ0FUQUJMRShbVkFSSUFCTEVdLCBbQVJHLU5B TUVdLCBbU0hFTEwtVkFSSUFCTEVdKQorZG5sIEZvciB1c2UgaW4gcHJvY2Vz c2luZyBkaXJlY3RvcnkgdmFsdWVzIGZvciAtLXdpdGgtZm9vLgorZG5sIElm IHRoZSBwYXRoIGluIFNIRUxMX1ZBUklBQkxFIGlzIHJlbGF0aXZlIHRvIHRo ZSBwcmVmaXgsIHRoZW4gdGhlCiBkbmwgcmVzdWx0IGlzIHJlbG9jYXRhYmxl LCB0aGVuIHRoaXMgd2lsbCBkZWZpbmUgdGhlIEMgbWFjcm8KIGRubCBWQVJJ QUJMRV9SRUxPQ0FUQUJMRSB0byAxOyBvdGhlcndpc2UgaXQgaXMgZGVmaW5l ZCBhcyAwLgotZG5sIERFRkFVTFQgaXMgdGhlIGRlZmF1bHQgdmFsdWUsIHdo aWNoIGlzIHVzZWQgaWYgdGhlIHVzZXIKLWRubCBkb2VzIG5vdCBzcGVjaWZ5 IHRoZSBhcmd1bWVudC4KLUFDX0RFRlVOKFtHREJfQUNfV0lUSF9ESVJdLCBb Ci0gIEFDX0FSR19XSVRIKFskMl0sIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgt XVskMl1bPVBBVEhdLCBbJDNdKSwgWwotICAgIFskMV09JHdpdGh2YWxdLCBb WyQxXT1bJDRdXSkKLSAgQUNfREVGSU5FX0RJUihbJDFdLCBbJDFdLCBbJDNd KQotICBBQ19TVUJTVChbJDFdKQorQUNfREVGVU4oW0dEQl9BQ19ERUZJTkVf UkVMT0NBVEFCTEVdLCBbCiAgIGlmIHRlc3QgIngkZXhlY19wcmVmaXgiID0g eE5PTkUgfHwgdGVzdCAieCRleGVjX3ByZWZpeCIgPSAneCR7cHJlZml4fSc7 IHRoZW4KICAgICAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4K ICAgICAgCXRlc3RfcHJlZml4PS91c3IvbG9jYWwKQEAgLTQyOSwxMSArNDE5 LDMwIEBAIEFDX0RFRlVOKFtHREJfQUNfV0lUSF9ESVJdLCBbCiAgICAgIHRl c3RfcHJlZml4PSRleGVjX3ByZWZpeAogICBmaQogICB2YWx1ZT0wCi0gIGNh c2UgJHthY19kZWZpbmVfZGlyfSBpbgorICBjYXNlIFskM10gaW4KICAgICAg IiR7dGVzdF9wcmVmaXh9InwiJHt0ZXN0X3ByZWZpeH0vIip8XAogCScke2V4 ZWNfcHJlZml4fSd8JyR7ZXhlY19wcmVmaXh9LycqKQogICAgICB2YWx1ZT0x CiAgICAgIDs7CiAgIGVzYWMKICAgQUNfREVGSU5FX1VOUVVPVEVEKFskMV1f UkVMT0NBVEFCTEUsICR2YWx1ZSwgW0RlZmluZSBpZiB0aGUgJDIgZGlyZWN0 b3J5IHNob3VsZCBiZSByZWxvY2F0ZWQgd2hlbiBHREIgaXMgbW92ZWQuXSkK K10pCisKK2RubCBHREJfQUNfV0lUSF9ESVIoW1ZBUklBQkxFXSwgW0FSRy1O QU1FXSwgW0hFTFBdLCBbREVGQVVMVF0pCitkbmwgQWRkIGEgbmV3IC0td2l0 aCBvcHRpb24gdGhhdCBkZWZpbmVzIGEgZGlyZWN0b3J5LgorZG5sIFRoZSBy ZXN1bHQgaXMgc3RvcmVkIGluIFZBUklBQkxFLiAgQUNfREVGSU5FX0RJUiBp cyBjYWxsZWQKK2RubCBvbiB0aGlzIHZhcmlhYmxlLCBhcyBpcyBBQ19TVUJT VC4KK2RubCBBUkctTkFNRSBpcyB0aGUgYmFzZSBuYW1lIG9mIHRoZSBhcmd1 bWVudCAod2l0aG91dCAiLS13aXRoIikuCitkbmwgSEVMUCBpcyB0aGUgaGVs cCB0ZXh0IHRvIHVzZS4KK2RubCBJZiB0aGUgdXNlcidzIGNob2ljZSBpcyBy ZWxhdGl2ZSB0byB0aGUgcHJlZml4LCB0aGVuIHRoZQorZG5sIHJlc3VsdCBp cyByZWxvY2F0YWJsZSwgdGhlbiB0aGlzIHdpbGwgZGVmaW5lIHRoZSBDIG1h Y3JvCitkbmwgVkFSSUFCTEVfUkVMT0NBVEFCTEUgdG8gMTsgb3RoZXJ3aXNl IGl0IGlzIGRlZmluZWQgYXMgMC4KK2RubCBERUZBVUxUIGlzIHRoZSBkZWZh dWx0IHZhbHVlLCB3aGljaCBpcyB1c2VkIGlmIHRoZSB1c2VyCitkbmwgZG9l cyBub3Qgc3BlY2lmeSB0aGUgYXJndW1lbnQuCitBQ19ERUZVTihbR0RCX0FD X1dJVEhfRElSXSwgWworICBBQ19BUkdfV0lUSChbJDJdLCBBU19IRUxQX1NU UklORyhbLS13aXRoLV1bJDJdWz1QQVRIXSwgWyQzXSksIFsKKyAgICBbJDFd PSR3aXRodmFsXSwgW1skMV09WyQ0XV0pCisgIEFDX0RFRklORV9ESVIoWyQx XSwgWyQxXSwgWyQzXSkKKyAgQUNfU1VCU1QoWyQxXSkKKyAgR0RCX0FDX0RF RklORV9SRUxPQ0FUQUJMRShbJDFdLCBbJDJdLCAke2FjX2RlZmluZV9kaXJ9 KQogICBdKQpJbmRleDogY29uZmlndXJlLmFjCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvY29uZmlndXJlLmFj LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjExNwpkaWZmIC11IC1wIC1yMS4x MTcgY29uZmlndXJlLmFjCi0tLSBjb25maWd1cmUuYWMJMjMgQXByIDIwMTAg MTg6MDc6MjYgLTAwMDAJMS4xMTcKKysrIGNvbmZpZ3VyZS5hYwkyMSBNYXkg MjAxMCAwODoxMTo1MCAtMDAwMApAQCAtNjY5LDYgKzY2OSwxMyBAQCBlbHNl CiAgICAgZXNhYwogICAgIENQUEZMQUdTPSRzYXZlX0NQUEZMQUdTCiAgICAg TElCUz0kc2F2ZV9MSUJTCisgIGVsc2UKKyAgICBjYXNlICIke3dpdGhfcHl0 aG9ufSIgaW4KKyAgICAvKikKKyAgICAgIEFDX0RFRklORV9VTlFVT1RFRChX SVRIX1BZVEhPTl9QQVRILCAiJHt3aXRoX3B5dGhvbn0iLCBbRGVmaW5lIGlm IC0td2l0aC1weXRob24gY29udGFpbnMgYSBwYXRoLl0pCisgICAgICBHREJf QUNfREVGSU5FX1JFTE9DQVRBQkxFKFBZVEhPTl9QQVRILCBweXRob24tcGF0 aCwgJHt3aXRoX3B5dGhvbn0pCisgICAgICA7OworICAgIGVzYWMKICAgZmkK IGZpCiAKSW5kZXg6IGRlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2RlZnMuaCx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4yNzMKZGlmZiAtdSAtcCAtcjEuMjczIGRlZnMuaAotLS0g ZGVmcy5oCTIgTWF5IDIwMTAgMjM6NTI6MTQgLTAwMDAJMS4yNzMKKysrIGRl ZnMuaAkyMSBNYXkgMjAxMCAwODowNDoxMiAtMDAwMApAQCAtMTU3LDYgKzE1 NywxMCBAQCBleHRlcm4gY2hhciAqZ2RiX3N5c3Jvb3Q7CiAvKiBHREIgZGF0 YWRpciwgdXNlZCB0byBzdG9yZSBkYXRhIGZpbGVzLiAgKi8KIGV4dGVybiBj aGFyICpnZGJfZGF0YWRpcjsKIAorLyogSWYgbm9uLU5VTEwsIHRoZSBwb3Nz aWJseSByZWxvY2F0ZWQgcGF0aCB0byBiaW4vcHl0aG9uIHNwZWNpZmllZCB3 aXRoCisgICAtLXdpdGgtcHl0aG9uLXBhdGguICAqLworZXh0ZXJuIGNoYXIg KnB5dGhvbl9saWJkaXI7CisKIC8qIFNlYXJjaCBwYXRoIGZvciBzZXBhcmF0 ZSBkZWJ1ZyBmaWxlcy4gICovCiBleHRlcm4gY2hhciAqZGVidWdfZmlsZV9k aXJlY3Rvcnk7CiAKSW5kZXg6IG1haW4uYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL21haW4uYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS44NApkaWZmIC11IC1wIC1yMS44NCBtYWluLmMK LS0tIG1haW4uYwkxNiBNYXkgMjAxMCAwMDoxODowMiAtMDAwMAkxLjg0Cisr KyBtYWluLmMJMjEgTWF5IDIwMTAgMDg6MDQ6MTIgLTAwMDAKQEAgLTY4LDYg KzY4LDEwIEBAIGNoYXIgKmdkYl9zeXNyb290ID0gMDsKIC8qIEdEQiBkYXRh ZGlyLCB1c2VkIHRvIHN0b3JlIGRhdGEgZmlsZXMuICAqLwogY2hhciAqZ2Ri X2RhdGFkaXIgPSAwOwogCisvKiBJZiBnZGIgd2FzIGNvbmZpZ3VyZWQgd2l0 aCAtLXdpdGgtcHl0aG9uPS9wYXRoLAorICAgdGhlIHBvc3NpYmx5IHJlbG9j YXRlZCBwYXRoIHRvIHB5dGhvbidzIGxpYiBkaXJlY3RvcnkuICAqLworY2hh ciAqcHl0aG9uX2xpYmRpciA9IDA7CisKIHN0cnVjdCB1aV9maWxlICpnZGJf c3Rkb3V0Owogc3RydWN0IHVpX2ZpbGUgKmdkYl9zdGRlcnI7CiBzdHJ1Y3Qg dWlfZmlsZSAqZ2RiX3N0ZGxvZzsKQEAgLTM1MSw2ICszNTgsMTQgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgZ2RiX2RhdGFkaXIgPSByZWxv Y2F0ZV9kaXJlY3RvcnkgKGFyZ3ZbMF0sIEdEQl9EQVRBRElSLAogCQkJCSAg ICBHREJfREFUQURJUl9SRUxPQ0FUQUJMRSk7CiAKKyNpZmRlZiBXSVRIX1BZ VEhPTl9QQVRICisgIC8qIEZvciBsYXRlciB1c2UgaW4gaGVscGluZyBQeXRo b24gZmluZCBpdHNlbGYuICAqLworICBweXRob25fbGliZGlyID0gcmVsb2Nh dGVfZGlyZWN0b3J5IChhcmd2WzBdLAorCQkJCSAgICAgIGNvbmNhdCAoV0lU SF9QWVRIT05fUEFUSCwKKwkJCQkJICAgICAgU0xBU0hfU1RSSU5HLCAibGli IiwgTlVMTCksCisJCQkJICAgICAgUFlUSE9OX1BBVEhfUkVMT0NBVEFCTEUp OworI2VuZGlmCisKICNpZmRlZiBSRUxPQ19TUkNESVIKICAgYWRkX3N1YnN0 aXR1dGVfcGF0aF9ydWxlIChSRUxPQ19TUkNESVIsCiAJCQkgICAgbWFrZV9y ZWxhdGl2ZV9wcmVmaXggKGFyZ3ZbMF0sIEJJTkRJUiwKSW5kZXg6IHB5dGhv bi9weXRob24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL3NyYy9zcmMvZ2RiL3B5dGhvbi9weXRob24uYyx2CnJldHJpZXZpbmcg cmV2aXNpb24gMS4zOApkaWZmIC11IC1wIC1yMS4zOCBweXRob24uYwotLS0g cHl0aG9uL3B5dGhvbi5jCTE5IE1heSAyMDEwIDIzOjMyOjI0IC0wMDAwCTEu MzgKKysrIHB5dGhvbi9weXRob24uYwkyMSBNYXkgMjAxMCAwODowNDoxMiAt MDAwMApAQCAtNjQ1LDYgKzY0NSwxNyBAQCBFbmFibGVzIG9yIGRpc2FibGVz IHByaW50aW5nIG9mIFB5dGhvbiBzCiAJCQkgICAmc2hvd19weXRob25fbGlz dCk7CiAKICNpZmRlZiBIQVZFX1BZVEhPTgorI2lmZGVmIFdJVEhfUFlUSE9O X1BBVEgKKyAgLyogV29yayBhcm91bmQgcHJvYmxlbSB3aGVyZSBweXRob24g Z2V0cyBjb25mdXNlZCBhYm91dCB3aGVyZSBpdCBpcywKKyAgICAgYW5kIHRo ZW4gY2FuJ3QgZmluZCBpdHMgbGlicmFyaWVzLCBldGMuCisgICAgIE5PVEU6 IFB5dGhvbiBhc3N1bWVzIHRoZSBmb2xsb3dpbmcgbGF5b3V0OgorICAgICAv Zm9vL2Jpbi9weXRob24KKyAgICAgL2Zvby9saWIvcHl0aG9uWC5ZLy4uLgor ICAgICBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgY2FsbGluZyBQeV9Jbml0 aWFsaXplLiAgKi8KKyAgUHlfU2V0UHJvZ3JhbU5hbWUgKGNvbmNhdCAobGRp cm5hbWUgKHB5dGhvbl9saWJkaXIpLCBTTEFTSF9TVFJJTkcsICJiaW4iLAor CQkJICAgICBTTEFTSF9TVFJJTkcsICJweXRob24iLCBOVUxMKSk7CisjZW5k aWYKKwogICBQeV9Jbml0aWFsaXplICgpOwogICBQeUV2YWxfSW5pdFRocmVh ZHMgKCk7CiAK --000e0cd17e94d6326f048716b017--