From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pf1-x436.google.com (mail-pf1-x436.google.com [IPv6:2607:f8b0:4864:20::436]) by sourceware.org (Postfix) with ESMTPS id 0E7E33858D28 for ; Mon, 30 Jan 2023 21:07:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0E7E33858D28 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-pf1-x436.google.com with SMTP id z31so8787632pfw.4 for ; Mon, 30 Jan 2023 13:07:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20210112.gappssmtp.com; s=20210112; h=to:from:cc:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:from:to:cc:subject:date :message-id:reply-to; bh=R6NO/xN8O+Ldn0KjhRHQK3pk7XXD6nX/BDvHMGfbbjM=; b=gjNUaPVj68LoAPeaHyWq8DB5fhzYVbZ/NblPxjluoCaeP2t4QYMVuQFngcQWiZVV55 Jp8vkUcyo857y+Qg7L+0qj1CxECKzwLkn97GPl6HykCwfx2xRFMEQ6CzoxIeFf31OKJl zeFZwKs8xyWMBPBp4lIZXbyHSYU/mpgA8c2CeaItapfRphayuT1QpCke1pUYIzRHppjq QwG5u2ePM2sGrJqliUOrxLb3jaQZeoNQf9YkQRdnfpM0Od+8IlRhdJ83Jgw9y4HZqF2q 1JZ0D3MBdhzmOEC/IGWTCwQ4VntlZ4Pr1wl925sGd9NP3ziPcmL2frwqouJDPk1qUQ/e OM2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:from:cc:content-transfer-encoding:mime-version:references :in-reply-to:message-id:date:subject:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R6NO/xN8O+Ldn0KjhRHQK3pk7XXD6nX/BDvHMGfbbjM=; b=QCoIdnkOCQfV7rFpM3j9B11ozMNf8XuCFh9jctGiQYRM121UrT0Ih0EWV0mSV/BzK8 0gd2LQGNyN2dgmvBddjtjAXABsqCMPJUpAyZsF3/XAKojK1x6K5uUK3IWkxf1HjNQ0KV OuvKsgSu8aiObLXB1Ed9+bqH6nh53OeVPp/wayWAuBV6r3RjoXOAXlU68RwXdD8Vq7QX 0FRgRbjot701DW7w5n8+vq3H7Kwa3LbdRYTRe+B35vvEfNIfJHurA94X9DyPUQlLKd+1 OB85GljEz+OYcfGw3Gl2xpNftpFlGEGz9XcoHzt1LvpjgT27PagJJhqJdue4RP7lHvaU JWNg== X-Gm-Message-State: AO0yUKWsOeubaxTmzOXWc2bmoRbIN/xUk+vmQFuD4Xv+GNm9bTIhwX1e hwj9GfWtLoCjOda+l83UjSxCeNUlqzLtbsGY X-Google-Smtp-Source: AK7set+WAjUzSwidrRp1WS+pJaOqVJcJzcN8XgQzNagYMxthWh5LDfHOKtq+HtKw3xCFX++PtCqaeA== X-Received: by 2002:a05:6a00:1797:b0:593:e243:46a4 with SMTP id s23-20020a056a00179700b00593e24346a4mr2601068pfg.3.1675112822869; Mon, 30 Jan 2023 13:07:02 -0800 (PST) Received: from localhost ([135.180.226.51]) by smtp.gmail.com with ESMTPSA id w22-20020a056a0014d600b00590444eae14sm7820654pfu.183.2023.01.30.13.07.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Jan 2023 13:07:02 -0800 (PST) Subject: [PATCH 2/2] ld: RISC-V: Test R_RISCV_BRANCH truncation errors Date: Mon, 30 Jan 2023 13:06:42 -0800 Message-Id: <20230130210642.7579-2-palmer@rivosinc.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230130210642.7579-1-palmer@rivosinc.com> References: <20230130210642.7579-1-palmer@rivosinc.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Cc: Palmer Dabbelt From: Palmer Dabbelt To: binutils@sourceware.org X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: We can't actually produce binaries with these errors from the assembler, since it magically converts far branches into multi-instruction sequences, so instead use objcopy to make the symbol weak after the assembler has a chance to know that's going to happen. --- ld/testsuite/ld-riscv-elf/far-branch-fail-01.s | 16 ++++++++++++++++ ld/testsuite/ld-riscv-elf/far-branch-fail-02.s | 12 ++++++++++++ ld/testsuite/ld-riscv-elf/far-branch-fail.d | 7 +++++++ ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp | 1 + 4 files changed, 36 insertions(+) create mode 100644 ld/testsuite/ld-riscv-elf/far-branch-fail-01.s create mode 100644 ld/testsuite/ld-riscv-elf/far-branch-fail-02.s create mode 100644 ld/testsuite/ld-riscv-elf/far-branch-fail.d diff --git a/ld/testsuite/ld-riscv-elf/far-branch-fail-01.s b/ld/testsuite/ld-riscv-elf/far-branch-fail-01.s new file mode 100644 index 00000000000..4c96671c78e --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/far-branch-fail-01.s @@ -0,0 +1,16 @@ +.text +.global space1 +space1: +.rep 1024 + nop +.endr + +.global glob +glob: + addi x0, x0, 2 + +.global space2 +space2: +.rep 1024 + nop +.endr diff --git a/ld/testsuite/ld-riscv-elf/far-branch-fail-02.s b/ld/testsuite/ld-riscv-elf/far-branch-fail-02.s new file mode 100644 index 00000000000..fc51a0bed6e --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/far-branch-fail-02.s @@ -0,0 +1,12 @@ +.text +.global _start +_start: + beq a0, a1, space1 + beq a0, a1, glob + beq a0, a1, space2 + +.global glob +glob: +.global glob_orig +glob_orig: + addi x0, x0, 1 diff --git a/ld/testsuite/ld-riscv-elf/far-branch-fail.d b/ld/testsuite/ld-riscv-elf/far-branch-fail.d new file mode 100644 index 00000000000..668b63a8d08 --- /dev/null +++ b/ld/testsuite/ld-riscv-elf/far-branch-fail.d @@ -0,0 +1,7 @@ +#name: fail on branch overflows +#source: far-branch-fail-01.s +#source: far-branch-fail-02.s RUN_OBJCOPY +#objcopy_objects: -W glob +#objdump: -d +#ld: +#error: .*relocation truncated to fit: R_RISCV_BRANCH against symbol.*glob.* diff --git a/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp b/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp index 0f7ccd92ed5..1edbe8bd67a 100644 --- a/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp +++ b/ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp @@ -169,6 +169,7 @@ if [istarget "riscv*-*-*"] { run_dump_test "attr-merge-priv-spec-failed-05" run_dump_test "attr-merge-priv-spec-failed-06" run_dump_test "attr-phdr" + run_dump_test "far-branch-fail" run_ld_link_tests [list \ [list "Weak reference 32" "-T weakref.ld -m[riscv_choose_ilp32_emul]" "" \ "-march=rv32i -mabi=ilp32" {weakref32.s} \ -- 2.39.0