From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rock.gnat.com (rock.gnat.com [205.232.38.15]) by sourceware.org (Postfix) with ESMTP id BBA9E383E800 for ; Sun, 8 Nov 2020 06:30:40 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org BBA9E383E800 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=brobecke@adacore.com Received: from localhost (localhost.localdomain [127.0.0.1]) by filtered-rock.gnat.com (Postfix) with ESMTP id 9B90A116970; Sun, 8 Nov 2020 01:30:40 -0500 (EST) X-Virus-Scanned: Debian amavisd-new at gnat.com Received: from rock.gnat.com ([127.0.0.1]) by localhost (rock.gnat.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 6amcPGKUZTh2; Sun, 8 Nov 2020 01:30:40 -0500 (EST) Received: from tron.gnat.com (tron.gnat.com [205.232.38.10]) by rock.gnat.com (Postfix) with ESMTP id 8BDDD1164A5; Sun, 8 Nov 2020 01:30:40 -0500 (EST) Received: by tron.gnat.com (Postfix, from userid 4233) id 8921D103; Sun, 8 Nov 2020 01:30:40 -0500 (EST) From: Joel Brobecker To: gdb-patches@sourceware.org Cc: Joel Brobecker Subject: [PATCH 4/9] Move uinteger_pow gdb/valarith.c to gdb/utils.c and make it public Date: Sun, 8 Nov 2020 01:30:12 -0500 Message-Id: <1604817017-25807-5-git-send-email-brobecker@adacore.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1604817017-25807-1-git-send-email-brobecker@adacore.com> References: <1604817017-25807-1-git-send-email-brobecker@adacore.com> X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 08 Nov 2020 06:30:41 -0000 This is a generic function which I would like to use in a followup patch adding support for fixed-point types. So this commit moves it out of valarith.c into util.c, and makes it non-static. gdb/ChangeLog: * utils.h (uinteger_pow): Add declaration. * utils.c (uinteger_pow): Moved here (without changes)... * valarith.c (uinteger_pow): ... from here. --- gdb/utils.c | 30 ++++++++++++++++++++++++++++++ gdb/utils.h | 7 +++++++ gdb/valarith.c | 31 ------------------------------- 3 files changed, 37 insertions(+), 31 deletions(-) diff --git a/gdb/utils.c b/gdb/utils.c index ab931c3..3226656 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -709,6 +709,36 @@ myread (int desc, char *addr, int len) return orglen; } +/* See utils.h. */ + +ULONGEST +uinteger_pow (ULONGEST v1, LONGEST v2) +{ + if (v2 < 0) + { + if (v1 == 0) + error (_("Attempt to raise 0 to negative power.")); + else + return 0; + } + else + { + /* The Russian Peasant's Algorithm. */ + ULONGEST v; + + v = 1; + for (;;) + { + if (v2 & 1L) + v *= v1; + v2 >>= 1; + if (v2 == 0) + return v; + v1 *= v1; + } + } +} + void print_spaces (int n, struct ui_file *file) { diff --git a/gdb/utils.h b/gdb/utils.h index 6948908..a8c65ed 100644 --- a/gdb/utils.h +++ b/gdb/utils.h @@ -593,6 +593,13 @@ extern pid_t wait_to_die_with_timeout (pid_t pid, int *status, int timeout); extern int myread (int, char *, int); +/* Integer exponentiation: Return V1**V2, where both arguments + are integers. + + Requires V1 != 0 if V2 < 0. + Returns 1 for 0 ** 0. */ +extern ULONGEST uinteger_pow (ULONGEST v1, LONGEST v2); + /* Resource limits used by getrlimit and setrlimit. */ enum resource_limit_kind diff --git a/gdb/valarith.c b/gdb/valarith.c index 21b597a..f6caf3d 100644 --- a/gdb/valarith.c +++ b/gdb/valarith.c @@ -819,37 +819,6 @@ integer_pow (LONGEST v1, LONGEST v2) } } -/* Integer exponentiation: V1**V2, where both arguments are - integers. Requires V1 != 0 if V2 < 0. Returns 1 for 0 ** 0. */ - -static ULONGEST -uinteger_pow (ULONGEST v1, LONGEST v2) -{ - if (v2 < 0) - { - if (v1 == 0) - error (_("Attempt to raise 0 to negative power.")); - else - return 0; - } - else - { - /* The Russian Peasant's Algorithm. */ - ULONGEST v; - - v = 1; - for (;;) - { - if (v2 & 1L) - v *= v1; - v2 >>= 1; - if (v2 == 0) - return v; - v1 *= v1; - } - } -} - /* Obtain argument values for binary operation, converting from other types if one of them is not floating point. */ static void -- 2.1.4