From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from forward106j.mail.yandex.net (forward106j.mail.yandex.net [IPv6:2a02:6b8:0:801:2::109]) by sourceware.org (Postfix) with ESMTPS id D815A3858D1E for ; Tue, 24 Jan 2023 13:36:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D815A3858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=yandex.ru Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yandex.ru Received: from sas8-d2832c3b6ed7.qloud-c.yandex.net (sas8-d2832c3b6ed7.qloud-c.yandex.net [IPv6:2a02:6b8:c1b:2a09:0:640:d283:2c3b]) by forward106j.mail.yandex.net (Yandex) with ESMTP id E06246BD7037; Tue, 24 Jan 2023 16:36:54 +0300 (MSK) Received: by sas8-d2832c3b6ed7.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id paOmVv0eHKo1-1ZN7J1uY; Tue, 24 Jan 2023 16:36:54 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1674567414; bh=a1z8kTMGFr00+8gjtyn7dfkvHBB8bWlQ+QNVJKcdl3c=; h=Message-Id:Date:Cc:Subject:To:From; b=Chl4+msJiaRzmG6spnl0IBzeRYTMT3goVSQj27dLc3LSSUgvLGLb4LBdmTxg+nPFJ S2zYC4h0iUwG7mHb7p+a4paARzIzlWFjZgNIVyQtvap233UdAOLowcakg6Cz9p+cU7 Ii7lC+BpoNbq7lJMy3Gc25NJA6P9DIHcgmcyEdT4= Authentication-Results: sas8-d2832c3b6ed7.qloud-c.yandex.net; dkim=pass header.i=@yandex.ru From: Vladislav Khmelevsky To: binutils@sourceware.org, ccoutant@gmail.com, ikudrin@accesssoftek.com Cc: Vladislav Khmelevsky Subject: [PATCH] Fix emit-relocs for aarch64 gold Date: Tue, 24 Jan 2023 17:36:41 +0400 Message-Id: <20230124133641.258195-1-och95@yandex.ru> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,GIT_PATCH_0,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: Fix relocation offsets values for the relaxed input sections the same way it was fixed for the sections in PR21430. --- gold/aarch64.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/gold/aarch64.cc b/gold/aarch64.cc index 46a278bd466..b199fac2af7 100644 --- a/gold/aarch64.cc +++ b/gold/aarch64.cc @@ -2916,6 +2916,7 @@ class Target_aarch64 : public Sized_target Section_id_hash> AArch64_input_section_map; typedef AArch64_insn_utilities Insn_utilities; const static int TCB_SIZE = size / 8 * 2; + static const Address invalid_address = static_cast
(-1); Target_aarch64(const Target::Target_info* info = &aarch64_info) : Sized_target(info), @@ -8286,6 +8287,27 @@ Target_aarch64::relocate_relocs( gold_assert(sh_type == elfcpp::SHT_RELA); + if (offset_in_output_section == this->invalid_address) + { + const Output_relaxed_input_section *poris + = output_section->find_relaxed_input_section (relinfo->object, + relinfo->data_shndx); + if (poris != NULL) + { + Address section_address = poris->address (); + section_size_type section_size = poris->data_size (); + + gold_assert ((section_address >= view_address) + && ((section_address + section_size) + <= (view_address + view_size))); + + off_t offset = section_address - view_address; + view += offset; + view_address += offset; + view_size = section_size; + } + } + gold::relocate_relocs( relinfo, prelocs, -- 2.25.1