From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8254 invoked by alias); 12 Jan 2007 10:52:36 -0000 Received: (qmail 8244 invoked by uid 22791); 12 Jan 2007 10:52:36 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 12 Jan 2007 10:52:30 +0000 Received: (qmail 22424 invoked from network); 12 Jan 2007 10:52:28 -0000 Received: from unknown (HELO ?172.16.64.38?) (vladimir@127.0.0.2) by mail.codesourcery.com with ESMTPA; 12 Jan 2007 10:52:28 -0000 From: Vladimir Prus To: gdb@sources.redhat.com Subject: MI failures related to string printing Date: Fri, 12 Jan 2007 10:52:00 -0000 User-Agent: KMail/1.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200701121351.29310.vladimir@codesourcery.com> Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2007-01/txt/msg00205.txt.bz2 As I've reported before, I'm getting this failure: FAIL: gdb.mi/mi-var-child.exp: update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed After investigation, it appears related to recent -var-update changes. The failing test does: mi_gdb_test "-var-update *" \ "\\^done,changelist=\\\[\{name=\"psnp->ptrs.0.next.next.long_ptr\",in_scope=\"true\",type_changed=\"false\"\}\\\]" \ "update all vars psnp->next->next->long_ptr (and 2.long_ptr) changed" It's the last check in mi-var-child.exp. The reply from gdb includes also: {name="psnp->char_ptr.*psnp->char_ptr.**psnp->char_ptr.***psnp->char_ptr",in_scope="true",type_changed="false"} and another similar thing. The problem is that test is written like this: char a0, *a1, **a2, ***a3; a0 = '0'; a1 = &a0; a2 = &a1; a3 = &a2; There's a variable object correspoding to a1. When varobj_update tries to compare old and new value of that varobj, it computes string value of a1. Unfortunately, a1 points to a single character. There's no terminating zero character. So, the string value of a1 is essentially random, and -var-update randomly marks varobj as changed. What do we do about it? At the very least, the test should be fixed. Is there anything smart we can do here? - Volodya