From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 436113858422 for ; Wed, 17 Aug 2022 07:11:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 436113858422 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 5.5.5 (unknown [10.2.5.5]) by localhost.localdomain (Coremail) with SMTP id AQAAf8CxkOCylPxiOCIDAA--.16304S2; Wed, 17 Aug 2022 15:11:51 +0800 (CST) From: liuzhensong To: binutils@sourceware.org Cc: i.swmail@xen0n.name, xry111@xry111.site, maskray@google.com, caiyinyu@loongson.cn, chenglulu@loongson.cn, mengqinggang@loongson.cn, xuchenghua@loongson.cn, liuzhensong Subject: [PATCH] LoongArch: Set e_flags to 0x40 of ELF while using new relocations. Date: Wed, 17 Aug 2022 15:11:36 +0800 Message-Id: <20220817071136.2325331-1-liuzhensong@loongson.cn> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID: AQAAf8CxkOCylPxiOCIDAA--.16304S2 X-Coremail-Antispam: 1UD129KBjvJXoWxGFWUXFW3Gr1xZr1Dtr48Crg_yoW5ur4UpF 1jyF48KFWrKr13WF48KF1q9rnrJF4xCry2yFy5Ar409rWkZryUXw18tF9xGFn0va18Zasr uan3Cw1jvF4kXw7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUvq14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0 rVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02 1l84ACjcxK6xIIjxv20xvE14v26r4j6ryUM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26F4j 6r4UJwA2z4x0Y4vEx4A2jsIE14v26r4UJVWxJr1l84ACjcxK6I8E87Iv6xkF7I0E14v26r xl6s0DM2AIxVAIcxkEcVAq07x20xvEncxIr21l5I8CrVACY4xI64kE6c02F40Ex7xfMcIj 6xIIjxv20xvE14v26r106r15McIj6I8E87Iv67AKxVWUJVW8JwAm72CE4IkC6x0Yz7v_Jr 0_Gr1lF7xvr2IYc2Ij64vIr41lF7I21c0EjII2zVCS5cI20VAGYxC7MxkF7I0En4kS14v2 6r126r1DMxkIecxEwVCm-wCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8Jw C20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAF wI0_Jw0_GFylIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjx v20xvEc7CjxVAFwI0_Gr0_Cr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2 jsIE14v26r1j6r4UMIIF0xvEx4A2jsIEc7CjxVAFwI0_Gr0_Gr1UYxBIdaVFxhVjvjDU0x ZFpf9x0JUG0PhUUUUU= X-CM-SenderInfo: holx6xphqv003j6o00pqjv00gofq/ X-Spam-Status: No, score=-12.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, 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-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: , X-List-Received-Date: Wed, 17 Aug 2022 07:11:56 -0000 --- bfd/elfnn-loongarch.c | 10 ++++++++++ binutils/readelf.c | 11 ++++++++--- gas/config/tc-loongarch.c | 1 + include/elf/loongarch.h | 7 +++++++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c index 8d0f66ea7c1..ff1b25dde34 100644 --- a/bfd/elfnn-loongarch.c +++ b/bfd/elfnn-loongarch.c @@ -416,6 +416,16 @@ elfNN_loongarch_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) elf_elfheader (obfd)->e_flags = in_flags; return true; } + else if (out_flags != in_flags) + { + /* Only check relocation version. + The obj_v0 is compatible with obj_v1 in this "release cycle". */ + if ((EF_LOONGARCH_IS_OBJ_V0 (out_flags) + && EF_LOONGARCH_IS_OBJ_V1 (in_flags)) + || (EF_LOONGARCH_IS_OBJ_V0 (in_flags) + && EF_LOONGARCH_IS_OBJ_V1 (out_flags))) + elf_elfheader (obfd)->e_flags |= EF_LOONGARCH_ABI_OBJ_V1; + } /* Disallow linking different ABIs. */ if (EF_LOONGARCH_ABI(out_flags ^ in_flags) & EF_LOONGARCH_ABI_MASK) diff --git a/binutils/readelf.c b/binutils/readelf.c index 1ec25239938..4aa164bc3d9 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -4346,11 +4346,16 @@ get_machine_flags (Filedata * filedata, unsigned e_flags, unsigned e_machine) strcat (buf, ", ILP32"); if (EF_LOONGARCH_IS_SOFT_FLOAT (e_flags)) - strcat (buf, ", SOFT-FLOAT"); + strcat (buf, "S"); else if (EF_LOONGARCH_IS_SINGLE_FLOAT (e_flags)) - strcat (buf, ", SINGLE-FLOAT"); + strcat (buf, "F"); else if (EF_LOONGARCH_IS_DOUBLE_FLOAT (e_flags)) - strcat (buf, ", DOUBLE-FLOAT"); + strcat (buf, "D"); + + if (EF_LOONGARCH_IS_OBJ_V0 (e_flags)) + strcat (buf, ", ABI-v0"); + else if (EF_LOONGARCH_IS_OBJ_V1 (e_flags)) + strcat (buf, ", ABI-v1"); break; } diff --git a/gas/config/tc-loongarch.c b/gas/config/tc-loongarch.c index fbbaca55085..6a4d7e00ab5 100644 --- a/gas/config/tc-loongarch.c +++ b/gas/config/tc-loongarch.c @@ -234,6 +234,7 @@ loongarch_after_parse_args () as_bad ("unknown default architecture `%s'", default_arch); } + LARCH_opts.ase_abi |= EF_LOONGARCH_ABI_OBJ_V1; /* Set default ISA double-float. */ if (!LARCH_opts.ase_nf && !LARCH_opts.ase_sf diff --git a/include/elf/loongarch.h b/include/elf/loongarch.h index 74757b82ca8..f8f7adb1655 100644 --- a/include/elf/loongarch.h +++ b/include/elf/loongarch.h @@ -248,6 +248,9 @@ END_RELOC_NUMBERS (R_LARCH_count) #define EF_LOONGARCH_ABI_SINGLE_FLOAT_MASK 0x2 #define EF_LOONGARCH_ABI_DOUBLE_FLOAT_MASK 0x3 +#define EF_LOONGARCH_ABI_OBJ_V1 0x40 +#define EF_LOONGARCH_ABI_OBJ_MASK 0xC0 + #define EF_LOONGARCH_ABI(abi) (EF_LOONGARCH_ABI_MASK & (abi)) #define EF_LOONGARCH_IS_LP64(abi) \ @@ -264,4 +267,8 @@ END_RELOC_NUMBERS (R_LARCH_count) #define EF_LOONGARCH_IS_DOUBLE_FLOAT(abi) \ (!((EF_LOONGARCH_ABI(abi) & EF_LOONGARCH_ABI_FLOAT_MASK) ^ EF_LOONGARCH_ABI_DOUBLE_FLOAT_MASK)) +#define EF_LOONGARCH_IS_OBJ_V0(abi) (!((abi) & EF_LOONGARCH_ABI_OBJ_MASK)) +#define EF_LOONGARCH_IS_OBJ_V1(abi) \ + (((abi) & EF_LOONGARCH_ABI_OBJ_MASK) == EF_LOONGARCH_ABI_OBJ_V1) + #endif /* _ELF_LOONGARCH_H */ -- 2.31.1