From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16169 invoked by alias); 9 Sep 2009 13:29:11 -0000 Received: (qmail 15988 invoked by uid 22791); 9 Sep 2009 13:29:05 -0000 X-SWARE-Spam-Status: No, hits=-1.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_14,J_CHICKENPOX_48,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-pz0-f195.google.com (HELO mail-pz0-f195.google.com) (209.85.222.195) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 09 Sep 2009 13:28:58 +0000 Received: by mail-pz0-f195.google.com with SMTP id 33so1029477pzk.24 for ; Wed, 09 Sep 2009 06:28:57 -0700 (PDT) MIME-Version: 1.0 Received: by 10.142.6.11 with SMTP id 11mr12545wff.68.1252502937136; Wed, 09 Sep 2009 06:28:57 -0700 (PDT) From: Hui Zhu Date: Wed, 09 Sep 2009 13:29:00 -0000 Message-ID: Subject: [RFA] Make the prec support signal better[1/4] -- gdbarch To: gdb-patches ml Cc: Michael Snyder Content-Type: multipart/mixed; boundary=00504502b223a5ece00473251061 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-09/txt/msg00242.txt.bz2 --00504502b223a5ece00473251061 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 4984 This patch add a arch interface "process_record_signal". When inferior get a signal, record will call it to let arch record this sig. 2009-09-09 Michael Snyder Hui Zhu * gdbarch.sh (process_record_signal): New interface. --- gdbarch.c | 33 +++++++++++++++++++++++++++++++++ gdbarch.h | 9 +++++++++ gdbarch.sh | 4 ++++ 3 files changed, 46 insertions(+) --- a/gdbarch.c +++ b/gdbarch.c @@ -240,6 +240,7 @@ struct gdbarch gdbarch_static_transform_name_ftype *static_transform_name; int sofun_address_maybe_missing; gdbarch_process_record_ftype *process_record; + gdbarch_process_record_signal_ftype *process_record_signal; gdbarch_target_signal_from_host_ftype *target_signal_from_host; gdbarch_target_signal_to_host_ftype *target_signal_to_host; gdbarch_get_siginfo_type_ftype *get_siginfo_type; @@ -377,6 +378,7 @@ struct gdbarch startup_gdbarch = 0, /* static_transform_name */ 0, /* sofun_address_maybe_missing */ 0, /* process_record */ + 0, /* process_record_signal */ default_target_signal_from_host, /* target_signal_from_host */ default_target_signal_to_host, /* target_signal_to_host */ 0, /* get_siginfo_type */ @@ -633,6 +635,7 @@ verify_gdbarch (struct gdbarch *gdbarch) /* Skip verify of static_transform_name, has predicate */ /* Skip verify of sofun_address_maybe_missing, invalid_p == 0 */ /* Skip verify of process_record, has predicate */ + /* Skip verify of process_record_signal, has predicate */ /* Skip verify of target_signal_from_host, invalid_p == 0 */ /* Skip verify of target_signal_to_host, invalid_p == 0 */ /* Skip verify of get_siginfo_type, has predicate */ @@ -962,6 +965,12 @@ gdbarch_dump (struct gdbarch *gdbarch, s "gdbarch_dump: process_record = <%s>\n", host_address_to_string (gdbarch->process_record)); fprintf_unfiltered (file, + "gdbarch_dump: gdbarch_process_record_signal_p() = %d\n", + gdbarch_process_record_signal_p (gdbarch)); + fprintf_unfiltered (file, + "gdbarch_dump: process_record_signal = <%s>\n", + host_address_to_string (gdbarch->process_record_signal)); + fprintf_unfiltered (file, "gdbarch_dump: ps_regnum = %s\n", plongest (gdbarch->ps_regnum)); fprintf_unfiltered (file, @@ -3298,6 +3307,30 @@ set_gdbarch_process_record (struct gdbar gdbarch->process_record = process_record; } +int +gdbarch_process_record_signal_p (struct gdbarch *gdbarch) +{ + gdb_assert (gdbarch != NULL); + return gdbarch->process_record_signal != NULL; +} + +int +gdbarch_process_record_signal (struct gdbarch *gdbarch, struct regcache *regcache, enum target_signal signal) +{ + gdb_assert (gdbarch != NULL); + gdb_assert (gdbarch->process_record_signal != NULL); + if (gdbarch_debug >= 2) + fprintf_unfiltered (gdb_stdlog, "gdbarch_process_record_signal called\n"); + return gdbarch->process_record_signal (gdbarch, regcache, signal); +} + +void +set_gdbarch_process_record_signal (struct gdbarch *gdbarch, + gdbarch_process_record_signal_ftype process_record_signal) +{ + gdbarch->process_record_signal = process_record_signal; +} + enum target_signal gdbarch_target_signal_from_host (struct gdbarch *gdbarch, int signo) { --- a/gdbarch.h +++ b/gdbarch.h @@ -821,6 +821,15 @@ typedef int (gdbarch_process_record_ftyp extern int gdbarch_process_record (struct gdbarch *gdbarch, struct regcache *regcache, CORE_ADDR addr); extern void set_gdbarch_process_record (struct gdbarch *gdbarch, gdbarch_process_record_ftype *process_record); +/* Save process state after a signal. + Return -1 if something goes wrong, 0 otherwise. */ + +extern int gdbarch_process_record_signal_p (struct gdbarch *gdbarch); + +typedef int (gdbarch_process_record_signal_ftype) (struct gdbarch *gdbarch, struct regcache *regcache, enum target_signal signal); +extern int gdbarch_process_record_signal (struct gdbarch *gdbarch, struct regcache *regcache, enum target_signal signal); +extern void set_gdbarch_process_record_signal (struct gdbarch *gdbarch, gdbarch_process_record_signal_ftype *process_record_signal); + /* Signal translation: translate inferior's signal (host's) number into GDB's representation. */ --- a/gdbarch.sh +++ b/gdbarch.sh @@ -709,6 +709,10 @@ v:int:sofun_address_maybe_missing:::0:0: # Return -1 if something goes wrong, 0 otherwise. M:int:process_record:struct regcache *regcache, CORE_ADDR addr:regcache, addr +# Save process state after a signal. +# Return -1 if something goes wrong, 0 otherwise. +M:int:process_record_signal:struct regcache *regcache, enum target_signal signal:regcache, signal + # Signal translation: translate inferior's signal (host's) number into # GDB's representation. m:enum target_signal:target_signal_from_host:int signo:signo::default_target_signal_from_host::0 --00504502b223a5ece00473251061 Content-Type: text/plain; charset=US-ASCII; name="prec-support-signal-gdbarch.txt" Content-Disposition: attachment; filename="prec-support-signal-gdbarch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fze337wv0 Content-length: 6434 LS0tCiBnZGJhcmNoLmMgIHwgICAzMyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIGdkYmFyY2guaCAgfCAgICA5ICsrKysrKysrKwogZ2Ri YXJjaC5zaCB8ICAgIDQgKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNl cnRpb25zKCspCgotLS0gYS9nZGJhcmNoLmMKKysrIGIvZ2RiYXJjaC5jCkBA IC0yNDAsNiArMjQwLDcgQEAgc3RydWN0IGdkYmFyY2gKICAgZ2RiYXJjaF9z dGF0aWNfdHJhbnNmb3JtX25hbWVfZnR5cGUgKnN0YXRpY190cmFuc2Zvcm1f bmFtZTsKICAgaW50IHNvZnVuX2FkZHJlc3NfbWF5YmVfbWlzc2luZzsKICAg Z2RiYXJjaF9wcm9jZXNzX3JlY29yZF9mdHlwZSAqcHJvY2Vzc19yZWNvcmQ7 CisgIGdkYmFyY2hfcHJvY2Vzc19yZWNvcmRfc2lnbmFsX2Z0eXBlICpwcm9j ZXNzX3JlY29yZF9zaWduYWw7CiAgIGdkYmFyY2hfdGFyZ2V0X3NpZ25hbF9m cm9tX2hvc3RfZnR5cGUgKnRhcmdldF9zaWduYWxfZnJvbV9ob3N0OwogICBn ZGJhcmNoX3RhcmdldF9zaWduYWxfdG9faG9zdF9mdHlwZSAqdGFyZ2V0X3Np Z25hbF90b19ob3N0OwogICBnZGJhcmNoX2dldF9zaWdpbmZvX3R5cGVfZnR5 cGUgKmdldF9zaWdpbmZvX3R5cGU7CkBAIC0zNzcsNiArMzc4LDcgQEAgc3Ry dWN0IGdkYmFyY2ggc3RhcnR1cF9nZGJhcmNoID0KICAgMCwgIC8qIHN0YXRp Y190cmFuc2Zvcm1fbmFtZSAqLwogICAwLCAgLyogc29mdW5fYWRkcmVzc19t YXliZV9taXNzaW5nICovCiAgIDAsICAvKiBwcm9jZXNzX3JlY29yZCAqLwor ICAwLCAgLyogcHJvY2Vzc19yZWNvcmRfc2lnbmFsICovCiAgIGRlZmF1bHRf dGFyZ2V0X3NpZ25hbF9mcm9tX2hvc3QsICAvKiB0YXJnZXRfc2lnbmFsX2Zy b21faG9zdCAqLwogICBkZWZhdWx0X3RhcmdldF9zaWduYWxfdG9faG9zdCwg IC8qIHRhcmdldF9zaWduYWxfdG9faG9zdCAqLwogICAwLCAgLyogZ2V0X3Np Z2luZm9fdHlwZSAqLwpAQCAtNjMzLDYgKzYzNSw3IEBAIHZlcmlmeV9nZGJh cmNoIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKICAgLyogU2tpcCB2ZXJp Znkgb2Ygc3RhdGljX3RyYW5zZm9ybV9uYW1lLCBoYXMgcHJlZGljYXRlICov CiAgIC8qIFNraXAgdmVyaWZ5IG9mIHNvZnVuX2FkZHJlc3NfbWF5YmVfbWlz c2luZywgaW52YWxpZF9wID09IDAgKi8KICAgLyogU2tpcCB2ZXJpZnkgb2Yg cHJvY2Vzc19yZWNvcmQsIGhhcyBwcmVkaWNhdGUgKi8KKyAgLyogU2tpcCB2 ZXJpZnkgb2YgcHJvY2Vzc19yZWNvcmRfc2lnbmFsLCBoYXMgcHJlZGljYXRl ICovCiAgIC8qIFNraXAgdmVyaWZ5IG9mIHRhcmdldF9zaWduYWxfZnJvbV9o b3N0LCBpbnZhbGlkX3AgPT0gMCAqLwogICAvKiBTa2lwIHZlcmlmeSBvZiB0 YXJnZXRfc2lnbmFsX3RvX2hvc3QsIGludmFsaWRfcCA9PSAwICovCiAgIC8q IFNraXAgdmVyaWZ5IG9mIGdldF9zaWdpbmZvX3R5cGUsIGhhcyBwcmVkaWNh dGUgKi8KQEAgLTk2Miw2ICs5NjUsMTIgQEAgZ2RiYXJjaF9kdW1wIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgcwogICAgICAgICAgICAgICAgICAgICAg ICJnZGJhcmNoX2R1bXA6IHByb2Nlc3NfcmVjb3JkID0gPCVzPlxuIiwKICAg ICAgICAgICAgICAgICAgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nIChn ZGJhcmNoLT5wcm9jZXNzX3JlY29yZCkpOwogICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVt cDogZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9zaWduYWxfcCgpID0gJWRcbiIs CisgICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9wcm9jZXNzX3JlY29y ZF9zaWduYWxfcCAoZ2RiYXJjaCkpOworICBmcHJpbnRmX3VuZmlsdGVyZWQg KGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDog cHJvY2Vzc19yZWNvcmRfc2lnbmFsID0gPCVzPlxuIiwKKyAgICAgICAgICAg ICAgICAgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nIChnZGJhcmNoLT5w cm9jZXNzX3JlY29yZF9zaWduYWwpKTsKKyAgZnByaW50Zl91bmZpbHRlcmVk IChmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6 IHBzX3JlZ251bSA9ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgIHBs b25nZXN0IChnZGJhcmNoLT5wc19yZWdudW0pKTsKICAgZnByaW50Zl91bmZp bHRlcmVkIChmaWxlLApAQCAtMzI5OCw2ICszMzA3LDMwIEBAIHNldF9nZGJh cmNoX3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXIKICAgZ2RiYXJjaC0+ cHJvY2Vzc19yZWNvcmQgPSBwcm9jZXNzX3JlY29yZDsKIH0KIAoraW50Citn ZGJhcmNoX3Byb2Nlc3NfcmVjb3JkX3NpZ25hbF9wIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCkKK3sKKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxM KTsKKyAgcmV0dXJuIGdkYmFyY2gtPnByb2Nlc3NfcmVjb3JkX3NpZ25hbCAh PSBOVUxMOworfQorCitpbnQKK2dkYmFyY2hfcHJvY2Vzc19yZWNvcmRfc2ln bmFsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZ25hbCkKK3sKKyAg Z2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKyAgZ2RiX2Fzc2VydCAo Z2RiYXJjaC0+cHJvY2Vzc19yZWNvcmRfc2lnbmFsICE9IE5VTEwpOworICBp ZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQorICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfcHJvY2Vzc19yZWNvcmRfc2lnbmFs IGNhbGxlZFxuIik7CisgIHJldHVybiBnZGJhcmNoLT5wcm9jZXNzX3JlY29y ZF9zaWduYWwgKGdkYmFyY2gsIHJlZ2NhY2hlLCBzaWduYWwpOworfQorCit2 b2lkCitzZXRfZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9zaWduYWwgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZGJhcmNoX3Byb2Nlc3NfcmVjb3JkX3NpZ25hbF9mdHlw ZSBwcm9jZXNzX3JlY29yZF9zaWduYWwpCit7CisgIGdkYmFyY2gtPnByb2Nl c3NfcmVjb3JkX3NpZ25hbCA9IHByb2Nlc3NfcmVjb3JkX3NpZ25hbDsKK30K KwogZW51bSB0YXJnZXRfc2lnbmFsCiBnZGJhcmNoX3RhcmdldF9zaWduYWxf ZnJvbV9ob3N0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHNpZ25v KQogewotLS0gYS9nZGJhcmNoLmgKKysrIGIvZ2RiYXJjaC5oCkBAIC04MjEs NiArODIxLDE1IEBAIHR5cGVkZWYgaW50IChnZGJhcmNoX3Byb2Nlc3NfcmVj b3JkX2Z0eXAKIGV4dGVybiBpbnQgZ2RiYXJjaF9wcm9jZXNzX3JlY29yZCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIENPUkVfQUREUiBhZGRyKTsKIGV4dGVybiB2b2lkIHNldF9nZGJh cmNoX3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Z2RiYXJjaF9wcm9jZXNzX3JlY29yZF9mdHlwZSAqcHJvY2Vzc19yZWNvcmQp OwogCisvKiBTYXZlIHByb2Nlc3Mgc3RhdGUgYWZ0ZXIgYSBzaWduYWwuCisg ICBSZXR1cm4gLTEgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcsIDAgb3RoZXJ3 aXNlLiAqLworCitleHRlcm4gaW50IGdkYmFyY2hfcHJvY2Vzc19yZWNvcmRf c2lnbmFsX3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKKwordHlwZWRl ZiBpbnQgKGdkYmFyY2hfcHJvY2Vzc19yZWNvcmRfc2lnbmFsX2Z0eXBlKSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWduYWwpOworZXh0ZXJuIGlu dCBnZGJhcmNoX3Byb2Nlc3NfcmVjb3JkX3NpZ25hbCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGVudW0g dGFyZ2V0X3NpZ25hbCBzaWduYWwpOworZXh0ZXJuIHZvaWQgc2V0X2dkYmFy Y2hfcHJvY2Vzc19yZWNvcmRfc2lnbmFsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwgZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9zaWduYWxfZnR5cGUgKnBy b2Nlc3NfcmVjb3JkX3NpZ25hbCk7CisKIC8qIFNpZ25hbCB0cmFuc2xhdGlv bjogdHJhbnNsYXRlIGluZmVyaW9yJ3Mgc2lnbmFsIChob3N0J3MpIG51bWJl ciBpbnRvCiAgICBHREIncyByZXByZXNlbnRhdGlvbi4gKi8KIAotLS0gYS9n ZGJhcmNoLnNoCisrKyBiL2dkYmFyY2guc2gKQEAgLTcwOSw2ICs3MDksMTAg QEAgdjppbnQ6c29mdW5fYWRkcmVzc19tYXliZV9taXNzaW5nOjo6MDowOgog IyBSZXR1cm4gLTEgaWYgc29tZXRoaW5nIGdvZXMgd3JvbmcsIDAgb3RoZXJ3 aXNlLgogTTppbnQ6cHJvY2Vzc19yZWNvcmQ6c3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwgQ09SRV9BRERSIGFkZHI6cmVnY2FjaGUsIGFkZHIKIAorIyBT YXZlIHByb2Nlc3Mgc3RhdGUgYWZ0ZXIgYSBzaWduYWwuCisjIFJldHVybiAt MSBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZywgMCBvdGhlcndpc2UuCitNOmlu dDpwcm9jZXNzX3JlY29yZF9zaWduYWw6c3RydWN0IHJlZ2NhY2hlICpyZWdj YWNoZSwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZ25hbDpyZWdjYWNoZSwgc2ln bmFsCisKICMgU2lnbmFsIHRyYW5zbGF0aW9uOiB0cmFuc2xhdGUgaW5mZXJp b3IncyBzaWduYWwgKGhvc3QncykgbnVtYmVyIGludG8KICMgR0RCJ3MgcmVw cmVzZW50YXRpb24uCiBtOmVudW0gdGFyZ2V0X3NpZ25hbDp0YXJnZXRfc2ln bmFsX2Zyb21faG9zdDppbnQgc2lnbm86c2lnbm86OmRlZmF1bHRfdGFyZ2V0 X3NpZ25hbF9mcm9tX2hvc3Q6OjAK --00504502b223a5ece00473251061--