From: Yutaka Kanemoto Date: 2009-09-09T02:48:23+09:00 Subject: [ruby-dev:39264] Re: Fwd: [redmine4ruby-lang:253] [Bug #1914] ruby-1.9.1-p243 failed to build from source on aix 5.3 with gcc 4.2.0 --0016e64b06fe0370f60473147f2d Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 金本と申します。 2009/8/9 Yugui : > Redmine管理用プロジェクトに報告されてしまったので転送します。 AIXでruby 1.9 を使う時の話がいくつかあがっているのですが、 とりあえず最初に見つけたこれに調べたことを報告させていただきます。 rubyのコードの中で、dln.cにAIX固有のコードがあります。 おそらくですが、昔のAIXでdlopenがうまく動かなかったか、なかったときのものと思います。 1.9では#1914,#2063,#2064のようなことがおきる一因になっています。 というところで提案なのですが、このAIX固有のコードではなく、ほかのPlatformのように dlopenを使うように変更するというのはいかがでしょうか?? 最近のAIX(とりあえず5.2と5.3)では添付のパッチでmake testはパスしました。 ほかにも課題はたくさんあるのですが、このパッチで上述の三つの問題は、 とりあえず手元では解決します。 nmでエクスポートする関数を列挙したファイルをつくってリンク時に使用することを止めて、 -bexpallというオプションを代わりに利用したりしてあります。#1914や#2064に対応できます。 ほかのPlatformへの影響はないように気をつけたつもりです。 1.9.1p243とtrunkへのパッチです。 ただ、要するに昔のAIX用のコードがなくなることがどう古いAIXに影響するか わかりません。コードを生かせるようにしようと思ったのですが、 古い情報が手に入らなかったのと、手に入っても試す環境がないので、 あきらめてしまいました。 いかがでしょうか? -- Yutaka KANEMOTO http://d.hatena.ne.jp/kinpoco/ --0016e64b06fe0370f60473147f2d Content-Type: application/octet-stream; name="r19.diff" Content-Disposition: attachment; filename="r19.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fzcx6nyi1 SW5kZXg6IGNvbmZpZ3VyZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWd1cmUuaW4JKHJldmlzaW9u IDI0Nzk4KQorKysgY29uZmlndXJlLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQ0LDEwICsxNzQ0 LDcgQEAKIAkJCSAgICA6ICR7TERTSEFSRUQ9JyQoQ0MpJ30KIAkJCWZpCiAJCQlMRFNIQVJFRD0i JExEU0hBUkVEICR7bGlua2VyX2ZsYWd9LUciCi0JCQlETERGTEFHUz0nLWVJbml0XyQoVEFSR0VU KScKLQkJCVhMREZMQUdTPSIke2xpbmtlcl9mbGFnfS1iRTpydWJ5LmltcCAke2xpbmtlcl9mbGFn fS1icnRsIgotCQkJWExERkxBR1M9IiRYTERGTEFHUyAke2xpbmtlcl9mbGFnfS1ibGlicGF0aDok e3ByZWZpeH0vbGliOiR7TElCUEFUSDotL3Vzci9saWI6L2xpYn0iCi0JCQk6ICR7QVJDSEZJTEU9 InJ1YnkuaW1wIn0KKwkJCVhMREZMQUdTPSIke2xpbmtlcl9mbGFnfS1iZXhwYWxsICR7bGlua2Vy X2ZsYWd9LWJydGwgJHtsaW5rZXJfZmxhZ30tYmxpYnBhdGg6JHtwcmVmaXh9L2xpYjoke0xJQlBB VEg6LS91c3IvbGliOi9saWJ9IgogICAgICAgICAgICAgICAgICAgICAgICAgVFJZX0xJTks9JyQo Q0MpICQoTERGTEFHUykgLW9jb25mdGVzdCAkKElOQ0ZMQUdTKSAtSSQoaGRyZGlyKSAkKENQUEZM QUdTKScKICAgICAgICAgICAgICAgICAgICAgICAgIFRSWV9MSU5LPSIkVFJZX0xJTksiJyAkKENG TEFHUykgJChzcmMpICQoTElCUEFUSCkgJChMT0NBTF9MSUJTKSAkKExJQlMpJwogCQkJOiAke0xJ QlBBVEhFTlY9U0hMSUJfUEFUSH0KQEAgLTIwMzksNyArMjAzNiw3IEBACiAJTElCUlVCWV9BTElB U0VTPSdsaWIkKFJVQllfU09fTkFNRSkuc2wuJChNQUpPUikuJChNSU5PUikgbGliJChSVUJZX1NP X05BTUUpLnNsJwogCTs7CiAgICAgd2hlbihhaXgqKQotCUxJQlJVQllfRExERkxBR1M9IiR7bGlu a2VyX2ZsYWd9LWJub2VudHJ5ICRYTERGTEFHUyIKKwlMSUJSVUJZX0RMREZMQUdTPSIke2xpbmtl cl9mbGFnfS1ibm9lbnRyeSAke2xpbmtlcl9mbGFnfS1iZXhwYWxsICR7bGlua2VyX2ZsYWd9LWJy dGwiCiAJTElCUlVCWUFSR19TSEFSRUQ9Jy1MJHtsaWJkaXJ9IC1sJHtSVUJZX1NPX05BTUV9Jwog CVNPTElCUz0nLWxtIC1sYycKIAk7OwpAQCAtMjE5Niw2ICsyMTkzLDEyIEBACiAJZXNhYwogICAg ICAgICBNSU5JRExOT0JKPWRteWRsbi5vCiAJOzsKKyAgICB3aGVuKGFpeCopCisgICAgICAgIGlm IHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgICAgQ0ZMQUdTPWBlY2hvICRDRkxBR1Mg fCBzZWQgLWUgJ3MvLWcvLWd4Y29mZi8nYAorCWZpCisgICAgICAgIExERkxBR1M9IiRMREZMQUdT ICR7bGlua2VyX2ZsYWd9LWJtYXhkYXRhOjB4ODAwMDAwMDAiCisgICAgICAgIDs7CiAgICAgd2hl bigqbXNkb3NkamdwcCopCiAJRklSU1RNQUtFRklMRT1HTlVtYWtlZmlsZTpkamdwcC9HTlVtYWtl ZmlsZS5pbgogCTs7CkluZGV4OiBkbG4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkbG4uYwkocmV2aXNpb24g MjQ3OTgpCisrKyBkbG4uYwkod29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQAogCiAjaWZu ZGVmIE5PX0RMTl9MT0FECiAKLSNpZiBkZWZpbmVkKEhBVkVfRExPUEVOKSAmJiAhZGVmaW5lZChV U0VfRExOX0FfT1VUKSAmJiAhZGVmaW5lZChfQUlYKSAmJiAhZGVmaW5lZChNQUNPU1hfRFlMRCkg JiYgIWRlZmluZWQoX1VOSUNPU01QKQorI2lmIGRlZmluZWQoSEFWRV9ETE9QRU4pICYmICFkZWZp bmVkKFVTRV9ETE5fQV9PVVQpICYmICFkZWZpbmVkKE1BQ09TWF9EWUxEKSAmJiAhZGVmaW5lZChf VU5JQ09TTVApCiAvKiBkeW5hbWljIGxvYWQgd2l0aCBkbG9wZW4oKSAqLwogIyBkZWZpbmUgVVNF X0RMTl9ETE9QRU4KICNlbmRpZgpAQCAtMTE0NCw1NSArMTE0NCw2IEBACiAjZW5kaWYKIH0KIAot Ci0jaWYgZGVmaW5lZChfQUlYKSAmJiAhIGRlZmluZWQoX0lBNjQpCi1zdGF0aWMgdm9pZAotYWl4 X2xvYWRlcnJvcihjb25zdCBjaGFyICpwYXRobmFtZSkKLXsKLSAgICBjaGFyICptZXNzYWdlWzhd LCBlcnJidWZbMTAyNF07Ci0gICAgaW50IGksajsKLQotICAgIHN0cnVjdCBlcnJ0YWIgewotCWlu dCBlcnJudW07Ci0JY2hhciAqZXJyc3RyOwotICAgIH0gbG9hZF9lcnJ0YWJbXSA9IHsKLQl7TF9F UlJPUl9UT09NQU5ZLAkidG9vIG1hbnkgZXJyb3JzLCByZXN0IHNraXBwZWQuIn0sCi0Je0xfRVJS T1JfTk9MSUIsCQkiY2FuJ3QgbG9hZCBsaWJyYXJ5OiJ9LAotCXtMX0VSUk9SX1VOREVGLAkJImNh bid0IGZpbmQgc3ltYm9sIGluIGxpYnJhcnk6In0sCi0Je0xfRVJST1JfUkxEQkFELAotCSAgICAg IlJMRCBpbmRleCBvdXQgb2YgcmFuZ2Ugb3IgYmFkIHJlbG9jYXRpb24gdHlwZToifSwKLQl7TF9F UlJPUl9GT1JNQVQsCSJub3QgYSB2YWxpZCwgZXhlY3V0YWJsZSB4Y29mZiBmaWxlOiJ9LAotCXtM X0VSUk9SX01FTUJFUiwKLQkgICAgICJmaWxlIG5vdCBhbiBhcmNoaXZlIG9yIGRvZXMgbm90IGNv bnRhaW4gcmVxdWVzdGVkIG1lbWJlcjoifSwKLQl7TF9FUlJPUl9UWVBFLAkJInN5bWJvbCB0YWJs ZSBtaXNtYXRjaDoifSwKLQl7TF9FUlJPUl9BTElHTiwJCSJ0ZXh0IGFsaWdubWVudCBpbiBmaWxl IGlzIHdyb25nLiJ9LAotCXtMX0VSUk9SX1NZU1RFTSwJIlN5c3RlbSBlcnJvcjoifSwKLQl7TF9F UlJPUl9FUlJOTywJCU5VTEx9Ci0gICAgfTsKLQotI2RlZmluZSBMT0FEX0VSUlRBQl9MRU4JKHNp emVvZihsb2FkX2VycnRhYikvc2l6ZW9mKGxvYWRfZXJydGFiWzBdKSkKLSNkZWZpbmUgRVJSQlVG X0FQUEVORChzKSBzdHJuY2F0KGVycmJ1Ziwgcywgc2l6ZW9mKGVycmJ1Ziktc3RybGVuKGVycmJ1 ZiktMSkKLQotICAgIHNucHJpbnRmKGVycmJ1ZiwgMTAyNCwgImxvYWQgZmFpbGVkIC0gJXMgIiwg cGF0aG5hbWUpOwotCi0gICAgaWYgKCFsb2FkcXVlcnkoMSwgJm1lc3NhZ2VbMF0sIHNpemVvZiht ZXNzYWdlKSkpCi0JRVJSQlVGX0FQUEVORChzdHJlcnJvcihlcnJubykpOwotICAgIGZvcihpID0g MDsgbWVzc2FnZVtpXSAmJiAqbWVzc2FnZVtpXTsgaSsrKSB7Ci0JaW50IG5lcnIgPSBhdG9pKG1l c3NhZ2VbaV0pOwotCWZvciAoaj0wOyBqPExPQURfRVJSVEFCX0xFTjsgaisrKSB7Ci0gICAgICAg ICAgIGlmIChuZXJyID09IGxvYWRfZXJydGFiW2ldLmVycm51bSAmJiBsb2FkX2VycnRhYltpXS5l cnJzdHIpCi0JCUVSUkJVRl9BUFBFTkQobG9hZF9lcnJ0YWJbaV0uZXJyc3RyKTsKLQl9Ci0Jd2hp bGUgKGlzZGlnaXQoKm1lc3NhZ2VbaV0pKSBtZXNzYWdlW2ldKys7Ci0JRVJSQlVGX0FQUEVORCht ZXNzYWdlW2ldKTsKLQlFUlJCVUZfQVBQRU5EKCJcbiIpOwotICAgIH0KLSAgICBlcnJidWZbc3Ry bGVuKGVycmJ1ZiktMV0gPSAnXDAnOwkvKiB0cmltIG9mZiBsYXN0IG5ld2xpbmUgKi8KLSAgICBy Yl9sb2FkZXJyb3IoZXJyYnVmKTsKLSAgICByZXR1cm47Ci19Ci0jZW5kaWYKLQogI2VuZGlmIC8q IE5PX0RMTl9MT0FEICovCiAKIHZvaWQqCkBAIC0xMjAyLDcgKzExNTMsNyBAQAogICAgIHJiX3Jh aXNlKHJiX2VMb2FkRXJyb3IsICJ0aGlzIGV4ZWN1dGFibGUgZmlsZSBjYW4ndCBsb2FkIGV4dGVu c2lvbiBsaWJyYXJpZXMiKTsKICNlbHNlCiAKLSNpZiAhZGVmaW5lZChfQUlYKSAmJiAhZGVmaW5l ZChOZVhUKQorI2lmICFkZWZpbmVkKE5lWFQpCiAgICAgY29uc3QgY2hhciAqZXJyb3IgPSAwOwog I2RlZmluZSBETE5fRVJST1IoKSAoZXJyb3IgPSBkbG5fc3RyZXJyb3IoKSwgc3RyY3B5KEFMTE9D QV9OKGNoYXIsIHN0cmxlbihlcnJvcikgKyAxKSwgZXJyb3IpKQogI2VuZGlmCkBAIC0xMzEyLDIz ICsxMjYzLDYgQEAKICAgICB9CiAjZW5kaWYgLyogaHB1eCAqLwogCi0jaWYgZGVmaW5lZChfQUlY KSAmJiAhIGRlZmluZWQoX0lBNjQpCi0jZGVmaW5lIERMTl9ERUZJTkVECi0gICAgewotCXZvaWQg KCppbml0X2ZjdCkoKTsKLQotCWluaXRfZmN0ID0gKHZvaWQoKikoKSlsb2FkKChjaGFyKilmaWxl LCAxLCAwKTsKLQlpZiAoaW5pdF9mY3QgPT0gTlVMTCkgewotCSAgICBhaXhfbG9hZGVycm9yKGZp bGUpOwotCX0KLQlpZiAobG9hZGJpbmQoMCwgKHZvaWQqKWRsbl9sb2FkLCAodm9pZCopaW5pdF9m Y3QpID09IC0xKSB7Ci0JICAgIGFpeF9sb2FkZXJyb3IoZmlsZSk7Ci0JfQotCSgqaW5pdF9mY3Qp KCk7Ci0JcmV0dXJuICh2b2lkKilpbml0X2ZjdDsKLSAgICB9Ci0jZW5kaWYgLyogX0FJWCAqLwot CiAjaWYgZGVmaW5lZChOZVhUKSB8fCBkZWZpbmVkKE1BQ09TWF9EWUxEKQogI2RlZmluZSBETE5f REVGSU5FRAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCkBAIC0xNDYwLDcgKzEzOTQsNyBAQAogCiAjZW5kaWYgLyogVVNFX0RMTl9BX09VVCAq LwogI2VuZGlmCi0jaWYgIWRlZmluZWQoX0FJWCkgJiYgIWRlZmluZWQoTmVYVCkKKyNpZiAhZGVm aW5lZChOZVhUKQogICBmYWlsZWQ6CiAgICAgcmJfbG9hZGVycm9yKCIlcyAtICVzIiwgZXJyb3Is IGZpbGUpOwogI2VuZGlmCkluZGV4OiBleHQvc29ja2V0L3NvY2twb3J0LmgKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gZXh0L3NvY2tldC9zb2NrcG9ydC5oCShyZXZpc2lvbiAyNDc5OCkKKysrIGV4dC9zb2NrZXQv c29ja3BvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTUsNyArMTUsMTEgQEAKICNlbHNlCiAjIGlm ZGVmIEhBVkVfU0FfTEVOCiAjICBkZWZpbmUgU0FfTEVOKHNhKSAoc2EpLT5zYV9sZW4KLSMgIGRl ZmluZSBTU19MRU4oc3MpIChzcyktPnNzX2xlbgorIyAgaWZkZWYgX0FJWAorIyAgICBkZWZpbmUg U1NfTEVOKHNzKSAoc3MpLT5fX3NzX2xlbgorIyAgZWxzZQorIyAgICBkZWZpbmUgU1NfTEVOKHNz KSAoc3MpLT5zc19sZW4KKyMgIGVuZGlmCiAjIGVsc2UKICMgIGlmZGVmIEFGX0lORVQ2CiAjICAg ZGVmaW5lIFNBX0xFTihzYSkgXAo= --0016e64b06fe0370f60473147f2d Content-Type: application/octet-stream; name="243.diff" Content-Disposition: attachment; filename="243.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fzcxcc1g1 T25seSBpbiBydWJ5LTEuOS4xLXAyNDM6IGF1dG9tNHRlLmNhY2hlCmRpZmYgLXVyIHJ1YnktMS45 LjEtcDI0My5vcmlnL2NvbmZpZ3VyZSBydWJ5LTEuOS4xLXAyNDMvY29uZmlndXJlCi0tLSBydWJ5 LTEuOS4xLXAyNDMub3JpZy9jb25maWd1cmUJMjAwOS0wNy0xNyAyMzo0NDozNS4wMDAwMDAwMDAg KzA5MDAKKysrIHJ1YnktMS45LjEtcDI0My9jb25maWd1cmUJMjAwOS0wOS0wOSAwMToxNDo1NS4w MDAwMDAwMDAgKzA5MDAKQEAgLTIxNDI2LDEwICsyMTQyNiw3IEBACiAJCQkgICAgOiAke0xEU0hB UkVEPSckKENDKSd9CiAJCQlmaQogCQkJTERTSEFSRUQ9IiRMRFNIQVJFRCAke2xpbmtlcl9mbGFn fS1HIgotCQkJRExERkxBR1M9Jy1lSW5pdF8kKFRBUkdFVCknCi0JCQlYTERGTEFHUz0iJHtsaW5r ZXJfZmxhZ30tYkU6cnVieS5pbXAgJHtsaW5rZXJfZmxhZ30tYnJ0bCIKLQkJCVhMREZMQUdTPSIk WExERkxBR1MgJHtsaW5rZXJfZmxhZ30tYmxpYnBhdGg6JHtwcmVmaXh9L2xpYjoke0xJQlBBVEg6 LS91c3IvbGliOi9saWJ9IgotCQkJOiAke0FSQ0hGSUxFPSJydWJ5LmltcCJ9CisJCQlYTERGTEFH Uz0iJHtsaW5rZXJfZmxhZ30tYmV4cGFsbCAke2xpbmtlcl9mbGFnfS1icnRsICR7bGlua2VyX2Zs YWd9LWJsaWJwYXRoOiR7cHJlZml4fS9saWI6JHtMSUJQQVRIOi0vdXNyL2xpYjovbGlifSIKICAg ICAgICAgICAgICAgICAgICAgICAgIFRSWV9MSU5LPSckKENDKSAkKExERkxBR1MpIC1vY29uZnRl c3QgJChJTkNGTEFHUykgLUkkKGhkcmRpcikgJChDUFBGTEFHUyknCiAgICAgICAgICAgICAgICAg ICAgICAgICBUUllfTElOSz0iJFRSWV9MSU5LIicgJChDRkxBR1MpICQoc3JjKSAkKExJQlBBVEgp ICQoTE9DQUxfTElCUykgJChMSUJTKScKIAkJCTogJHtMSUJQQVRIRU5WPVNITElCX1BBVEh9CkBA IC0yMjE4MCw3ICsyMjE3Nyw3IEBACiAJTElCUlVCWV9BTElBU0VTPSdsaWIkKFJVQllfU09fTkFN RSkuc2wuJChNQUpPUikuJChNSU5PUikgbGliJChSVUJZX1NPX05BTUUpLnNsJwogCTs7CiAgICAg YWl4KikKLQlMSUJSVUJZX0RMREZMQUdTPSIke2xpbmtlcl9mbGFnfS1ibm9lbnRyeSAkWExERkxB R1MiCisJTElCUlVCWV9ETERGTEFHUz0iJHtsaW5rZXJfZmxhZ30tYm5vZW50cnkgJHtsaW5rZXJf ZmxhZ30tYmV4cGFsbCAke2xpbmtlcl9mbGFnfS1icnRsIgogCUxJQlJVQllBUkdfU0hBUkVEPSct TCR7bGliZGlyfSAtbCR7UlVCWV9TT19OQU1FfScKIAlTT0xJQlM9Jy1sbSAtbGMnCiAJOzsKZGlm ZiAtdXIgcnVieS0xLjkuMS1wMjQzLm9yaWcvY29uZmlndXJlLmluIHJ1YnktMS45LjEtcDI0My9j b25maWd1cmUuaW4KLS0tIHJ1YnktMS45LjEtcDI0My5vcmlnL2NvbmZpZ3VyZS5pbgkyMDA5LTA1 LTEyIDAwOjA2OjQ4LjAwMDAwMDAwMCArMDkwMAorKysgcnVieS0xLjkuMS1wMjQzL2NvbmZpZ3Vy ZS5pbgkyMDA5LTA5LTA5IDAxOjE0OjQ4LjAwMDAwMDAwMCArMDkwMApAQCAtMTQzMSwxMCArMTQz MSw3IEBACiAJCQkgICAgOiAke0xEU0hBUkVEPSckKENDKSd9CiAJCQlmaQogCQkJTERTSEFSRUQ9 IiRMRFNIQVJFRCAke2xpbmtlcl9mbGFnfS1HIgotCQkJRExERkxBR1M9Jy1lSW5pdF8kKFRBUkdF VCknCi0JCQlYTERGTEFHUz0iJHtsaW5rZXJfZmxhZ30tYkU6cnVieS5pbXAgJHtsaW5rZXJfZmxh Z30tYnJ0bCIKLQkJCVhMREZMQUdTPSIkWExERkxBR1MgJHtsaW5rZXJfZmxhZ30tYmxpYnBhdGg6 JHtwcmVmaXh9L2xpYjoke0xJQlBBVEg6LS91c3IvbGliOi9saWJ9IgotCQkJOiAke0FSQ0hGSUxF PSJydWJ5LmltcCJ9CisJCQlYTERGTEFHUz0iJHtsaW5rZXJfZmxhZ30tYmV4cGFsbCAke2xpbmtl cl9mbGFnfS1icnRsICR7bGlua2VyX2ZsYWd9LWJsaWJwYXRoOiR7cHJlZml4fS9saWI6JHtMSUJQ QVRIOi0vdXNyL2xpYjovbGlifSIKICAgICAgICAgICAgICAgICAgICAgICAgIFRSWV9MSU5LPSck KENDKSAkKExERkxBR1MpIC1vY29uZnRlc3QgJChJTkNGTEFHUykgLUkkKGhkcmRpcikgJChDUFBG TEFHUyknCiAgICAgICAgICAgICAgICAgICAgICAgICBUUllfTElOSz0iJFRSWV9MSU5LIicgJChD RkxBR1MpICQoc3JjKSAkKExJQlBBVEgpICQoTE9DQUxfTElCUykgJChMSUJTKScKIAkJCTogJHtM SUJQQVRIRU5WPVNITElCX1BBVEh9CkBAIC0xNzYzLDcgKzE3NjAsNyBAQAogCUxJQlJVQllfQUxJ QVNFUz0nbGliJChSVUJZX1NPX05BTUUpLnNsLiQoTUFKT1IpLiQoTUlOT1IpIGxpYiQoUlVCWV9T T19OQU1FKS5zbCcKIAk7OwogICAgIGFpeCopCi0JTElCUlVCWV9ETERGTEFHUz0iJHtsaW5rZXJf ZmxhZ30tYm5vZW50cnkgJFhMREZMQUdTIgorCUxJQlJVQllfRExERkxBR1M9IiR7bGlua2VyX2Zs YWd9LWJub2VudHJ5ICR7bGlua2VyX2ZsYWd9LWJleHBhbGwgJHtsaW5rZXJfZmxhZ30tYnJ0bCIK IAlMSUJSVUJZQVJHX1NIQVJFRD0nLUwke2xpYmRpcn0gLWwke1JVQllfU09fTkFNRX0nCiAJU09M SUJTPSctbG0gLWxjJwogCTs7CmRpZmYgLXVyIHJ1YnktMS45LjEtcDI0My5vcmlnL2Rsbi5jIHJ1 YnktMS45LjEtcDI0My9kbG4uYwotLS0gcnVieS0xLjkuMS1wMjQzLm9yaWcvZGxuLmMJMjAwOS0w Ny0xMiAyMzo0NToxMi4wMDAwMDAwMDAgKzA5MDAKKysrIHJ1YnktMS45LjEtcDI0My9kbG4uYwky MDA5LTA5LTA5IDAxOjA4OjI0LjAwMDAwMDAwMCArMDkwMApAQCAtODUsNyArODUsNyBAQAogCiAj aWZuZGVmIE5PX0RMTl9MT0FECiAKLSNpZiBkZWZpbmVkKEhBVkVfRExPUEVOKSAmJiAhZGVmaW5l ZChVU0VfRExOX0FfT1VUKSAmJiAhZGVmaW5lZChfQUlYKSAmJiAhZGVmaW5lZChNQUNPU1hfRFlM RCkgJiYgIWRlZmluZWQoX1VOSUNPU01QKQorI2lmIGRlZmluZWQoSEFWRV9ETE9QRU4pICYmICFk ZWZpbmVkKFVTRV9ETE5fQV9PVVQpICYmICFkZWZpbmVkKE1BQ09TWF9EWUxEKSAmJiAhZGVmaW5l ZChfVU5JQ09TTVApCiAvKiBkeW5hbWljIGxvYWQgd2l0aCBkbG9wZW4oKSAqLwogIyBkZWZpbmUg VVNFX0RMTl9ETE9QRU4KICNlbmRpZgpAQCAtMTE1MCw1NSArMTE1MCw2IEBACiAjZW5kaWYKIH0K IAotCi0jaWYgZGVmaW5lZChfQUlYKSAmJiAhIGRlZmluZWQoX0lBNjQpCi1zdGF0aWMgdm9pZAot YWl4X2xvYWRlcnJvcihjb25zdCBjaGFyICpwYXRobmFtZSkKLXsKLSAgICBjaGFyICptZXNzYWdl WzhdLCBlcnJidWZbMTAyNF07Ci0gICAgaW50IGksajsKLQotICAgIHN0cnVjdCBlcnJ0YWIgeyAK LQlpbnQgZXJybnVtOwotCWNoYXIgKmVycnN0cjsKLSAgICB9IGxvYWRfZXJydGFiW10gPSB7Ci0J e0xfRVJST1JfVE9PTUFOWSwJInRvbyBtYW55IGVycm9ycywgcmVzdCBza2lwcGVkLiJ9LAotCXtM X0VSUk9SX05PTElCLAkJImNhbid0IGxvYWQgbGlicmFyeToifSwKLQl7TF9FUlJPUl9VTkRFRiwJ CSJjYW4ndCBmaW5kIHN5bWJvbCBpbiBsaWJyYXJ5OiJ9LAotCXtMX0VSUk9SX1JMREJBRCwKLQkg ICAgICJSTEQgaW5kZXggb3V0IG9mIHJhbmdlIG9yIGJhZCByZWxvY2F0aW9uIHR5cGU6In0sCi0J e0xfRVJST1JfRk9STUFULAkibm90IGEgdmFsaWQsIGV4ZWN1dGFibGUgeGNvZmYgZmlsZToifSwK LQl7TF9FUlJPUl9NRU1CRVIsCi0JICAgICAiZmlsZSBub3QgYW4gYXJjaGl2ZSBvciBkb2VzIG5v dCBjb250YWluIHJlcXVlc3RlZCBtZW1iZXI6In0sCi0Je0xfRVJST1JfVFlQRSwJCSJzeW1ib2wg dGFibGUgbWlzbWF0Y2g6In0sCi0Je0xfRVJST1JfQUxJR04sCQkidGV4dCBhbGlnbm1lbnQgaW4g ZmlsZSBpcyB3cm9uZy4ifSwKLQl7TF9FUlJPUl9TWVNURU0sCSJTeXN0ZW0gZXJyb3I6In0sCi0J e0xfRVJST1JfRVJSTk8sCQlOVUxMfQotICAgIH07Ci0KLSNkZWZpbmUgTE9BRF9FUlJUQUJfTEVO CShzaXplb2YobG9hZF9lcnJ0YWIpL3NpemVvZihsb2FkX2VycnRhYlswXSkpCi0jZGVmaW5lIEVS UkJVRl9BUFBFTkQocykgc3RybmNhdChlcnJidWYsIHMsIHNpemVvZihlcnJidWYpLXN0cmxlbihl cnJidWYpLTEpCi0KLSAgICBzbnByaW50ZihlcnJidWYsIDEwMjQsICJsb2FkIGZhaWxlZCAtICVz ICIsIHBhdGhuYW1lKTsKLQotICAgIGlmICghbG9hZHF1ZXJ5KDEsICZtZXNzYWdlWzBdLCBzaXpl b2YobWVzc2FnZSkpKSAKLQlFUlJCVUZfQVBQRU5EKHN0cmVycm9yKGVycm5vKSk7Ci0gICAgZm9y KGkgPSAwOyBtZXNzYWdlW2ldICYmICptZXNzYWdlW2ldOyBpKyspIHsKLQlpbnQgbmVyciA9IGF0 b2kobWVzc2FnZVtpXSk7Ci0JZm9yIChqPTA7IGo8TE9BRF9FUlJUQUJfTEVOOyBqKyspIHsKLSAg ICAgICAgICAgaWYgKG5lcnIgPT0gbG9hZF9lcnJ0YWJbaV0uZXJybnVtICYmIGxvYWRfZXJydGFi W2ldLmVycnN0cikKLQkJRVJSQlVGX0FQUEVORChsb2FkX2VycnRhYltpXS5lcnJzdHIpOwotCX0K LQl3aGlsZSAoaXNkaWdpdCgqbWVzc2FnZVtpXSkpIG1lc3NhZ2VbaV0rKzsgCi0JRVJSQlVGX0FQ UEVORChtZXNzYWdlW2ldKTsKLQlFUlJCVUZfQVBQRU5EKCJcbiIpOwotICAgIH0KLSAgICBlcnJi dWZbc3RybGVuKGVycmJ1ZiktMV0gPSAnXDAnOwkvKiB0cmltIG9mZiBsYXN0IG5ld2xpbmUgKi8K LSAgICByYl9sb2FkZXJyb3IoZXJyYnVmKTsKLSAgICByZXR1cm47Ci19Ci0jZW5kaWYKLQogI2Vu ZGlmIC8qIE5PX0RMTl9MT0FEICovCiAKIHZvaWQqCkBAIC0xMjA4LDcgKzExNTksNyBAQAogICAg IHJiX3JhaXNlKHJiX2VMb2FkRXJyb3IsICJ0aGlzIGV4ZWN1dGFibGUgZmlsZSBjYW4ndCBsb2Fk IGV4dGVuc2lvbiBsaWJyYXJpZXMiKTsKICNlbHNlCiAKLSNpZiAhZGVmaW5lZChfQUlYKSAmJiAh ZGVmaW5lZChOZVhUKQorI2lmICFkZWZpbmVkKE5lWFQpCiAgICAgY29uc3QgY2hhciAqZXJyb3Ig PSAwOwogI2RlZmluZSBETE5fRVJST1IoKSAoZXJyb3IgPSBkbG5fc3RyZXJyb3IoKSwgc3RyY3B5 KEFMTE9DQV9OKGNoYXIsIHN0cmxlbihlcnJvcikgKyAxKSwgZXJyb3IpKQogI2VuZGlmCkBAIC0x MzEzLDIzICsxMjY0LDYgQEAKICAgICB9CiAjZW5kaWYgLyogaHB1eCAqLwogCi0jaWYgZGVmaW5l ZChfQUlYKSAmJiAhIGRlZmluZWQoX0lBNjQpCi0jZGVmaW5lIERMTl9ERUZJTkVECi0gICAgewot CXZvaWQgKCppbml0X2ZjdCkoKTsKLQotCWluaXRfZmN0ID0gKHZvaWQoKikoKSlsb2FkKChjaGFy KilmaWxlLCAxLCAwKTsKLQlpZiAoaW5pdF9mY3QgPT0gTlVMTCkgewotCSAgICBhaXhfbG9hZGVy cm9yKGZpbGUpOwotCX0KLQlpZiAobG9hZGJpbmQoMCwgKHZvaWQqKWRsbl9sb2FkLCAodm9pZCop aW5pdF9mY3QpID09IC0xKSB7Ci0JICAgIGFpeF9sb2FkZXJyb3IoZmlsZSk7Ci0JfQotCSgqaW5p dF9mY3QpKCk7Ci0JcmV0dXJuICh2b2lkKilpbml0X2ZjdDsKLSAgICB9Ci0jZW5kaWYgLyogX0FJ WCAqLwotCiAjaWYgZGVmaW5lZChOZVhUKSB8fCBkZWZpbmVkKE1BQ09TWF9EWUxEKQogI2RlZmlu ZSBETE5fREVGSU5FRAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCkBAIC0xNDYxLDcgKzEzOTUsNyBAQAogCiAjZW5kaWYgLyogVVNFX0RMTl9B X09VVCAqLwogI2VuZGlmCi0jaWYgIWRlZmluZWQoX0FJWCkgJiYgIWRlZmluZWQoTmVYVCkKKyNp ZiAhZGVmaW5lZChOZVhUKQogICBmYWlsZWQ6CiAgICAgcmJfbG9hZGVycm9yKCIlcyAtICVzIiwg ZXJyb3IsIGZpbGUpOwogI2VuZGlmCk9ubHkgaW4gcnVieS0xLjkuMS1wMjQzL2V4dC93aW4zMm9s ZTogLmRvY3VtZW50Cg== --0016e64b06fe0370f60473147f2d--