From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13894 invoked by alias); 24 Jun 2002 23:56:36 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 13864 invoked from network); 24 Jun 2002 23:56:35 -0000 Received: from unknown (HELO potter.sfbay.redhat.com) (205.180.83.107) by sources.redhat.com with SMTP; 24 Jun 2002 23:56:35 -0000 Received: from theotherone.redhat-remotie.org (IDENT:nBGVWxn1AOTX529ZIruRvfZCBdmsSCR9@romulus.sfbay.redhat.com [172.16.27.251]) by potter.sfbay.redhat.com (8.11.6/8.11.6) with ESMTP id g5ONw3Q12783 for ; Mon, 24 Jun 2002 16:58:03 -0700 Received: from localhost (localhost.fidalgo.net [127.0.0.1]) by theotherone.redhat-remotie.org (Postfix) with ESMTP id 4526CBB40F; Mon, 24 Jun 2002 15:09:15 -0700 (PDT) Date: Mon, 24 Jun 2002 16:56:00 -0000 From: Don Howard X-X-Sender: To: Eli Zaretskii Cc: Subject: Re: [PATCH] memattr bounds In-Reply-To: <3D1398B3.8090003@cygnus.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2002-06/txt/msg00498.txt.bz2 On Fri, 21 Jun 2002, Andrew Cagney wrote: > > The following addresses edge conditions in the mem command by making a > > special case for upper bound == 0. When the upper bound is zero, it is > > assumed that the user wants an upper bound of max CORE_ADDR+1. Currently, > > it's not possible to define a memory region with zero as it's upper bound, > > so this should not conflict with any current usage. > I've committed the memattr.c changes, with the requested tweaks. Is the doco descriptive enough? I'm trying to be brief without being terse... 2002-06-24 Don Howard * memattr.c (create_mem_region): Treat hi == 0 as a special case that means max CORE_ADDR+1. (lookup_mem_region): Ditto. (mem_info_command): Ditto. Index: memattr.c =================================================================== RCS file: /cvs/src/src/gdb/memattr.c,v retrieving revision 1.11 diff -p -u -w -r1.11 memattr.c --- memattr.c 12 May 2002 04:20:05 -0000 1.11 +++ memattr.c 24 Jun 2002 21:58:54 -0000 @@ -47,7 +47,7 @@ create_mem_region (CORE_ADDR lo, CORE_AD struct mem_region *n, *new; /* lo == hi is a useless empty region */ - if (lo >= hi) + if (lo >= hi && hi != 0) { printf_unfiltered ("invalid memory region: low >= high\n"); return NULL; @@ -57,8 +57,9 @@ create_mem_region (CORE_ADDR lo, CORE_AD while (n) { /* overlapping node */ - if ((lo >= n->lo && lo < n->hi) || - (hi > n->lo && hi <= n->hi)) + if ((lo >= n->lo && (lo < n->hi || n->hi == 0)) + || (hi > n->lo && (hi <= n->hi || n->hi == 0)) + || (lo <= n->lo && (hi >= n->hi || hi == 0))) { printf_unfiltered ("overlapping memory region\n"); return NULL; @@ -111,7 +112,7 @@ lookup_mem_region (CORE_ADDR addr) { if (m->enabled_p == 1) { - if (addr >= m->lo && addr < m->hi) + if (addr >= m->lo && (addr < m->hi || m->hi == 0)) return m; if (addr >= m->hi && lo < m->hi) @@ -234,6 +235,7 @@ mem_info_command (char *args, int from_t for (m = mem_region_chain; m; m = m->next) { + CORE_ADDR hi; char *tmp; printf_filtered ("%-3d %-3c\t", m->number, @@ -244,11 +246,12 @@ mem_info_command (char *args, int from_t tmp = local_hex_string_custom ((unsigned long) m->lo, "016l"); printf_filtered ("%s ", tmp); + hi = (m->hi == 0 ? ~0 : m->hi); if (TARGET_ADDR_BIT <= 32) - tmp = local_hex_string_custom ((unsigned long) m->hi, "08l"); + tmp = local_hex_string_custom ((unsigned long) hi, "08l"); else - tmp = local_hex_string_custom ((unsigned long) m->hi, "016l"); + tmp = local_hex_string_custom ((unsigned long) hi, "016l"); printf_filtered ("%s ", tmp); Index: doc/gdb.texinfo =================================================================== RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v retrieving revision 1.102 diff -p -u -w -r1.102 gdb.texinfo --- doc/gdb.texinfo 11 Jun 2002 20:36:57 -0000 1.102 +++ doc/gdb.texinfo 24 Jun 2002 21:59:06 -0000 @@ -5601,9 +5601,10 @@ to enable, disable, or remove a memory r @table @code @kindex mem -@item mem @var{address1} @var{address2} @var{attributes}@dots{} -Define memory region bounded by @var{address1} and @var{address2} -with attributes @var{attributes}@dots{}. +@item mem @var{lower} @var{upper} @var{attributes}@dots{} +Define memory region bounded by @var{lower} and @var{upper} with +attributes @var{attributes}@dots{}. Note that @var{upper} == 0 is a +special case: it indicates the max memory address. @kindex delete mem @item delete mem @var{nums}@dots{} -- dhoward@redhat.com gdb engineering