From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x52f.google.com (mail-pg1-x52f.google.com [IPv6:2607:f8b0:4864:20::52f]) by sourceware.org (Postfix) with ESMTPS id F3E4E3858C54 for ; Tue, 12 Apr 2022 16:26:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org F3E4E3858C54 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-x52f.google.com with SMTP id u2so2433871pgq.10 for ; Tue, 12 Apr 2022 09:26:36 -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=ScDVOSAVtSS/2ujLfN7Yk7KddVpJ4sXotkGLB3EUFIA=; b=FlMEEchELDbJK4D0o2bm0RtW55Cv34ItPCQUIzjpQuP7U2Tfe6qeMt/bMzuqYxA6c5 69yrsfEYnVg73rNmF772UtXnQu0KkpYm2FANVP2th5ZIoIDFhAUVjao6Agi7P9xWGki0 sClQiZskchobIfYb6QgSby6YOI8rNgyb5F3kwkejhSMVtZNDG8v4DazckcdeVNj5E7Cs LKIgWH4J5cymdJh4WZ5LFWUcols0TqJAkZ9Q1XR8d16TSaS13rkC0CejYt8MxDJeTra9 gQRDpBKUMamkpN8AAZlZPUHFq4CgmY51OOV/PsyYLrz61GH368Dl7tRgk1pHJ4m1o1YD ElfA== 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=ScDVOSAVtSS/2ujLfN7Yk7KddVpJ4sXotkGLB3EUFIA=; b=qeH+WKVF8tg1TeXy+cQ7LiamEO5GlZ2R00j6XKK8trW5xg2jZG8PAobU5YejjYrpBI J87x76ERTnikoobzRRIRPSQt1EUrPEm2d9YvXL3lev3fMJEKDF/3IAwUnMzZZpQjtWt/ /5yt8Ta9pEVCBEbc4OeDOQHEGp9vQqzQFCh47WYXp/LpG6wPflyql2SHdu7MZmxTUrRk HaeDyVpYXh+N61vG2b8KV8XR0HWJYgAxaID+c5M1qZM0ZXXOHmxLIZ/k8b5WewubHqeI sNg4tqLBHnebSMKD4mJUpSJTIVlGlqcM9DVQOv3gkNN6cEu6QJbiDs0TYhEad0jY+61m dVbQ== X-Gm-Message-State: AOAM530Emi7fvFxDZISfYxWqLSRXrethfn5sdqv7PF1g8z3drKI7NE/k NKzUMrwCcNXQ+6VkBA0PkSzwls/OTuMHLHsW X-Google-Smtp-Source: ABdhPJzADCxS5orsUNpi2ffN08Mh6RXtlTKQeCd1TuCk8rludsgLvOQh8/rlkmiaivmtg60HnZBbWw== X-Received: by 2002:a05:6a00:2d0:b0:4f4:1f34:e39d with SMTP id b16-20020a056a0002d000b004f41f34e39dmr38888046pft.14.1649780795627; Tue, 12 Apr 2022 09:26:35 -0700 (PDT) Received: from patrick-ThinkPad-X1-Carbon-Gen-8.hq.rivosinc.com ([12.3.194.138]) by smtp.gmail.com with ESMTPSA id x5-20020aa79a45000000b00505c1ab148esm8385246pfj.131.2022.04.12.09.26.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 09:26:35 -0700 (PDT) From: Patrick O'Neill To: binutils@sourceware.org Cc: gnu-toolchain@rivosinc.com, palmer@dabbelt.com, andrew@sifive.com, Patrick O'Neill Subject: [PATCH 1/4] RISCV: Add linker relaxation tests Date: Tue, 12 Apr 2022 09:25:58 -0700 Message-Id: <20220412162601.146507-2-patrick@rivosinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220412162601.146507-1-patrick@rivosinc.com> References: <20220412162601.146507-1-patrick@rivosinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.1 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.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Tue, 12 Apr 2022 16:26:38 -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-04-11 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 272424b33e..60f7cc5f20 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 0000000000..3e7bfb500c --- /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 0000000000..7b81e28f99 --- /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 0000000000..7481bea8c1 --- /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 0000000000..7f5844a678 --- /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 0000000000..5c49222e05 --- /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 0000000000..66e7c02ca1 --- /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 0000000000..09e939ca9b --- /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 0000000000..44eed0bc12 --- /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 0000000000..d9f44e5f8a --- /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 0000000000..5605fb14e7 --- /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 0000000000..c385ccb551 --- /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 0000000000..6df73e108f --- /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