From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 66430 invoked by alias); 15 Jan 2018 03:42:56 -0000 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 Received: (qmail 66415 invoked by uid 89); 15 Jan 2018 03:42:56 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-7.6 required=5.0 tests=BAYES_00,GIT_PATCH_2,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=Sleep, H*x:Release, H*UA:Release X-HELO: mx0a-001b2d01.pphosted.com Received: from mx0a-001b2d01.pphosted.com (HELO mx0a-001b2d01.pphosted.com) (148.163.156.1) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 15 Jan 2018 03:42:54 +0000 Received: from pps.filterd (m0098394.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w0F3f4kB030040 for ; Sun, 14 Jan 2018 22:42:53 -0500 Received: from smtp.notes.na.collabserv.com (smtp.notes.na.collabserv.com [192.155.248.93]) by mx0a-001b2d01.pphosted.com with ESMTP id 2fgkgnt8ec-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Sun, 14 Jan 2018 22:42:52 -0500 Received: from localhost by smtp.notes.na.collabserv.com with smtp.notes.na.collabserv.com ESMTP for from ; Mon, 15 Jan 2018 03:42:51 -0000 Received: from us1a3-smtp05.a3.dal06.isc4sb.com (10.146.71.159) by smtp.notes.na.collabserv.com (10.106.227.39) with smtp.notes.na.collabserv.com ESMTP; Mon, 15 Jan 2018 03:42:48 -0000 Received: from us1a3-mail142.a3.dal06.isc4sb.com ([10.146.38.78]) by us1a3-smtp05.a3.dal06.isc4sb.com with ESMTP id 2018011503424790-712116 ; Mon, 15 Jan 2018 03:42:47 +0000 To: gdb-patches@sourceware.org, "Ulrich Weigand" Cc: "David Edelsohn" , "Sanket Rathi" Subject: [PATCH] Adding support for reading signal hanlder frame in AIX From: "Sangamesh Mallayya" Date: Mon, 15 Jan 2018 03:42:00 -0000 MIME-Version: 1.0 X-KeepSent: FEA6F7CE:B2E29B77-65258216:0013560E; type=4; name=$KeepSent X-LLNOutbound: False X-Disclaimed: 16083 X-TNEFEvaluated: 1 Content-Type: multipart/mixed; boundary="=_mixed 0014648E65258216_=" x-cbid: 18011503-1799-0000-0000-000004BAC388 X-IBM-SpamModules-Scores: BY=0; FL=0; FP=0; FZ=0; HX=0; KW=0; PH=0; SC=0.415652; ST=0; TS=0; UL=0; ISC=; MB=0.248632 X-IBM-SpamModules-Versions: BY=3.00008379; HX=3.00000241; KW=3.00000007; PH=3.00000004; SC=3.00000245; SDB=6.00975179; UDB=6.00494231; IPR=6.00755107; BA=6.00005775; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009; ZB=6.00000000; ZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00019038; XFM=3.00000015; UTC=2018-01-15 03:42:50 X-IBM-AV-DETECTION: SAVI=unsuspicious REMOTE=unsuspicious XFE=unused X-IBM-AV-VERSION: SAVI=2018-01-15 00:00:56 - 6.00007908 x-cbparentid: 18011503-1800-0000-0000-0000E45ED729 Message-Id: X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2018-01-15_01:,, signatures=0 X-Proofpoint-Spam-Reason: safe X-SW-Source: 2018-01/txt/msg00255.txt.bz2 --=_mixed 0014648E65258216_= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="US-ASCII" Content-length: 3692 Hi All, Attached patch adds support for reading signal handler frame in AIX. If gdb is debugging an application which has a signal handler and reaches=20 the signal handler frame,=20 then we need to read the back chain address from sigconext saved on the=20 stack, similarly the LR. As backchain at an offset 0 will be 0, because we will have sigconext=20 saved after the minimum stack size.=20 So, correct backchain will be at an offset after minimum stack and the LR=20 at an offset 8 will be of the signal millicode address. If the back chain pointer is NULL and the LR field is in the kernel=20 segment(ex. 0x00004a14) then we can probably assume we are in a signal=20 handler. This can be demonstrated using the below sample program. #include #include #include #include #include void sig_handle(int signo) { printf("Caught signal: %d\n",signo); signal(SIGSEGV,sig_handle); } void foo() { char *p;=20 signal(SIGSEGV, sig_handle); /* signal handler */ strcpy(p,"Hello"); sleep(1); /* Sleep to catch signal */ } int main() { pthread_t tid; pthread_attr_t attr; pthread_attr_init(&attr); pthread_create(&tid, &attr, (void*)foo, NULL); sleep(1); pthread_kill(tid,SIGSEGV); pthread_join(tid,NULL); } Debugging without the patch ------------------------------------ Here gdb stops at frame #1 as it doesn't understand the signal handler=20 frame as backchain at offset 0 will be 0. Reading symbols from /home/sangam/gdb_sighandle/thread-signal1...done. (gdb) br sig_handle Breakpoint 1 at 0x10000550: file thread-signal1.c, line 9. (gdb) r Starting program: /home/sangam/gdb_sighandle/thread-signal1=20 [New Thread 1] [New Thread 258] Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1] 0xd057b720 in _vp_start () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) c Continuing. [Switching to Thread 258] Thread 3 hit Breakpoint 1, sig_handle (signo=3D11) at thread-signal1.c:9 9 printf("Caught signal: %d\n",signo); (gdb) bt #0 sig_handle (signo=3D11) at thread-signal1.c:9 #1 0x00004a14 in ?? () (gdb)=20 Debugging with the patch -------------------------------- Here gdb reads the signal handler frame and gets the correct back and LR=20 value. Reading symbols from /home/sangam/gdb_sighandle/thread-signal1...done. (gdb) br sig_handle Breakpoint 1 at 0x10000550: file thread-signal1.c, line 9. (gdb) r Starting program: /home/sangam/gdb_sighandle/thread-signal1=20 [New Thread 1] [New Thread 258] Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1] 0xd057b720 in _vp_start () from /usr/lib/libpthread.a(shr_xpg5.o) (gdb) c Continuing. [Switching to Thread 258] Thread 3 hit Breakpoint 1, sig_handle (signo=3D11) at thread-signal1.c:9 9 printf("Caught signal: %d\n",signo); (gdb) bt #0 sig_handle (signo=3D11) at thread-signal1.c:9 #1 0x100005e0 in foo () at thread-signal1.c:17 #2 0x100005cc in foo () at thread-signal1.c:16 #3 0xd0564f68 in _pthread_body () from /usr/lib/libpthread.a(shr_xpg5.o) #4 0x00000000 in ?? () (gdb)=20 Here is the gdb.base testsuite summary =3D=3D=3D gdb Summary =3D=3D=3D # of expected passes 13509 # of unexpected failures 4229 # of expected failures 14 # of unresolved testcases 3 # of untested testcases 61 # of unsupported tests 32 # of expected passes 13515 # of unexpected failures 4224 # of expected failures 14 # of unresolved testcases 3 # of untested testcases 61 # of unsupported tests 32 Please review and let me know your comments. Thanks, Sangamesh --=_mixed 0014648E65258216_= Content-Type: application/octet-stream; name="signal_handler_aix.patch" Content-Disposition: attachment; filename="signal_handler_aix.patch" Content-Transfer-Encoding: base64 Content-length: 6800 LS0tIC4vZ2RiL3JzNjAwMC10ZGVwLmhfb3JpZwkyMDE4LTAxLTA5IDA2OjM3 OjQ5LjAwMDAwMDAwMCAtMDYwMAorKysgLi9nZGIvcnM2MDAwLXRkZXAuaAky MDE4LTAxLTEzIDA0OjQ3OjUwLjAwMDAwMDAwMCAtMDYwMApAQCAtMTgsMyAr MTgsMjUgQEAKICAvKiBNaW5pbXVtIHBvc3NpYmxlIHRleHQgYWRkcmVzcyBp biBBSVguICAqLwogICNkZWZpbmUgQUlYX1RFWFRfU0VHTUVOVF9CQVNFIDB4 MTAwMDAwMDAKICAKKyAvKiBGb3Igc2lnaGFuZGxlci4KKyAKKyAgICBJbiBj YXNlIG9mIHNpZ25hbCBoYW5kbGVyLCBzaWdjb250ZXh0IGlzIHNhdmVkIG9u IHRoZSBzdGFjayBhbG9uZyB3aXRoCisgICAgbWluaW11bSBzdGFjayBzaXpl LgorICAKKyAgICBzaWdjb25leHQgc3RydWN0dXJlIGhhdmUgdGhlIG1zdHNh dmUgc2F2ZWQgdW5kZXIgdGhlIHNjX2ptcGJ1Zi5qbXBfY29udGV4dC4KKyAK KyAgICBTVEtNSU4obWluaW11bSBzdGFjayBzaXplKSBpcyA1NiBmb3IgMzIt Yml0IHByb2Nlc3NlcywgYW5kIGlhciBvZmZzZXQKKyAgICB1bmRlciBzY19q bXBidWYuam1wX2NvbnRleHQgaXMgNDAgZm9yIHRoZSBzaWduYWwgY29udGV4 dC4KKyAgICBpZSBvZmZzZXRvZihzdHJ1Y3Qgc2lnY29udGV4dCwgc2Nfam1w YnVmLmptcF9jb250ZXh0LmlhcikuCisgICAgc28gUEMgb2Zmc2V0IGluIHRo aXMgY2FzZSBpcyBTVEtJTStpYXIgb2Zmc2V0LCB3aGljaCBpcyA5NiAqLwor IAorICNkZWZpbmUgU0lHX0ZSQU1FX1BDX09GRlNFVCA5NgorICNkZWZpbmUg U0lHX0ZSQU1FX0xSX09GRlNFVCAxMDgKKyAvKiBTVEtNSU4rZ3JwMSBvZmZz ZXQsIHdoaWNoIGlzIDU2KzIyOD0yODQgKi8KKyAjZGVmaW5lIFNJR19GUkFN RV9GUF9PRkZTRVQgMjg0CisgCisgLyogNjQgYml0IHByb2Nlc3MgKi8KKyAv KiBTVEtNSU42NCAgaXMgMTEyIGFuZCBpYXIgb2Zmc2V0IGlzIDMxMi4gU28g MTEyKzMxMj00MjQgKi8KKyAjZGVmaW5lIFNJR19GUkFNRV9QQ19PRkZTRVQ2 NCA0MjQKKyAvKiBTVEtNSU42NCtncnAxIG9mZnNldC4gMTEyKzU2PTE2OCAq LworICNkZWZpbmUgU0lHX0ZSQU1FX0ZQX09GRlNFVDY0IDE2OCAKLS0tIC4v Z2RiL3JzNjAwMC10ZGVwLmNfb3JpZwkyMDE4LTAxLTA5IDA2OjUzOjA0LjAw MDAwMDAwMCAtMDYwMAorKysgLi9nZGIvcnM2MDAwLXRkZXAuYwkyMDE4LTAx LTEwIDA3OjI4OjEwLjAwMDAwMDAwMCAtMDYwMApAQCAtNjEsNiArNjEsOCBA QAogICNpbmNsdWRlICJ0cmFkLWZyYW1lLmgiCiAgI2luY2x1ZGUgImZyYW1l LXVud2luZC5oIgogICNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCisgI2luY2x1 ZGUgInJzNjAwMC10ZGVwLmgiCisgI2luY2x1ZGUgInhjb2ZmcmVhZC5oIgog IAogICNpbmNsdWRlICJheC5oIgogICNpbmNsdWRlICJheC1nZGIuaCIKQEAg LTMyMzgsOCArMzI0MCwyNCBAQAogIHN0YXRpYyBDT1JFX0FERFIKICByczYw MDBfdW53aW5kX3BjIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0 IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCiAgewotICAgcmV0dXJuIGZyYW1l X3Vud2luZF9yZWdpc3Rlcl91bnNpZ25lZCAobmV4dF9mcmFtZSwKLSAJCQkJ CSBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpOworICAgVUxPTkdFU1Qg cjsKKyAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9i eXRlX29yZGVyIChnZGJhcmNoKTsKKyAgIGludCBzaXplID0gcmVnaXN0ZXJf c2l6ZSAoZ2RiYXJjaCwgZ2RiYXJjaF9wY19yZWdudW0gKGdkYmFyY2gpKTsK KyAKKyAgIHIgPSBmcmFtZV91bndpbmRfcmVnaXN0ZXJfdW5zaWduZWQgKG5l eHRfZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZGJhcmNoX3BjX3JlZ251bSAoZ2RiYXJjaCkpOworICAgaWYgKHIg JiYgKHIgPCBBSVhfVEVYVF9TRUdNRU5UX0JBU0UgKSkgeworICAgICBpZiAo aXM2NCkgIHsKKyAgICAgICByID0gcmVhZF9tZW1vcnlfdW5zaWduZWRfaW50 ZWdlcgorICAgICAgICAgICAgIChnZXRfZnJhbWVfYmFzZSAobmV4dF9mcmFt ZSkgKyBTSUdfRlJBTUVfUENfT0ZGU0VUNjQsCisgICAgICAgICAgICAgIHNp emUsIGJ5dGVfb3JkZXIpOyAKKyAgICAgfSBlbHNlIHsKKyAgICAgICByID0g cmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlcgorICAgICAgICAgICAgIChn ZXRfZnJhbWVfYmFzZSAobmV4dF9mcmFtZSkgKyBTSUdfRlJBTUVfUENfT0ZG U0VUKzgsCisgICAgICAgICAgICAgIHNpemUsIGJ5dGVfb3JkZXIpOworICAg ICB9CisgICB9CisgICByZXR1cm4gcjsKICB9CiAgCiAgc3RhdGljIHN0cnVj dCBmcmFtZV9pZApAQCAtMzI3Myw3ICszMjkxLDcgQEAKICAgIGVudW0gYmZk X2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJh cmNoKTsKICAgIHN0cnVjdCByczYwMDBfZnJhbWVkYXRhIGZkYXRhOwogICAg aW50IHdvcmRzaXplID0gdGRlcC0+d29yZHNpemU7Ci0gICBDT1JFX0FERFIg ZnVuYyA9IDAsIHBjID0gMDsKKyAgIENPUkVfQUREUiBmdW5jID0gMCwgcGMg PSAwLCBzYXZlX2NhY2hlX2Jhc2UgPSAwOwogIAogICAgaWYgKCgqdGhpc19j YWNoZSkgIT0gTlVMTCkKICAgICAgcmV0dXJuIChzdHJ1Y3QgcnM2MDAwX2Zy YW1lX2NhY2hlICopICgqdGhpc19jYWNoZSk7CkBAIC0zMjk4LDYgKzMzMTYs NyBAQAogIAkgYmFzZSBhZGRyZXNzIG9mIHRoaXMgZnJhbWUuICAqLwogICAg ICAgIGNhY2hlLT5iYXNlID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVk CiAgCSh0aGlzX2ZyYW1lLCBnZGJhcmNoX3NwX3JlZ251bSAoZ2RiYXJjaCkp OworICAgICAgIHNhdmVfY2FjaGVfYmFzZSA9IGNhY2hlLT5iYXNlOwogICAg ICB9CiAgICBDQVRDSCAoZXgsIFJFVFVSTl9NQVNLX0VSUk9SKQogICAgICB7 CkBAIC0zMzQ3LDYgKzMzNjYsMzEgQEAKICAJCQkJCSAgICAgYnl0ZV9vcmRl ciwgJmJhY2tjaGFpbikpCiAgICAgICAgICBjYWNoZS0+YmFzZSA9IChDT1JF X0FERFIpIGJhY2tjaGFpbjsKICAgICAgfQorIAorICAgLyogSWYgZnJhbWUg aXMgYSBBSVggc2lnbmFsIGhhbmRsZXIgZnJhbWUsIHdlIG5lZWQgdG8gcmVh ZCB0aGUgYmFzZQorICAgICAgYWRkcmVzcyBmcm9tIHNpZ2NvbmV4dCBvZmZz ZXQuIEJhY2tjaGFpbiBhdCBhbiBvZmZzZXQgMCB3aWxsIGJlCisgICAgICAw LCBzbyBiYWNrY2hhaW4gd2lsbCBiZSBhdCBhbiBvZmZzZXQgU0lHX0ZSQU1F X0ZQX09GRlNFVCgyODQpKzgKKyAgICAgIGZvciAzMi1iaXQgYXBwbGljYXRp b25zLiAqLworICAgaWYgKCFjYWNoZS0+YmFzZSAmJiAhZmRhdGEuZnJhbWVs ZXNzKQorICAgeworICAgICBMT05HRVNUIGJhY2tjaGFpbiwgc2lnX3BjID0g MDsKKyAgICAgCisgICAgIGlmIChpczY0KSB7CisgICAgICAgaWYgKHNhZmVf cmVhZF9tZW1vcnlfaW50ZWdlciAoc2F2ZV9jYWNoZV9iYXNlICsgMTYsIHdv cmRzaXplLAorICAgICAgICAgICAgICAgIGJ5dGVfb3JkZXIsICZzaWdfcGMp CisgICAgICAgICAgICAgICAgJiYgKHNpZ19wYyAmJiAoc2lnX3BjIDwgQUlY X1RFWFRfU0VHTUVOVF9CQVNFKSkpCisgICAgICAgICBpZiAoc2FmZV9yZWFk X21lbW9yeV9pbnRlZ2VyIChzYXZlX2NhY2hlX2Jhc2UgKyBTSUdfRlJBTUVf RlBfT0ZGU0VUNjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB3b3Jkc2l6ZSwgYnl0ZV9vcmRlciwgJmJhY2tjaGFpbikpCisg ICAgICAgICAgIGNhY2hlLT5iYXNlID0gKENPUkVfQUREUikgYmFja2NoYWlu OworICAgICB9IGVsc2UgeworICAgICAgIGlmIChzYWZlX3JlYWRfbWVtb3J5 X2ludGVnZXIgKHNhdmVfY2FjaGVfYmFzZSArIDgsIHdvcmRzaXplLAorICAg ICAgICAgICAgICAgIGJ5dGVfb3JkZXIsICZzaWdfcGMpCisgICAgICAgICAg ICAgICAgJiYgKHNpZ19wYyAmJiAoc2lnX3BjIDwgQUlYX1RFWFRfU0VHTUVO VF9CQVNFKSkpCisgICAgICAgICBpZiAoc2FmZV9yZWFkX21lbW9yeV9pbnRl Z2VyIChzYXZlX2NhY2hlX2Jhc2UgKyBTSUdfRlJBTUVfRlBfT0ZGU0VUICsg OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdv cmRzaXplLCBieXRlX29yZGVyLCAmYmFja2NoYWluKSkKKyAgICAgICAgICAg Y2FjaGUtPmJhc2UgPSAoQ09SRV9BRERSKSBiYWNrY2hhaW47CisgICAgIH0K KyAgIH0KICAKICAgIHRyYWRfZnJhbWVfc2V0X3ZhbHVlIChjYWNoZS0+c2F2 ZWRfcmVncywKICAJCQlnZGJhcmNoX3NwX3JlZ251bSAoZ2RiYXJjaCksIGNh Y2hlLT5iYXNlKTsKLS0tIC4vZ2RiL3hjb2ZmcmVhZC5oX29yaWcJMjAxOC0w MS0wOSAwNzoxMjozNC4wMDAwMDAwMDAgLTA2MDAKKysrIC4vZ2RiL3hjb2Zm cmVhZC5oCTIwMTgtMDEtMDkgMDc6MTI6NTMuMDAwMDAwMDAwIC0wNjAwCkBA IC0yMyw0ICsyMyw2IEBACiAgCiAgZXh0ZXJuIGludCB4Y29mZl9nZXRfbl9p bXBvcnRfZmlsZXMgKGJmZCAqYWJmZCk7CiAgCisgZXh0ZXJuIGludCBpczY0 OworIAogICNlbmRpZiAvKiB4Y29mZnJlYWQuaCAqLwotLS0gLi9nZGIveGNv ZmZyZWFkLmNfb3JpZwkyMDE4LTAxLTA5IDA3OjEzOjUzLjAwMDAwMDAwMCAt MDYwMAorKysgLi9nZGIveGNvZmZyZWFkLmMJMjAxOC0wMS0wOSAwNzoxNToz MS4wMDAwMDAwMDAgLTA2MDAKQEAgLTUyLDYgKzUyLDggQEAKICAvKiBGb3Ig aW50ZXJmYWNlIHdpdGggc3RhYnNyZWFkLmMuICAqLwogICNpbmNsdWRlICJh b3V0L3N0YWJfZ251LmgiCiAgCisgaW50IGlzNjQ7CisgCiAgDAogIC8qIEtl eSBmb3IgWENPRkYtYXNzb2NpYXRlZCBkYXRhLiAgKi8KICAKQEAgLTE3NDcs NiArMTc0OSw3IEBACiAgewogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUg PSB0aGlzX3N5bXRhYl9vYmpmaWxlOwogICAgaW50IHhjb2ZmNjQgPSBiZmRf eGNvZmZfaXNfeGNvZmY2NCAob2JqZmlsZS0+b2JmZCk7CisgICBpczY0ID0g eGNvZmY2NDsKICAKICAgIHN0cnVjdCBjb2ZmX3N5bWZpbGVfaW5mbyAqaW5m byA9IFhDT0ZGX0RBVEEgKG9iamZpbGUpOwogICAgaW50IG5zeW1zID0gaW5m by0+c3ltdGJsX251bV9zeW1zOwo= --=_mixed 0014648E65258216_=--