From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) by sourceware.org (Postfix) with ESMTPS id 59751388E807 for ; Thu, 17 Dec 2020 14:41:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 59751388E807 Received: by mail-pj1-x102c.google.com with SMTP id b5so4237779pjl.0 for ; Thu, 17 Dec 2020 06:41:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=YTFN3iOD3xaOQfN2rOAwiV9xizXNDirpLc0oHfh1/ks=; b=ZrTwN7um2zl1G/izTLI3lJ4+gKYlPeJmNmv/zSlm22RdwAIUKX8slMU/lhKR8eNv21 WCeLERtD6XNmhDDwG432BP9lVaN57nTKR95t5T4/uCVFyyRJWqyjgwhd+o2/0xKELLlc 9fsZYYH9lQeACdAY0WBD/vHl4TJIgbug4TA/m35BYWIriJCrJoFGT6DN9vcMhxbacMsM b5iTwTYsTmD0BiBuMi0wJTblQpTV/ZACmoilI1+i3Hj4PCEStzRdV9QB085Zeml6z/T/ HNcrtNGdFlEuBbED8E6+SGM9J8qC/m7Yoy8vMo5oW1y21LOvJAjp8oDpO3JeenYfuB97 bAyw== X-Gm-Message-State: AOAM530PeNHhDl7DQpjgyI5Pq+P7aS51NbztOtQCeXxUUrzuyE/AwhnK l9uQtlQUsplc6iDXbOtGD75QJ+FJmOw= X-Google-Smtp-Source: ABdhPJziA8tEGzrKWdW7s8gbNfCOy4NqjDodxElFijifCXea0+7zR5OECAaCmt/+4kYBsIhXzbMsbA== X-Received: by 2002:a17:90b:a04:: with SMTP id gg4mr8414482pjb.8.1608216100430; Thu, 17 Dec 2020 06:41:40 -0800 (PST) Received: from gnu-cfl-2.localdomain (c-69-181-90-243.hsd1.ca.comcast.net. [69.181.90.243]) by smtp.gmail.com with ESMTPSA id p21sm5425418pjz.14.2020.12.17.06.41.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Dec 2020 06:41:39 -0800 (PST) Received: from gnu-cfl-2.localdomain (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id 7E4DA1A0163; Thu, 17 Dec 2020 06:41:38 -0800 (PST) From: "H.J. Lu" To: binutils@sourceware.org Subject: [PATCH] elf: Set ELFOSABI_GNU for SHF_GNU_RETAIN only for ld -r Date: Thu, 17 Dec 2020 06:41:36 -0800 Message-Id: <20201217144136.1148445-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.29.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3040.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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: Thu, 17 Dec 2020 14:41:42 -0000 Set ELFOSABI_GNU for SHF_GNU_RETAIN sections only when generating relocatable output since SHF_GNU_RETAIN has no impact on shared object nor executable. I will check it in tomorrow if there are no objections. H.J. --- bfd/ PR ld/27091 * elf.c (_bfd_elf_final_write_processing): Set ELFOSABI_GNU for SHF_GNU_RETAIN sections only when generating ET_REL output. ld/ PR ld/27091 * testsuite/ld-elf/retain7.s: New file. * testsuite/ld-elf/retain7a.d: Likewise. * testsuite/ld-elf/retain7b.d: Likewise. --- bfd/elf.c | 8 +++++--- ld/testsuite/ld-elf/retain7.s | 5 +++++ ld/testsuite/ld-elf/retain7a.d | 11 +++++++++++ ld/testsuite/ld-elf/retain7b.d | 10 ++++++++++ 4 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 ld/testsuite/ld-elf/retain7.s create mode 100644 ld/testsuite/ld-elf/retain7a.d create mode 100644 ld/testsuite/ld-elf/retain7b.d diff --git a/bfd/elf.c b/bfd/elf.c index 9c82912aeb..e601bfc1de 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -12466,9 +12466,11 @@ _bfd_elf_final_write_processing (bfd *abfd) i_ehdrp->e_ident[EI_OSABI] = get_elf_backend_data (abfd)->elf_osabi; /* Set the osabi field to ELFOSABI_GNU if the binary contains - SHF_GNU_MBIND or SHF_GNU_RETAIN sections or symbols of STT_GNU_IFUNC type - or STB_GNU_UNIQUE binding. */ - if (elf_tdata (abfd)->has_gnu_osabi != 0) + SHF_GNU_MBIND sections or symbols of STT_GNU_IFUNC type or + or STB_GNU_UNIQUE binding. Set the osabi field to ELFOSABI_GNU + for SHF_GNU_RETAIN sections only when generating ET_REL output. */ + if ((elf_tdata (abfd)->has_gnu_osabi + & (i_ehdrp->e_type == ET_REL ? -1 : ~elf_gnu_osabi_retain)) != 0) { if (i_ehdrp->e_ident[EI_OSABI] == ELFOSABI_NONE) i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_GNU; diff --git a/ld/testsuite/ld-elf/retain7.s b/ld/testsuite/ld-elf/retain7.s new file mode 100644 index 0000000000..a6cc86988c --- /dev/null +++ b/ld/testsuite/ld-elf/retain7.s @@ -0,0 +1,5 @@ + .type _start,"function" + .section .text,"axR",%progbits + .global _start +_start: + .nop diff --git a/ld/testsuite/ld-elf/retain7a.d b/ld/testsuite/ld-elf/retain7a.d new file mode 100644 index 0000000000..544ff8a173 --- /dev/null +++ b/ld/testsuite/ld-elf/retain7a.d @@ -0,0 +1,11 @@ +#name: SHF_GNU_RETAIN 7a +#source: retain7.s +#ld: -e _start --gc-sections +#notarget: ![supports_gnu_osabi] ![check_gc_sections_available] +#readelf: -h + +#failif +ELF Header: +#... + OS/ABI: UNIX - GNU +#pass diff --git a/ld/testsuite/ld-elf/retain7b.d b/ld/testsuite/ld-elf/retain7b.d new file mode 100644 index 0000000000..0e5b12b335 --- /dev/null +++ b/ld/testsuite/ld-elf/retain7b.d @@ -0,0 +1,10 @@ +#name: SHF_GNU_RETAIN 7a +#source: retain7.s +#ld: -r +#notarget: ![supports_gnu_osabi] ![check_gc_sections_available] +#readelf: -h + +ELF Header: +#... + OS/ABI: UNIX - GNU +#pass -- 2.29.2