From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id KIeDGPVBlWIQVAkAWB0awg (envelope-from ) for ; Mon, 30 May 2022 18:15:17 -0400 Received: by simark.ca (Postfix, from userid 112) id 603291E221; Mon, 30 May 2022 18:15:17 -0400 (EDT) Authentication-Results: simark.ca; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.a=rsa-sha256 header.s=default header.b=JEzjA9ma; dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_DYNAMIC,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 834C41E01D for ; Mon, 30 May 2022 18:15:16 -0400 (EDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2B1EC384B0CC for ; Mon, 30 May 2022 22:15:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2B1EC384B0CC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1653948916; bh=1Dv/L7PogKtqHW4K47WjN50E2FdPvzps0utBs7cb8k4=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=JEzjA9ma4Sh/CLMnLCp/gvFuNhYH20Wyg7zHyUXZ26oJRT6Ay33gG3/ekR5VRQM9z Yngqk/jgCQ6iOV+X4no2GWTYhOeOqUvVHazCcy93Zu+59NH1eBzP4/nHAulqBFC8mU V6rZsbDrW9pC3FZqNcxlP+oWkGx703hXLqFXRuOA= Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 9A3CC38485B8 for ; Mon, 30 May 2022 22:12:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9A3CC38485B8 Received: from pps.filterd (m0098417.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 24UHuXH0011801; Mon, 30 May 2022 22:12:43 GMT Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3gd2s43e4a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 30 May 2022 22:12:43 +0000 Received: from m0098417.ppops.net (m0098417.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 24UMCgtM015804; Mon, 30 May 2022 22:12:42 GMT Received: from ppma03fra.de.ibm.com (6b.4a.5195.ip4.static.sl-reverse.com [149.81.74.107]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3gd2s43e42-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 30 May 2022 22:12:42 +0000 Received: from pps.filterd (ppma03fra.de.ibm.com [127.0.0.1]) by ppma03fra.de.ibm.com (8.16.1.2/8.16.1.2) with SMTP id 24UM8a6s020105; Mon, 30 May 2022 22:12:40 GMT Received: from b06avi18626390.portsmouth.uk.ibm.com (b06avi18626390.portsmouth.uk.ibm.com [9.149.26.192]) by ppma03fra.de.ibm.com with ESMTP id 3gbc97tdfr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 30 May 2022 22:12:40 +0000 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06avi18626390.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 24ULwFMj48955828 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 30 May 2022 21:58:15 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id F208D4C046; Mon, 30 May 2022 22:12:35 +0000 (GMT) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 93A7B4C044; Mon, 30 May 2022 22:12:35 +0000 (GMT) Received: from heavy.ibmuc.com (unknown [9.171.0.196]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTP; Mon, 30 May 2022 22:12:35 +0000 (GMT) To: Tom Tromey , Andrew Burgess Subject: [PATCH v2 6/7] gdb.base/: Introduce n_jit_so_address Date: Tue, 31 May 2022 00:11:46 +0200 Message-Id: <20220530221147.1991835-7-iii@linux.ibm.com> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220530221147.1991835-1-iii@linux.ibm.com> References: <20220530221147.1991835-1-iii@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: bzwOtvwbytBqLmBhJujFR82gaqef6IVL X-Proofpoint-ORIG-GUID: OmliwBX8T_uOQ9HBdB9p2s8rJ4kbiyft X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.874,Hydra:6.0.517,FMLib:17.11.64.514 definitions=2022-05-30_09,2022-05-30_03,2022-02-23_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 priorityscore=1501 mlxlogscore=999 mlxscore=0 suspectscore=0 spamscore=0 bulkscore=0 adultscore=0 impostorscore=0 clxscore=1015 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2204290000 definitions=main-2205300117 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: , From: Ilya Leoshkevich via Gdb-patches Reply-To: Ilya Leoshkevich Cc: Ulrich Weigand , Andreas Arnez , gdb-patches@sourceware.org, Pedro Alves , Ilya Leoshkevich Errors-To: gdb-patches-bounces+public-inbox=simark.ca@sourceware.org Sender: "Gdb-patches" Move computing shared library load addresses into a separate function (both in TCL and C). This eliminates repetition and is useful for sharing with performance tests. --- gdb/testsuite/gdb.base/jit-elf-fork-main.c | 11 +---------- gdb/testsuite/gdb.base/jit-elf-main.c | 11 +---------- gdb/testsuite/gdb.base/jit-elf-util.h | 17 +++++++++++++++++ gdb/testsuite/lib/jit-elf-helpers.exp | 9 +++++++-- 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/gdb/testsuite/gdb.base/jit-elf-fork-main.c b/gdb/testsuite/gdb.base/jit-elf-fork-main.c index 96fadaa57b7..6e1b3db3d5a 100644 --- a/gdb/testsuite/gdb.base/jit-elf-fork-main.c +++ b/gdb/testsuite/gdb.base/jit-elf-fork-main.c @@ -39,15 +39,6 @@ usage (void) exit (1); } -/* Must be defined by .exp file when compiling to know - what address to map the ELF binary to. */ -#ifndef LOAD_ADDRESS -#error "Must define LOAD_ADDRESS" -#endif -#ifndef LOAD_INCREMENT -#error "Must define LOAD_INCREMENT" -#endif - int main (int argc, char *argv[]) { @@ -65,7 +56,7 @@ main (int argc, char *argv[]) for (i = 1; i < argc; ++i) { size_t obj_size; - void *load_addr = (void *) (size_t) (LOAD_ADDRESS + (i - 1) * LOAD_INCREMENT); + void *load_addr = n_jit_so_address (i); printf ("Loading %s as JIT at %p\n", argv[i], load_addr); void *addr = load_elf (argv[i], &obj_size, load_addr); diff --git a/gdb/testsuite/gdb.base/jit-elf-main.c b/gdb/testsuite/gdb.base/jit-elf-main.c index 8f482748ee5..604fb07aa8a 100644 --- a/gdb/testsuite/gdb.base/jit-elf-main.c +++ b/gdb/testsuite/gdb.base/jit-elf-main.c @@ -48,15 +48,6 @@ usage (void) #define MAIN main #endif -/* Must be defined by .exp file when compiling to know - what address to map the ELF binary to. */ -#ifndef LOAD_ADDRESS -#error "Must define LOAD_ADDRESS" -#endif -#ifndef LOAD_INCREMENT -#error "Must define LOAD_INCREMENT" -#endif - /* Used to spin waiting for GDB. */ volatile int wait_for_gdb = ATTACH; #define WAIT_FOR_GDB do {} while (wait_for_gdb) @@ -84,7 +75,7 @@ MAIN (int argc, char *argv[]) for (i = 1; i < argc; ++i) { size_t obj_size; - void *load_addr = (void *) (size_t) (LOAD_ADDRESS + (i - 1) * LOAD_INCREMENT); + void *load_addr = n_jit_so_address (i); printf ("Loading %s as JIT at %p\n", argv[i], load_addr); void *addr = load_elf (argv[i], &obj_size, load_addr); diff --git a/gdb/testsuite/gdb.base/jit-elf-util.h b/gdb/testsuite/gdb.base/jit-elf-util.h index 419a781f865..faa1a21204a 100644 --- a/gdb/testsuite/gdb.base/jit-elf-util.h +++ b/gdb/testsuite/gdb.base/jit-elf-util.h @@ -117,3 +117,20 @@ load_elf (const char *libname, size_t *size, void *load_addr) return addr; } + +/* Must be defined by .exp file when compiling to know + what address to map the ELF binary to. */ +#ifndef LOAD_ADDRESS +#error "Must define LOAD_ADDRESS" +#endif +#ifndef LOAD_INCREMENT +#error "Must define LOAD_INCREMENT" +#endif + +/* Return the address of the SO_NRth shared library. The first shared + library's SO_NR is 1. */ +static void * +n_jit_so_address (int so_nr) +{ + return (void *) (size_t) (LOAD_ADDRESS + (so_nr - 1) * LOAD_INCREMENT); +} diff --git a/gdb/testsuite/lib/jit-elf-helpers.exp b/gdb/testsuite/lib/jit-elf-helpers.exp index 7c17178f800..57513de0927 100644 --- a/gdb/testsuite/lib/jit-elf-helpers.exp +++ b/gdb/testsuite/lib/jit-elf-helpers.exp @@ -72,13 +72,18 @@ proc compile_jit_elf_main_as_so {main_solib_srcfile main_solib_binfile options} return 0 } +# Return the address of the SO_NRth shared library. +proc n_jit_so_address {so_nr} { + global jit_load_address jit_load_increment + return [expr $jit_load_address + $jit_load_increment * [expr $so_nr - 1]] +} + # Compile jit-elf-solib.c as a shared library in multiple copies and # upload them to the target. # # On success, return a list of target path to the shared libraries. # On failure, return -1. proc compile_and_download_n_jit_so {jit_solib_basename jit_solib_srcfile count} { - global jit_load_address jit_load_increment set binfiles_target {} for {set i 1} {$i <= $count} {incr i} { @@ -88,7 +93,7 @@ proc compile_and_download_n_jit_so {jit_solib_basename jit_solib_srcfile count} # do symbol renaming by munging on ELF symbol table, and that # wouldn't work for .debug sections. Also, output for "info # function" changes when debug info is present. - set addr [format 0x%x [expr $jit_load_address + $jit_load_increment * [expr $i-1]]] + set addr [format 0x%x [n_jit_so_address $i]] # Use "text_segment=..." to ask the linker to relocate everything in the # compiled shared library against a fixed base address. Combined -- 2.35.3