From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12329 invoked by alias); 27 Sep 2006 20:46:16 -0000 Received: (qmail 12319 invoked by uid 22791); 27 Sep 2006 20:46:15 -0000 X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (66.187.233.31) by sourceware.org (qpsmtpd/0.31) with ESMTP; Wed, 27 Sep 2006 20:46:12 +0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k8RKkB3b000970 for ; Wed, 27 Sep 2006 16:46:11 -0400 Received: from potter.sfbay.redhat.com (potter.sfbay.redhat.com [172.16.27.15]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k8RKkAD9019514 for ; Wed, 27 Sep 2006 16:46:10 -0400 Received: from [127.0.0.1] (vpn-14-11.rdu.redhat.com [10.11.14.11]) by potter.sfbay.redhat.com (8.12.8/8.12.8) with ESMTP id k8RKk6vA030754; Wed, 27 Sep 2006 16:46:08 -0400 Message-ID: <451AE311.9000408@redhat.com> Date: Wed, 27 Sep 2006 20:46:00 -0000 From: Dave Brolley User-Agent: Mozilla Thunderbird 1.0 (Windows/20041206) MIME-Version: 1.0 To: Dave Brolley CC: sid@sources.redhat.com Subject: Re: [patch][commit] Two problems with --gprof References: <451AE0F9.3040502@redhat.com> In-Reply-To: <451AE0F9.3040502@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact sid-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: sid-owner@sourceware.org X-SW-Source: 2006-q3/txt/msg00052.txt.bz2 Ooops --- I got 1) and 2) reversed below... Dave Brolley wrote: > Hi, > > I've committed this patch which addresses two minor problems with the > --gprof option. > > 1) The change to sidcpuutil.h addresses a problem in which > --gprof=,cycles was not recognized (i.e. cycles specified with > no value -- default should be 1). > > 2) The change to commonCfg.cxx fixes an off-by-one problem which was > causing an underflow. > > Tested on the internal port which exposed the problems. > > Dave > >------------------------------------------------------------------------ > >sid/include/ChangeLog: >2006-09-27 Dave Brolley > > * sidcpuutil.h (basic_cpu::configure): Set gprof_prev_cycle to > total_insn_count when gprof 'cycles' not specified. > >sid/main/dynamic/ChangeLog: >2006-09-27 Dave Brolley > > * commonCfg.cxx (profile_opt_gprof_value): Handle "gprof=,cycles". > > > >------------------------------------------------------------------------ > >Index: sid/include/sidcpuutil.h >=================================================================== >RCS file: /cvs/src/src/sid/include/sidcpuutil.h,v >retrieving revision 1.38 >diff -c -p -r1.38 sidcpuutil.h >*** sid/include/sidcpuutil.h 26 Jun 2006 21:04:00 -0000 1.38 >--- sid/include/sidcpuutil.h 27 Sep 2006 20:22:50 -0000 >*************** namespace sidutil >*** 662,668 **** > // Set the state so that the next insn will be sampled, > // followed by samples at the specified interval. > gprof_counter = step_insn_count - 1; >! gprof_prev_cycle = this->total_insn_count - 1; > } > } > return; >--- 662,668 ---- > // Set the state so that the next insn will be sampled, > // followed by samples at the specified interval. > gprof_counter = step_insn_count - 1; >! gprof_prev_cycle = this->total_insn_count; > } > } > return; >Index: sid/main/dynamic/commonCfg.cxx >=================================================================== >RCS file: /cvs/src/src/sid/main/dynamic/commonCfg.cxx,v >retrieving revision 1.17 >diff -c -p -r1.17 commonCfg.cxx >*** sid/main/dynamic/commonCfg.cxx 19 Sep 2006 18:40:56 -0000 1.17 >--- sid/main/dynamic/commonCfg.cxx 27 Sep 2006 20:22:50 -0000 >*************** SessionCfg::profile_opt_gprof_value (con >*** 776,793 **** > profile_config_error (opt); // doesn't return > > vector sub_parts = sidutil::tokenize (opt_parts[1], ","); > string value = sub_parts[0]; >! if (size == 3) > { >! if (sub_parts.size () != 2 || sub_parts[1] != "cycles") >! profile_config_error (opt); // doesn't return >! >! unsigned n; >! sid::component::status s = sidutil::parse_attribute (opt_parts[2], n); >! if (s != sid::component::ok) > profile_config_error (opt); // doesn't return > >! value += "," + opt_parts[2]; > } > > need_gprof = true; >--- 776,800 ---- > profile_config_error (opt); // doesn't return > > vector sub_parts = sidutil::tokenize (opt_parts[1], ","); >+ if (sub_parts.size () > 2) >+ profile_config_error (opt); // doesn't return >+ > string value = sub_parts[0]; >! if (sub_parts.size () == 2) > { >! if (sub_parts[1] != "cycles") > profile_config_error (opt); // doesn't return > >! if (size == 3) >! { >! unsigned n; >! sid::component::status s = sidutil::parse_attribute (opt_parts[2], n); >! if (s != sid::component::ok) >! profile_config_error (opt); // doesn't return >! value += "," + opt_parts[2]; >! } >! else >! value += ",1"; > } > > need_gprof = true; > >