From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) by sourceware.org (Postfix) with ESMTPS id 2FFEF383B79B for ; Fri, 27 May 2022 21:20:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2FFEF383B79B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivosinc.com Received: by mail-pg1-x530.google.com with SMTP id d129so4914932pgc.9 for ; Fri, 27 May 2022 14:20:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RtRixLeJRrP79CXt37p4HiizQf0UFULOl6O+bVj6Vxo=; b=dUWBo3Ay+W1H/Bz4YThStJEalgaOC9K540eWCYunTUDQGpghdWZ8QPUyZqJeMxGpka MYEEkZevpeEfKIovfm3RCBx7F5l29cfhQJSmkZSryp7ezAIgQDCMLDRbEaTVGrkZkZee cxgAS18c+ccnpAhmHQcrwdaswNJdgWY9kt1Fti3qvPo6554XtXFPk0vueGZsHWBC+zwY 98hJBWIhm7GebH5qkW1QJwODs/ea+RoBAe6RWaJmlCWSBpsS30Ko0+CWSrAN9mprWY3D BLt2CWPQow6hfmvWkA6Q64GWcr1g3zjhhU8rPhfXDtM3rBh51YJpwNI1SGA8VoFYgSdH PCmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=RtRixLeJRrP79CXt37p4HiizQf0UFULOl6O+bVj6Vxo=; b=xqIeMKlWiok4xdVEulPwnWUS/eSnc8m+QKK1hEi81fcHT43vd8cQwGQq8oL/Ea5vBa oWZPNnilvnAqnAfNgFa5ISK3a1bZjHdfYzNsMhCa5HpgW3vighpGreuMdTWmKqNCm+M1 f1GX/I1s3tLjkNO9/S4ikmV5xZ2x5PYe9xcaNXCQiyDwhprsaCTHUKR6cRicRvnT16eY O923gRPIxme4PmNYRMACWPK/8RrvPEB/FTZiH1hCkSx38QhNBaq0V742EsFVcbi5gWfU +dc9TH2W9PEw2vWC16LF7R+GQr4EE5GT8xyzSO331hEqvED/gmHXWVh05QxNYIn8URD3 9FXA== X-Gm-Message-State: AOAM531j8lHSu/EtFX1rprFwRUEEvHhFohY3c8kpdqEH65BtVZ8t/Auu 9ewqyWOSqEvF944/RDVPdnSSJVGswXDyCQ== X-Google-Smtp-Source: ABdhPJzhoWH7dJKbCdxFVI7ddhrBUAT484H6hNmQyp9d0GJomSaT7Ea/hSIRaZkl5WhXlp+LuQkIUg== X-Received: by 2002:a05:6a00:21c6:b0:4fa:914c:2c2b with SMTP id t6-20020a056a0021c600b004fa914c2c2bmr45496813pfj.56.1653686440840; Fri, 27 May 2022 14:20:40 -0700 (PDT) Received: from patrick-ThinkPad-X1-Carbon-Gen-8.hq.rivosinc.com ([12.3.194.138]) by smtp.gmail.com with ESMTPSA id o20-20020a63fb14000000b003ed6b3dc52esm3901320pgh.55.2022.05.27.14.20.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 May 2022 14:20:39 -0700 (PDT) From: Patrick O'Neill To: binutils@sourceware.org, nelson.chu@sifive.com Cc: gnu-toolchain@rivosinc.com, jim.wilson.gcc@gmail.com, palmer@rivosinc.com, andrew@sifive.com, kito.cheng@gmail.com, Patrick O'Neill Subject: [PATCH v3 1/3] RISCV: Add linker relaxation tests Date: Fri, 27 May 2022 14:20:03 -0700 Message-Id: <20220527212005.30709-2-patrick@rivosinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220527212005.30709-1-patrick@rivosinc.com> References: <20220502135048.1392596-1-patrick@rivosinc.com> <20220527212005.30709-1-patrick@rivosinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 May 2022 21:20:44 -0000 Add basic tests for the behavior of relaxing function calls. This covers behavior like relaxing a call, not relaxing a call, and relaxing a call that is enabled by relaxing another call. 2022-05-27 Patrick O'Neill * ld-riscv-elf.exp: Add testcases. * relax-call-1.d: Add new testcase. * relax-call-1.s: Likewise. * relax-call-2.d: Likewise. * relax-call-2.s: Likewise. * relax-call-3.d: Likewise. * relax-call-3.s: Likewise. * relax-call-4.d: Likewise. * relax-call-4.s: Likewise. * relax-call-5.d: Likewise. * relax-call-5.s: Likewise. * relax-call-6.d: Likewise. * relax-call-6.s: Likewise. Signed-off-by: Patrick O'Neill --- ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp | 6 ++++++ ld/testsuite/ld-riscv-elf/relax-call-1.d | 17 +++++++++++++++ ld/testsuite/ld-riscv-elf/relax-call-1.s | 7 ++++++ ld/testsuite/ld-riscv-elf/relax-call-2.d | 21 ++++++++++++++++++ ld/testsuite/ld-riscv-elf/relax-call-2.s | 10 +++++++++ ld/testsuite/ld-riscv-elf/relax-call-3.d | 25 ++++++++++++++++++++++ ld/testsuite/ld-riscv-elf/relax-call-3.s | 13 +++++++++++ ld/testsuite/ld-riscv-elf/relax-call-4.d | 19 ++++++++++++++++ ld/testsuite/ld-riscv-elf/relax-call-4.s | 8 +++++++ ld/testsuite/ld-riscv-elf/relax-call-5.d | 23 ++++++++++++++++++++ ld/testsuite/ld-riscv-elf/relax-call-5.s | 11 ++++++++++ ld/testsuite/ld-riscv-elf/relax-call-6.d | 22 +++++++++++++++++++ ld/testsuite/ld-riscv-elf/relax-call-6.s | 11 ++++++++++ 13 files changed, 193 insertions(+) create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-1.d create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-1.s create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-2.d create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-2.s create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-3.d create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-3.s create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-4.d create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-4.s create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-5.d create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-5.s create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-6.d create mode 100644 ld/testsuite/ld-riscv-elf/relax-call-6.s diff --git a/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp b/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp index 272424b33e3..60f7cc5f208 100644 --- a/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp +++ b/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp @@ -119,6 +119,12 @@ proc run_relax_twice_test {} { } if [istarget "riscv*-*-*"] { + run_dump_test "relax-call-1" + run_dump_test "relax-call-2" + run_dump_test "relax-call-3" + run_dump_test "relax-call-4" + run_dump_test "relax-call-5" + run_dump_test "relax-call-6" run_dump_test "align-small-region" run_dump_test "call-relax" run_dump_test "pcgp-relax-01" diff --git a/ld/testsuite/ld-riscv-elf/relax-call-1.d b/ld/testsuite/ld-riscv-elf/relax-call-1.d new file mode 100644 index 00000000000..3e7bfb500c9 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-1.d @@ -0,0 +1,17 @@ +#source: relax-call-1.s +#ld: --relax +#objdump: -d + + +.*: file format .* + + +Disassembly of section \.text: + +.*: +.*ret + +.* <_start>: +.*jal.* +.*ret +#pass \ No newline at end of file diff --git a/ld/testsuite/ld-riscv-elf/relax-call-1.s b/ld/testsuite/ld-riscv-elf/relax-call-1.s new file mode 100644 index 00000000000..7b81e28f99f --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-1.s @@ -0,0 +1,7 @@ + .text +foo: + jr ra + .globl _start +_start: + call foo + jr ra diff --git a/ld/testsuite/ld-riscv-elf/relax-call-2.d b/ld/testsuite/ld-riscv-elf/relax-call-2.d new file mode 100644 index 00000000000..7481bea8c1e --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-2.d @@ -0,0 +1,21 @@ +#source: relax-call-2.s +#ld: --relax +#objdump: -d + + +.*: file format .* + + +Disassembly of section \.text: + +.*: +.*ret + +.*: +.*ret + +.* <_start>: +.*jal.* +.*jal.* +.*ret +#pass \ No newline at end of file diff --git a/ld/testsuite/ld-riscv-elf/relax-call-2.s b/ld/testsuite/ld-riscv-elf/relax-call-2.s new file mode 100644 index 00000000000..7f5844a6789 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-2.s @@ -0,0 +1,10 @@ + .text +foo: + jr ra +bar: + jr ra + .globl _start +_start: + call foo + call bar + jr ra diff --git a/ld/testsuite/ld-riscv-elf/relax-call-3.d b/ld/testsuite/ld-riscv-elf/relax-call-3.d new file mode 100644 index 00000000000..5c49222e056 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-3.d @@ -0,0 +1,25 @@ +#source: relax-call-3.s +#ld: --relax +#objdump: -d + + +.*: file format .* + + +Disassembly of section \.text: + +.*: +.*ret + +.*: +.*ret + +.*: +.*ret + +.* <_start>: +.*jal.* +.*jal.* +.*jal.* +.*ret +#pass \ No newline at end of file diff --git a/ld/testsuite/ld-riscv-elf/relax-call-3.s b/ld/testsuite/ld-riscv-elf/relax-call-3.s new file mode 100644 index 00000000000..66e7c02ca19 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-3.s @@ -0,0 +1,13 @@ + .text +foo: + jr ra +bar: + jr ra +baz: + jr ra + .globl _start +_start: + call foo + call bar + call baz + jr ra diff --git a/ld/testsuite/ld-riscv-elf/relax-call-4.d b/ld/testsuite/ld-riscv-elf/relax-call-4.d new file mode 100644 index 00000000000..09e939ca9b4 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-4.d @@ -0,0 +1,19 @@ +#source: relax-call-4.s +#ld: --relax +#objdump: -d + + +.*: file format .* + + +Disassembly of section \.text: + +.*: +.*ret +.*\.\.\. + +.* <_start>: +.*auipc.* +.*jalr.* +.*ret +#pass \ No newline at end of file diff --git a/ld/testsuite/ld-riscv-elf/relax-call-4.s b/ld/testsuite/ld-riscv-elf/relax-call-4.s new file mode 100644 index 00000000000..44eed0bc128 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-4.s @@ -0,0 +1,8 @@ + .text +foo: + jr ra + .zero 1048570 + .globl _start +_start: + call foo + jr ra diff --git a/ld/testsuite/ld-riscv-elf/relax-call-5.d b/ld/testsuite/ld-riscv-elf/relax-call-5.d new file mode 100644 index 00000000000..d9f44e5f8a2 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-5.d @@ -0,0 +1,23 @@ +#source: relax-call-5.s +#ld: --relax +#objdump: -d + + +.*: file format .* + + +Disassembly of section \.text: + +.*: +.*ret +.*\.\.\. + +.*: +.*ret + +.* <_start>: +.*auipc.* +.*jalr.* +.*jal.* +.*ret +#pass \ No newline at end of file diff --git a/ld/testsuite/ld-riscv-elf/relax-call-5.s b/ld/testsuite/ld-riscv-elf/relax-call-5.s new file mode 100644 index 00000000000..5605fb14e78 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-5.s @@ -0,0 +1,11 @@ + .text +foo: + jr ra + .zero 1048566 +bar: + jr ra + .globl _start +_start: + call foo + call bar + jr ra diff --git a/ld/testsuite/ld-riscv-elf/relax-call-6.d b/ld/testsuite/ld-riscv-elf/relax-call-6.d new file mode 100644 index 00000000000..c385ccb5511 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-6.d @@ -0,0 +1,22 @@ +#source: relax-call-6.s +#ld: --relax +#objdump: -d + + +.*: file format .* + + +Disassembly of section \.text: + +.*: +.*ret +.*\.\.\. + +.*: +.*ret + +.* <_start>: +.*jal.* +.*jal.* +.*ret +#pass \ No newline at end of file diff --git a/ld/testsuite/ld-riscv-elf/relax-call-6.s b/ld/testsuite/ld-riscv-elf/relax-call-6.s new file mode 100644 index 00000000000..6df73e108f4 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/relax-call-6.s @@ -0,0 +1,11 @@ + .text +foo: + jr ra + .zero 1048560 +bar: + jr ra + .globl _start +_start: + call bar + call foo + jr ra -- 2.25.1