From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19055 invoked by alias); 26 Sep 2012 12:23:51 -0000 Received: (qmail 19042 invoked by uid 22791); 26 Sep 2012 12:23:49 -0000 X-SWARE-Spam-Status: No, hits=-5.9 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mailout3.samsung.com (HELO mailout3.samsung.com) (203.254.224.33) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 26 Sep 2012 12:23:26 +0000 Received: from epcpsbge3.samsung.com (epcpsbge3 [203.254.230.13]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MAY00MWTIEZPCB0@mailout3.samsung.com> for gdb-patches@sourceware.org; Wed, 26 Sep 2012 21:23:25 +0900 (KST) Received: from epcpsbge3.samsung.com ( [172.20.52.126]) by epcpsbge3.samsung.com (EPCPMTA) with SMTP id 39.5E.03840.CB3F2605; Wed, 26 Sep 2012 21:23:25 +0900 (KST) Received: from epextmailer01 ( [203.254.219.151]) by epcpsbge3.samsung.com (EPCPMTA) with SMTP id 19.5E.03840.CB3F2605; Wed, 26 Sep 2012 21:23:24 +0900 (KST) Date: Wed, 26 Sep 2012 12:23:00 -0000 From: KARTHIKVENKATESH BHAT Subject: [committed] Prologue not set properly for binaries compiled with LLVM compiler (Bug #14419) To: Joel Brobecker Cc: "gdb-patches@sourceware.org" Reply-to: kv.bhat@samsung.com MIME-version: 1.0 X-MTR: 20120926121643870@kv.bhat Msgkey: 20120926121643870@kv.bhat X-EPLocale: en_US.windows-1252 X-EPWebmail-Msg-Type: personal X-EPWebmail-Reply-Demand: 0 X-EPApproval-Locale: X-EPHeader: ML X-EPTrCode: X-EPTrName: X-MLAttribute: X-RootMTR: 20120926121643870@kv.bhat X-ParentMTR: X-ArchiveUser: X-CPGSPASS: N Content-transfer-encoding: base64 Content-type: text/plain; charset=windows-1252 MIME-version: 1.0 Message-id: <1435799.298501348662204287.JavaMail.weblogic@epml01> DLP-Filter: Pass X-CFilter-Loop: Reflected 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: 2012-09/txt/msg00582.txt.bz2 VGhhbmtzIGZvciB0aGUgcmV2aWV3LiBDb21taXR0ZWQgYWZ0ZXIgZm9ybWF0 dGluZy4NCg0KLS0tLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tLS0NClNl bmRlciA6IEpvZWwgQnJvYmVja2VyPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4N CkRhdGUgOiBTZXAgMjYsIDIwMTIgMDA6NDkgKEdNVCswOTowMCkNClRpdGxl IDogUmU6IFtQQVRDSF0gUHJvbG9ndWUgbm90IHNldCBwcm9wZXJseSBmb3Ig YmluYXJpZXMgY29tcGlsZWQgd2l0aCBMTFZNIGNvbXBpbGVyIChCdWcgIzE0 NDE5KQ0KDQpLYXJ0aGlrLA0KDQpUaGFua3MgZm9yIHRoZSBmaXguDQoNCj4g KzIwMTItMDktMjUgIEthcnRoaWsgQmhhdCAgDQo+ICsgDQo+ICsgKiBhbHBo YS10ZGVwLmMgKGFybV9za2lwX3Byb2xvZ3VlKTogRXh0ZW5kaW5nIHN1cHBv cnQgZm9yIExMVk0gY29tcGlsZXIuIA0KV3JvbmcgZmlsZW5hbWUuIFRoZSBw YXRjaCBsb29rcyBnb29kIGFuZCBpcyBPSyB0byBjb21taXQgcHJvdmlkZWQN CnlvdSBmaXggdGhlIGZvcm1hdHRpbmcgaXNzdWUgb3V0bGluZWQgYmVsb3cu DQoNCkRvIHlvdSBoYXZlIGEgY29weXJpZ2h0IGFzc2lnbm1lbnQgb24gZmls ZT8gVGhpcyBwYXRjaCBpcyBzbWFsbCBlbm91Z2gNCnRoYXQgaXQgY2FuIGJl IGFjY2VwdGVkIHdpdGhvdXQgb25lLCBidXQgaWYgeW91IGFyZSBwbGFuaW5n IG9uDQpjb250cmlidXRpbmcgbW9yZSBjaGFuZ2VzLCBoYXZpbmcgb25lIHdv dWxkIGJlY29tZSBuZWNlc3NhcnkuDQpMZXQgbWUga25vdyBpZiB5b3UgbmVl ZCB0byBnZXQgc3RhcnRlZCBvbiB0aGUgcGFwZXJ3b3JrLg0KDQo+IEluZGV4 OiBnZGIvYXJtLXRkZXAuYw0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ IFJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2FybS10ZGVwLmMsdg0KPiBy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMzY3DQo+IGRpZmYgLXUgLXAgLXIxLjM2 NyBhcm0tdGRlcC5jDQo+IC0tLSBnZGIvYXJtLXRkZXAuYyAyMiBBdWcgMjAx MiAxOTo0Nzo1NiAtMDAwMCAxLjM2Nw0KPiArKysgZ2RiL2FybS10ZGVwLmMg MjUgU2VwIDIwMTIgMTM6MzQ6NTQgLTAwMDANCj4gQEAgLTE0MDAsNyArMTQw MCw3IEBAIGFybV9za2lwX3Byb2xvZ3VlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXINCj4gICAgICAgIGlmIChwb3N0X3Byb2xvZ3VlX3BjDQo+ICAgICAmJiAo cyA9PSBOVUxMDQo+ICAgICAgICAgfHwgcy0+cHJvZHVjZXIgPT0gTlVMTA0K PiAtICAgICAgIHx8IHN0cm5jbXAgKHMtPnByb2R1Y2VyLCAiR05VICIsIHNp emVvZiAoIkdOVSAiKSAtIDEpID09IDApKQ0KPiArICAgICAgIHx8IHN0cm5j bXAgKHMtPnByb2R1Y2VyLCAiR05VICIsIHNpemVvZiAoIkdOVSAiKSAtIDEp ID09IDAgfHwgc3RybmNtcCAocy0+cHJvZHVjZXIsICJjbGFuZyAiLCBzaXpl b2YgKCJjbGFuZyAiKSAtIDEpID09IDApKQ0KDQpQbGVhc2UgbW92ZSB0aGUg YWRkaXRpb24gfHwgY29uZGl0aW9uIG9uIHRoZSBuZXh0IGxpbmUsIHByb3Bl cmx5IGFsaWduZWQNCndpdGggdGhlIG90aGVycy4NCg0KLS0gDQpKb2Vs >From gdb-patches-return-94860-listarch-gdb-patches=sources.redhat.com@sourceware.org Wed Sep 26 12:28:48 2012 Return-Path: Delivered-To: listarch-gdb-patches@sources.redhat.com Received: (qmail 21214 invoked by alias); 26 Sep 2012 12:28:46 -0000 Received: (qmail 21200 invoked by uid 22791); 26 Sep 2012 12:28:43 -0000 X-SWARE-Spam-Status: No, hits=-3.4 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mms3.broadcom.com (HELO mms3.broadcom.com) (216.31.210.19) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 26 Sep 2012 12:28:26 +0000 Received: from [10.9.200.131] by mms3.broadcom.com with ESMTP (Broadcom SMTP Relay (Email Firewall v6.5)); Wed, 26 Sep 2012 05:26:08 -0700 X-Server-Uuid: B86B6450-0931-4310-942E-F00ED04CA7AF Received: from mail-irva-13.broadcom.com (10.11.16.103) by IRVEXCHHUB01.corp.ad.broadcom.com (10.9.200.131) with Microsoft SMTP Server id 8.2.247.2; Wed, 26 Sep 2012 05:28:14 -0700 Received: from [10.177.73.70] (unknown [10.177.73.70]) by mail-irva-13.broadcom.com (Postfix) with ESMTP id B83A440FE4; Wed, 26 Sep 2012 05:28:13 -0700 (PDT) Message-ID: <5062F4DD.3030204@broadcom.com> Date: Wed, 26 Sep 2012 12:28:00 -0000 From: "Andrew Burgess" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 MIME-Version: 1.0 To: "gdb-patches@sourceware.org" cc: "Yao Qi" Subject: Re: [PATCH] Include access size in find command error message References: <5062C7E9.5080900@broadcom.com> <5062DD70.7020104@codesourcery.com> In-Reply-To: <5062DD70.7020104@codesourcery.com> Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 7bit 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 Delivered-To: mailing list gdb-patches@sourceware.org X-SW-Source: 2012-09/txt/msg00583.txt.bz2 Content-length: 8602 On 26/09/2012 11:48 AM, Yao Qi wrote: > On 09/26/2012 05:16 PM, Andrew Burgess wrote: >> +# Now try a find starting from each global. >> +gdb_test "find global_var_1, (global_var_2 + 16), 0xff" \ >> + "warning: Unable to access $decimal bytes of target memory at >> $hex, halting search.\r\nPattern not found." >> + >> +gdb_test "find global_var_2, (global_var_2 + 16), 0xff" \ >> + "warning: Unable to access $decimal bytes of target memory at >> $hex, halting search.\r\nPattern not found." >> + >> +gdb_test "find global_var_0, (global_var_2 + 16), 0xff" \ >> + "warning: Unable to access $decimal bytes of target memory at >> $hex, halting search.\r\nPattern not found." > > These tests are OK on native target, but fail on gdbserver, > Thanks for taking the time to review this patch. I've have an updated patch below, highlights, - Also include the access size in the error message produced by gdbserver, matching native gdb error message. - Don't test for remote targets. In the gdbserver case the error is not caught by the expect test script so can't be checked. (I was inspired by the gdb.base/solib-corrupted.exp test). How's this? Thanks, Andrew gdb/gdbserver/ChangeLog 2012-09-26 Andrew Burgess * server.c (handle_search_memory_1): Include access length in error message. diff --git a/gdb/gdbserver/server.c b/gdb/gdbserver/server.c index 547552f..61a7313 100644 --- a/gdb/gdbserver/server.c +++ b/gdb/gdbserver/server.c @@ -735,8 +735,9 @@ handle_search_memory_1 (CORE_ADDR start_addr, CORE_ADDR search_space_len, if (gdb_read_memory (start_addr, search_buf, search_buf_size) != search_buf_size) { - warning ("Unable to access target memory at 0x%lx, halting search.", - (long) start_addr); + warning ("Unable to access %ld bytes of target " + "memory at 0x%lx, halting search.", + (long) search_buf_size, (long) start_addr); return -1; } @@ -787,9 +788,9 @@ handle_search_memory_1 (CORE_ADDR start_addr, CORE_ADDR search_space_len, if (gdb_read_memory (read_addr, search_buf + keep_len, nr_to_read) != search_buf_size) { - warning ("Unable to access target memory " + warning ("Unable to access %ld bytes of target memory " "at 0x%lx, halting search.", - (long) read_addr); + (long) nr_to_read, (long) read_addr); return -1; } gdb/ChangeLog 2012-09-26 Andrew Burgess * target.c (simple_search_memory): Include access length in error message. diff --git a/gdb/target.c b/gdb/target.c index 1fc8802..cea3d10 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -2874,8 +2874,9 @@ simple_search_memory (struct target_ops *ops, if (target_read (ops, TARGET_OBJECT_MEMORY, NULL, search_buf, start_addr, search_buf_size) != search_buf_size) { - warning (_("Unable to access target memory at %s, halting search."), - hex_string (start_addr)); + warning (_("Unable to access %s bytes of target " + "memory at %s, halting search."), + plongest (search_buf_size), hex_string (start_addr)); do_cleanups (old_cleanups); return -1; } @@ -2928,8 +2929,9 @@ simple_search_memory (struct target_ops *ops, search_buf + keep_len, read_addr, nr_to_read) != nr_to_read) { - warning (_("Unable to access target " + warning (_("Unable to access %s bytes of target " "memory at %s, halting search."), + plongest (nr_to_read), hex_string (read_addr)); do_cleanups (old_cleanups); return -1; gdb/testsuite/ChangeLog 2012-09-26 Andrew Burgess Test find command on unmapped memory. * gdb.base/find-unmapped.c: New file. * gdb.base/find-unmapped.exp: New file. diff --git a/gdb/testsuite/gdb.base/find-unmapped.c b/gdb/testsuite/gdb.base/find-unmapped.c new file mode 100644 index 0000000..70059b1 --- /dev/null +++ b/gdb/testsuite/gdb.base/find-unmapped.c @@ -0,0 +1,89 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2012 Free Software Foundation, Inc. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include +#include +#include +#include +#include + +#define CHUNK_SIZE 16000 /* same as findcmd.c's */ + +void *global_var_0; +void *global_var_1; +void *global_var_2; + +void +breakpt () +{ + /* Nothing. */ +} + +int +main (void) +{ + void *p; + size_t pg_size; + int pg_count; + void *unmapped_page, *last_mapped_page, *first_mapped_page; + + /* + Map enough pages to cover at least CHUNK_SIZE, and one extra page. We + then unmap the last page. + + From gdb we can then perform find commands into unmapped region, gdb + should given an error. + + .----.----.----.----.----. + | | | | | | + '----'----'----'----'----' + |<- CHUNK_SIZE ->| + */ + + pg_size = getpagesize (); + /* The +2 gives the extra page. */ + pg_count = (CHUNK_SIZE / pg_size) + 2; + + p = mmap (0, (pg_count * pg_size), PROT_READ|PROT_WRITE, + MAP_ANONYMOUS|MAP_PRIVATE, -1, 0); + if (p == MAP_FAILED) + { + perror ("mmap"); + return EXIT_FAILURE; + } + + memset (p, 0, (pg_count *pg_size)); + + if (munmap (p + ((pg_count - 1) * pg_size), pg_size) == -1) + { + perror ("munmap"); + return EXIT_FAILURE; + } + + first_mapped_page = p; + last_mapped_page = p + ((pg_count - 2) * pg_size); + unmapped_page = last_mapped_page + pg_size; + + /* Setup global variables we reference from gdb. */ + global_var_0 = first_mapped_page; + global_var_1 = unmapped_page - 16; + global_var_2 = unmapped_page + 16; + + breakpt (); + + return EXIT_SUCCESS; +} diff --git a/gdb/testsuite/gdb.base/find-unmapped.exp b/gdb/testsuite/gdb.base/find-unmapped.exp new file mode 100644 index 0000000..341538b --- /dev/null +++ b/gdb/testsuite/gdb.base/find-unmapped.exp @@ -0,0 +1,48 @@ +# Copyright 2012 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +if {[is_remote target]} { + # gdbserver prints the warning message but expect is parsing only the + # GDB output, not the gdbserver output. + return 0 +} + +standard_testfile + +if { [prepare_for_testing ${testfile}.exp ${testfile}] } { + return -1 +} + +if ![runto breakpt] { + return -1 +} + +# Basic attempt to read memory from globals. +gdb_test "x/5w global_var_1" \ + "$hex:\[ \t\]+0\[ \t\]+0\[ \t\]+0\[ \t\]+0\r\n$hex:\[ \t\]+Cannot access memory at address $hex" +gdb_test "x/5w global_var_2" \ + "$hex:\[ \t\]+Cannot access memory at address $hex" + +# Now try a find starting from each global. The warning message is made +# optional here as for gdbserver targets the warning is printed by +# gdbserver, but expect is only collecting gdb output. +gdb_test "find global_var_1, (global_var_2 + 16), 0xff" \ + "warning: Unable to access $decimal bytes of target memory at $hex, halting search\.\r\nPattern not found." + +gdb_test "find global_var_2, (global_var_2 + 16), 0xff" \ + "warning: Unable to access $decimal bytes of target memory at $hex, halting search\.\r\nPattern not found." + +gdb_test "find global_var_0, (global_var_2 + 16), 0xff" \ + "warning: Unable to access $decimal bytes of target memory at $hex, halting search\.\r\nPattern not found."