From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4313 invoked by alias); 1 Jul 2005 05:04:13 -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 4279 invoked by uid 22791); 1 Jul 2005 05:04:05 -0000 Received: from viper.snap.net.nz (HELO viper.snap.net.nz) (202.37.101.8) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Fri, 01 Jul 2005 05:04:05 +0000 Received: from farnswood.snap.net.nz (p246-tnt1.snap.net.nz [202.124.110.246]) by viper.snap.net.nz (Postfix) with ESMTP id 8C3A9545303; Fri, 1 Jul 2005 17:03:56 +1200 (NZST) Received: by farnswood.snap.net.nz (Postfix, from userid 501) id 8C0A962A99; Fri, 1 Jul 2005 05:32:55 +0100 (BST) From: Nick Roberts MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="VAVh9mLWsz" Content-Transfer-Encoding: 7bit Message-ID: <17092.51062.559020.560618@farnswood.snap.net.nz> Date: Fri, 01 Jul 2005 05:04:00 -0000 To: Wu Zhou Cc: Daniel Jacobowitz , gdb-patches@sources.redhat.com Subject: Re: PATCH: Start Fortran support for variable objects. In-Reply-To: References: <17091.4780.953681.620094@farnswood.snap.net.nz> <20050630131809.GB8241@nevyn.them.org> <17092.28833.284587.118362@farnswood.snap.net.nz> X-Virus-Checked: Checked by ClamAV on sourceware.org X-SW-Source: 2005-07/txt/msg00003.txt.bz2 --VAVh9mLWsz Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Content-length: 2300 > I have two comments below, hope that they might be helpful. Thanks. > > On Fri, 1 Jul 2005, Nick Roberts wrote: > > > As in the patch below? I don't understand the extra cases it appears to > > cover, but it worked for the tests I tried. > > Maybe it is also helpful to test against such arrays definition as: > > integer array(0:5), integer array(-1:4) > > or even > > integer array(0:5,-1:4) > > (if variable object does support multi-dimension array. I don't know much > about variable object, and MI as a whole.) Ah! I see now. I've not used such arrays in Fortran. Using INTEGER ARRAY1(0:5), ARRAY2(-1:4) INTEGER ARRAY3(0:2,-1:1) DATA ARRAY1/1,2,3,4,5,6/ DATA ARRAY2/1,2,3,4,5,6/ DATA ARRAY3/11,21,31,12,22,32,13,23,33/ the latest patch seems to work (see attached image below). I am sure that my original patch would have failed for these cases. > The second comment is about the following text in a former mail Nick sent: > > > Fortran: > > > > (top-gdb) p TYPE_LOW_BOUND(var->type) > > $3 = 0 ... > > For Fortran array such as DIMENSION I(4), the lower bound should be 1 by > default. The following session on my box shows this: > > p type->main_type->fields->type->main_type->fields[0].loc.bitpos > $3 = 1 > p type->main_type->fields->type->main_type->fields[1].loc.bitpos > $4 = 4 So I should have done: (top-gdb) p TYPE_LOW_BOUND(var->type->main_type->fields->type) $1 = 1 (top-gdb) p TYPE_HIGH_BOUND(var->type->main_type->fields->type) $2 = 4 > I guess there might be some errors in the process of creating varobj for > Fortran array. No the information seems to be there. So maybe: for (i = 0; i < var->num_children; i++) { /* Mark as the end in case we bail out */ *((*childlist) + i) = NULL; j = i + TYPE_LOW_BOUND(var->type->main_type->fields->type); /* check if child exists, if not create */ name = name_of_child (var, j); child = child_exists (var, name); if (child == NULL) child = create_child (var, j, name); *((*childlist) + i) = child; } will work in varobj_list_children in a language independent way. I'll wait to see what Daniel says though, before submitting another patch. Nick --VAVh9mLWsz Content-Type: image/png Content-Description: fortran watch window Content-Disposition: inline; filename="fortran1.png" Content-Transfer-Encoding: base64 Content-length: 10631 iVBORw0KGgoAAAANSUhEUgAAASkAAAHlCAIAAAAm0Z0aAAAABGdBTUEAALGP C/xhBQAAADh0RVh0U29mdHdhcmUAWFYgVmVyc2lvbiAzLjEwYSAgUmV2OiAx Mi8yOS85NCAoUE5HIHBhdGNoIDEuMindFS5JAAAeAUlEQVR4nO2dIXTjuL6H dd8ZEDCg4IKCBQEXFCwoWBBQEDAgYEHBBQMuKFhQcEHAgoIBBQMKLggYUPDA gAcGLChYEFAQMCBgQcEFBQMCFhQMCFhgUPCAZzwaWVZkS47+cr7v5PTYqizL sX6RLOlnqfGr9woA9svpPz/8TSm1XBepcwIQmeuri9X9+9S5sDOfz2/f3b4o d5bLVdLMAMRns9mkzoKLF/rOzZupO/bT09Px8XG1e/V21UOWAKLx+PjoH3k2 my2Xy17j6z8H/2OP9WwPHr0YXf5yuf649j/fUJnNpmzI31BKLb3ZT/yKL897 ZZuzrPe2n7e3726vrq/Us3p6elp/XI9ejtZ/rGevZpOziVLq4uJiOpleXF4E 1ntVNbuH+vPmzbQ8S7URzua/q/GPUzZkbqxX79//7/Xj4+NyuVwsFu5bWWpj sVhUGz3FL+u9xWLx7XlPr+guLi6u31wXRTGbzU5PT2+ub97/3/vr6+vl78vV /WpyNpn8NCmeC+OoksXbmVJq/mZpBBohN9dTpdTV9cq62xfPtY0wxifTMik2 BG4YbD9vG26jnb7jK+1570tX5/vb99Oz6enp6cUvF6PR6PTH09XHlXpWt+9u P/z2YfzD+Pbd7ex89rR50o/SKZ6L0YvR/M1dubt4e26NeXW91LdvrmfW1KJS 1DbgUPhSW7SJP/5hbP3X5s9NU/rjH8b6f41dA/N57/j4eHwyXq/X6lld/nK5 vF8+Pj5OZ9Pp2fT85/Pp2fT1xevN42bz52b71Cj04rlYvD0vP57XXEnx5npW /i0/epwqsG14/XT+6ej50SPPfp6xIX+jonCialgDHf8qii9aHf8wLtPUd63p fH3e+32plLq5ni3+s5hMJtvt9uHhQSm1+bR5+vw0ezXb/Lk5enn0+Onx9b9e j0aj46Pjkx9Pvu8lVUqp0YvR3e93Zf9P9VevBivKoqzXfvVwadsGm8f1+GTC hsyN9ccP+vPe5tOmvGsnJyfVHax6QR8/PRrPb5tPmzKm3lNahVjjG4nrp6ji 6897Zr03/3W+/mP94cOH2c+zp89PxXMxPZtu/tw8PDyokTp6efTw8DCdTk9O T9QLSw9PvYA2cXW9LJua9XqpKuhGie81vMyPO75BeY/ZkLlhUDwX5WdnYPUv I44e0pT+w38f9MCH/z40pa++Pe99fTwt/io2nzYnP568/ufri18uRi9G01fT 23e3F/+62Gw2o6PRwx/fUj//+dya6HK5PP/5/O73u/Kvnr7B1ZulUurm7aza tkT+umuqdFd4UzqN6b/1SwcypHPDsh7HPylH+qr+vDd6OVq8WxRFMT2bjtRo +9d2u91e/vvy5OTkaft09PLo6c+nKsX51Z3xKcNLTep/3Vx93wvqiKZ/doa3 otK/ZyKz8xkb8je+8fz1szOw+pcRx/1b/KzUs5r89F2tO/lp0ph+pb3i+76/ 5d1yPB6v1qvp2XT9x3r1cbX9a3v08mi73epVX1H7qK9iu7y6Kz/WmDdvZ/UD jQ13eD2CO9wn/fmbpf957+6Wm09rNsRuGAW96lZZafj0tUw0jH8Z8asIZeLV 4U21n2VeS7Etnj4/rT6uJqeT9Xq9/bxdr9fr9Xr6arr9vJ1MJo5u05JKcsa2 zkJr4C2+b+xVu45w6+GO8LbpW/NscPyPCRtiNwz0x7b6xxrfmk7Tv4rnYnm/ VEot75dlmvquNR1zfE8pNToazefz6+vr8T/GxbY4/uH46c+n67vrq1+vZrPZ zX9uLn+5rB9Vcnn1oR5+efXBCCm7Pb8O/SmjF3T+5q7+rzKwUkWr8K8JFp7p V9tf/9t4GyAb2j60P6vGvsPmNupyudT/a+wa2OdzXv5yeXl5effbXaGK4+Pj 8Xh8+uPpZrPZ/rWd/DQ5/uHY9wKczN/clR/Pf1WBbcPV9xrbmX61rWq/CxXn 5+dsyN8oWS6Xreq9vuOXfBnfu/vtTim1uPmW42JbfPjtw9WvV0d/Pxq9GC1u F+UAw/n5+dHfj8o484b2ZAiLm/M+ku2Dp83D8fiUDZkbD3/cVeN7nje0Gq/r L74+vteovZLNZvNlmtw/xvW0Dlx7IJlSe+PxOHVGvsMyl7ootiP1MJ+vEmar REIeYACc/ni0016QhPl8Xm58NytscTNPkRmAQ2F+9e3nwJyRuX0+chx59GLb S44A8setHVWTT4NvHQB6puZEcDJ6eVL89di02w3/REYvzUni4WcHSEU77bUi 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 AAAASUVORK5CYII= --VAVh9mLWsz--