From: Shugo Maeda Date: 2005-03-13T09:18:42+09:00 Subject: [ruby-dev:25870] Re: C level set_trace_func This is a multi-part message in MIME format. --------------090700030301050203060307 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 前田です。 Shugo Maeda wrote: >>|今Cでプロファイラを書いているのですが、Cレベルでset_trace_funcのような >>|ことができるようにしていただけないでしょうか。 >> >>パッチを当ててもよいですが、せっかく手を入れるんなら複数のイ >>ベントフックを登録したいような気がするんですが、どう思います >>か? > > > そう思いつつ手を抜いていました。手が空いたら書き直します。 実装してみました。 パッチを添付します。 > それはそれとして、今のAPIだとRubyで定義されたメソッドで例外が発生する > と、メソッドからの脱出を追えないのですが、これはどうしたものでしょう。 > rescueもフックできるようにして、raise時に保存した$!.backtraceとrescue時 > の$!.backtraceを比較する、とかですかね。 こっちはどうでしょうね。 -- 前田 修吾 --------------090700030301050203060307 Content-Type: text/plain; name="event-hook.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="event-hook.diff" SW5kZXg6IGV2YWwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvc3JjL3J1YnkvZXZhbC5j LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjc2NApkaWZmIC11IC1wIC1yMS43NjQgZXZhbC5j Ci0tLSBldmFsLmMJOCBNYXIgMjAwNSAwMTo1MjoxNSAtMDAwMAkxLjc2NAorKysgZXZhbC5j CTEyIE1hciAyMDA1IDIzOjUxOjQ1IC0wMDAwCkBAIC0xMDQwLDkgKzEwNDAsMjcgQEAgc3Rh dGljIFZBTFVFIG1vZHVsZV9zZXR1cCBfKChWQUxVRSxOT0RFKgogc3RhdGljIFZBTFVFIG1h c3NpZ24gXygoVkFMVUUsTk9ERSosVkFMVUUsaW50KSk7CiBzdGF0aWMgdm9pZCBhc3NpZ24g XygoVkFMVUUsTk9ERSosVkFMVUUsaW50KSk7CiAKK3R5cGVkZWYgc3RydWN0IGV2ZW50X2hv b2sgeworICAgIHJiX2V2ZW50X2hvb2tfZnVuY190IGZ1bmM7CisgICAgcmJfZXZlbnRfdCBl dmVudHM7CisgICAgc3RydWN0IGV2ZW50X2hvb2sgKm5leHQ7Cit9IHJiX2V2ZW50X2hvb2tf dDsKKworc3RhdGljIHJiX2V2ZW50X2hvb2tfdCAqZXZlbnRfaG9va3M7CisKKyNkZWZpbmUg RVhFQ19FVkVOVF9IT09LKGV2ZW50LCBub2RlLCBzZWxmLCBpZCwga2xhc3MpIFwKKyAgICBk byB7IFwKKwlyYl9ldmVudF9ob29rX3QgKmhvb2s7IFwKKwlcCisJZm9yIChob29rID0gZXZl bnRfaG9va3M7IGhvb2s7IGhvb2sgPSBob29rLT5uZXh0KSB7IFwKKwkgICAgaWYgKGhvb2st PmV2ZW50cyAmIGV2ZW50KSBcCisJCSgqaG9vay0+ZnVuYykoZXZlbnQsIG5vZGUsIHNlbGYs IGlkLCBrbGFzcyk7IFwKKwl9IFwKKyAgICB9IHdoaWxlICgwKQorCiBzdGF0aWMgVkFMVUUg dHJhY2VfZnVuYyA9IDA7CiBzdGF0aWMgaW50IHRyYWNpbmcgPSAwOwotc3RhdGljIHZvaWQg Y2FsbF90cmFjZV9mdW5jIF8oKGNoYXIqLE5PREUqLFZBTFVFLElELFZBTFVFKSk7CitzdGF0 aWMgdm9pZCBjYWxsX3RyYWNlX2Z1bmMgXygocmJfZXZlbnRfdCxOT0RFKixWQUxVRSxJRCxW QUxVRSkpOwogCiAjaWYgMAogI2RlZmluZSBTRVRfQ1VSUkVOVF9TT1VSQ0UoKSAocnVieV9z b3VyY2VmaWxlID0gcnVieV9jdXJyZW50X25vZGUtPm5kX2ZpbGUsIFwKQEAgLTI0MTUsNiAr MjQzMyw0MiBAQCByYl9vYmpfaXNfcHJvYyhwcm9jKQogICAgIHJldHVybiBRZmFsc2U7CiB9 CiAKK3ZvaWQKK3JiX2FkZF9ldmVudF9ob29rKHJiX2V2ZW50X2hvb2tfZnVuY190IGZ1bmMs IHJiX2V2ZW50X3QgZXZlbnRzKQoreworICAgIHJiX2V2ZW50X2hvb2tfdCAqaG9vazsKKwor ICAgIGhvb2sgPSBBTExPQyhyYl9ldmVudF9ob29rX3QpOworICAgIGhvb2stPmZ1bmMgPSBm dW5jOworICAgIGhvb2stPmV2ZW50cyA9IGV2ZW50czsKKyAgICBob29rLT5uZXh0ID0gZXZl bnRfaG9va3M7CisgICAgZXZlbnRfaG9va3MgPSBob29rOworfQorCitpbnQKK3JiX3JlbW92 ZV9ldmVudF9ob29rKHJiX2V2ZW50X2hvb2tfZnVuY190IGZ1bmMpCit7CisgICAgcmJfZXZl bnRfaG9va190ICpwcmV2LCAqaG9vazsKKworICAgIHByZXYgPSBOVUxMOworICAgIGhvb2sg PSBldmVudF9ob29rczsKKyAgICB3aGlsZSAoaG9vaykgeworCWlmIChob29rLT5mdW5jID09 IGZ1bmMpIHsKKwkgICAgaWYgKHByZXYpIHsKKwkJcHJldi0+bmV4dCA9IGhvb2stPm5leHQ7 CisJICAgIH0KKwkgICAgZWxzZSB7CisJCWV2ZW50X2hvb2tzID0gaG9vay0+bmV4dDsKKwkg ICAgfQorCSAgICB4ZnJlZShob29rKTsKKwkgICAgcmV0dXJuIDA7CisJfQorCXByZXYgPSBo b29rOworCWhvb2sgPSBob29rLT5uZXh0OworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisK IC8qCiAgKiAgY2FsbC1zZXE6CiAgKiAgICAgc2V0X3RyYWNlX2Z1bmMocHJvYykgICAgPT4g cHJvYwpAQCAtMjQ2MywxOSArMjUxNyw1MyBAQCBzdGF0aWMgVkFMVUUKIHNldF90cmFjZV9m dW5jKG9iaiwgdHJhY2UpCiAgICAgVkFMVUUgb2JqLCB0cmFjZTsKIHsKKyAgICByYl9ldmVu dF9ob29rX3QgKmhvb2s7CisKICAgICBpZiAoTklMX1AodHJhY2UpKSB7CiAJdHJhY2VfZnVu YyA9IDA7CisJcmJfcmVtb3ZlX2V2ZW50X2hvb2soY2FsbF90cmFjZV9mdW5jKTsKIAlyZXR1 cm4gUW5pbDsKICAgICB9CiAgICAgaWYgKCFyYl9vYmpfaXNfcHJvYyh0cmFjZSkpIHsKIAly Yl9yYWlzZShyYl9lVHlwZUVycm9yLCAidHJhY2VfZnVuYyBuZWVkcyB0byBiZSBQcm9jIik7 CiAgICAgfQotICAgIHJldHVybiB0cmFjZV9mdW5jID0gdHJhY2U7CisgICAgdHJhY2VfZnVu YyA9IHRyYWNlOworICAgIGZvciAoaG9vayA9IGV2ZW50X2hvb2tzOyBob29rOyBob29rID0g aG9vay0+bmV4dCkgeworCWlmIChob29rLT5mdW5jID09IGNhbGxfdHJhY2VfZnVuYykKKwkg ICAgcmV0dXJuIHRyYWNlOworICAgIH0KKyAgICByYl9hZGRfZXZlbnRfaG9vayhjYWxsX3Ry YWNlX2Z1bmMsIFJVQllfRVZFTlRfQUxMKTsKKyAgICByZXR1cm4gdHJhY2U7Cit9CisKK3N0 YXRpYyBjaGFyICoKK2dldF9ldmVudF9uYW1lKHJiX2V2ZW50X3QgZXZlbnQpCit7CisgICAg c3dpdGNoIChldmVudCkgeworICAgIGNhc2UgUlVCWV9FVkVOVF9MSU5FOgorCXJldHVybiAi bGluZSI7CisgICAgY2FzZSBSVUJZX0VWRU5UX0NMQVNTOgorCXJldHVybiAiY2xhc3MiOwor ICAgIGNhc2UgUlVCWV9FVkVOVF9FTkQ6CisJcmV0dXJuICJlbmQiOworICAgIGNhc2UgUlVC WV9FVkVOVF9DQUxMOgorCXJldHVybiAiY2FsbCI7CisgICAgY2FzZSBSVUJZX0VWRU5UX1JF VFVSTjoKKwlyZXR1cm4gInJldHVybiI7CisgICAgY2FzZSBSVUJZX0VWRU5UX0NfQ0FMTDoK KwlyZXR1cm4gImMtY2FsbCI7CisgICAgY2FzZSBSVUJZX0VWRU5UX0NfUkVUVVJOOgorCXJl dHVybiAiYy1yZXR1cm4iOworICAgIGNhc2UgUlVCWV9FVkVOVF9SQUlTRToKKwlyZXR1cm4g InJhaXNlIjsKKyAgICBkZWZhdWx0OgorCXJldHVybiAidW5rbm93biI7CisgICAgfQogfQog CiBzdGF0aWMgdm9pZAogY2FsbF90cmFjZV9mdW5jKGV2ZW50LCBub2RlLCBzZWxmLCBpZCwg a2xhc3MpCi0gICAgY2hhciAqZXZlbnQ7CisgICAgcmJfZXZlbnRfdCBldmVudDsKICAgICBO T0RFICpub2RlOwogICAgIFZBTFVFIHNlbGY7CiAgICAgSUQgaWQ7CkBAIC0yNDg1LDYgKzI1 NzMsNyBAQCBjYWxsX3RyYWNlX2Z1bmMoZXZlbnQsIG5vZGUsIHNlbGYsIGlkLCBrCiAgICAg c3RydWN0IEZSQU1FICpwcmV2OwogICAgIE5PREUgKm5vZGVfc2F2ZTsKICAgICBWQUxVRSBz cmNmaWxlOworICAgIGNoYXIgKmV2ZW50X25hbWU7CiAKICAgICBpZiAoIXRyYWNlX2Z1bmMp IHJldHVybjsKICAgICBpZiAodHJhY2luZykgcmV0dXJuOwpAQCAtMjUxOSw3ICsyNjA4LDgg QEAgY2FsbF90cmFjZV9mdW5jKGV2ZW50LCBub2RlLCBzZWxmLCBpZCwgawogICAgIHJhaXNl ZCA9IHRocmVhZF9yZXNldF9yYWlzZWQoKTsKICAgICBpZiAoKHN0YXRlID0gRVhFQ19UQUco KSkgPT0gMCkgewogCXNyY2ZpbGUgPSByYl9zdHJfbmV3MihydWJ5X3NvdXJjZWZpbGU/cnVi eV9zb3VyY2VmaWxlOiIocnVieSkiKTsKLQlwcm9jX2ludm9rZSh0cmFjZV9mdW5jLCByYl9h cnlfbmV3Myg2LCByYl9zdHJfbmV3MihldmVudCksCisJZXZlbnRfbmFtZSA9IGdldF9ldmVu dF9uYW1lKGV2ZW50KTsKKwlwcm9jX2ludm9rZSh0cmFjZV9mdW5jLCByYl9hcnlfbmV3Myg2 LCByYl9zdHJfbmV3MihldmVudF9uYW1lKSwKIAkJCQkJICAgIHNyY2ZpbGUsCiAJCQkJCSAg ICBJTlQyRklYKHJ1Ynlfc291cmNlbGluZSksCiAJCQkJCSAgICBpZD9JRDJTWU0oaWQpOlFu aWwsCkBAIC0yNjg2LDggKzI3NzYsOCBAQCByYl9ldmFsKHNlbGYsIG4pCiAgICAgaWYgKCFu b2RlKSBSRVRVUk4oUW5pbCk7CiAKICAgICBydWJ5X2N1cnJlbnRfbm9kZSA9IG5vZGU7Ci0g ICAgaWYgKHRyYWNlX2Z1bmMgJiYgKG5vZGUtPmZsYWdzICYgTk9ERV9ORVdMSU5FKSkgewot CWNhbGxfdHJhY2VfZnVuYygibGluZSIsIG5vZGUsIHNlbGYsCisgICAgaWYgKG5vZGUtPmZs YWdzICYgTk9ERV9ORVdMSU5FKSB7CisJRVhFQ19FVkVOVF9IT09LKFJVQllfRVZFTlRfTElO RSwgbm9kZSwgc2VsZiwgCiAJCQlydWJ5X2ZyYW1lLT50aGlzX2Z1bmMsCiAJCQlydWJ5X2Zy YW1lLT50aGlzX2NsYXNzKTsKICAgICB9CkBAIC0yNzgzLDExICsyODczLDkgQEAgcmJfZXZh bChzZWxmLCBuKQogCVJFVFVSTihydWJ5X2VycmluZm8pOwogCiAgICAgICBjYXNlIE5PREVf SUY6Ci0JaWYgKHRyYWNlX2Z1bmMpIHsKLQkgICAgY2FsbF90cmFjZV9mdW5jKCJsaW5lIiwg bm9kZSwgc2VsZiwKLQkJCSAgICBydWJ5X2ZyYW1lLT50aGlzX2Z1bmMsCi0JCQkgICAgcnVi eV9mcmFtZS0+dGhpc19jbGFzcyk7Ci0JfQorCUVYRUNfRVZFTlRfSE9PSyhSVUJZX0VWRU5U X0xJTkUsIG5vZGUsIHNlbGYsCisJCQlydWJ5X2ZyYW1lLT50aGlzX2Z1bmMsCisJCQlydWJ5 X2ZyYW1lLT50aGlzX2NsYXNzKTsKIAlpZiAoUlRFU1QocmJfZXZhbChzZWxmLCBub2RlLT5u ZF9jb25kKSkpIHsKIAkgICAgbm9kZSA9IG5vZGUtPm5kX2JvZHk7CiAJfQpAQCAtMjgwMywx MSArMjg5MSw5IEBAIHJiX2V2YWwoc2VsZiwgbikKIAkgICAgaWYgKG5kX3R5cGUobm9kZSkg IT0gTk9ERV9XSEVOKSBnb3RvIGFnYWluOwogCSAgICB0YWcgPSBub2RlLT5uZF9oZWFkOwog CSAgICB3aGlsZSAodGFnKSB7Ci0JCWlmICh0cmFjZV9mdW5jKSB7Ci0JCSAgICBjYWxsX3Ry YWNlX2Z1bmMoImxpbmUiLCB0YWcsIHNlbGYsCi0JCQkJICAgIHJ1YnlfZnJhbWUtPnRoaXNf ZnVuYywKLQkJCQkgICAgcnVieV9mcmFtZS0+dGhpc19jbGFzcyk7Ci0JCX0KKwkJRVhFQ19F VkVOVF9IT09LKFJVQllfRVZFTlRfTElORSwgdGFnLCBzZWxmLAorCQkJCXJ1YnlfZnJhbWUt PnRoaXNfZnVuYywKKwkJCQlydWJ5X2ZyYW1lLT50aGlzX2NsYXNzKTsKIAkJaWYgKHRhZy0+ bmRfaGVhZCAmJiBuZF90eXBlKHRhZy0+bmRfaGVhZCkgPT0gTk9ERV9XSEVOKSB7CiAJCSAg ICBWQUxVRSB2ID0gcmJfZXZhbChzZWxmLCB0YWctPm5kX2hlYWQtPm5kX2hlYWQpOwogCQkg ICAgbG9uZyBpOwpAQCAtMjg0NiwxMSArMjkzMiw5IEBAIHJiX2V2YWwoc2VsZiwgbikKIAkJ fQogCQl0YWcgPSBub2RlLT5uZF9oZWFkOwogCQl3aGlsZSAodGFnKSB7Ci0JCSAgICBpZiAo dHJhY2VfZnVuYykgewotCQkJY2FsbF90cmFjZV9mdW5jKCJsaW5lIiwgdGFnLCBzZWxmLAot CQkJCQlydWJ5X2ZyYW1lLT50aGlzX2Z1bmMsCi0JCQkJCXJ1YnlfZnJhbWUtPnRoaXNfY2xh c3MpOwotCQkgICAgfQorCQkgICAgRVhFQ19FVkVOVF9IT09LKFJVQllfRVZFTlRfTElORSwg dGFnLCBzZWxmLAorCQkJCSAgICBydWJ5X2ZyYW1lLT50aGlzX2Z1bmMsCisJCQkJICAgIHJ1 YnlfZnJhbWUtPnRoaXNfY2xhc3MpOwogCQkgICAgaWYgKHRhZy0+bmRfaGVhZCAmJiBuZF90 eXBlKHRhZy0+bmRfaGVhZCkgPT0gTk9ERV9XSEVOKSB7CiAJCQlWQUxVRSB2ID0gcmJfZXZh bChzZWxmLCB0YWctPm5kX2hlYWQtPm5kX2hlYWQpOwogCQkJbG9uZyBpOwpAQCAtMzk2MSw5 ICs0MDQ1LDggQEAgbW9kdWxlX3NldHVwKG1vZHVsZSwgbikKICAgICBQVVNIX0NSRUYobW9k dWxlKTsKICAgICBQVVNIX1RBRyhQUk9UX05PTkUpOwogICAgIGlmICgoc3RhdGUgPSBFWEVD X1RBRygpKSA9PSAwKSB7Ci0JaWYgKHRyYWNlX2Z1bmMpIHsKLQkgICAgY2FsbF90cmFjZV9m dW5jKCJjbGFzcyIsIG4sIHJ1YnlfY2Jhc2UsIHJ1YnlfZnJhbWUtPnRoaXNfZnVuYywgcnVi eV9mcmFtZS0+dGhpc19jbGFzcyk7Ci0JfQorCUVYRUNfRVZFTlRfSE9PSyhSVUJZX0VWRU5U X0NMQVNTLCBuLCBydWJ5X2NiYXNlLAorCQkJcnVieV9mcmFtZS0+dGhpc19mdW5jLCBydWJ5 X2ZyYW1lLT50aGlzX2NsYXNzKTsKIAlyZXN1bHQgPSByYl9ldmFsKHJ1YnlfY2Jhc2UsIG5v ZGUtPm5kX25leHQpOwogICAgIH0KICAgICBQT1BfVEFHKCk7CkBAIC0zOTczLDkgKzQwNTYs OCBAQCBtb2R1bGVfc2V0dXAobW9kdWxlLCBuKQogICAgIFBPUF9DTEFTUygpOwogCiAgICAg cnVieV9mcmFtZSA9IGZyYW1lLnRtcDsKLSAgICBpZiAodHJhY2VfZnVuYykgewotCWNhbGxf dHJhY2VfZnVuYygiZW5kIiwgbiwgMCwgcnVieV9mcmFtZS0+dGhpc19mdW5jLCBydWJ5X2Zy YW1lLT50aGlzX2NsYXNzKTsKLSAgICB9CisgICAgRVhFQ19FVkVOVF9IT09LKFJVQllfRVZF TlRfRU5ELCBuLCAwLCBydWJ5X2ZyYW1lLT50aGlzX2Z1bmMsCisJCSAgICBydWJ5X2ZyYW1l LT50aGlzX2NsYXNzKTsKICAgICBpZiAoc3RhdGUpIEpVTVBfVEFHKHN0YXRlKTsKIAogICAg IHJldHVybiByZXN1bHQ7CkBAIC00MzcwLDggKzQ0NTIsOCBAQCByYl9sb25nam1wKHRhZywg bWVzZykKICAgICB9CiAKICAgICByYl90cmFwX3Jlc3RvcmVfbWFzaygpOwotICAgIGlmICh0 cmFjZV9mdW5jICYmIHRhZyAhPSBUQUdfRkFUQUwpIHsKLQljYWxsX3RyYWNlX2Z1bmMoInJh aXNlIiwgcnVieV9jdXJyZW50X25vZGUsCisgICAgaWYgKHRhZyAhPSBUQUdfRkFUQUwpIHsK KwlFWEVDX0VWRU5UX0hPT0soUlVCWV9FVkVOVF9SQUlTRSwgcnVieV9jdXJyZW50X25vZGUs CiAJCQlydWJ5X2ZyYW1lLT5zZWxmLAogCQkJcnVieV9mcmFtZS0+dGhpc19mdW5jLAogCQkJ cnVieV9mcmFtZS0+dGhpc19jbGFzcyk7CkBAIC00NTkxLDEwICs0NjczLDkgQEAgcmV0dXJu X2p1bXAocmV0dmFsKQogCXsgCiAJICAgIHR0LT5kc3QgPSAoVkFMVUUpdHQtPmZyYW1lLT51 bmlxOwogCSAgICB0dC0+cmV0dmFsID0gcmV0dmFsOwotCSAgICBpZiAodHJhY2VfZnVuYykg ewotCQlzdHJ1Y3QgRlJBTUUgKmYgPSB0dC0+ZnJhbWU7Ci0JCWNhbGxfdHJhY2VfZnVuYygi cmV0dXJuIiwgZi0+bm9kZSwgZi0+c2VsZiwgZi0+dGhpc19mdW5jLCBmLT50aGlzX2NsYXNz KTsKLQkgICAgfQorCSAgICBFWEVDX0VWRU5UX0hPT0soUlVCWV9FVkVOVF9SRVRVUk4sCisJ CQkgICAgdHQtPmZyYW1lLT5ub2RlLCB0dC0+ZnJhbWUtPnNlbGYsCisJCQkgICAgdHQtPmZy YW1lLT50aGlzX2Z1bmMsIHR0LT5mcmFtZS0+dGhpc19jbGFzcyk7CiAJICAgIEpVTVBfVEFH KFRBR19SRVRVUk4pOwogCX0KIAlpZiAodHQtPnRhZyA9PSBQUk9UX1RIUkVBRCkgewpAQCAt NTU4OSwxNyArNTY3MCwxOSBAQCByYl9jYWxsMChrbGFzcywgcmVjdiwgaWQsIG9pZCwgYXJn YywgYXJnCiAJCXJiX2J1ZygiYmFkIGFyZ2MgKCVkKSBzcGVjaWZpZWQgZm9yIGAlcyglcykn IiwKIAkJICAgICAgIGxlbiwgcmJfY2xhc3MybmFtZShrbGFzcyksIHJiX2lkMm5hbWUoaWQp KTsKIAkgICAgfQotCSAgICBpZiAodHJhY2VfZnVuYykgeworCSAgICBpZiAoZXZlbnRfaG9v a3MpIHsKIAkJaW50IHN0YXRlOwogCi0JCWNhbGxfdHJhY2VfZnVuYygiYy1jYWxsIiwgcnVi eV9jdXJyZW50X25vZGUsIHJlY3YsIGlkLCBrbGFzcyk7CisJCUVYRUNfRVZFTlRfSE9PSyhS VUJZX0VWRU5UX0NfQ0FMTCwgcnVieV9jdXJyZW50X25vZGUsCisJCQkJcmVjdiwgaWQsIGts YXNzKTsKIAkJUFVTSF9UQUcoUFJPVF9GVU5DKTsKIAkJaWYgKChzdGF0ZSA9IEVYRUNfVEFH KCkpID09IDApIHsKIAkJICAgIHJlc3VsdCA9IGNhbGxfY2Z1bmMoYm9keS0+bmRfY2ZuYywg cmVjdiwgbGVuLCBhcmdjLCBhcmd2KTsKIAkJfQogCQlQT1BfVEFHKCk7CiAJCXJ1YnlfY3Vy cmVudF9ub2RlID0gcnVieV9mcmFtZS0+bm9kZTsKLQkJY2FsbF90cmFjZV9mdW5jKCJjLXJl dHVybiIsIHJ1YnlfY3VycmVudF9ub2RlLCByZWN2LCBpZCwga2xhc3MpOworCQlFWEVDX0VW RU5UX0hPT0soUlVCWV9FVkVOVF9DX1JFVFVSTiwgcnVieV9jdXJyZW50X25vZGUsCisJCQkJ cmVjdiwgaWQsIGtsYXNzKTsKIAkJaWYgKHN0YXRlKSBKVU1QX1RBRyhzdGF0ZSk7CiAJICAg IH0KIAkgICAgZWxzZSB7CkBAIC01NzI5LDEzICs1ODEyLDkgQEAgcmJfY2FsbDAoa2xhc3Ms IHJlY3YsIGlkLCBvaWQsIGFyZ2MsIGFyZwogCQkgICAgcnVieV9mcmFtZS0+YXJnYyA9IC0o cnVieV9mcmFtZS0+YXJnYyAtIGFyZ2MpLTE7CiAJCX0KIAotCQlpZiAodHJhY2VfZnVuYykg ewotCQkgICAgY2FsbF90cmFjZV9mdW5jKCJjYWxsIiwgYjIsIHJlY3YsIGlkLCBrbGFzcyk7 Ci0JCX0KKwkJRVhFQ19FVkVOVF9IT09LKFJVQllfRVZFTlRfQ0FMTCwgYjIsIHJlY3YsIGlk LCBrbGFzcyk7CiAJCXJlc3VsdCA9IHJiX2V2YWwocmVjdiwgYm9keSk7Ci0JCWlmICh0cmFj ZV9mdW5jKSB7Ci0JCSAgICBjYWxsX3RyYWNlX2Z1bmMoInJldHVybiIsIGJvZHksIHJlY3Ys IGlkLCBrbGFzcyk7Ci0JCX0KKwkJRVhFQ19FVkVOVF9IT09LKFJVQllfRVZFTlRfUkVUVVJO LCBib2R5LCByZWN2LCBpZCwga2xhc3MpOwogCSAgICB9CiAJICAgIGVsc2UgaWYgKHN0YXRl ID09IFRBR19SRVRVUk4gJiYgVEFHX0RTVCgpKSB7CiAJCXJlc3VsdCA9IHByb3RfdGFnLT5y ZXR2YWw7CkluZGV4OiBub2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3NyYy9ydWJ5 L25vZGUuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42MgpkaWZmIC11IC1wIC1yMS42MiBu b2RlLmgKLS0tIG5vZGUuaAkyIE1hciAyMDA1IDAzOjIxOjMwIC0wMDAwCTEuNjIKKysrIG5v ZGUuaAkxMiBNYXIgMjAwNSAyMzo1MTo0NSAtMDAwMApAQCAtMzY2LDYgKzM2NiwyMyBAQCBW QUxVRSByYl9ndmFyX2dldCBfKChzdHJ1Y3QgZ2xvYmFsX2VudHJ5CiBWQUxVRSByYl9ndmFy X3NldCBfKChzdHJ1Y3QgZ2xvYmFsX2VudHJ5ICosIFZBTFVFKSk7CiBWQUxVRSByYl9ndmFy X2RlZmluZWQgXygoc3RydWN0IGdsb2JhbF9lbnRyeSAqKSk7CiAKK3R5cGVkZWYgdW5zaWdu ZWQgaW50IHJiX2V2ZW50X3Q7CisKKyNkZWZpbmUgUlVCWV9FVkVOVF9OT05FICAgICAweDAw CisjZGVmaW5lIFJVQllfRVZFTlRfTElORSAgICAgMHgwMQorI2RlZmluZSBSVUJZX0VWRU5U X0NMQVNTICAgIDB4MDIKKyNkZWZpbmUgUlVCWV9FVkVOVF9FTkQgICAgICAweDA0CisjZGVm aW5lIFJVQllfRVZFTlRfQ0FMTCAgICAgMHgwOAorI2RlZmluZSBSVUJZX0VWRU5UX1JFVFVS TiAgIDB4MTAKKyNkZWZpbmUgUlVCWV9FVkVOVF9DX0NBTEwgICAweDIwCisjZGVmaW5lIFJV QllfRVZFTlRfQ19SRVRVUk4gMHg0MAorI2RlZmluZSBSVUJZX0VWRU5UX1JBSVNFICAgIDB4 ODAKKyNkZWZpbmUgUlVCWV9FVkVOVF9BTEwgICAgICAweGZmCisKK3R5cGVkZWYgdm9pZCAo KnJiX2V2ZW50X2hvb2tfZnVuY190KV8oKHJiX2V2ZW50X3QsTk9ERSosVkFMVUUsSUQsVkFM VUUpKTsKK3ZvaWQgcmJfYWRkX2V2ZW50X2hvb2socmJfZXZlbnRfaG9va19mdW5jX3QscmJf ZXZlbnRfdCk7CitpbnQgcmJfcmVtb3ZlX2V2ZW50X2hvb2socmJfZXZlbnRfaG9va19mdW5j X3QpOworCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKIH0gIC8qIGV4dGVybiAiQyIgeyAq LwogI2VuZGlmCg== --------------090700030301050203060307--