From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4020 invoked by alias); 28 Jul 2009 15:06:14 -0000 Received: (qmail 4006 invoked by uid 22791); 28 Jul 2009 15:06:13 -0000 X-SWARE-Spam-Status: No, hits=-2.3 required=5.0 tests=AWL,BAYES_00,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 28 Jul 2009 15:06:08 +0000 Received: (qmail 27298 invoked from network); 28 Jul 2009 15:06:06 -0000 Received: from unknown (HELO orlando) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 28 Jul 2009 15:06:06 -0000 From: Pedro Alves To: Aleksandar Ristovski Subject: Re: [patch] Set bfd field in target_section Date: Tue, 28 Jul 2009 16:22:00 -0000 User-Agent: KMail/1.9.10 Cc: gdb-patches@sourceware.org References: <200907281534.41605.pedro@codesourcery.com> <4A6F0F05.1060705@qnx.com> In-Reply-To: <4A6F0F05.1060705@qnx.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200907281606.05571.pedro@codesourcery.com> 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 X-SW-Source: 2009-07/txt/msg00682.txt.bz2 On Tuesday 28 July 2009 15:45:25, Aleksandar Ristovski wrote: > Pedro Alves wrote: > > On Tuesday 28 July 2009 15:28:33, Aleksandar Ristovski wrote: > >> Hello, > >> > >> I believe this is related to Pedro's patch from 03-Jun-09. I > >> didn't see where we set target_section.bfd field - maybe I > >> am overlooking something, but in bfd-target, in function > >> target_bfd_xclose we will call bfd_close > >> (table->sections->bfd); bfd_close doesn't like NULL argument. > >> > >> Am I missing something, or is this (the patch) missing? > > > > Doesn't add_to_section_table set the bfd in each new > > target section? > > Indeed it does. However, the problem is if we don't find any > sections in a bfd, it will exit and will leave bfd field 0. Right, but table->sections will be equal to table->sections_end, meaning the table is empty. Your fix isn't correct, since you should never write to *sections_end, which is one-past-the-end of the sections in the table. In the degenerate case of bfd_count_sections == 0 (not 0 ALLOC sections), xmalloc will still return something non-NULL, but, writing to this pointer invokes undefined behaviour. > I get this situation at the moment because I broke my > xfer_partial, but I think it could happen in general? Testing finished succesfully, so I've applied the patch with this ChangeLog entry. Let me know if something is still wrong. 2009-07-28 Pedro Alves * bfd-target.c (target_bfd_xclose): Only close the bfd if the section table is not empty. (target_bfd_reopen): If the section table ends up empty, close the bfd here. -- Pedro Alves