From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21437 invoked by alias); 12 Dec 2009 08:41:16 -0000 Received: (qmail 21428 invoked by uid 22791); 12 Dec 2009 08:41:15 -0000 X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-pw0-f49.google.com (HELO mail-pw0-f49.google.com) (209.85.160.49) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Sat, 12 Dec 2009 08:41:06 +0000 Received: by pwj12 with SMTP id 12so1169811pwj.8 for ; Sat, 12 Dec 2009 00:41:05 -0800 (PST) MIME-Version: 1.0 Received: by 10.142.4.11 with SMTP id 11mr1455283wfd.86.1260607265091; Sat, 12 Dec 2009 00:41:05 -0800 (PST) In-Reply-To: References: <20091125162458.GF26004@adacore.com> From: Hui Zhu Date: Sat, 12 Dec 2009 08:41:00 -0000 Message-ID: Subject: Re: [RFA] let record_resume fail immediately on error To: Tom Tromey , Joel Brobecker , Michael Snyder Cc: "gdb-patches@sourceware.org" Content-Type: multipart/mixed; boundary=00504502b8693cafd5047a8400f6 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: 2009-12/txt/msg00176.txt.bz2 --00504502b8693cafd5047a8400f6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 7607 Ping. Thanks, Hui On Wed, Dec 2, 2009 at 11:22, Hui Zhu wrote: > Thanks Tom, > > I make a new patch according it. =A0Please help me review it. > > Thanks, > Hui > > 2009-12-02 =A0Hui Zhu =A0 > > =A0 =A0 =A0 =A0* record.c (record_message): Change argument. > =A0 =A0 =A0 =A0(record_message_wrapper): New function. > =A0 =A0 =A0 =A0(do_record_message): Change it name to > =A0 =A0 =A0 =A0"record_message_wrapper_safe". > =A0 =A0 =A0 =A0Let it call "record_message_wrapper". > =A0 =A0 =A0 =A0(record_resume_error): Deleted. > =A0 =A0 =A0 =A0(record_resume): Call "record_message". > =A0 =A0 =A0 =A0(record_wait): Deleted record_resume_error. > =A0 =A0 =A0 =A0Call "record_message_wrapper_safe". > =A0 =A0 =A0 =A0Set status when do_record_message need stop the inferior. > 2009-12-02 =A0Hui Zhu =A0 > > =A0 =A0 =A0 =A0* gdb.reverse/sigall-reverse.exp: Adjust. > > --- > =A0record.c =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 | =A0 70 ++++++++++++++----------------- > =A0testsuite/gdb.reverse/sigall-reverse.exp | =A0 =A02 > =A02 files changed, 34 insertions(+), 38 deletions(-) > > --- a/record.c > +++ b/record.c > @@ -572,17 +572,11 @@ record_arch_list_cleanups (void *ignore) > =A0 =A0record the running message of inferior and set them to > =A0 =A0record_arch_list, and add it to record_list. =A0*/ > > -struct record_message_args { > - =A0struct regcache *regcache; > - =A0enum target_signal signal; > -}; > - > =A0static int > -record_message (void *args) > +record_message (struct regcache *regcache, enum target_signal signal) > =A0{ > =A0 int ret; > - =A0struct record_message_args *myargs =3D args; > - =A0struct gdbarch *gdbarch =3D get_regcache_arch (myargs->regcache); > + =A0struct gdbarch *gdbarch =3D get_regcache_arch (regcache); > =A0 struct cleanup *old_cleanups =3D make_cleanup (record_arch_list_clean= ups, 0); > > =A0 record_arch_list_head =3D NULL; > @@ -616,18 +610,18 @@ record_message (void *args) > =A0 if (record_list !=3D &record_first) =A0 =A0/* FIXME better way to che= ck */ > =A0 =A0 { > =A0 =A0 =A0 gdb_assert (record_list->type =3D=3D record_end); > - =A0 =A0 =A0record_list->u.end.sigval =3D myargs->signal; > + =A0 =A0 =A0record_list->u.end.sigval =3D signal; > =A0 =A0 } > > - =A0if (myargs->signal =3D=3D TARGET_SIGNAL_0 > + =A0if (signal =3D=3D TARGET_SIGNAL_0 > =A0 =A0 =A0 || !gdbarch_process_record_signal_p (gdbarch)) > =A0 =A0 ret =3D gdbarch_process_record (gdbarch, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 myargs-= >regcache, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 regcach= e_read_pc (myargs->regcache)); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 regcach= e, > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 regcach= e_read_pc (regcache)); > =A0 else > =A0 =A0 ret =3D gdbarch_process_record_signal (gdbarch, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0myargs->regcache, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0myargs->signal); > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0regcache, > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0= =A0 =A0signal); > > =A0 if (ret > 0) > =A0 =A0 error (_("Process record: inferior program stopped.")); > @@ -648,15 +642,29 @@ record_message (void *args) > =A0 return 1; > =A0} > > +struct record_message_args { > + =A0struct regcache *regcache; > + =A0enum target_signal signal; > +}; > + > =A0static int > -do_record_message (struct regcache *regcache, > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0enum target_signal signal) > +record_message_wrapper (void *args) > +{ > + =A0struct record_message_args *record_args =3D args; > + > + =A0return record_message (record_args->regcache, record_args->signal); > +} > + > +static int > +record_message_wrapper_safe (struct regcache *regcache, > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 enum target_sig= nal signal) > =A0{ > =A0 struct record_message_args args; > > =A0 args.regcache =3D regcache; > =A0 args.signal =3D signal; > - =A0return catch_errors (record_message, &args, NULL, RETURN_MASK_ALL); > + > + =A0return catch_errors (record_message_wrapper, &args, NULL, RETURN_MAS= K_ALL); > =A0} > > =A0/* Set to 1 if record_store_registers and record_xfer_partial > @@ -983,7 +991,6 @@ record_close (int quitting) > =A0} > > =A0static int record_resume_step =3D 0; > -static int record_resume_error; > > =A0/* "to_resume" target method. =A0Resume the process record target. =A0= */ > > @@ -995,15 +1002,7 @@ record_resume (struct target_ops *ops, p > > =A0 if (!RECORD_IS_REPLAY) > =A0 =A0 { > - =A0 =A0 =A0if (do_record_message (get_current_regcache (), signal)) > - =A0 =A0 =A0 =A0{ > - =A0 =A0 =A0 =A0 =A0record_resume_error =3D 0; > - =A0 =A0 =A0 =A0} > - =A0 =A0 =A0else > - =A0 =A0 =A0 =A0{ > - =A0 =A0 =A0 =A0 =A0record_resume_error =3D 1; > - =A0 =A0 =A0 =A0 =A0return; > - =A0 =A0 =A0 =A0} > + =A0 =A0 =A0record_message (get_current_regcache (), signal); > =A0 =A0 =A0 record_beneath_to_resume (record_beneath_to_resume_ops, ptid,= 1, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 signal); > =A0 =A0 } > @@ -1067,14 +1066,6 @@ record_wait (struct target_ops *ops, > > =A0 if (!RECORD_IS_REPLAY && ops !=3D &record_core_ops) > =A0 =A0 { > - =A0 =A0 =A0if (record_resume_error) > - =A0 =A0 =A0 { > - =A0 =A0 =A0 =A0 /* If record_resume get error, return directly. =A0*/ > - =A0 =A0 =A0 =A0 status->kind =3D TARGET_WAITKIND_STOPPED; > - =A0 =A0 =A0 =A0 status->value.sig =3D TARGET_SIGNAL_ABRT; > - =A0 =A0 =A0 =A0 return inferior_ptid; > - =A0 =A0 =A0 } > - > =A0 =A0 =A0 if (record_resume_step) > =A0 =A0 =A0 =A0{ > =A0 =A0 =A0 =A0 =A0/* This is a single step. =A0*/ > @@ -1130,8 +1121,13 @@ record_wait (struct target_ops *ops, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0{ > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0/* This must be a single-step = trap. =A0Record the > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 insn and issue another st= ep. =A0*/ > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!do_record_message (regcach= e, TARGET_SIGNAL_0)) > - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 break; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 if (!record_message_wrapper_saf= e (regcache, > + =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 =A0 =A0TARGET_SIGNAL_0)) > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 { > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 status->kind =3D TA= RGET_WAITKIND_STOPPED; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 status->value.sig = =3D TARGET_SIGNAL_0; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 break; > + =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 } > > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0record_beneath_to_resume (reco= rd_beneath_to_resume_ops, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0ptid, 1, > --- a/testsuite/gdb.reverse/sigall-reverse.exp > +++ b/testsuite/gdb.reverse/sigall-reverse.exp > @@ -262,7 +262,7 @@ gdb_test "continue" \ > =A0 =A0 "get signal TERM" > =A0gdb_test "continue" "Breakpoint.*handle_TERM.*" "send signal TERM" > > -gdb_test "continue" "Program received .*" "continue to sigall exit" \ > +gdb_test "continue" "\[process \[0-9\]+ .*" "continue to sigall exit" \ > =A0 =A0 "The next instruction is syscall exit_group.* program...y. or n. = " \ > =A0 =A0 "yes" > --00504502b8693cafd5047a8400f6 Content-Type: text/plain; charset=US-ASCII; name="prec-fix-error-handler.txt" Content-Disposition: attachment; filename="prec-fix-error-handler.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g344z1ou0 Content-length: 6446 LS0tCiByZWNvcmQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICA3MCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiB0ZXN0 c3VpdGUvZ2RiLnJldmVyc2Uvc2lnYWxsLXJldmVyc2UuZXhwIHwgICAgMiAK IDIgZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMzggZGVsZXRp b25zKC0pCgotLS0gYS9yZWNvcmQuYworKysgYi9yZWNvcmQuYwpAQCAtNTcy LDE3ICs1NzIsMTEgQEAgcmVjb3JkX2FyY2hfbGlzdF9jbGVhbnVwcyAodm9p ZCAqaWdub3JlKQogICAgcmVjb3JkIHRoZSBydW5uaW5nIG1lc3NhZ2Ugb2Yg aW5mZXJpb3IgYW5kIHNldCB0aGVtIHRvCiAgICByZWNvcmRfYXJjaF9saXN0 LCBhbmQgYWRkIGl0IHRvIHJlY29yZF9saXN0LiAgKi8KIAotc3RydWN0IHJl Y29yZF9tZXNzYWdlX2FyZ3MgewotICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlOwotICBlbnVtIHRhcmdldF9zaWduYWwgc2lnbmFsOwotfTsKLQogc3Rh dGljIGludAotcmVjb3JkX21lc3NhZ2UgKHZvaWQgKmFyZ3MpCityZWNvcmRf bWVzc2FnZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgZW51bSB0YXJn ZXRfc2lnbmFsIHNpZ25hbCkKIHsKICAgaW50IHJldDsKLSAgc3RydWN0IHJl Y29yZF9tZXNzYWdlX2FyZ3MgKm15YXJncyA9IGFyZ3M7Ci0gIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKG15YXJncy0+ cmVnY2FjaGUpOworICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9y ZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7CiAgIHN0cnVjdCBjbGVhbnVwICpv bGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHJlY29yZF9hcmNoX2xpc3Rf Y2xlYW51cHMsIDApOwogCiAgIHJlY29yZF9hcmNoX2xpc3RfaGVhZCA9IE5V TEw7CkBAIC02MTYsMTggKzYxMCwxOCBAQCByZWNvcmRfbWVzc2FnZSAodm9p ZCAqYXJncykKICAgaWYgKHJlY29yZF9saXN0ICE9ICZyZWNvcmRfZmlyc3Qp ICAgIC8qIEZJWE1FIGJldHRlciB3YXkgdG8gY2hlY2sgKi8KICAgICB7CiAg ICAgICBnZGJfYXNzZXJ0IChyZWNvcmRfbGlzdC0+dHlwZSA9PSByZWNvcmRf ZW5kKTsKLSAgICAgIHJlY29yZF9saXN0LT51LmVuZC5zaWd2YWwgPSBteWFy Z3MtPnNpZ25hbDsKKyAgICAgIHJlY29yZF9saXN0LT51LmVuZC5zaWd2YWwg PSBzaWduYWw7CiAgICAgfQogCi0gIGlmIChteWFyZ3MtPnNpZ25hbCA9PSBU QVJHRVRfU0lHTkFMXzAKKyAgaWYgKHNpZ25hbCA9PSBUQVJHRVRfU0lHTkFM XzAKICAgICAgIHx8ICFnZGJhcmNoX3Byb2Nlc3NfcmVjb3JkX3NpZ25hbF9w IChnZGJhcmNoKSkKICAgICByZXQgPSBnZGJhcmNoX3Byb2Nlc3NfcmVjb3Jk IChnZGJhcmNoLAotCQkJCSAgbXlhcmdzLT5yZWdjYWNoZSwKLQkJCQkgIHJl Z2NhY2hlX3JlYWRfcGMgKG15YXJncy0+cmVnY2FjaGUpKTsKKwkJCQkgIHJl Z2NhY2hlLAorCQkJCSAgcmVnY2FjaGVfcmVhZF9wYyAocmVnY2FjaGUpKTsK ICAgZWxzZQogICAgIHJldCA9IGdkYmFyY2hfcHJvY2Vzc19yZWNvcmRfc2ln bmFsIChnZGJhcmNoLAotCQkJCQkgbXlhcmdzLT5yZWdjYWNoZSwKLQkJCQkJ IG15YXJncy0+c2lnbmFsKTsKKwkJCQkJIHJlZ2NhY2hlLAorCQkJCQkgc2ln bmFsKTsKIAogICBpZiAocmV0ID4gMCkKICAgICBlcnJvciAoXygiUHJvY2Vz cyByZWNvcmQ6IGluZmVyaW9yIHByb2dyYW0gc3RvcHBlZC4iKSk7CkBAIC02 NDgsMTUgKzY0MiwyOSBAQCByZWNvcmRfbWVzc2FnZSAodm9pZCAqYXJncykK ICAgcmV0dXJuIDE7CiB9CiAKK3N0cnVjdCByZWNvcmRfbWVzc2FnZV9hcmdz IHsKKyAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZTsKKyAgZW51bSB0YXJn ZXRfc2lnbmFsIHNpZ25hbDsKK307CisKIHN0YXRpYyBpbnQKLWRvX3JlY29y ZF9tZXNzYWdlIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotCQkgICBl bnVtIHRhcmdldF9zaWduYWwgc2lnbmFsKQorcmVjb3JkX21lc3NhZ2Vfd3Jh cHBlciAodm9pZCAqYXJncykKK3sKKyAgc3RydWN0IHJlY29yZF9tZXNzYWdl X2FyZ3MgKnJlY29yZF9hcmdzID0gYXJnczsKKworICByZXR1cm4gcmVjb3Jk X21lc3NhZ2UgKHJlY29yZF9hcmdzLT5yZWdjYWNoZSwgcmVjb3JkX2FyZ3Mt PnNpZ25hbCk7Cit9CisKK3N0YXRpYyBpbnQKK3JlY29yZF9tZXNzYWdlX3dy YXBwZXJfc2FmZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSB0YXJnZXRfc2lnbmFsIHNp Z25hbCkKIHsKICAgc3RydWN0IHJlY29yZF9tZXNzYWdlX2FyZ3MgYXJnczsK IAogICBhcmdzLnJlZ2NhY2hlID0gcmVnY2FjaGU7CiAgIGFyZ3Muc2lnbmFs ID0gc2lnbmFsOwotICByZXR1cm4gY2F0Y2hfZXJyb3JzIChyZWNvcmRfbWVz c2FnZSwgJmFyZ3MsIE5VTEwsIFJFVFVSTl9NQVNLX0FMTCk7CisKKyAgcmV0 dXJuIGNhdGNoX2Vycm9ycyAocmVjb3JkX21lc3NhZ2Vfd3JhcHBlciwgJmFy Z3MsIE5VTEwsIFJFVFVSTl9NQVNLX0FMTCk7CiB9CiAKIC8qIFNldCB0byAx IGlmIHJlY29yZF9zdG9yZV9yZWdpc3RlcnMgYW5kIHJlY29yZF94ZmVyX3Bh cnRpYWwKQEAgLTk4Myw3ICs5OTEsNiBAQCByZWNvcmRfY2xvc2UgKGludCBx dWl0dGluZykKIH0KIAogc3RhdGljIGludCByZWNvcmRfcmVzdW1lX3N0ZXAg PSAwOwotc3RhdGljIGludCByZWNvcmRfcmVzdW1lX2Vycm9yOwogCiAvKiAi dG9fcmVzdW1lIiB0YXJnZXQgbWV0aG9kLiAgUmVzdW1lIHRoZSBwcm9jZXNz IHJlY29yZCB0YXJnZXQuICAqLwogCkBAIC05OTUsMTUgKzEwMDIsNyBAQCBy ZWNvcmRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBwCiAKICAg aWYgKCFSRUNPUkRfSVNfUkVQTEFZKQogICAgIHsKLSAgICAgIGlmIChkb19y ZWNvcmRfbWVzc2FnZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCksIHNpZ25h bCkpCi0gICAgICAgIHsKLSAgICAgICAgICByZWNvcmRfcmVzdW1lX2Vycm9y ID0gMDsKLSAgICAgICAgfQotICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg ICAgICAgcmVjb3JkX3Jlc3VtZV9lcnJvciA9IDE7Ci0gICAgICAgICAgcmV0 dXJuOwotICAgICAgICB9CisgICAgICByZWNvcmRfbWVzc2FnZSAoZ2V0X2N1 cnJlbnRfcmVnY2FjaGUgKCksIHNpZ25hbCk7CiAgICAgICByZWNvcmRfYmVu ZWF0aF90b19yZXN1bWUgKHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZV9vcHMs IHB0aWQsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp Z25hbCk7CiAgICAgfQpAQCAtMTA2NywxNCArMTA2Niw2IEBAIHJlY29yZF93 YWl0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAogCiAgIGlmICghUkVDT1JE X0lTX1JFUExBWSAmJiBvcHMgIT0gJnJlY29yZF9jb3JlX29wcykKICAgICB7 Ci0gICAgICBpZiAocmVjb3JkX3Jlc3VtZV9lcnJvcikKLQl7Ci0JICAvKiBJ ZiByZWNvcmRfcmVzdW1lIGdldCBlcnJvciwgcmV0dXJuIGRpcmVjdGx5LiAg Ki8KLQkgIHN0YXR1cy0+a2luZCA9IFRBUkdFVF9XQUlUS0lORF9TVE9QUEVE OwotCSAgc3RhdHVzLT52YWx1ZS5zaWcgPSBUQVJHRVRfU0lHTkFMX0FCUlQ7 Ci0JICByZXR1cm4gaW5mZXJpb3JfcHRpZDsKLQl9Ci0KICAgICAgIGlmIChy ZWNvcmRfcmVzdW1lX3N0ZXApCiAJewogCSAgLyogVGhpcyBpcyBhIHNpbmds ZSBzdGVwLiAgKi8KQEAgLTExMzAsOCArMTEyMSwxMyBAQCByZWNvcmRfd2Fp dCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKIAkJICAgIHsKIAkJICAgICAg LyogVGhpcyBtdXN0IGJlIGEgc2luZ2xlLXN0ZXAgdHJhcC4gIFJlY29yZCB0 aGUKIAkJICAgICAgICAgaW5zbiBhbmQgaXNzdWUgYW5vdGhlciBzdGVwLiAg Ki8KLQkJICAgICAgaWYgKCFkb19yZWNvcmRfbWVzc2FnZSAocmVnY2FjaGUs IFRBUkdFVF9TSUdOQUxfMCkpCi0JCQlicmVhazsKKwkJICAgICAgaWYgKCFy ZWNvcmRfbWVzc2FnZV93cmFwcGVyX3NhZmUgKHJlZ2NhY2hlLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUQVJHRVRfU0lHTkFMXzApKQorICAJCQl7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdGF0dXMtPmtpbmQgPSBUQVJHRVRfV0FJVEtJTkRf U1RPUFBFRDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy0+ dmFsdWUuc2lnID0gVEFSR0VUX1NJR05BTF8wOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7CisgIAkJCX0KIAogCQkgICAgICByZWNvcmRf YmVuZWF0aF90b19yZXN1bWUgKHJlY29yZF9iZW5lYXRoX3RvX3Jlc3VtZV9v cHMsCiAJCQkJCQlwdGlkLCAxLAotLS0gYS90ZXN0c3VpdGUvZ2RiLnJldmVy c2Uvc2lnYWxsLXJldmVyc2UuZXhwCisrKyBiL3Rlc3RzdWl0ZS9nZGIucmV2 ZXJzZS9zaWdhbGwtcmV2ZXJzZS5leHAKQEAgLTI2Miw3ICsyNjIsNyBAQCBn ZGJfdGVzdCAiY29udGludWUiIFwKICAgICAiZ2V0IHNpZ25hbCBURVJNIgog Z2RiX3Rlc3QgImNvbnRpbnVlIiAiQnJlYWtwb2ludC4qaGFuZGxlX1RFUk0u KiIgInNlbmQgc2lnbmFsIFRFUk0iCiAKLWdkYl90ZXN0ICJjb250aW51ZSIg IlByb2dyYW0gcmVjZWl2ZWQgLioiICJjb250aW51ZSB0byBzaWdhbGwgZXhp dCIgXAorZ2RiX3Rlc3QgImNvbnRpbnVlIiAiXFtwcm9jZXNzIFxbMC05XF0r IC4qIiAiY29udGludWUgdG8gc2lnYWxsIGV4aXQiIFwKICAgICAiVGhlIG5l eHQgaW5zdHJ1Y3Rpb24gaXMgc3lzY2FsbCBleGl0X2dyb3VwLiogcHJvZ3Jh bS4uLnkuIG9yIG4uICIgXAogICAgICJ5ZXMiCiAK --00504502b8693cafd5047a8400f6--