From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 12674 invoked by alias); 23 Jun 2015 14:46:07 -0000 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 Received: (qmail 12663 invoked by uid 89); 23 Jun 2015 14:46:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_LOW autolearn=no version=3.3.2 X-HELO: mail-ob0-f181.google.com Received: from mail-ob0-f181.google.com (HELO mail-ob0-f181.google.com) (209.85.214.181) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Tue, 23 Jun 2015 14:46:00 +0000 Received: by obbkm3 with SMTP id km3so7628168obb.1 for ; Tue, 23 Jun 2015 07:45:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type; bh=uplCpqSUOV3teCMMMQ+R90MjXJfnsr5xpB7pFSStnn8=; b=kTtf2eICdhGeo7PF5bYgYK8VnKvnZRMKI6uAw3vCG93vRGqpi+lXL7Q9PPEejMuzcM Gj434BbjMHo6aSUE1gH/3yAyYrjwJgpH+kwF5UOg0/x2osezHBcTUkL3M/uzcrD/dk9V sS2GC5frqRqDcgpRiUPH9O7zPeMPjWAmDIf3RHJ6jEIXHT0WOzaiwAY4SldZ1seiab+0 Bg8NSG0fLLJG/HBGMwX5ofLgqAVq/kQNh3VVhMRW5+V5isoFtD12a+ohNxC6JoeUrkml Eg69XoyZqZa6xDRU+Cpc5lPt8TMLlp/pu+F737NGX55csKtQnC3v6Uby2VwvZlNbyxkL aJnA== X-Gm-Message-State: ALoCoQlZR/n+BTYjCkr4X6cWgkoigxHpDtNF3I6dJeQg+WdSNiynUC/pkQFKGys66UrzUkU2sFLv X-Received: by 10.202.93.4 with SMTP id r4mr28985111oib.92.1435070758661; Tue, 23 Jun 2015 07:45:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.182.96.167 with HTTP; Tue, 23 Jun 2015 07:45:38 -0700 (PDT) In-Reply-To: <1435069850-11830-1-git-send-email-patrick@parcs.ath.cx> References: <1435069850-11830-1-git-send-email-patrick@parcs.ath.cx> From: Patrick Palka Date: Tue, 23 Jun 2015 14:46:00 -0000 Message-ID: Subject: Re: [PATCH] Fix GDBHISTSIZE test failure on i686 To: "gdb-patches@sourceware.org" Cc: Patrick Palka Content-Type: text/plain; charset=UTF-8 X-SW-Source: 2015-06/txt/msg00467.txt.bz2 On Tue, Jun 23, 2015 at 10:30 AM, Patrick Palka wrote: > The test > > test_histsize_history_setting "99999999999999999999999999999999999" "unlimited" > > was failing on i686 because the condition in init_history() for > determining whether to map a large GDBHISTSIZE value to infinity was > > long var = strtol (tmpenv); > if (var > INT_MAX) > history_size = unlimited; > > but this condition is never true on i686 because INT_MAX == LONG_MAX. > So in order to properly map large out-of-range values of GDBHISTSIZE to > infinity on targets where LONG_MAX > INT_MAX as well as on i686, we have > to instead change the above condition to > > if (var > INT_MAX > || (var == INT_MAX && errno == ERANGE)) > history_size = unlimited; > > [ I did not test this patch on i686 because I don't have access to > such a machine. But the patch seems straightforward enough... ] > > gdb/ChangeLog: > > * top.c (init_history): Look at the errno set by strtol to > properly map large GDBHISTSIZE values to infinity. > --- > gdb/top.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/gdb/top.c b/gdb/top.c > index 5114c2e..afb14be 100644 > --- a/gdb/top.c > +++ b/gdb/top.c > @@ -1734,10 +1734,12 @@ init_history (void) > if (tmpenv) > { > long var; > + int saved_errno; > char *endptr; > > tmpenv = skip_spaces (tmpenv); > var = strtol (tmpenv, &endptr, 10); > + saved_errno = errno; errno should be set to 0 before the call to strtol. > endptr = skip_spaces (endptr); > > /* If GDBHISTSIZE is non-numeric then ignore it. If GDBHISTSIZE is the > @@ -1749,7 +1751,12 @@ init_history (void) > ; > else if (*tmpenv == '\0' > || var < 0 > - || var > INT_MAX) > + || var > INT_MAX > + /* On targets where INT_MAX == LONG_MAX, we have to look at > + the errno set by strtol to distinguish between a value that > + is exactly INT_MAX and an overflowing value that was clamped > + to INT_MAX. */ > + || (var == INT_MAX && saved_errno == ERANGE)) > history_size_setshow_var = -1; > else > history_size_setshow_var = var; > -- > 2.4.4.410.g43ed522.dirty >