From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17738 invoked by alias); 28 Mar 2011 08:06:58 -0000 Received: (qmail 17723 invoked by uid 22791); 28 Mar 2011 08:06:56 -0000 X-SWARE-Spam-Status: No, hits=0.3 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,TW_BJ,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org Received: from mail-vx0-f169.google.com (HELO mail-vx0-f169.google.com) (209.85.220.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 28 Mar 2011 08:06:51 +0000 Received: by vxk20 with SMTP id 20so2093490vxk.0 for ; Mon, 28 Mar 2011 01:06:50 -0700 (PDT) Received: by 10.220.178.139 with SMTP id bm11mr1019933vcb.62.1301299609131; Mon, 28 Mar 2011 01:06:49 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.200.3 with HTTP; Mon, 28 Mar 2011 01:06:29 -0700 (PDT) In-Reply-To: References: From: Kevin Pouget Date: Mon, 28 Mar 2011 08:49:00 -0000 Message-ID: Subject: [RFC - Python] New ObjFile event To: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=90e6ba53a8c4f2dd12049f866c7a 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: 2011-03/txt/msg01116.txt.bz2 --90e6ba53a8c4f2dd12049f866c7a Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 1395 Hello, following this discussion at http://sourceware.org/ml/gdb/2011-03/msg00136.html, I would like to suggest a patch for the Python event system. Based on the ''exited", "cont", ... events, this patch allows a python script to register an interest to the loading of new object files in the debuggee. GDB observer "observer_attach_new_objfile" is used to trigger the Python callback. This patch completes the auto-loading feature (http://sourceware.org/gdb/current/onlinedocs/gdb/objfile_002dgdb_002epy-fi= le.html#objfile_002dgdb_002epy-file), and, likewise, allows Python's "gdb.current_objfile ()" to return the curre= nt object file. Here is an example of it utilization: > def obj_handler (event): > =A0 =A0 =A0 if gdb.current_objfile () is not None: > =A0 =A0 =A0 =A0 =A0 =A0 =A0 print "-->",gdb.current_objfile ().filename > =A0 =A0 =A0 else: > =A0 =A0 =A0 =A0 =A0 =A0 =A0 print "---------------->Cleanup" > > gdb.events.newobjfile.connect (obj_handler) There is still one thing I'm not happy with in the code, it's how to 'properly' access "gdbpy_current_objfile" ? I commented out "static" and declared it "extern" when I needed it, but that's certainly not the best way: gdb/python/python.c /*static*/ struct objfile *gdbpy_current_objfile; gdb/python/py-inferior.c extern struct objfile *gdbpy_current_objfile; please let me know what you thing about it Cordially, Kevin --90e6ba53a8c4f2dd12049f866c7a Content-Type: application/octet-stream; name="gdb-newobjfile.diff" Content-Disposition: attachment; filename="gdb-newobjfile.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gltgiu9z0 Content-length: 8223 PyBnZGIvcHl0aG9uL3B5LW5ld29iamZpbGVldmVudC5jCkluZGV4OiBnZGIv TWFrZWZpbGUuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9NYWtlZmlsZS5pbix2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4xMTYzCmRpZmYgLXUgLXIxLjExNjMgTWFrZWZpbGUuaW4KLS0t IGdkYi9NYWtlZmlsZS5pbgk5IE1hciAyMDExIDA2OjEwOjM3IC0wMDAwCTEu MTE2MworKysgZ2RiL01ha2VmaWxlLmluCTI4IE1hciAyMDExIDA3OjQzOjM2 IC0wMDAwCkBAIC0yOTYsNyArMjk2LDggQEAKIAlweS10aHJlYWRldmVudC5v IFwKIAlweS10eXBlLm8gXAogCXB5LXV0aWxzLm8gXAotCXB5LXZhbHVlLm8K KwlweS12YWx1ZS5vIFwKKwlweS1uZXdvYmpmaWxlZXZlbnQubwogCiBTVUJE SVJfUFlUSE9OX1NSQ1MgPSBcCiAJcHl0aG9uL3B5dGhvbi5jIFwKQEAgLTMy Niw3ICszMjcsOCBAQAogCXB5dGhvbi9weS10aHJlYWRldmVudC5jIFwKIAlw eXRob24vcHktdHlwZS5jIFwKIAlweXRob24vcHktdXRpbHMuYyBcCi0JcHl0 aG9uL3B5LXZhbHVlLmMKKwlweXRob24vcHktdmFsdWUuYyBcCisJcHl0aG9u L3B5LW5ld29iamZpbGVldmVudC5jCiBTVUJESVJfUFlUSE9OX0RFUFMgPQog U1VCRElSX1BZVEhPTl9MREZMQUdTPQogU1VCRElSX1BZVEhPTl9DRkxBR1M9 CkBAIC0yMTEwLDYgKzIxMTIsMTEgQEAKIAkkKENPTVBJTEUpICQoUFlUSE9O X0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCiAJJChQT1NU Q09NUElMRSkKIAorcHktbmV3b2JqZmlsZWV2ZW50Lm86ICQoc3JjZGlyKS9w eXRob24vcHktbmV3b2JqZmlsZWV2ZW50LmMKKwkkKENPTVBJTEUpICQoUFlU SE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1uZXdvYmpmaWxlZXZl bnQuYworCSQoUE9TVENPTVBJTEUpCisKKwogIwogIyBEZXBlbmRlbmN5IHRy YWNraW5nLiAgTW9zdCBvZiB0aGlzIGlzIGNvbmRpdGlvbmFsIG9uIEdOVSBN YWtlIGJlaW5nCiAjIGZvdW5kIGJ5IGNvbmZpZ3VyZTsgaWYgR05VIE1ha2Ug aXMgbm90IGZvdW5kLCB3ZSBmYWxsIGJhY2sgdG8gYQpJbmRleDogZ2RiL3B5 dGhvbi9weS1ldmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9nZGIvcHl0aG9uL3B5LWV2ZW50LmgsdgpyZXRy aWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1yMS4xIHB5LWV2ZW50LmgK LS0tIGdkYi9weXRob24vcHktZXZlbnQuaAk1IEZlYiAyMDExIDA1OjI3OjIz IC0wMDAwCTEuMQorKysgZ2RiL3B5dGhvbi9weS1ldmVudC5oCTI4IE1hciAy MDExIDA3OjQzOjM2IC0wMDAwCkBAIC0xMDUsNiArMTA1LDcgQEAKIAogZXh0 ZXJuIGludCBlbWl0X2NvbnRpbnVlX2V2ZW50IChwdGlkX3QgcHRpZCk7CiBl eHRlcm4gaW50IGVtaXRfZXhpdGVkX2V2ZW50IChMT05HRVNUIGV4aXRfY29k ZSk7CitleHRlcm4gaW50IGVtaXRfbmV3X29iamZpbGVfZXZlbnQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlKTsKIAogZXh0ZXJuIGludCBldnB5X2VtaXRf ZXZlbnQgKFB5T2JqZWN0ICpldmVudCwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBldmVudHJlZ2lzdHJ5X29iamVjdCAqcmVnaXN0cnkpOwpJbmRl eDogZ2RiL3B5dGhvbi9weS1ldmVudHMuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3B5dGhvbi9weS1ldmVu dHMuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXUgLXIxLjEg cHktZXZlbnRzLmgKLS0tIGdkYi9weXRob24vcHktZXZlbnRzLmgJNSBGZWIg MjAxMSAwNToyNzoyMyAtMDAwMAkxLjEKKysrIGdkYi9weXRob24vcHktZXZl bnRzLmgJMjggTWFyIDIwMTEgMDc6NDM6MzYgLTAwMDAKQEAgLTQ1LDYgKzQ1 LDcgQEAKICAgZXZlbnRyZWdpc3RyeV9vYmplY3QgKnN0b3A7CiAgIGV2ZW50 cmVnaXN0cnlfb2JqZWN0ICpjb250OwogICBldmVudHJlZ2lzdHJ5X29iamVj dCAqZXhpdGVkOworICBldmVudHJlZ2lzdHJ5X29iamVjdCAqbmV3b2JqZmls ZTsKIAogICBQeU9iamVjdCAqbW9kdWxlOwogCkluZGV4OiBnZGIvcHl0aG9u L3B5LWV2dHMuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL3NyYy9zcmMvZ2RiL3B5dGhvbi9weS1ldnRzLmMsdgpyZXRyaWV2aW5n IHJldmlzaW9uIDEuMgpkaWZmIC11IC1yMS4yIHB5LWV2dHMuYwotLS0gZ2Ri L3B5dGhvbi9weS1ldnRzLmMJMTQgTWFyIDIwMTEgMTU6NDM6NTEgLTAwMDAJ MS4yCisrKyBnZGIvcHl0aG9uL3B5LWV2dHMuYwkyOCBNYXIgMjAxMSAwNzo0 MzozNiAtMDAwMApAQCAtNTcsNiArNTcsOSBAQAogCiAgIGlmIChhZGRfbmV3 X3JlZ2lzdHJ5ICgmZ2RiX3B5X2V2ZW50cy5leGl0ZWQsICJleGl0ZWQiKSA8 IDApCiAgICAgZ290byBmYWlsOworICAKKyAgaWYgKGFkZF9uZXdfcmVnaXN0 cnkgKCZnZGJfcHlfZXZlbnRzLm5ld29iamZpbGUsICJuZXdvYmpmaWxlIikg PCAwKQorICAgIGdvdG8gZmFpbDsKIAogICBQeV9JTkNSRUYgKGdkYl9weV9l dmVudHMubW9kdWxlKTsKICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdCAoZ2Ri X21vZHVsZSwKSW5kZXg6IGdkYi9weXRob24vcHktaW5mZXJpb3IuYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2Ri L3B5dGhvbi9weS1pbmZlcmlvci5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAx LjcKZGlmZiAtdSAtcjEuNyBweS1pbmZlcmlvci5jCi0tLSBnZGIvcHl0aG9u L3B5LWluZmVyaW9yLmMJMTcgTWFyIDIwMTEgMDk6MzY6MTYgLTAwMDAJMS43 CisrKyBnZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMJMjggTWFyIDIwMTEgMDc6 NDM6MzYgLTAwMDAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJnZGJj b3JlLmgiCiAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAjaW5jbHVkZSAiaW5m ZXJpb3IuaCIKKyNpbmNsdWRlICJvYmpmaWxlcy5oIgogI2luY2x1ZGUgIm9i c2VydmVyLmgiCiAjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCiAjaW5j bHVkZSAiYXJjaC11dGlscy5oIgpAQCAtMTI5LDYgKzEzMCwyNyBAQAogICBk b19jbGVhbnVwcyAoY2xlYW51cCk7CiB9CiAKK2V4dGVybiBzdHJ1Y3Qgb2Jq ZmlsZSAqZ2RicHlfY3VycmVudF9vYmpmaWxlOworc3RhdGljIHZvaWQKK3B5 dGhvbl9uZXdfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCit7 CisgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOworICAKKyAgLyogV2lsbCBi ZSBOVUxMIHdoZW4gY2xlYXJpbmcgdGhlIHN5bXRhYi4gKi8KKyAgaWYgKG9i amZpbGUpCisgICAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRf b2JqZmlsZV9hcmNoIChvYmpmaWxlKSwgY3VycmVudF9sYW5ndWFnZSk7Cisg IGVsc2UKKyAgICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9j dXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworICAKKyAgZ2Ri cHlfY3VycmVudF9vYmpmaWxlID0gb2JqZmlsZTsKKworICBpZiAoZW1pdF9u ZXdfb2JqZmlsZV9ldmVudCAob2JqZmlsZSkgPCAwKQorICAgIGdkYnB5X3By aW50X3N0YWNrICgpOworCisgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAg Z2RicHlfY3VycmVudF9vYmpmaWxlID0gTlVMTDsKK30KKwogLyogUmV0dXJu IGEgYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSBQeXRob24gb2JqZWN0IG9m IHR5cGUgSW5mZXJpb3IKICAgIHJlcHJlc2VudGluZyBJTkZFUklPUi4gIElm IHRoZSBvYmplY3QgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLAogICAgcmV0 dXJuIGl0LCAgb3RoZXJ3aXNlLCBjcmVhdGUgaXQuICBSZXR1cm4gTlVMTCBv biBmYWlsdXJlLiAgKi8KQEAgLTY2OSw3ICs2OTEsOCBAQAogICBvYnNlcnZl cl9hdHRhY2hfbm9ybWFsX3N0b3AgKHB5dGhvbl9vbl9ub3JtYWxfc3RvcCk7 CiAgIG9ic2VydmVyX2F0dGFjaF90YXJnZXRfcmVzdW1lZCAocHl0aG9uX29u X3Jlc3VtZSk7CiAgIG9ic2VydmVyX2F0dGFjaF9pbmZlcmlvcl9leGl0IChw eXRob25faW5mZXJpb3JfZXhpdCk7Ci0KKyAgb2JzZXJ2ZXJfYXR0YWNoX25l d19vYmpmaWxlIChweXRob25fbmV3X29iamZpbGUpOworICAKICAgaWYgKFB5 VHlwZV9SZWFkeSAoJm1lbWJ1Zl9vYmplY3RfdHlwZSkgPCAwKQogICAgIHJl dHVybjsKIApJbmRleDogZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMv Z2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaCx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS40NApkaWZmIC11IC1yMS40NCBweXRob24taW50ZXJuYWwuaAot LS0gZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyOCBGZWIgMjAxMSAx OTozODozNCAtMDAwMAkxLjQ0CisrKyBnZGIvcHl0aG9uL3B5dGhvbi1pbnRl cm5hbC5oCTI4IE1hciAyMDExIDA3OjQzOjM2IC0wMDAwCkBAIC0yMDcsNiAr MjA3LDcgQEAKIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9jb250aW51ZV9ldmVu dCAodm9pZCk7CiB2b2lkIGdkYnB5X2luaXRpYWxpemVfZXhpdGVkX2V2ZW50 ICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV90aHJlYWRfZXZlbnQg KHZvaWQpOwordm9pZCBnZGJweV9pbml0aWFsaXplX25ld19vYmpmaWxlX2V2 ZW50ICh2b2lkKTsKIAogc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9w eV9kZWNyZWYgKFB5T2JqZWN0ICpweSk7CiAKSW5kZXg6IGdkYi9weXRob24v cHl0aG9uLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 cy9zcmMvc3JjL2dkYi9weXRob24vcHl0aG9uLmMsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuNjMKZGlmZiAtdSAtcjEuNjMgcHl0aG9uLmMKLS0tIGdkYi9w eXRob24vcHl0aG9uLmMJMTggTWFyIDIwMTEgMDg6NDQ6NDcgLTAwMDAJMS42 MworKysgZ2RiL3B5dGhvbi9weXRob24uYwkyOCBNYXIgMjAxMSAwNzo0Mzoz NiAtMDAwMApAQCAtODExLDggKzgxMSw5IEBACiAKIC8qIFRoZSAiY3VycmVu dCIgb2JqZmlsZS4gIFRoaXMgaXMgc2V0IHdoZW4gZ2RiIGRldGVjdHMgdGhh dCBhIG5ldwogICAgb2JqZmlsZSBoYXMgYmVlbiBsb2FkZWQuICBJdCBpcyBv bmx5IHNldCBmb3IgdGhlIGR1cmF0aW9uIG9mIGEgY2FsbCB0bwotICAgc291 cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGU7IGl0IGlzIE5VTEwgYXQg b3RoZXIgdGltZXMuICAqLwotc3RhdGljIHN0cnVjdCBvYmpmaWxlICpnZGJw eV9jdXJyZW50X29iamZpbGU7CisgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZSBhbmQgbmV3X29iamZpbGUgY2FsbGJhY2tzOyBpdCBpcyBO VUxMIGF0IAorICAgb3RoZXIgdGltZXMuICAqLworLypzdGF0aWMqLyBzdHJ1 Y3Qgb2JqZmlsZSAqZ2RicHlfY3VycmVudF9vYmpmaWxlOwogCiAvKiBTZXQg dGhlIGN1cnJlbnQgb2JqZmlsZSB0byBPQkpGSUxFIGFuZCB0aGVuIHJlYWQg U1RSRUFNLEZJTEUgYXMKICAgIFB5dGhvbiBjb2RlLiAgKi8KQEAgLTEwNzQs NiArMTA3NSw3IEBACiAgIGdkYnB5X2luaXRpYWxpemVfY29udGludWVfZXZl bnQgKCk7CiAgIGdkYnB5X2luaXRpYWxpemVfZXhpdGVkX2V2ZW50ICgpOwog ICBnZGJweV9pbml0aWFsaXplX3RocmVhZF9ldmVudCAoKTsKKyAgZ2RicHlf aW5pdGlhbGl6ZV9uZXdfb2JqZmlsZV9ldmVudCgpIDsKIAogICBQeVJ1bl9T aW1wbGVTdHJpbmcgKCJpbXBvcnQgZ2RiIik7CiAgIFB5UnVuX1NpbXBsZVN0 cmluZyAoImdkYi5wcmV0dHlfcHJpbnRlcnMgPSBbXSIpOwo= --90e6ba53a8c4f2dd12049f866c7a--