From patchwork Tue May 24 09:49:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: caiyinyu X-Patchwork-Id: 54337 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AF156384F02C for ; Tue, 24 May 2022 09:50:38 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 72F893856264 for ; Tue, 24 May 2022 09:50:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 72F893856264 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn Received: from [IPv6:::ffff:192.168.3.4] (unknown [221.218.140.141]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9Ax7+ZCqoxi_gAAAA--.3S2; Tue, 24 May 2022 17:49:54 +0800 (CST) MIME-Version: 1.0 To: Fangrui Song From: Subject: =?utf-8?b?5Zue5aSNOiBbUEFUQ0ggdjQgMDQvMTNdIExvb25nQXJjaDogQUJJIElt?= =?utf-8?b?cGxlbWVudGF0aW9u?= Date: Tue, 24 May 2022 17:49:54 +0800 Importance: normal X-Priority: 3 In-Reply-To: <20220509075631.jkgi33z5fi5iwhzt@google.com> References: <20220509023010.1250020-1-caiyinyu@loongson.cn> <20220509023010.1250020-5-caiyinyu@loongson.cn> <20220509075631.jkgi33z5fi5iwhzt@google.com> X-CM-TRANSID: AQAAf9Ax7+ZCqoxi_gAAAA--.3S2 Message-Id: <628CAA45.0420B4.01722@loongson.cn> X-Coremail-Antispam: 1UD129KBjvJXoW7AF47uF4UAr45uFyDGF48JFb_yoW8Kw47p3 4rArW5Xr1SqFyfWrZ8Gw45u3s8uFZ3ua47CFn0ganayF1DWr17KFyIvrnFga17t3y8Xw43 XrZ5Aw47A3W5XrDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUma14x267AKxVWUJVW8JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26ryj6F1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4j 6r4UJwA2z4x0Y4vEx4A2jsIE14v26F4UJVW0owA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc CE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG67k08I80eVWUJVW8JwAqx4xG64kE w2xG04xIwI0_Jr0_Gr1l5I8CrVCF0I0E4I0vr24lYx0E2Ix0cI8IcVAFwI0_Jr0_Jr4lYx 0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvEwIxGrwACjI8F 5VA0II8E6IAqYI8I648v4I1lw4CEF2IF47xS0VAv8wAKzVCY07xG64k0F24l7480Y4vEI4 kI2Ix0rVAqx4xJMxkIecxEwVAFwVW8uwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkE bVWUJVW8JwC20s026c02F40E14v26r106r1rMI8I3I0E7480Y4vE14v26r106r1rMI8E67 AF67kF1VAFwI0_JF0_Jw1lIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI 42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6rW3Jr0E3s 1lIxAIcVC2z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsG vfC2KfnxnUUI43ZEXa7sRiNtx7UUUUU== X-CM-SenderInfo: 5fdl5xhq1xqz5rrqw2lrqou0/ X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00, BODY_8BITS, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, KAM_INFOUSMEBIZ, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "xuchenghua@loongson.cn" , "joseph_myers@mentor.com" , "libc-alpha@sourceware.org" Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" 从 Windows 版邮件发送 发件人: Fangrui Song 发送时间: 2022年5月9日 16:24 收件人: caiyinyu 抄送: libc-alpha@sourceware.org; xuchenghua@loongson.cn; joseph_myers@mentor.com 主题: Re: [PATCH v4 04/13] LoongArch: ABI Implementation >+/* Runtime address of .got */ >+#define _GLOBAL_OFFSET_TABLE_ \ >+ ({ \ >+ ElfW (Addr) * r; \ >+ asm("la.pcrel %0, _GLOBAL_OFFSET_TABLE_" : "=r"(r)); \ >+ r; \ >+ }) >+ >+/* Return the link-time address of _DYNAMIC. */ >+static inline ElfW (Addr) elf_machine_dynamic (void) >+{ >+ return _GLOBAL_OFFSET_TABLE_[0]; >+} _GLOBAL_OFFSET_TABLE_[0] == link_time_dynamic is not recommended. See https://maskray.me/blog/2021-09-05-build-glibc-with-lld#global_offset_table_0 aarch64/riscv/x86_64/etc have been updated to use the preferred approach. Fixed. > diff --git a/sysdeps/loongarch/dl-machine.h b/sysdeps/loongarch/dl-machine.h index f902410213..361f7555f9 100644 --- a/sysdeps/loongarch/dl-machine.h +++ b/sysdeps/loongarch/dl-machine.h @@ -70,28 +70,18 @@ elf_machine_matches_host (const ElfW (Ehdr) * ehdr) return 1; } -/* Runtime address of .got */ -#define _GLOBAL_OFFSET_TABLE_ \ - ({ \ - ElfW (Addr) * r; \ - asm("la.pcrel %0, _GLOBAL_OFFSET_TABLE_" : "=r"(r)); \ - r; \ - }) - -/* Return the link-time address of _DYNAMIC. */ -static inline ElfW (Addr) elf_machine_dynamic (void) +/* Return the run-time load address of the shared object. */ +static inline ElfW (Addr) elf_machine_load_address (void) { - return _GLOBAL_OFFSET_TABLE_[0]; + extern const ElfW(Ehdr) __ehdr_start attribute_hidden; + return (ElfW(Addr)) &__ehdr_start; } -/* Return the run-time load address of the shared object. */ -static inline ElfW (Addr) elf_machine_load_address (void) +/* Return the link-time address of _DYNAMIC. */ +static inline ElfW (Addr) elf_machine_dynamic (void) { - ElfW (Addr) got_linktime_addr; - asm("la.got %0, _GLOBAL_OFFSET_TABLE_" - /* Link-time address in GOT entry before runtime relocation */ - : "=r"(got_linktime_addr)); - return (ElfW (Addr)) _GLOBAL_OFFSET_TABLE_ - got_linktime_addr; + extern ElfW(Dyn) _DYNAMIC[] attribute_hidden; + return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address (); }