From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com [IPv6:2607:f8b0:4864:20::72a]) by sourceware.org (Postfix) with ESMTPS id 2EBE13858C52 for ; Mon, 2 May 2022 13:51:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2EBE13858C52 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-qk1-x72a.google.com with SMTP id a22so8296900qkl.5 for ; Mon, 02 May 2022 06:51:38 -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=zLGL563QqQtK27++HXxCSv7Vxgfjs8BPV9zby1BDi0U=; b=YsidLYwzi/8OAxz9FJtNLcvTWFw2D07r8FacIqmvwztt/IQaWIX6RolF7RH1bJLvm/ rST2W+FZqvEhlxIMQYd+Dze7kVCD1t2fKSGvTKpKcwAx/iL6faK75u5D/l6MCmgPDvaj 22i5dqU+u1QukeNyu6U3nSbha3dMc9pC8M7OgrZOW0PLpQX9oNBBBSVcwUPy6oB1eZUZ unpx1g46YMs0ThXVR83/eRudrk0nAm0o6TrucQS9aTpofNFF+VltipptpnWGVYy91VDe nLqzKgDzhTP4B0I/6MXdC02kJwbrjR+vX6GVxPDGgwzH/Y8tPYr3/3RI3fL0ta3ODoBT X+Sw== 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=zLGL563QqQtK27++HXxCSv7Vxgfjs8BPV9zby1BDi0U=; b=lzUheuF/Tpb8o+PQOvaMo/CUR4p9haIrOfTWcsH5Ss1PDiqwgFsoaPryAZIK1Ht2/g YVcaz5sgmRSburEsEUcM4+C4Y4G+TU+yg5PQbhSjq2hTrSuF7FGAXx4I6Wh8rOqsKI6Y qZQ/z/wpDKLoylMDZQWtp2GaiV/8w+KCd1C3OGICh9I8ntLALvyawGohlLTWLVsu3GU3 EVjYNiET5eh1jEqaozzar2sGzzuH2PM2OrJzy/3a8WHMN28kedpoY9yJW0HEXiJuela1 MqTtuOFDMl1LYmw5QcPUQzYPj2D/b/jGRf4Eg7mNSrR2FLysUX0/s2hIR1dBcJAQ4jpB DcbA== X-Gm-Message-State: AOAM531zhsuWoVuxbetUvbw7dBtP4/kg7BOdPgLqco8GKT/Zgsj2eWNs tAJbP+5axwxEt5HbIhx408mBKgSg0+6ULQ== X-Google-Smtp-Source: ABdhPJwHe6vBcewRXB7qg4eh4GdbhrsZjIFUBOJ0J5yH1dBRAUxiDxcZuBgr/hDAoSJTo5KpZARTow== X-Received: by 2002:ae9:efd6:0:b0:69f:e436:c780 with SMTP id d205-20020ae9efd6000000b0069fe436c780mr3247721qkg.205.1651499497202; Mon, 02 May 2022 06:51:37 -0700 (PDT) Received: from localhost.localdomain ([38.101.220.237]) by smtp.gmail.com with ESMTPSA id v19-20020ac873d3000000b002f39b99f69asm4232132qtp.52.2022.05.02.06.51.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 May 2022 06:51:36 -0700 (PDT) From: Patrick O'Neill To: binutils@sourceware.org Cc: kito.cheng@gmail.com, palmer@dabbelt.com, gnu-toolchain@rivosinc.com, Patrick O'Neill Subject: [PATCH v2 1/5] RISCV: Add linker relaxation tests Date: Mon, 2 May 2022 06:50:44 -0700 Message-Id: <20220502135048.1392596-2-patrick@rivosinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220502135048.1392596-1-patrick@rivosinc.com> References: <20220412162601.146507-1-patrick@rivosinc.com> <20220502135048.1392596-1-patrick@rivosinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.8 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: Mon, 02 May 2022 13:51:40 -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-29 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