From patchwork Wed Jan 18 05:11:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mark Harmstone X-Patchwork-Id: 44975 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp2150403wrn; Tue, 17 Jan 2023 21:11:50 -0800 (PST) X-Google-Smtp-Source: AMrXdXvriEoPN791ZBvrf98SqZ2crMfilyiW/vyYNwyyN6d69O9XZaUEUHcUdKV07zoRXc9WrB7x X-Received: by 2002:a50:ef13:0:b0:49b:67c3:39a7 with SMTP id m19-20020a50ef13000000b0049b67c339a7mr6104249eds.20.1674018710169; Tue, 17 Jan 2023 21:11:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674018710; cv=none; d=google.com; s=arc-20160816; b=grf5UiHRL18UuS380rv7hyCHmJt498iM4ULWksSIR61m4JtY+otH4xY3z0hbGt4izL lylS4cAsSTd1aJhCVD8tgyaqNkmXX9zKgI0TgKxJuCt0sjcB8l6fsuZIcmzkXu2Qmzli +Uc38R+dFpnxliLLP/IZiz8iSxwIsLmc0B/n3ZrYEyOficIrTDn7tamM6/pCtXB7j386 re5GJrx599XJ1nP3cc6OE0wNlcGfKd3Qa4IATv0cadHBXIBWgK459qqD5/LU52XsjdOQ ef0fMzO+t1O6cQsgQH8xmGXgrfx2c49hkmlIcNMR6GxUzXCjkCyc2DnygvwxOci+fyX3 cGoQ== 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:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:dkim-signature :dmarc-filter:delivered-to; bh=37Yj++UOFGfD6MOMuW3QDUvuuwsLLNglepvmCODLP/0=; b=yOOhz09yGp7LaBvgJ+Ybr5/VFDjWwovMlonnDiR8cNXfnrPxNtTQEyoGJ6Wax6J4Lj JIYYdL6ctr4dTBegDW+EDF2XabAcL9QHcQ6jB74KNdXTjkOMNAkqOes7KGN61iDZnnFG I9KZcuiixlxZBeYm3A1a+08u9TRQad/P3ahlcK2tFzZFrcKXHPlAfIK0ZdLt1tsBl9/a fBncIRGK4qmXH2+sN5QLgCKJkkGJ33wmva0dxVOhQCkbPGnkA2vExFsLKLfcvWR7ojkB eiev2RqFo4r27SwRc95WriHlRVYFydROXiX2us45khGLvQIv93sgrHZ5DhI4rCYtEqgd awjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20210112 header.b=PY83b2sU; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org" Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id c32-20020a509fa3000000b0049d403fa2c5si16054111edf.181.2023.01.17.21.11.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jan 2023 21:11:50 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com header.s=20210112 header.b=PY83b2sU; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c 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 1B3743858C00 for ; Wed, 18 Jan 2023 05:11:47 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by sourceware.org (Postfix) with ESMTPS id 01FE73858D28 for ; Wed, 18 Jan 2023 05:11:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 01FE73858D28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=harmstone.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-wr1-x42c.google.com with SMTP id n7so6669036wrx.5 for ; Tue, 17 Jan 2023 21:11:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:from:to:cc:subject:date:message-id:reply-to; bh=37Yj++UOFGfD6MOMuW3QDUvuuwsLLNglepvmCODLP/0=; b=PY83b2sUxKEYTQX2SG+Sdm5wJk8BG6O6Bt2FHfLjaLTfvgAj+eu9Vsh9jcTPjuhnLZ APhw/35sJgBVeaMvYHPDBkz0I2jDcczqn/Of6PPZ+ISqkJJBe6PJUkp3xuTgccqM2L4C 0NkG+eoky+40FLM2ok5R2TacOazo81+D8Wb5a2mbQb5v6Ra1HVhf7M3tpPfg4coRtoSD UTAD/HlSJ3M/cw2GjLzupIx5aVMrpQxtfZNiU32debyjS5p9vWg2JP8LzGyNPuZOKybo PiBH1snGhMHSUCKtmOTgfxFOSaoW3s7ZKs8uDib1UywkaBRIH6ymQrG/vX8hVGYJGAmq HCAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:sender:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=37Yj++UOFGfD6MOMuW3QDUvuuwsLLNglepvmCODLP/0=; b=N3F6wu6H2LnMEKoCy7QsZts6r6X1c4GUoRkb/yP3wHNgj0VSl7qweNkTuFQq0pculS 3viTayUoMB/7y2/zUl+pYNn/UPRFymS9N8PA8WQ8oulpEB83N46cXqmPDijO6Dp6lSOk qP7ofkb3mR4Xmzl3V/n2BNdgZsBmXiz4JLieBOKOozfOYHv1/ZaB8ID0tH9NTnVwBaB1 0mW1saIHUhT06ou/C9fhzq2Qc88gS6xc2QQtY2H1VNq8l0wVXIRXrOg+JvOFzpmRfFbr rzBBRI86X0hgmiuKCZRPKhj3XaqBTxvk7pA7wboYp8RjZTuZhogZH9SJj3C8Z3VhYbL2 OIOg== X-Gm-Message-State: AFqh2kqvVnTHbFg3meMLFSxWrj5tn64AQa92WG9wpplqDKJtPzYd1YD7 q6+MfYqrInfC/iE0AcTFS8mLFRM0QV4= X-Received: by 2002:adf:e38f:0:b0:2bd:d76f:23eb with SMTP id e15-20020adfe38f000000b002bdd76f23ebmr1022094wrm.29.1674018699401; Tue, 17 Jan 2023 21:11:39 -0800 (PST) Received: from beren.harmstone.com ([2a02:8010:64ea:0:8eb8:7eff:fe53:9d5f]) by smtp.gmail.com with ESMTPSA id q15-20020adfab0f000000b002bde7999cd6sm12310228wrc.61.2023.01.17.21.11.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jan 2023 21:11:38 -0800 (PST) From: Mark Harmstone To: binutils@sourceware.org, amodra@gmail.com Cc: Mark Harmstone Subject: [PATCH] ld: Fix ADDR32/64 incorrect outputs in pe-aarch64 Date: Wed, 18 Jan 2023 05:11:36 +0000 Message-Id: <20230118051136.10243-1-mark@harmstone.com> X-Mailer: git-send-email 2.38.2 MIME-Version: 1.0 X-Spam-Status: No, score=-10.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_EF, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_NUMSUBJECT, 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 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: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1755335842997578415?= X-GMAIL-MSGID: =?utf-8?q?1755335842997578415?= This changes coff_pe_aarch64_relocate_section to also perform IMAGE_REL_ARM64_ADDR32 and IMAGE_REL_ARM64_ADDR64 relocations, which fixes the test failures shown by 52936661. --- bfd/coff-aarch64.c | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/bfd/coff-aarch64.c b/bfd/coff-aarch64.c index 7f6511c82cb..a0cc4f01ae6 100644 --- a/bfd/coff-aarch64.c +++ b/bfd/coff-aarch64.c @@ -526,10 +526,7 @@ coff_pe_aarch64_relocate_section (bfd *output_bfd, asection *sec = NULL; uint64_t dest_vma; - /* skip trivial relocations */ - if (rel->r_type == IMAGE_REL_ARM64_ADDR32 - || rel->r_type == IMAGE_REL_ARM64_ADDR64 - || rel->r_type == IMAGE_REL_ARM64_ABSOLUTE) + if (rel->r_type == IMAGE_REL_ARM64_ABSOLUTE) continue; symndx = rel->r_symndx; @@ -564,6 +561,46 @@ coff_pe_aarch64_relocate_section (bfd *output_bfd, switch (rel->r_type) { + case IMAGE_REL_ARM64_ADDR32: + { + uint64_t val; + int32_t addend; + + addend = bfd_getl32 (contents + rel->r_vaddr); + + dest_vma += addend; + + val = dest_vma; + + if (val > 0xffffffff) + (*info->callbacks->reloc_overflow) + (info, h ? &h->root : NULL, syms[symndx]._n._n_name, + "IMAGE_REL_ARM64_ADDR32", addend, input_bfd, + input_section, rel->r_vaddr - input_section->vma); + + bfd_putl32 (val, contents + rel->r_vaddr); + rel->r_type = IMAGE_REL_ARM64_ABSOLUTE; + + break; + } + + case IMAGE_REL_ARM64_ADDR64: + { + uint64_t val; + int64_t addend; + + addend = bfd_getl64 (contents + rel->r_vaddr); + + dest_vma += addend; + + val = dest_vma; + + bfd_putl64 (val, contents + rel->r_vaddr); + rel->r_type = IMAGE_REL_ARM64_ABSOLUTE; + + break; + } + case IMAGE_REL_ARM64_ADDR32NB: { uint64_t val;