From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out30-43.freemail.mail.aliyun.com (out30-43.freemail.mail.aliyun.com [115.124.30.43]) by sourceware.org (Postfix) with ESMTPS id 48D6F3858D32 for ; Fri, 13 Jan 2023 12:55:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 48D6F3858D32 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.alibaba.com X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R581e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045176;MF=cooper.qu@linux.alibaba.com;NM=1;PH=DS;RN=2;SR=0;TI=SMTPD_---0VZUorQn_1673614495; Received: from localhost(mailfrom:cooper.qu@linux.alibaba.com fp:SMTPD_---0VZUorQn_1673614495) by smtp.aliyun-inc.com; Fri, 13 Jan 2023 20:54:55 +0800 From: Xianmiao Qu To: binutils@sourceware.org, lifang_xia@linux.alibaba.com Subject: [PATCH] C-SKY: Fix machine flag. Date: Fri, 13 Jan 2023 20:54:54 +0800 Message-Id: <20230113125454.75744-1-cooper.qu@linux.alibaba.com> X-Mailer: git-send-email 2.32.1 (Apple Git-133) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-20.6 required=5.0 tests=BAYES_00,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL 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: bfd/ * elf32-csky.c (elf32_csky_merge_attributes): Don't save and restore the ARCH attribute, it will actually clear the ARCH attribute. (csky_elf_merge_private_bfd_data): Store the machine flag correctly. --- bfd/elf32-csky.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/bfd/elf32-csky.c b/bfd/elf32-csky.c index 7e03a3bc44d..7c2bd5dd8c0 100644 --- a/bfd/elf32-csky.c +++ b/bfd/elf32-csky.c @@ -2892,16 +2892,8 @@ elf32_csky_merge_attributes (bfd *ibfd, struct bfd_link_info *info) /* This is the first object. Copy the attributes. */ out_attr = elf_known_obj_attributes_proc (obfd); - /* If Tag_CSKY_CPU_NAME is already set, save it. */ - memcpy (&tattr, &out_attr[Tag_CSKY_ARCH_NAME], sizeof (tattr)); - _bfd_elf_copy_obj_attributes (ibfd, obfd); - out_attr = elf_known_obj_attributes_proc (obfd); - - /* Restore Tag_CSKY_CPU_NAME. */ - memcpy (&out_attr[Tag_CSKY_ARCH_NAME], &tattr, sizeof (tattr)); - /* Use the Tag_null value to indicate the attributes have been initialized. */ out_attr[0].i = 1; @@ -3067,11 +3059,12 @@ csky_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) out_attr = elf_known_obj_attributes_proc (obfd); /* the flags like"e , f ,g ..." , we take collection. */ - newest_flag = (old_flags & (~CSKY_ARCH_MASK)) - | (new_flags & (~CSKY_ARCH_MASK)); + newest_flag = old_flags | new_flags; sec_name = get_elf_backend_data (ibfd)->obj_attrs_section; - if (bfd_get_section_by_name (ibfd, sec_name) == NULL) + if (bfd_get_section_by_name (ibfd, sec_name) == NULL + || (new_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK) != + old_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK))) { /* Input BFDs have no ".csky.attribute" section. */ new_arch = csky_find_arch_with_eflag (new_flags & CSKY_ARCH_MASK); @@ -3110,9 +3103,6 @@ csky_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info) out_attr[Tag_CSKY_ARCH_NAME].s = _bfd_elf_attr_strdup (obfd, newest_arch->name); } - else - newest_flag |= ((new_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK)) - | (old_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK))); } else { -- 2.17.1