From patchwork Fri Jul 28 05:06:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Maciej W. Rozycki" X-Patchwork-Id: 127325 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:918b:0:b0:3e4:2afc:c1 with SMTP id s11csp204398vqg; Thu, 27 Jul 2023 22:13:16 -0700 (PDT) X-Google-Smtp-Source: APBJJlGpz7HDkf2Qu3x9jQmW979JeT5vpnEGu3SFuXfKkW+D2tL0WUFSPWZsYzfNcaPuffq7y5wu X-Received: by 2002:a17:906:76d8:b0:991:e24f:b288 with SMTP id q24-20020a17090676d800b00991e24fb288mr1047629ejn.26.1690521196078; Thu, 27 Jul 2023 22:13:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690521196; cv=none; d=google.com; s=arc-20160816; b=hvpCF03fnpEeZFPKnl9uaLKGrwZ92z8wd76i2+u35P8MkXHeGrGpo///ABhxN4ua/b pNZBSQ+pgM8eZmhFsM5Dm0Xb+Dw7mmCBXqVro8GBVMwRrI+OaqaARpEtjDPSq9Rv+Q/o qN7t/QhFDGVnZ50x7KBSCbCIGeRJIN1fxLIFbW7J1EYSc7rqKM+kVnZdO0YOVy0ACBHL xlnm3rv/1hRfekoTVCWvyNsl1bhuFgVq5mz/AcAzyqByc3P+4SkaWFRv0BiIe1c7tw5I o0mGYLlRYjjusa80tbxPkzwJ02GKx8wk69Wd0w8Cz/AbTm7hMS82JlA9gCs5VWUqJe6r R3Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:mime-version:user-agent :references:message-id:in-reply-to:subject:cc:to:from:date :dmarc-filter:delivered-to; bh=rAAtp/9/73Af0wIZoIUDyrsNVqUQFFeq//UQzQO45gI=; fh=Qo2J6dANwcPjQn140TSErRwEzDQnKw4Tx4jp1VOUUcA=; b=xEdNdUJNdxggLIaX86RDiajSmnUgbUBza8rZljmDDZwjjyBzSygSXbje9Cexg0QSdP dsK7o6m3OMXX7IBeIle9YkLfdUR+Epc9N9t3p5SbLVdNexlCxpGVILNpeeDUDozDsRxc Sa8vixpLfow/FPcdAmOeyw8hkwt3Jf5cC0XRvVDJfK4g+/lras/KDA8Ie97K/iRxhg/G VMwQeJY2Hhe73m8aYQS2I6SeNxggwQYIUAOCDFbFdmWuYTc8oC8PWUuEDm33WGjwDA0Y f03GAzMyST6QFe0CgPLh/wDFHcwS18Je4GSUURuVNuKFnMh1YWMcQLLNeiE/VSa4c3W3 TB+w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id um26-20020a170906cf9a00b0099bd7b2663dsi2221066ejb.142.2023.07.27.22.13.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Jul 2023 22:13:16 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 06E9F3882646 for ; Fri, 28 Jul 2023 05:08:00 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from angie.orcam.me.uk (angie.orcam.me.uk [IPv6:2001:4190:8020::34]) by sourceware.org (Postfix) with ESMTP id A82F5386EC08 for ; Fri, 28 Jul 2023 05:06:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A82F5386EC08 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=orcam.me.uk Authentication-Results: sourceware.org; spf=none smtp.mailfrom=orcam.me.uk Received: by angie.orcam.me.uk (Postfix, from userid 500) id 2DC6292009E; Fri, 28 Jul 2023 07:06:47 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by angie.orcam.me.uk (Postfix) with ESMTP id 20D6092009D; Fri, 28 Jul 2023 06:06:47 +0100 (BST) Date: Fri, 28 Jul 2023 06:06:47 +0100 (BST) From: "Maciej W. Rozycki" To: Nick Clifton cc: YunQiang Su , binutils@sourceware.org Subject: [committed 04/16] MIPS/LD/testsuite: Fix unaligned JALX failures with OpenBSD targets In-Reply-To: Message-ID: References: User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 X-Spam-Status: No, score=-3488.3 required=5.0 tests=BAYES_00, KAM_ASCII_DIVIDERS, KAM_DMARC_STATUS, KAM_INFOUSMEBIZ, KAM_LAZY_DOMAIN_SECURITY, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no 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: , Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772639954177310442 X-GMAIL-MSGID: 1772639954177310442 There are only n64 linker emulations included with `mips64*-*-openbsd*' targets, however the unaligned JALX tests insist on running across all targets and force the n32 ABI, causing link errors with the targets concerned, e.g.: ./ld-new: tmpdir/unaligned-jalx-0.o: ABI is incompatible with that of the selected emulation ./ld-new: failed to merge target specific data of file tmpdir/unaligned-jalx-0.o ./ld-new: tmpdir/unaligned-insn.o: ABI is incompatible with that of the selected emulation ./ld-new: failed to merge target specific data of file tmpdir/unaligned-insn.o Convert the tests then to use the per-ABI framework and run them for the o32 and n32 ABIs, removing these regressions: mips64-openbsd -FAIL: MIPS JALX to unaligned symbol 0 mips64-openbsd -FAIL: MIPS JALX to unaligned symbol 1 mips64-openbsd -FAIL: MIPS JALX to unaligned symbol 2 mips64-openbsd -FAIL: MIPS JALX to unaligned symbol 3 mips64-openbsd -FAIL: MIPS16 JALX to unaligned symbol 0 mips64-openbsd -FAIL: MIPS16 JALX to unaligned symbol 1 mips64-openbsd -FAIL: microMIPS JALX to unaligned symbol 0 mips64-openbsd -FAIL: microMIPS JALX to unaligned symbol 1 mips64el-openbsd -FAIL: MIPS JALX to unaligned symbol 0 mips64el-openbsd -FAIL: MIPS JALX to unaligned symbol 1 mips64el-openbsd -FAIL: MIPS JALX to unaligned symbol 2 mips64el-openbsd -FAIL: MIPS JALX to unaligned symbol 3 mips64el-openbsd -FAIL: MIPS16 JALX to unaligned symbol 0 mips64el-openbsd -FAIL: MIPS16 JALX to unaligned symbol 1 mips64el-openbsd -FAIL: microMIPS JALX to unaligned symbol 0 mips64el-openbsd -FAIL: microMIPS JALX to unaligned symbol 1 Similar tests for the n64 ABI can be added separately, using suitable dump patterns. ld/ * testsuite/ld-mips-elf/unaligned-jalx-0.d: Remove `-32' from the `as' tag. * testsuite/ld-mips-elf/unaligned-jalx-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-2.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-3.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d: Likewise. * testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d: Likewise. * testsuite/ld-mips-elf/mips-elf.exp: Run unaligned JALX tests with `run_dump_test_o32' and `run_dump_test_n32' rather than `run_dump_test'. --- ld/testsuite/ld-mips-elf/mips-elf.exp | 24 ++++++++++++------ ld/testsuite/ld-mips-elf/unaligned-jalx-0.d | 2 - ld/testsuite/ld-mips-elf/unaligned-jalx-1.d | 2 - ld/testsuite/ld-mips-elf/unaligned-jalx-2.d | 2 - ld/testsuite/ld-mips-elf/unaligned-jalx-3.d | 2 - ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d | 2 - ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d | 2 - ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d | 2 - ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d | 2 - 9 files changed, 24 insertions(+), 16 deletions(-) binutils-mips-ld-test-jalx.diff Index: binutils-gdb/ld/testsuite/ld-mips-elf/mips-elf.exp =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/mips-elf.exp +++ binutils-gdb/ld/testsuite/ld-mips-elf/mips-elf.exp @@ -412,14 +412,22 @@ run_dump_test_n64 "bal-jalx-pic-micromip run_dump_test_n64 "bal-jalx-pic-ignore-n64" run_dump_test_n64 "bal-jalx-pic-ignore-micromips-n64" -run_dump_test "unaligned-jalx-0" [list [list ld $abi_ldflags(o32)]] -run_dump_test "unaligned-jalx-1" [list [list ld $abi_ldflags(o32)]] -run_dump_test "unaligned-jalx-2" [list [list ld $abi_ldflags(o32)]] -run_dump_test "unaligned-jalx-3" [list [list ld $abi_ldflags(o32)]] -run_dump_test "unaligned-jalx-mips16-0" [list [list ld $abi_ldflags(o32)]] -run_dump_test "unaligned-jalx-mips16-1" [list [list ld $abi_ldflags(o32)]] -run_dump_test "unaligned-jalx-micromips-0" [list [list ld $abi_ldflags(o32)]] -run_dump_test "unaligned-jalx-micromips-1" [list [list ld $abi_ldflags(o32)]] +run_dump_test_o32 "unaligned-jalx-0" +run_dump_test_n32 "unaligned-jalx-0" [list [list name (n32)]] +run_dump_test_o32 "unaligned-jalx-1" +run_dump_test_n32 "unaligned-jalx-1" [list [list name (n32)]] +run_dump_test_o32 "unaligned-jalx-2" +run_dump_test_n32 "unaligned-jalx-2" [list [list name (n32)]] +run_dump_test_o32 "unaligned-jalx-3" +run_dump_test_n32 "unaligned-jalx-3" [list [list name (n32)]] +run_dump_test_o32 "unaligned-jalx-mips16-0" +run_dump_test_n32 "unaligned-jalx-mips16-0" [list [list name (n32)]] +run_dump_test_o32 "unaligned-jalx-mips16-1" +run_dump_test_n32 "unaligned-jalx-mips16-1" [list [list name (n32)]] +run_dump_test_o32 "unaligned-jalx-micromips-0" +run_dump_test_n32 "unaligned-jalx-micromips-0" [list [list name (n32)]] +run_dump_test_o32 "unaligned-jalx-micromips-1" +run_dump_test_n32 "unaligned-jalx-micromips-1" [list [list name (n32)]] run_dump_test_n32 "unaligned-jalx-addend-0" run_dump_test_n32 "unaligned-jalx-addend-1" Index: binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-0.d =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/unaligned-jalx-0.d +++ binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-0.d @@ -1,7 +1,7 @@ #name: MIPS JALX to unaligned symbol 0 #source: unaligned-jalx-0.s #source: unaligned-insn.s -mips16 -#as: -EB -32 +#as: -EB #ld: -EB -Ttext 0x1c000000 -e 0x1c000000 #objdump: -dr --prefix-addresses --show-raw-insn Index: binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-1.d =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/unaligned-jalx-1.d +++ binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-1.d @@ -1,7 +1,7 @@ #name: MIPS JALX to unaligned symbol 1 #source: unaligned-jalx-1.s #source: unaligned-insn.s -mips16 -#as: -EB -32 +#as: -EB #ld: -EB -Ttext 0x1c000000 -e 0x1c000000 #error: \A[^\n]*: in function `foo':\n #error: \(\.text\+0x[0-9a-f]+\): cannot convert a jump to JALX for a non-word-aligned address\Z Index: binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-2.d =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/unaligned-jalx-2.d +++ binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-2.d @@ -1,7 +1,7 @@ #name: MIPS JALX to unaligned symbol 2 #source: unaligned-jalx-2.s #source: unaligned-insn.s -mips16 -#as: -EB -32 +#as: -EB #ld: -EB -Ttext 0x1c000000 -e 0x1c000000 #objdump: -dr --prefix-addresses --show-raw-insn #dump: unaligned-jalx-0.d Index: binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-3.d =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/unaligned-jalx-3.d +++ binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-3.d @@ -1,7 +1,7 @@ #name: MIPS JALX to unaligned symbol 3 #source: unaligned-jalx-3.s #source: unaligned-insn.s -mips16 -#as: -EB -32 +#as: -EB #ld: -EB -Ttext 0x1c000000 -e 0x1c000000 #error: \A[^\n]*: in function `foo':\n #error: \(\.text\+0x0\): cannot convert a branch to JALX for a non-word-aligned address\Z Index: binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d +++ binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-0.d @@ -1,7 +1,7 @@ #name: microMIPS JALX to unaligned symbol 0 #source: unaligned-jalx-0.s -mmicromips #source: unaligned-insn.s -#as: -EB -32 +#as: -EB #ld: -EB -Ttext 0x1c000000 -e 0x1c000000 #objdump: -dr --prefix-addresses --show-raw-insn Index: binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d +++ binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-micromips-1.d @@ -1,7 +1,7 @@ #name: microMIPS JALX to unaligned symbol 1 #source: unaligned-jalx-1.s -mmicromips #source: unaligned-insn.s -#as: -EB -32 +#as: -EB #ld: -EB -Ttext 0x1c000000 -e 0x1c000000 #error: \A[^\n]*: in function `foo':\n #error: \(\.text\+0x[0-9a-f]+\): cannot convert a jump to JALX for a non-word-aligned address\Z Index: binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d +++ binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-0.d @@ -1,7 +1,7 @@ #name: MIPS16 JALX to unaligned symbol 0 #source: unaligned-jalx-0.s -mips16 #source: unaligned-insn.s -#as: -EB -32 +#as: -EB #ld: -EB -Ttext 0x1c000000 -e 0x1c000000 #objdump: -dr --prefix-addresses --show-raw-insn Index: binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d =================================================================== --- binutils-gdb.orig/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d +++ binutils-gdb/ld/testsuite/ld-mips-elf/unaligned-jalx-mips16-1.d @@ -1,7 +1,7 @@ #name: MIPS16 JALX to unaligned symbol 1 #source: unaligned-jalx-1.s -mips16 #source: unaligned-insn.s -#as: -EB -32 +#as: -EB #ld: -EB -Ttext 0x1c000000 -e 0x1c000000 #error: \A[^\n]*: in function `foo':\n #error: \(\.text\+0x[0-9a-f]+\): cannot convert a jump to JALX for a non-word-aligned address\Z