From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10032 invoked by alias); 3 Sep 2013 14:18:59 -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 10023 invoked by uid 89); 3 Sep 2013 14:18:59 -0000 Received: from ra.se.axis.com (HELO ra.se.axis.com) (195.60.68.13) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 03 Sep 2013 14:18:59 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.5 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: ra.se.axis.com Received: from localhost (localhost [127.0.0.1]) by ra.se.axis.com (Postfix) with ESMTP id A5EE811F1F for ; Tue, 3 Sep 2013 16:18:55 +0200 (CEST) Received: from ra.se.axis.com ([127.0.0.1]) by localhost (ra.se.axis.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id KMKhxVKudtTD for ; Tue, 3 Sep 2013 16:18:54 +0200 (CEST) Received: from boulder.se.axis.com (boulder.se.axis.com [10.0.2.104]) by ra.se.axis.com (Postfix) with ESMTP id A0C9D11F01 for ; Tue, 3 Sep 2013 16:18:54 +0200 (CEST) Received: from boulder.se.axis.com (localhost [127.0.0.1]) by postfix.imss71 (Postfix) with ESMTP id 8A40D606 for ; Tue, 3 Sep 2013 16:18:54 +0200 (CEST) Received: from seth.se.axis.com (seth.se.axis.com [10.0.2.172]) by boulder.se.axis.com (Postfix) with ESMTP id 7F3665FF for ; Tue, 3 Sep 2013 16:18:54 +0200 (CEST) Received: from xmail2.se.axis.com (xmail2.se.axis.com [10.0.5.74]) by seth.se.axis.com (Postfix) with ESMTP id 7DA1A3E06F for ; Tue, 3 Sep 2013 16:18:54 +0200 (CEST) Received: from lnxricardw.se.axis.com (10.88.7.1) by xmail2.se.axis.com (10.0.5.74) with Microsoft SMTP Server (TLS) id 8.2.255.0; Tue, 3 Sep 2013 16:18:54 +0200 Date: Tue, 03 Sep 2013 14:18:00 -0000 From: Ricard Wanderlof To: Subject: [PATCH v2][CRISv32] Add support for threaded debugging Message-ID: User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="_002_alpineDEB200130903155730010770lnxricardwseaxiscom_" Content-ID: X-SW-Source: 2013-09/txt/msg00074.txt.bz2 --_002_alpineDEB200130903155730010770lnxricardwseaxiscom_ Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8BIT Content-ID: Content-length: 2760 This patch adds support for threaded debugging on the CRISv32 architecture. In its original form it's been floating around for several years now in our local repository so it's way overdue pushing upstream. Tested by debugging a small program on a CRISv32 target which uses multiple threads, and verify that the __thread variables can be properly accessed for every thread. Patch included inline for review and as attachement for use. Suggested-by: Edgar Iglesias Signed-off-by: Ricard Wanderlof 2013-09-03 Ricard Wanderlof * cris-tdep.c: (cris_gdbarch_init): Add call to get_gdbarch_fetch_tls_load_module_address. gdbserver * linux-crisv32-low.c: PTRACE_GET_THREAD_AREA: New macro. (ps_get_thread_area): New function. diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c index 1b0e3cd..ef2746d 100644 --- a/gdb/cris-tdep.c +++ b/gdb/cris-tdep.c @@ -4137,6 +4137,11 @@ cris_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) set_gdbarch_single_step_through_delay (gdbarch, crisv32_single_step_through_delay); + /* FIXME: Ricard W/2013-09-03: Linux-specific stuff like this + should really go in (a new) cris-linux-tdep.c. */ + set_gdbarch_fetch_tls_load_module_address (gdbarch, + svr4_fetch_objfile_link_map); + break; default: diff --git a/gdb/gdbserver/linux-crisv32-low.c b/gdb/gdbserver/linux-crisv32-low.c index 2849d02..84cb7ff 100644 --- a/gdb/gdbserver/linux-crisv32-low.c +++ b/gdb/gdbserver/linux-crisv32-low.c @@ -27,6 +27,10 @@ extern const struct target_desc *tdesc_crisv32; /* CRISv32 */ #define cris_num_regs 49 +#ifndef PTRACE_GET_THREAD_AREA +#define PTRACE_GET_THREAD_AREA 25 +#endif + /* Note: Ignoring USP (having the stack pointer in two locations causes trouble without any significant gain). */ @@ -339,6 +343,20 @@ cris_stopped_data_address (void) return eda; } +ps_err_e +ps_get_thread_area (const struct ps_prochandle *ph, + lwpid_t lwpid, int idx, void **base) +{ + if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0) + return PS_ERR; + + /* IDX is the bias from the thread pointer to the beginning of the + thread descriptor. It has to be subtracted due to implementation + quirks in libthread_db. */ + *base = (void *) ((char *) *base - idx); + return PS_OK; +} + static void cris_fill_gregset (struct regcache *regcache, void *buf) { /Ricard -- Ricard Wolf Wanderlöf ricardw(at)axis.com Axis Communications AB, Lund, Sweden www.axis.com Phone +46 46 272 2016 Fax +46 46 13 61 30 --_002_alpineDEB200130903155730010770lnxricardwseaxiscom_ Content-Type: text/x-diff; name="cris-head-thread.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: patch file.patch Content-Disposition: attachment; filename="cris-head-thread.patch"; size=1832; creation-date="Tue, 03 Sep 2013 16:10:45 GMT"; modification-date="Tue, 03 Sep 2013 16:10:45 GMT" Content-length: 2400 ZGlmZiAtLWdpdCBhL2dkYi9jcmlzLXRkZXAuYyBiL2dkYi9jcmlzLXRkZXAu Yw0KaW5kZXggMWIwZTNjZC4uZWYyNzQ2ZCAxMDA2NDQNCi0tLSBhL2dkYi9j cmlzLXRkZXAuYw0KKysrIGIvZ2RiL2NyaXMtdGRlcC5jDQpAQCAtNDEzNyw2 ICs0MTM3LDExIEBAIGNyaXNfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJj aF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykNCiAg ICAgICBzZXRfZ2RiYXJjaF9zaW5nbGVfc3RlcF90aHJvdWdoX2RlbGF5IA0K IAkoZ2RiYXJjaCwgY3Jpc3YzMl9zaW5nbGVfc3RlcF90aHJvdWdoX2RlbGF5 KTsNCiANCisgICAgICAvKiBGSVhNRTogUmljYXJkIFcvMjAxMy0wOS0wMzog TGludXgtc3BlY2lmaWMgc3R1ZmYgbGlrZSB0aGlzDQorICAgICAgICAgc2hv dWxkIHJlYWxseSBnbyBpbiAoYSBuZXcpIGNyaXMtbGludXgtdGRlcC5jLiAq Lw0KKyAgICAgIHNldF9nZGJhcmNoX2ZldGNoX3Rsc19sb2FkX21vZHVsZV9h ZGRyZXNzIChnZGJhcmNoLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdnI0X2ZldGNoX29iamZpbGVfbGlu a19tYXApOw0KKw0KICAgICAgIGJyZWFrOw0KIA0KICAgICBkZWZhdWx0Og0K ZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpc3YzMi1sb3cu YyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtY3Jpc3YzMi1sb3cuYw0KaW5kZXgg Mjg0OWQwMi4uODRjYjdmZiAxMDA2NDQNCi0tLSBhL2dkYi9nZGJzZXJ2ZXIv bGludXgtY3Jpc3YzMi1sb3cuYw0KKysrIGIvZ2RiL2dkYnNlcnZlci9saW51 eC1jcmlzdjMyLWxvdy5jDQpAQCAtMjcsNiArMjcsMTAgQEAgZXh0ZXJuIGNv bnN0IHN0cnVjdCB0YXJnZXRfZGVzYyAqdGRlc2NfY3Jpc3YzMjsNCiAvKiBD UklTdjMyICovDQogI2RlZmluZSBjcmlzX251bV9yZWdzIDQ5DQogDQorI2lm bmRlZiBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBDQorI2RlZmluZSBQVFJBQ0Vf R0VUX1RIUkVBRF9BUkVBIDI1DQorI2VuZGlmDQorDQogLyogTm90ZTogSWdu b3JpbmcgVVNQIChoYXZpbmcgdGhlIHN0YWNrIHBvaW50ZXIgaW4gdHdvIGxv Y2F0aW9ucyBjYXVzZXMgdHJvdWJsZQ0KICAgIHdpdGhvdXQgYW55IHNpZ25p ZmljYW50IGdhaW4pLiAgKi8NCiANCkBAIC0zMzksNiArMzQzLDIwIEBAIGNy aXNfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHZvaWQpDQogICByZXR1cm4gZWRh Ow0KIH0NCiANCitwc19lcnJfZQ0KK3BzX2dldF90aHJlYWRfYXJlYSAoY29u c3Qgc3RydWN0IHBzX3Byb2NoYW5kbGUgKnBoLA0KKyAgICAgICAgICAgICAg ICAgICAgbHdwaWRfdCBsd3BpZCwgaW50IGlkeCwgdm9pZCAqKmJhc2UpDQor ew0KKyAgaWYgKHB0cmFjZSAoUFRSQUNFX0dFVF9USFJFQURfQVJFQSwgbHdw aWQsIE5VTEwsIGJhc2UpICE9IDApDQorICAgIHJldHVybiBQU19FUlI7DQor DQorICAvKiBJRFggaXMgdGhlIGJpYXMgZnJvbSB0aGUgdGhyZWFkIHBvaW50 ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUNCisgICAgIHRocmVhZCBkZXNj cmlwdG9yLiAgSXQgaGFzIHRvIGJlIHN1YnRyYWN0ZWQgZHVlIHRvIGltcGxl bWVudGF0aW9uDQorICAgICBxdWlya3MgaW4gbGlidGhyZWFkX2RiLiAgKi8N CisgICpiYXNlID0gKHZvaWQgKikgKChjaGFyICopICpiYXNlIC0gaWR4KTsN CisgIHJldHVybiBQU19PSzsNCit9DQorDQogc3RhdGljIHZvaWQNCiBjcmlz X2ZpbGxfZ3JlZ3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9p ZCAqYnVmKQ0KIHsNCg== --_002_alpineDEB200130903155730010770lnxricardwseaxiscom_--