From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13076 invoked by alias); 15 Nov 2016 14:42:12 -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 12925 invoked by uid 89); 15 Nov 2016 14:42:11 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 spammy=74711, HX-AuditID:sk:c1b4fb3, HX-ClientProxiedBy:sk:VI1PR07, mvc X-HELO: sessmg22.ericsson.net Received: from sessmg22.ericsson.net (HELO sessmg22.ericsson.net) (193.180.251.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 15 Nov 2016 14:42:00 +0000 Received: from ESESSHC019.ericsson.se (Unknown_Domain [153.88.183.75]) by (Symantec Mail Security) with SMTP id 43.BC.01127.2BE1B285; Tue, 15 Nov 2016 15:41:55 +0100 (CET) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.75) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 15 Nov 2016 15:37:08 +0100 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=antoine.tremblay@ericsson.com; Received: from elxa4wqvvz1 (192.75.88.130) by VI1PR0701MB1885.eurprd07.prod.outlook.com (10.167.197.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.734.2; Tue, 15 Nov 2016 14:37:05 +0000 References: <20161103143300.24934-1-antoine.tremblay@ericsson.com> <20161103143300.24934-6-antoine.tremblay@ericsson.com> <20161110140105.GA31376@E107787-LIN> User-agent: mu4e 0.9.17; emacs 24.5.50.1 From: Antoine Tremblay To: Yao Qi CC: Antoine Tremblay , Subject: Re: [PATCH V2 5/5] Support tracepoints for ARM linux in GDBServer In-Reply-To: <20161110140105.GA31376@E107787-LIN> Date: Tue, 15 Nov 2016 14:42:00 -0000 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: BN6PR19CA0037.namprd19.prod.outlook.com (10.173.148.151) To VI1PR0701MB1885.eurprd07.prod.outlook.com (10.167.197.21) X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1885;2:YosBEjKladY0eORGsul6i1yPac3OoOCCRfDF31VJw3kCfQEDQfVIWYFCFMzibSUOIjk4R9IpRSTUkvC0L33K9UTFkD4/ngmjkxDdhjeTX8nCgguR1wOfWbmP7k3QSxH1ay7qO6Op45RYQbisCeWY4lIOjGGt82/zewUfmPeqvJE=;3:ogGL4KP0y0a8kcX0P7UTyi9xYTBZgn5IQcnxutrGaBIu3uOiFc3I2MIvxFafG4mFtCFliQn9h8lkIJq4e45aQ5n9TyF0NHW4HmbWMD/qOL9Y+iPH/d72rxEr5dezN5MFq/ny8B/ed5exCmkvb4uV4rYR3TkQXLSIYhPZSzyC3LM= X-MS-Office365-Filtering-Correlation-Id: 8821b758-0614-46e8-53cc-08d40d64df43 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:VI1PR0701MB1885; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1885;25:5/w7SATIXmAOw3EpZJ4Er8ZRzTHpdo28DkE8IyuJmyh+wSqdE36UcJopuhzH76FqDcn+Vo3jPhVxhpE2UN1bmoZmkgEi5zocwXIXwR2+PDzcjCKrXPjrMCOCs4oI0nS54BB81LM/C7TntxJSLNYByVj/2/Lt7vBhA5c6zPcnDefOUO9tDJ0K4rh93sb97Lpe+BnTam9oIpTgHJAxMRUZ0NeDA6/NlRP8/4oY4j6VVbcJpkPXzhGgU0iQMl5hbRMT6Bsxm2qInr2lUKioWf/OmTIDxMcMCpUlFJhe53ez+5OadRQ8xk5Ax5P6WVNuLeo74PHcRtR5yMtHQPaZMGnVDUuC04PidAkkDPVb3CJffjLMjPPmQ133yFUmpTfpQewnwJykpG0vkXIcXxTn+BxgwwVycesJHJYKpuo+4WKrcbPzd2zb46ShGTiKQC1zkEUVvoD6G/KksHoNyLThL0KV6tgV9g5x/kFD/tpRzyc1e00dujY1Ut6xsLRThVhj4afMDsTYdN4T8HosO8/SJlGOO1Au30XQ+iLc6fffLGAcaJtzkEFW8nkdoQYoByGsb8TU2YXBUIQ7pxm83ximqaAtPvUjcDB3nOTpdV7ZLSwYmWLHLOuj1CtuxwYWXfzem3bpg95Oblua6RQykwEoe6Q6LGL32iK1Ud1dPUtJePzXgrhsYOLi8cfZpl2h06TGYFARdjjVMoF4A8eo600zzQTDBw== X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1885;31:I8bVNUnPM3qrIhcm+1sVLRRHt69AG+oXwYAd8xCDAvjjMIi8P19rdja0PBEZulpAVvrv8eVmE1Y/3f0o32IzTtpMSGjszgoxYeB2DG2HzWs+u2meaZEG7o1ikYbFY1okPWA0TKy4gKkxHd6+mHoPSSDP8gqsswjeBjvKl1F+g3iWvS5klckOzR8wMFGveQIa83gL+oYV9tvNca+cnjyphrkoBH1SqR0pcW/mRo+TMGs+VZEoNwaLqM6AT+oHDWgkwWGhEVc/XM6kuxLevlKhUw==;20:HY+Jf+C0DXCRn+6ZIMGKqGL3MF2VbWbGnWLMUxMP2UUv2G9x/Rxryl7YhVTvLtW7I7l1o1JRtxE6cvHYVBXynzPhyrg8LUSc5NGjuPi1LESQ8cHN0hQTvcpuDmGwMrp3buEOX81SqBwzTYdTaWRX8go0Ski91QspgvHRHu6MUFrLJLzvtDSZNn8gJzpdElw+4cJNtfYYg6oxZvmdfDyzwi4Oeeua/Vn8GmtykJ4keujtujRQdhiVgt6AhRfgFJJ7grbU3VP/UPvzuIo0VpCArCP+tmVawiPkKyeyhB36ip+5+ZwbEdQZp5kDddY5R4jsCceJJfbkBoSMYQBdnbdO/Z9aRaNhadp33jC9p6t7A6aTH0lzVx89fs2h6xbxZoC0Eo9ZFKPG3OFAJ5fogpCTpLUjw2HAsFoWQGbbcfB0Ku4ovsnO1bskWfLbnzhQOIRRki1zpuGQtN1KQK2s6GsW381XUBku/25ycFFNEZ0DdP9bw4cMtI6IZTQYlQM2OUhg X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6060326)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6061324);SRVR:VI1PR0701MB1885;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0701MB1885; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1885;4:NZxiKanssstpgbZZB3QDD+RdYTRwP2Y4qJdfOQKyMFVMWL8bI/OmFILV7ZsZ5LpSaWBSZt1uoSlnYvDhUIlAcV+TQLc54wOW5h9IqjRZw0uGXRALijCFR5GWi4l6hBY7UGEAn4SrLrVh6i9rVW4T9CuQDFSfBHdb1PIl3niB4ujyxKgjNQ73+avrPU2TZKggbjsonROMEOydOZNknjoruoTf0c4CkBaGFu/3gBkrdTWxqu9UYkmrpM8kuz+TjZvptQDWJINztRdK0nMr9Xqe04S8z0QImzajPSyP62EPXjlJPstDHGvbgEw7dC40TjxyFDy3ncATTo6vsX+WWqVeBzWxAGQ7H/w/QalqnKzTS53sReodmknvkM8CMu7Rxvlxab3fhSU7mshs+z4pDDzRtrtudBfxqcBfJZub4z+phNA= X-Forefront-PRVS: 012792EC17 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(24454002)(189002)(51444003)(199003)(106356001)(105586002)(189998001)(47776003)(6666003)(2950100002)(6916009)(36756003)(3846002)(101416001)(66066001)(6116002)(83506001)(48376002)(5660300001)(305945005)(86362001)(50986999)(54356999)(76176999)(7736002)(110136003)(50466002)(4326007)(7846002)(42186005)(33646002)(77096005)(81166006)(97736004)(4001350100001)(2906002)(92566002)(5003940100001)(1411001)(68736007)(81156014)(8676002)(229853002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0701MB1885;H:elxa4wqvvz1;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0701MB1885;23:cVJTJLEuRsV9kgmKKMUpwXPAV1knEjJSz1PSiXz?= =?us-ascii?Q?ZsVJlCWzH4816gskrZBxePk6Mp/Cjt/iVZIrTqsCz+dSodc0bHYO/TCDHw2E?= =?us-ascii?Q?PWph+V1cCmdUswAFE/vxGphiexlI6HS641+45B11pcnlF3cGb+0UIeqkftWd?= =?us-ascii?Q?uQS0CHkc+UsXoylCAU0xcXuWOj6qHhxd4OUEseJo2T6iUgewn5dQYcvj45MM?= =?us-ascii?Q?FMbd9g+WWjrFferadgupQ3RfLAZKE4RWxmiCmeOMMl8Ix4LQ6iOVfsYISTsk?= =?us-ascii?Q?2dDkphepp3TYac4pHYFXyBj8XFsmHsY8EjBYPtXrXmKeOkqhPzapwvq48LBJ?= =?us-ascii?Q?pg33VYiZuZxe13WlJdsFPtEPPxF443+zBDi79cx/TuX2PwYGooW4jVcHVu4e?= =?us-ascii?Q?YkXtAUVic3rqJQvykM68+s26j6rjJu+F6/+GdtFT6YIDSmLWuxk4zUHlQ0v7?= =?us-ascii?Q?AmMO0jluVVbdi8rWJNkianP+afMhYd1EpknhSuMLJzARXz/22ojbxg97adXE?= =?us-ascii?Q?YnbEulDte8E1YH0+OiHXgnBJ3iVzqW++39Q+mUAm+I8ye5RkPb00vekMP4mY?= =?us-ascii?Q?n3Jtn8VwE5RyckCAr4REu9lv5ntO3K3Tk3qv234MG6yr+D3jntBZWZS/4rj2?= =?us-ascii?Q?f3csC6/76VMuQGqbRvKe62WXRTFJYzFWWXfsEuMfQvrRyABc/ELTfP+gUwZ7?= =?us-ascii?Q?eHJrP599V2vfanQiZDFM75Bu5MFyEHILfLXz5RTF25ofGSphDLOc0LBJ+/05?= =?us-ascii?Q?br6J508tPzyow15PfQ5TzMsJPCXuWHYFYFlPxDfPp6j8xGisqNO03v+ZMm+9?= =?us-ascii?Q?Q08gae7x4nBaklA4oMPDIfD+gJVsP3xZDYTG64LxdVVPEzktjNafspPuYG5V?= =?us-ascii?Q?yHG5N7DN3SEmr/DM0R2dh1Lq0fwIy5afV76rtpG+VxQemxRWFaejZfAKSuaO?= =?us-ascii?Q?fgnQduZ3BL9W5r0GlsykrhRia/McRnSq3JoL1m0b2rHCVKIA44rkd6aGiJFa?= =?us-ascii?Q?kpiw+r8FpvQIfl7PdaEP/wjvdRvGI66/JmRmcul6kPyNreHGOe1fH1AobkKb?= =?us-ascii?Q?WdrE4T4Fhp15N4BdcGK0csr6kk6+Y7xuoQAmIQwhExmduA2IA1fmRKyQqPZQ?= =?us-ascii?Q?ESe0S0jt6/7OpCCifgohpQqd43VczI8FNRXO2xu1w6LhHTQ+yvvGp+w=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1885;6:l7x2hVe+54eJUzlb6zuDhhTxW2Qh43nk5QZndlWxhiCKlwJJnOq5vZK9LDkhdg7RP8AuQNW5nQ5eubJBGOVY6vV/KLaijiVVtIJfX0XPSniufNE6+OePeQf60NCFMG5AI8v2M4R24+zW1/AM2C5Sfw5nBLfxrYSHiJ0fRSFXEvIuIwUq6O5tLzZ7lL/pyF5c7KEN2w/obBVhttkQuSSb/XewNC6jUwnnk9M7zora0nj5hljOBdbpApOIRpRGbnlGqOntpSLl3dlJy165gL/CNhTadOQnEO2ynLVuiCGHp59Caiq0xMxqTGFmu8iYwulVRSm+TwgJ1/7cmF4lHHMrjHu7tjKHEe704AAVNrcloYI=;5:QMo/XHyaKcb+F7jAOSJT5NkxrIyTr552Lulqcq+kbSGt86aeLvjmFCGCrrGf6mSWdOUm1MNT4FKvh409euHbnMGvWRVLX35JLZl+Sfj/DHFiZMNsuYIvuyfcBlid6qmIpz08fSsUTnuEa3dFKHBVHw==;24:rL6xyxAuDaZIs9ZYq8q5k/TVpDfsMOmD4pV+5NWOJryQHQN7t7EUlLcMhzn/dZECYH2UYvUboWgt7/2KYcxg2OxEj1TcES18vj35dKOL3io= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0701MB1885;7:hcm4pzq4OvAYlUBuL/C3XNnugQOeGhPu5w6jyfoiSk6VtB1YatJtF5dLyacVQSfZeE8FX3CI4wpEgKIhVml+cLVv1pHf9RCaN9gYrfQBXKLZ6uJjJGWlyeiyKodsA1pnQ041nk0aKtBelJN3OqkdWP8MpJWBslhQ0Ma+CnBhuB0qfevr+W04ZeEhveo7gdASqNAfWMz4OZ2xoDWR9bINuZcrTwfSOEKiHZ3oaDGh7D6Rjq9iWOkwEDYVAox5LNG6K+HfbRZKkw0UlKjCWoHgfb/lSER8OzDHZC2aheS6s/NPCUWYnmenxwg8fF/5ul06D5BDxZQaeX5bwZdPe7XPDn0LgV9NSPSn27A7XrlZ5LM= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Nov 2016 14:37:05.2348 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB1885 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2016-11/txt/msg00365.txt.bz2 Yao Qi writes: > On Thu, Nov 03, 2016 at 10:33:00AM -0400, Antoine Tremblay wrote: >> diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c >> index 3f9ff2b..3b3c371 100644 >> --- a/gdb/gdbserver/server.c >> +++ b/gdb/gdbserver/server.c >> @@ -2350,6 +2350,7 @@ handle_query (char *own_buf, int packet_len, int *new_packet_len_p) >> strcat (own_buf, ";EnableDisableTracepoints+"); >> strcat (own_buf, ";QTBuffer:size+"); >> strcat (own_buf, ";tracenz+"); >> + strcat (own_buf, ";TracepointKinds+"); > > Tracepoint "Kinds" is only useful to arm so far, and it is not needed > to other archs support tracepoint, like x86. We should only reply > ";TracepointKinds+" on archs where it is useful. > OK I'll add a target method _supports_tracepoint_kinds to avoid that. I've also moved the kind resolution in remote.c under a check for tracepoint support like so : /* Send the tracepoint kind if GDBServer supports it. */ if (remote_supports_tracepoint_kinds ()) { /* Fetch the proper tracepoint kind. */ int kind = gdbarch_breakpoint_kind_from_pc (target_gdbarch (), &tpaddr); xsnprintf (buf + strlen (buf), BUF_SIZE - strlen (buf), ":K%x", kind); } >> } >> >> if (target_supports_hardware_single_step () >> diff --git a/gdb/gdbserver/tracepoint.c b/gdb/gdbserver/tracepoint.c >> index 7700ad1..cdb2c1d 100644 >> --- a/gdb/gdbserver/tracepoint.c >> +++ b/gdb/gdbserver/tracepoint.c >> @@ -747,6 +747,11 @@ struct tracepoint >> /* Link to the next tracepoint in the list. */ >> struct tracepoint *next; >> >> + /* Optional kind of the breakpoint to be used. Note this can mean >> + different things for different archs as z0 breakpoint command. >> + Value is -1 if not persent. */ >> + int32_t kind; > > This field is only useful to trap-based tracepoint. It signals that we > need to create a sub-class trap_based_tracepoint of struct tracepoint. > Currently struct tracepoint is a merged struct if you will of all the tracepoint types, fast, static, trap. Moving to a subclass for trap-based tracepoints, would require making a subclass for all the others too, static, fast. It would be quite inconsistent otherwise. While I do not object to this change, I think it should be part of another patch series and that this change is orthogonal to the tracepoint support for arm. WDYT ? >> + >> #ifndef IN_PROCESS_AGENT >> /* The list of actions to take when the tracepoint triggers, in >> string/packet form. */ >> @@ -1813,6 +1818,7 @@ add_tracepoint (int num, CORE_ADDR addr) >> tpoint->compiled_cond = 0; >> tpoint->handle = NULL; >> tpoint->next = NULL; >> + tpoint->kind = -1; >> >> /* Find a place to insert this tracepoint into list in order to keep >> the tracepoint list still in the ascending order. There may be >> @@ -2484,6 +2490,7 @@ cmd_qtdp (char *own_buf) >> ULONGEST num; >> ULONGEST addr; >> ULONGEST count; >> + ULONGEST kind; >> struct tracepoint *tpoint; >> char *actparm; >> char *packet = own_buf; >> @@ -2550,6 +2557,12 @@ cmd_qtdp (char *own_buf) >> tpoint->cond = gdb_parse_agent_expr (&actparm); >> packet = actparm; >> } >> + else if (*packet == 'K') >> + { >> + ++packet; >> + packet = unpack_varlen_hex (packet, &kind); >> + tpoint->kind = kind; >> + } >> else if (*packet == '-') >> break; >> else if (*packet == '\0') >> @@ -12293,6 +12307,10 @@ remote_download_tracepoint (struct target_ops *self, struct bp_location *loc) >> stepping_actions); >> >> tpaddr = loc->address; >> + >> + /* Fetch the proper tracepoint kind. */ >> + gdbarch_remote_breakpoint_from_pc (target_gdbarch (), &tpaddr, &kind); >> + > > This function is already removed recently. Fixed. Thanks. > >> sprintf_vma (addrbuf, tpaddr); >> xsnprintf (buf, BUF_SIZE, "QTDP:%x:%s:%c:%lx:%x", b->number, >> addrbuf, /* address */ >> @@ -12367,6 +12385,11 @@ remote_download_tracepoint (struct target_ops *self, struct bp_location *loc) >> "ignoring tp %d cond"), b->number); >> } >> >> + /* Tracepoint Kinds are modeled after the breakpoint Z0 kind packet. > > What do you mean? I meant that the kind field in the tracepoints is the same as the kind field for the breakpoints. I think that comment was more confusing than anything, kinds are described in the doc anyway so I'll forgo that comment and just write: /* Send the tracepoint kind if GDBServer supports it. */ if (remote_supports_tracepoint_kinds ()) > >> diff --git a/gdb/testsuite/gdb.trace/collection.exp b/gdb/testsuite/gdb.trace/collection.exp >> index f225429..a30234f 100644 >> --- a/gdb/testsuite/gdb.trace/collection.exp >> +++ b/gdb/testsuite/gdb.trace/collection.exp >> @@ -764,7 +764,12 @@ proc gdb_trace_collection_test {} { >> gdb_collect_expression_test globals_test_func \ >> "globalarr\[\(l6, l7\)\]" "7" "a\[\(b, c\)\]" >> >> - gdb_collect_return_test >> + #This architecture has no method to collect a return address. >> + if { [is_aarch32_target] } { >> + unsupported "collect \$_ret: This architecture has no method to collect a return address" >> + } else { >> + gdb_collect_return_test >> + } > > You need to implement arm_gen_return_address. > Done. Thanks. >> >> gdb_collect_strings_test strings_test_func "locstr" "abcdef" "" \ >> "local string" >> diff --git a/gdb/testsuite/gdb.trace/trace-common.h b/gdb/testsuite/gdb.trace/trace-common.h >> index 60cf9e8..9d607f7 100644 >> --- a/gdb/testsuite/gdb.trace/trace-common.h >> +++ b/gdb/testsuite/gdb.trace/trace-common.h >> @@ -40,7 +40,8 @@ x86_trace_dummy () >> " call " SYMBOL(x86_trace_dummy) "\n" \ >> ) >> >> -#elif (defined __aarch64__) || (defined __powerpc__) >> +#elif (defined __aarch64__) || (defined __powerpc__) \ >> + || (defined __arm__ && !defined __thumb__) >> >> #define FAST_TRACEPOINT_LABEL(name) \ >> asm (" .global " SYMBOL(name) "\n" \ >> @@ -48,11 +49,18 @@ x86_trace_dummy () >> " nop\n" \ >> ) >> >> -#elif (defined __s390__) >> +#elif (defined __arm__ && defined __thumb2__) >> >> #define FAST_TRACEPOINT_LABEL(name) \ >> asm (" .global " SYMBOL(name) "\n" \ >> SYMBOL(name) ":\n" \ >> + " nop.w\n" \ >> + ) >> + >> +#elif (defined __s390__) >> +#define FAST_TRACEPOINT_LABEL(name) \ >> + asm (" .global " SYMBOL(name) "\n" \ >> + SYMBOL(name) ":\n" \ >> " mvc 0(8, %r15), 0(%r15)\n" \ >> ) >> > > (defined __arm__ && defined __thumb__) (thumb-1) is still not handled. thumb-1 is not supported in the future fast tracepoints thus I had not included it here but indeed it should work with normal tracepoints. Fast tracepoints with thumb-1 should just error out anyway. I'll add thumb-1 in there, thanks.