From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14175 invoked by alias); 18 Jan 2012 18:44:31 -0000 Received: (qmail 14167 invoked by uid 22791); 18 Jan 2012 18:44:29 -0000 X-SWARE-Spam-Status: No, hits=-3.0 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 18 Jan 2012 18:44:12 +0000 Received: by vcbfl11 with SMTP id fl11so1561363vcb.0 for ; Wed, 18 Jan 2012 10:44:12 -0800 (PST) Received: by 10.220.225.1 with SMTP id iq1mr1963729vcb.51.1326912251866; Wed, 18 Jan 2012 10:44:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.225.1 with SMTP id iq1mr1963712vcb.51.1326912251748; Wed, 18 Jan 2012 10:44:11 -0800 (PST) Received: by 10.220.229.1 with HTTP; Wed, 18 Jan 2012 10:44:11 -0800 (PST) In-Reply-To: <4f158a77.833ed80a.629b.7837SMTPIN_ADDED@mx.google.com> References: <4f143c53.ca3c440a.1d95.ffff9b71SMTPIN_ADDED@mx.google.com> <4f158a77.833ed80a.629b.7837SMTPIN_ADDED@mx.google.com> Date: Wed, 18 Jan 2012 19:01:00 -0000 Message-ID: Subject: Re: Possible fix for mingw32 directory relocation problems From: Doug Evans To: Pierre Muller Cc: gdb-patches@sourceware.org, Eli Zaretskii , asmwarrior@gmail.com, Tom Tromey X-System-Of-Record: true Content-Type: multipart/mixed; boundary=14dae9cdc11b69e0d604b6d1d5ee 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: 2012-01/txt/msg00677.txt.bz2 --14dae9cdc11b69e0d604b6d1d5ee Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5802 On Tue, Jan 17, 2012 at 6:49 AM, Pierre Muller wrote: > > >> -----Message d'origine----- >> De=A0: gdb-patches-owner@sourceware.org [mailto:gdb-patches- >> owner@sourceware.org] De la part de Doug Evans >> Envoy=E9=A0: mardi 17 janvier 2012 08:00 >> =C0=A0: Pierre Muller >> Cc=A0: gdb-patches@sourceware.org; Eli Zaretskii; asmwarrior@gmail.com; = Tom >> Tromey >> Objet=A0: Re: Possible fix for mingw32 directory relocation problems >> >> On Mon, Jan 16, 2012 at 7:03 AM, Pierre Muller >> wrote: >> > =A0After some debugging, >> > we finally managed to find out that >> > mingw32 specific directory relocations are related >> > to msys -> mingw32 argument conversions. >> >> Thanks for the detective work! > > =A0I always liked to debug GDB with itself! > >> > http://sourceware.org/ml/gdb-patches/2012-01/msg00537.html >> > >> > This is explained in: >> > >> > http://www.mingw.org/wiki/Posix_path_conversion >> > >> > This page also allows to understand why >> > using mingw32 style paths for prefix at configure >> > level works and avoid the troubles encountered. >> > >> > This conversion concerns defines passed by command line arguments >> > to gcc, which are specific to main.o >> > compilation, as found in gdb/Makefile.in >> > 1520- >> > 1521:# main.o needs an explicit build rule to get TARGET_SYSTEM_ROOT a= nd >> > BINDIR. >> > 1522-main.o: $(srcdir)/main.c >> > 1523: =A0 $(COMPILE) $(TARGET_SYSTEM_ROOT_DEFINE) -DBINDIR=3D\"$(bindi= r)\" >> > $(srcdir)/main.c >> > 1524- =A0 $(POSTCOMPILE) >> > 1525- >> > >> > =A0But this leads to a conversion: >> > =A0-DBINDIR=3D"/usr/local/bin\" >> > gets transformed into '-D' 'BINDIR=3D"E:/msys/mingw32/msys/1.0/local/b= in"' >> > >> > =A0While other pates used in relocate_gdb_directory calls >> > are macros defined inside gdb/config.h >> > >> > config.h:#define DEBUGDIR "/usr/local/lib/debug" >> > config.h:#define GDB_DATADIR "/usr/local/share/gdb" >> > config.h:#define JIT_READER_DIR "/usr/local/lib/gdb" >> > >> > Those are of course not affected by msys command-line argument > conversion. >> > >> > =A0The first question is: >> > Why do we need to pass BINDIR (and TARGET_SYSTEM_ROOT_DEFINE) >> > at the command line instead of inside config.h as for other >> > directories? >> >> We don't need to pass them on the command line. >> >> > =A0If the answer to the first question is "we don't", >> > then I need help about how to convert those >> > Makefile.in variables into new entries of generated config.h file. >> >> Possible patch is attached. >> Can you try it? =A0I don't know that it will fix things, but based on >> what you've said it seems reasonable to try. > > =A0I tried it... > But got really into troubles to regenerate configure and config.in using > Cygwin > installation... > =A0I finally discovered gcc-tools-epoch2 cygwin package > that allowed me to successfully regenerate configure and config.in > > =A0After that I did recompile and install gdb into e:\pas\fpc-2.7.1 direc= tory > by specifying --prefix=3D/e/pas/fpc-2.7.1 > (I tested with --preficx=3De:/pas/fpc-2.4.4, which worked the same) > > E:\pas\fpc-2.7.1\gdb>cd bin > > E:\pas\fpc-2.7.1\gdb\bin>.\gdb ./gdb > GNU gdb (GDB) 7.4.50.20120117-cvs > Copyright (C) 2012 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. =A0Type "show copyi= ng" > and "show warranty" for details. > This GDB was configured as "i686-pc-mingw32". > For bug reporting instructions, please see: > ... > Reading symbols from E:\pas\fpc-2.7.1\gdb\bin\gdb.exe...done. > (gdb) py print gdb.PYTHONDIR > e:\pas\fpc-2.7.1\gdb\share\gdb/python > (gdb) py >>end > (gdb) q > > E:\pas\fpc-2.7.1\gdb\bin>cd ..\.. > > E:\pas\fpc-2.7.1>cp -Rf gdb ..\fpc-2.6.0 > > E:\pas\fpc-2.7.1>cd ..\fpc-2.6.0\gdb\bin > > E:\pas\fpc-2.6.0\gdb\bin>.\gdb ./gdb > GNU gdb (GDB) 7.4.50.20120117-cvs > Copyright (C) 2012 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. =A0Type "show copyi= ng" > and "show warranty" for details. > This GDB was configured as "i686-pc-mingw32". > For bug reporting instructions, please see: > ... > Reading symbols from E:\pas\fpc-2.6.0\gdb\bin\gdb.exe...done. > (gdb) py print gdb.PYTHONDIR > e:\pas\fpc-2.6.0\gdb\share\gdb/python > (gdb) > > So the basic idea of rebasing gdb/python seems to work, > the next problem is that I never used python scripts > so that I didn't know what else to do to check that this directory is rea= lly > functional! Here is the patch I committed. Tested on amd64-linux with various values for --with-sysroot. The test the previous code was using to compute the relocability of TARGET_SYSTEM_ROOT, is, AFAICT, excessively complex. main.c treats TARGET_SYSTEM_ROOT no different than other relocatable dirs, so I went with what GDB_AC_WITH_DIR does. Alas I can't just use GDB_AC_WITH_DIR as the help output will be wrong, and I didn't want to add another argument to GDB_AC_WITH_DIR and update all its callers just for this. Still, I think this is an improvement. Thanks again for the detective work. 2012-01-18 Doug Evans * Makefile.in (TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_DEFINE): Dele= te. (main.o): Remove rule. * configure.ac (BINDIR): Define with AC_DEFINE_DIR. (--with-sysroot): Rewrite. * configure: Regenerate. * config.in: Regenerate. --14dae9cdc11b69e0d604b6d1d5ee Content-Type: text/plain; charset=US-ASCII; name="gdb-120118-mingw-sysroot-config-1.patch.txt" Content-Disposition: attachment; filename="gdb-120118-mingw-sysroot-config-1.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gxkp95zn0 Content-length: 11749 MjAxMi0wMS0xNiAgRG91ZyBFdmFucyAgPGRqZUBzZWJhYmVhY2gub3JnPgoK CSogTWFrZWZpbGUuaW4gKFRBUkdFVF9TWVNURU1fUk9PVCwgVEFSR0VUX1NZ U1RFTV9ST09UX0RFRklORSk6IERlbGV0ZS4KCShtYWluLm8pOiBSZW1vdmUg cnVsZS4KCSogY29uZmlndXJlLmFjIChCSU5ESVIpOiBEZWZpbmUgd2l0aCBB Q19ERUZJTkVfRElSLgoJKC0td2l0aC1zeXNyb290KTogUmV3cml0ZS4KCSog Y29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaW46IFJlZ2VuZXJh dGUuCgpJbmRleDogTWFrZWZpbGUuaW4KPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9NYWtlZmlsZS5pbix2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4xMTg2CmRpZmYgLXUgLXAgLXIxLjExODYg TWFrZWZpbGUuaW4KLS0tIE1ha2VmaWxlLmluCTEwIEphbiAyMDEyIDE2OjMw OjQzIC0wMDAwCTEuMTE4NgorKysgTWFrZWZpbGUuaW4JMTggSmFuIDIwMTIg MTg6MTg6NDAgLTAwMDAKQEAgLTE2NiwxMCArMTY2LDYgQEAgSU5UTCA9IEBM SUJJTlRMQAogSU5UTF9ERVBTID0gQExJQklOVExfREVQQAogSU5UTF9DRkxB R1MgPSBASU5DSU5UTEAKIAotIyBEaWQgdGhlIHVzZXIgZ2l2ZSB1cyBhIC0t d2l0aC1zeXNyb290IG9wdGlvbj8KLVRBUkdFVF9TWVNURU1fUk9PVCA9IEBU QVJHRVRfU1lTVEVNX1JPT1RACi1UQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5F ID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACi0KICMgRGlkIHRoZSB1 c2VyIGdpdmUgdXMgYSAtLXdpdGgtZ2RiLWRhdGFkaXIgb3B0aW9uPwogR0RC X0RBVEFESVIgPSBAR0RCX0RBVEFESVJACiAKQEAgLTE1MTgsMTEgKzE1MTQs NiBAQCBBTExERVBGSUxFUyA9IFwKICMgU29tZSBmaWxlcyBuZWVkIGV4cGxp Y2l0IGJ1aWxkIHJ1bGVzIChkdWUgdG8gLVdlcnJvciBwcm9ibGVtcykgb3Ig ZHVlCiAjIHRvIHN1Yi1kaXJlY3RvcnkgZnVuICduJyBnYW1lcy4KIAotIyBt YWluLm8gbmVlZHMgYW4gZXhwbGljaXQgYnVpbGQgcnVsZSB0byBnZXQgVEFS R0VUX1NZU1RFTV9ST09UIGFuZCBCSU5ESVIuCi1tYWluLm86ICQoc3JjZGly KS9tYWluLmMKLQkkKENPTVBJTEUpICQoVEFSR0VUX1NZU1RFTV9ST09UX0RF RklORSkgLURCSU5ESVI9XCIkKGJpbmRpcilcIiAkKHNyY2RpcikvbWFpbi5j Ci0JJChQT1NUQ09NUElMRSkKLQogIyBGSVhNRTogY2FnbmV5LzIwMDMtMDgt MTA6ICJtb25pdG9yLmMiIGdldHMgLVdmb3JtYXQtbm9ubGl0ZXJhbAogIyBl cnJvcnMuICBJdCB0dXJucyBvdXQgdGhhdCB0aGF0IGlzIHRoZSBsZWFzdCBv ZiBtb25pdG9yLmMncwogIyBwcm9ibGVtcy4gIFRoZSBmdW5jdGlvbiBwcmlu dF92c3ByaW50ZiBhcHBlYXJzIHRvIGJlIHVzaW5nCkluZGV4OiBjb25maWcu aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL2dkYi9jb25maWcuaW4sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTMw CmRpZmYgLXUgLXAgLXIxLjEzMCBjb25maWcuaW4KLS0tIGNvbmZpZy5pbgkx MiBKYW4gMjAxMiAyMzozODo0NyAtMDAwMAkxLjEzMAorKysgY29uZmlnLmlu CTE4IEphbiAyMDEyIDE4OjE4OjQwIC0wMDAwCkBAIC03LDYgKzcsOSBAQAog LyogRGVmaW5lIGlmIGJ1aWxkaW5nIHVuaXZlcnNhbCAoaW50ZXJuYWwgaGVs cGVyIG1hY3JvKSAqLwogI3VuZGVmIEFDX0FQUExFX1VOSVZFUlNBTF9CVUlM RAogCisvKiBEaXJlY3Rvcnkgb2YgcHJvZ3JhbXMuICovCisjdW5kZWYgQklO RElSCisKIC8qIERlZmluZSB0byB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdHlw ZSAncHRyZGlmZl90Jy4gKi8KICN1bmRlZiBCSVRTSVpFT0ZfUFRSRElGRl9U CiAKQEAgLTg1NCw2ICs4NTcsMTIgQEAKICAgIG1vdmVkLiAqLwogI3VuZGVm IFNZU1RFTV9HREJJTklUX1JFTE9DQVRBQkxFCiAKKy8qIHNlYXJjaCBmb3Ig dXNyL2xpYiBldCBhbCB3aXRoaW4gRElSICovCisjdW5kZWYgVEFSR0VUX1NZ U1RFTV9ST09UCisKKy8qIERlZmluZSBpZiB0aGUgc3lzcm9vdCBkaXJlY3Rv cnkgc2hvdWxkIGJlIHJlbG9jYXRlZCB3aGVuIEdEQiBpcyBtb3ZlZC4gKi8K KyN1bmRlZiBUQVJHRVRfU1lTVEVNX1JPT1RfUkVMT0NBVEFCTEUKKwogLyog RGVmaW5lIGlmIDx0aHJlYWRfZGIuaD4gaGFzIHRoZSBURF9OT1RBTExPQyBl cnJvciBjb2RlLiAqLwogI3VuZGVmIFRIUkVBRF9EQl9IQVNfVERfTk9UQUxM T0MKIApJbmRleDogY29uZmlndXJlCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvY29uZmlndXJlLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjMzNwpkaWZmIC11IC1wIC1yMS4zMzcgY29uZmln dXJlCi0tLSBjb25maWd1cmUJMTIgSmFuIDIwMTIgMjM6Mzg6NDcgLTAwMDAJ MS4zMzcKKysrIGNvbmZpZ3VyZQkxOCBKYW4gMjAxMiAxODoxODo0MCAtMDAw MApAQCAtNjU0LDcgKzY1NCw2IEBAIFNFUl9IQVJEV0lSRQogV0VSUk9SX0NG TEFHUwogV0FSTl9DRkxBR1MKIFNZU1RFTV9HREJJTklUCi1UQVJHRVRfU1lT VEVNX1JPT1RfREVGSU5FCiBUQVJHRVRfU1lTVEVNX1JPT1QKIENPTkZJR19M REZMQUdTCiBSRFlOQU1JQwpAQCAtNzkwMCw2ICs3ODk5LDI0IEBAIF9BQ0VP RgogCiAKIAorIyBXZSBjYW4ndCBwYXNzIHBhdGhzIGFzIGNvbW1hbmQgbGlu ZSBhcmd1bWVudHMuCisjIE1pbmd3MzIgdHJpZXMgdG8gYmUgY2xldmVyIGFu ZCB3aWxsIGNvbnZlcnQgdGhlIHBhdGhzIGZvciB1cy4KKyMgRm9yIGV4YW1w bGUgLURCSU5ESVI9Ii91c3IvbG9jYWwvYmluIiBwYXNzZWQgb24gdGhlIGNv bW1hbmQgbGluZSBtYXkgZ2V0CisjIGNvbnZlcnRlZCB0byAtREJJTkRJUj0i RTovbXN5cy9taW5ndzMyL21zeXMvMS4wL2xvY2FsL2JpbiIuCisjIFRoaXMg YnJlYWtzIEdEQidzIHJlbG9jYXRhYmxlIHBhdGggY29udmVyc2lvbnMgc2lu Y2UgcGF0aHMgcGFzc2VkIGluCisjIGNvbmZpZy5oIHdvdWxkIG5vdCBnZXQg c28gdHJhbnNsYXRlZCwgdGhlIHBhdGggcHJlZml4ZXMgbm8gbG9uZ2VyIG1h dGNoLgorCisgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0i JGFjX2RlZmF1bHRfcHJlZml4IgorICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9 IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCisgIGFjX2RlZmlu ZV9kaXI9YGV2YWwgZWNobyAkYmluZGlyYAorICBhY19kZWZpbmVfZGlyPWBl dmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCisKK2NhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YKKyNkZWZpbmUgQklORElSICIkYWNfZGVmaW5lX2RpciIKK19B Q0VPRgorCisKKwogIyBHREIncyBkYXRhZGlyIHJlbG9jYXRpb24KIAogCkBA IC0xNTA0Myw0NSArMTUwNjAsNTMgQEAgJGFzX2VjaG8gIiNkZWZpbmUgSEFW RV9QRVJTT05BTElUWSAxIiA+PgogZmkKIAogCi10YXJnZXRfc3lzcm9vdF9y ZWxvYz0wCisjIFN1cHBvcnQgZm9yIC0td2l0aC1zeXNyb290IGlzIGEgY29w eSBvZiBHREJfQUNfV0lUSF9ESVIsCisjIGV4Y2VwdCB0aGF0IHRoZSBhcmd1 bWVudCB0byAtLXdpdGgtc3lzcm9vdCBpcyBvcHRpb25hbC4KKyMgLS13aXRo LXN5c3Jvb3QgKG9yIC0td2l0aC1zeXNyb290PXllcykgc2V0cyB0aGUgZGVm YXVsdCBzeXNyb290IHBhdGguCitpZiB0ZXN0ICJ4JHdpdGhfc3lzcm9vdCIg PSB4eWVzOyB0aGVuCisgIHdpdGhfc3lzcm9vdD0iJHtleGVjX3ByZWZpeH0v JHt0YXJnZXRfYWxpYXN9L3N5cy1yb290IgorZmkKIAogIyBDaGVjayB3aGV0 aGVyIC0td2l0aC1zeXNyb290IHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7d2l0 aF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0 aF9zeXNyb290OwotIGNhc2UgJHt3aXRoX3N5c3Jvb3R9IGluCi0geWVzKSBU QVJHRVRfU1lTVEVNX1JPT1Q9JyR7ZXhlY19wcmVmaXh9LyR7dGFyZ2V0X2Fs aWFzfS9zeXMtcm9vdCcgOzsKLSAqKSBUQVJHRVRfU1lTVEVNX1JPT1Q9JHdp dGhfc3lzcm9vdCA7OwotIGVzYWMKKyAgd2l0aHZhbD0kd2l0aF9zeXNyb290 OyBUQVJHRVRfU1lTVEVNX1JPT1Q9JHdpdGh2YWwKK2Vsc2UKKyAgVEFSR0VU X1NZU1RFTV9ST09UPQorZmkKIAotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJ TkU9Jy1EVEFSR0VUX1NZU1RFTV9ST09UPVwiJChUQVJHRVRfU1lTVEVNX1JP T1QpXCInCiAKLSBpZiB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgot ICB0ZXN0X3ByZWZpeD0vdXNyL2xvY2FsCi0gZWxzZQotICB0ZXN0X3ByZWZp eD0kcHJlZml4Ci0gZmkKLSBpZiB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhO T05FIHx8IHRlc3QgIngkZXhlY19wcmVmaXgiID0gJ3gke3ByZWZpeH0nOyB0 aGVuCi0gIHRlc3RfZXhlY19wcmVmaXg9JHRlc3RfcHJlZml4Ci0gZWxzZQot ICB0ZXN0X2V4ZWNfcHJlZml4PSRleGVjX3ByZWZpeAotIGZpCi0gY2FzZSAk e1RBUkdFVF9TWVNURU1fUk9PVH0gaW4KLSAiJHt0ZXN0X3ByZWZpeH0ifCIk e3Rlc3RfcHJlZml4fS8iKnxcCi0gIiR7dGVzdF9leGVjX3ByZWZpeH0ifCIk e3Rlc3RfZXhlY19wcmVmaXh9LyIqfFwKLSAnJHtwcmVmaXh9J3wnJHtwcmVm aXh9LycqfFwKLSAnJHtleGVjX3ByZWZpeH0nfCcke2V4ZWNfcHJlZml4fS8n KikKLSAgIHRhcmdldF9zeXNyb290X3JlbG9jPTEKLSAgIDs7Ci0gZXNhYwor ICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZh dWx0X3ByZWZpeCIKKyAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAm JiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworICBhY19kZWZpbmVfZGlyPWBl dmFsIGVjaG8gJFRBUkdFVF9TWVNURU1fUk9PVGAKKyAgYWNfZGVmaW5lX2Rp cj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAogCi1lbHNlCitjYXQgPj5j b25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFRBUkdFVF9TWVNURU1fUk9P VCAiJGFjX2RlZmluZV9kaXIiCitfQUNFT0YKIAotIFRBUkdFVF9TWVNURU1f Uk9PVD0KLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FPSctRFRBUkdFVF9T WVNURU1fUk9PVD1cIlwiJwogCi1maQogCi1UQVJHRVRfU1lTVEVNX1JPT1Rf REVGSU5FPSIkVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSAtRFRBUkdFVF9T WVNURU1fUk9PVF9SRUxPQ0FUQUJMRT0kdGFyZ2V0X3N5c3Jvb3RfcmVsb2Mi CisKKyAgaWYgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0 ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9JzsgdGhlbgorICAgICBp ZiB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgorICAgICAJdGVzdF9w cmVmaXg9L3Vzci9sb2NhbAorICAgICBlbHNlCisJdGVzdF9wcmVmaXg9JHBy ZWZpeAorICAgICBmaQorICBlbHNlCisgICAgIHRlc3RfcHJlZml4PSRleGVj X3ByZWZpeAorICBmaQorICB2YWx1ZT0wCisgIGNhc2UgJHthY19kZWZpbmVf ZGlyfSBpbgorICAgICAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4 fS8iKnxcCisJJyR7ZXhlY19wcmVmaXh9J3wnJHtleGVjX3ByZWZpeH0vJyop CisgICAgIHZhbHVlPTEKKyAgICAgOzsKKyAgZXNhYworCitjYXQgPj5jb25m ZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFRBUkdFVF9TWVNURU1fUk9PVF9S RUxPQ0FUQUJMRSAkdmFsdWUKK19BQ0VPRgogCiAKIApJbmRleDogY29uZmln dXJlLmFjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv c3JjL3NyYy9nZGIvY29uZmlndXJlLmFjLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjE1MgpkaWZmIC11IC1wIC1yMS4xNTIgY29uZmlndXJlLmFjCi0tLSBj b25maWd1cmUuYWMJNCBKYW4gMjAxMiAwODoxNzowMCAtMDAwMAkxLjE1Mgor KysgY29uZmlndXJlLmFjCTE4IEphbiAyMDEyIDE4OjE4OjQwIC0wMDAwCkBA IC0xMjUsNiArMTI1LDE0IEBAIEdEQl9BQ19XSVRIX0RJUihERUJVR0RJUiwg c2VwYXJhdGUtZGVidWcKICAgICBbbG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRl IGRlYnVnIGluZm8gaW4gdGhpcyBwYXRoIEA8OkBMSUJESVIvZGVidWdAOj5A XSwKICAgICBbJHtsaWJkaXJ9L2RlYnVnXSkKIAorIyBXZSBjYW4ndCBwYXNz IHBhdGhzIGFzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCisjIE1pbmd3MzIg dHJpZXMgdG8gYmUgY2xldmVyIGFuZCB3aWxsIGNvbnZlcnQgdGhlIHBhdGhz IGZvciB1cy4KKyMgRm9yIGV4YW1wbGUgLURCSU5ESVI9Ii91c3IvbG9jYWwv YmluIiBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZSBtYXkgZ2V0CisjIGNv bnZlcnRlZCB0byAtREJJTkRJUj0iRTovbXN5cy9taW5ndzMyL21zeXMvMS4w L2xvY2FsL2JpbiIuCisjIFRoaXMgYnJlYWtzIEdEQidzIHJlbG9jYXRhYmxl IHBhdGggY29udmVyc2lvbnMgc2luY2UgcGF0aHMgcGFzc2VkIGluCisjIGNv bmZpZy5oIHdvdWxkIG5vdCBnZXQgc28gdHJhbnNsYXRlZCwgdGhlIHBhdGgg cHJlZml4ZXMgbm8gbG9uZ2VyIG1hdGNoLgorQUNfREVGSU5FX0RJUihCSU5E SVIsIGJpbmRpciwgW0RpcmVjdG9yeSBvZiBwcm9ncmFtcy5dKQorCiAjIEdE QidzIGRhdGFkaXIgcmVsb2NhdGlvbgogCiBHREJfQUNfV0lUSF9ESVIoR0RC X0RBVEFESVIsIGdkYi1kYXRhZGlyLApAQCAtMTc1Myw0MiArMTc2MSwyMCBA QCBmaQogCiBkbmwgSGFuZGxlIG9wdGlvbmFsIGZlYXR1cmVzIHRoYXQgY2Fu IGJlIGVuYWJsZWQuCiAKLXRhcmdldF9zeXNyb290X3JlbG9jPTAKKyMgU3Vw cG9ydCBmb3IgLS13aXRoLXN5c3Jvb3QgaXMgYSBjb3B5IG9mIEdEQl9BQ19X SVRIX0RJUiwKKyMgZXhjZXB0IHRoYXQgdGhlIGFyZ3VtZW50IHRvIC0td2l0 aC1zeXNyb290IGlzIG9wdGlvbmFsLgorIyAtLXdpdGgtc3lzcm9vdCAob3Ig LS13aXRoLXN5c3Jvb3Q9eWVzKSBzZXRzIHRoZSBkZWZhdWx0IHN5c3Jvb3Qg cGF0aC4KK2lmIHRlc3QgIngkd2l0aF9zeXNyb290IiA9IHh5ZXM7IHRoZW4K KyAgd2l0aF9zeXNyb290PSIke2V4ZWNfcHJlZml4fS8ke3RhcmdldF9hbGlh c30vc3lzLXJvb3QiCitmaQogQUNfQVJHX1dJVEgoc3lzcm9vdCwKLUFTX0hF TFBfU1RSSU5HKFstLXdpdGgtc3lzcm9vdEA8OkA9RElSQDo+QF0sIFtzZWFy Y2ggZm9yIHVzci9saWIgZXQgYWwgd2l0aGluIERJUl0pLAotWwotIGNhc2Ug JHt3aXRoX3N5c3Jvb3R9IGluCi0geWVzKSBUQVJHRVRfU1lTVEVNX1JPT1Q9 JyR7ZXhlY19wcmVmaXh9LyR7dGFyZ2V0X2FsaWFzfS9zeXMtcm9vdCcgOzsK LSAqKSBUQVJHRVRfU1lTVEVNX1JPT1Q9JHdpdGhfc3lzcm9vdCA7OwotIGVz YWMKLQotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkU9Jy1EVEFSR0VUX1NZ U1RFTV9ST09UPVwiJChUQVJHRVRfU1lTVEVNX1JPT1QpXCInCi0KLSBpZiB0 ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgotICB0ZXN0X3ByZWZpeD0v dXNyL2xvY2FsCi0gZWxzZQotICB0ZXN0X3ByZWZpeD0kcHJlZml4Ci0gZmkK LSBpZiB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FIHx8IHRlc3QgIngk ZXhlY19wcmVmaXgiID0gJ3gke3ByZWZpeH0nOyB0aGVuCi0gIHRlc3RfZXhl Y19wcmVmaXg9JHRlc3RfcHJlZml4Ci0gZWxzZQotICB0ZXN0X2V4ZWNfcHJl Zml4PSRleGVjX3ByZWZpeAotIGZpCi0gY2FzZSAke1RBUkdFVF9TWVNURU1f Uk9PVH0gaW4KLSAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8i KnxcCi0gIiR7dGVzdF9leGVjX3ByZWZpeH0ifCIke3Rlc3RfZXhlY19wcmVm aXh9LyIqfFwKLSAnJHtwcmVmaXh9J3wnJHtwcmVmaXh9LycqfFwKLSAnJHtl eGVjX3ByZWZpeH0nfCcke2V4ZWNfcHJlZml4fS8nKikKLSAgIHRhcmdldF9z eXNyb290X3JlbG9jPTEKLSAgIDs7Ci0gZXNhYwotXSwgWwotIFRBUkdFVF9T WVNURU1fUk9PVD0KLSBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FPSctRFRB UkdFVF9TWVNURU1fUk9PVD1cIlwiJwotXSkKLVRBUkdFVF9TWVNURU1fUk9P VF9ERUZJTkU9IiRUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FIC1EVEFSR0VU X1NZU1RFTV9ST09UX1JFTE9DQVRBQkxFPSR0YXJnZXRfc3lzcm9vdF9yZWxv YyIKKyAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1zeXNyb290QDw6QD1ESVJA Oj5AXSwKKyAgICAgICAgICAgICAgICAgW3NlYXJjaCBmb3IgdXNyL2xpYiBl dCBhbCB3aXRoaW4gRElSXSksCisgIFtUQVJHRVRfU1lTVEVNX1JPT1Q9JHdp dGh2YWxdLCBbVEFSR0VUX1NZU1RFTV9ST09UPV0pCitBQ19ERUZJTkVfRElS KFRBUkdFVF9TWVNURU1fUk9PVCwgVEFSR0VUX1NZU1RFTV9ST09ULAorICAg ICAgICAgICAgICBbc2VhcmNoIGZvciB1c3IvbGliIGV0IGFsIHdpdGhpbiBE SVJdKQogQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UKQotQUNfU1VCU1Qo VEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSkKK0dEQl9BQ19ERUZJTkVfUkVM T0NBVEFCTEUoVEFSR0VUX1NZU1RFTV9ST09ULCBzeXNyb290LCAke2FjX2Rl ZmluZV9kaXJ9KQogCiBHREJfQUNfV0lUSF9ESVIoU1lTVEVNX0dEQklOSVQs IHN5c3RlbS1nZGJpbml0LAogICAgIFthdXRvbWF0aWNhbGx5IGxvYWQgYSBz eXN0ZW0td2lkZSBnZGJpbml0IGZpbGVdLAo= --14dae9cdc11b69e0d604b6d1d5ee--