From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22f.google.com (mail-oi1-x22f.google.com [IPv6:2607:f8b0:4864:20::22f]) by sourceware.org (Postfix) with ESMTPS id 023E63857819 for ; Tue, 8 Dec 2020 12:34:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 023E63857819 Received: by mail-oi1-x22f.google.com with SMTP id q25so11128806oij.10 for ; Tue, 08 Dec 2020 04:34:26 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=MO5e0mE1tXmQYvuHlXOton8oCeC6ukTM8I2ZXwxzZ48=; b=KbMKiINIHXv/tCPt4yuWpVqRC1TI6p3vVddzytCLF6vqg3+/vVDUArhq9uqxknPxVy MuvGfC+XMRqK/0c6P0DSFoqEAuz1AwKEWkjhgNPYN1a0ccnu3laeLwytp0IJUEtkQfwB 7XllC1Iw2uNzYpj9GBvjSaORMhTy4HhIJ38L8sj1ydYt/eWwkA1pslOGDv1U+SbdS2WU caqEc6ofd/WHwv6TCEKWEhrffjcE+8FoHdtt//3LpquXZy25ycu8mAiz/t7xn6JMUnTB Jl1hlmNEM65aHeYHoq12cjoHY2wlnTwC4s9s8lu0mZbujiWKJ+FJ5VeO2I6gw9dezUUS VtIQ== X-Gm-Message-State: AOAM530fb4vyEReuJfyVVAKpCj5S/Pcll0RUfmz4IL0BhwC31cWLXslA erHpOolCWXzRp8/ys1fDHFqGpOWkTG78km1Dq6tW7MRzKP4= X-Google-Smtp-Source: ABdhPJzluyz9QexviK2DJhZ7vDIs/2r0WkimC+WP9llnJ7/nwsjUBSm7zkldGQ3Iip/Q/+XE5p68mAKbt3/5oM7GrTQ= X-Received: by 2002:aca:f456:: with SMTP id s83mr2414751oih.58.1607430865904; Tue, 08 Dec 2020 04:34:25 -0800 (PST) MIME-Version: 1.0 References: <20201204135254.2147243-1-hjl.tools@gmail.com> <20201204152907.mhls5ilpv47bj5fq@jozef-acer-manjaro> In-Reply-To: From: "H.J. Lu" Date: Tue, 8 Dec 2020 04:33:49 -0800 Message-ID: Subject: Re: V2 [PATCH] gas: Generate a new section for SHF_GNU_RETAIN To: Binutils , Alan Modra , Nick Clifton Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-3036.8 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: Tue, 08 Dec 2020 12:34:29 -0000 On Fri, Dec 4, 2020 at 8:43 AM H.J. Lu wrote: > > On Fri, Dec 4, 2020 at 7:29 AM Jozef Lawrynowicz > wrote: > > > > On Fri, Dec 04, 2020 at 05:52:54AM -0800, H.J. Lu wrote: > > > For > > > .globl foo2 > > > .section .data.foo,"aR" > > > .align 4 > > > .type foo2, @object > > > .size foo2, 4 > > > foo2: > > > .long 2 > > > .globl foo1 > > > .section .data.foo > > > .align 4 > > > .type foo1, @object > > > .size foo1, 4 > > > foo1: > > > .long 1 > > > > > > generate a new section if the SHF_GNU_RETAIN bit doesn't match. > > > > > > * config/obj-elf.c (SEC_ASSEMBLER_SHF_MASK): New. > > > (get_section_by_match): Also check if SEC_ASSEMBLER_SHF_MASK of > > > sh_flags matches. Rename info to sh_info. > > > (obj_elf_change_section): Rename info to sh_info. > > > (obj_elf_section): Rename info to sh_info. Set sh_flags for > > > SHF_GNU_RETAIN. > > > * config/obj-elf.h (elf_section_match): Rename info to sh_info. > > > Add sh_flags. > > > * testsuite/gas/elf/elf.exp: Run section27. > > > * testsuite/gas/elf/section24b.d: Updated. > > > * testsuite/gas/elf/section27.d: New file. > > > * testsuite/gas/elf/section27.s: Likewise. > > > --- > > > gas/config/obj-elf.c | 21 ++++++++++++------ > > > gas/config/obj-elf.h | 3 ++- > > > gas/testsuite/gas/elf/elf.exp | 1 + > > > gas/testsuite/gas/elf/section24b.d | 10 ++++++--- > > > gas/testsuite/gas/elf/section27.d | 14 ++++++++++++ > > > gas/testsuite/gas/elf/section27.s | 34 ++++++++++++++++++++++++++++++ > > > 6 files changed, 73 insertions(+), 10 deletions(-) > > > create mode 100644 gas/testsuite/gas/elf/section27.d > > > create mode 100644 gas/testsuite/gas/elf/section27.s > > > > I just want to check that we are OK with the fact that a .section > > directive without any flags will always use the default flags, even if > > the section previously had the 'R' flag set. I suppose this is just > > standard behavior and how the .section directive has always behaved. > > Correct. > > > $ cat asm-tester.s > > .section .data.foo,"awR" > > .word 0 > > .section .data.foo > > .word 0 > > $ as asm-tester.s -o tester.o > > $ readelf --wide -S tester.o > > ... > > [ 4] .data.foo PROGBITS 0000000000000000 000040 000002 00 WAR 0 0 1 > > [ 5] .data.foo PROGBITS 0000000000000000 000042 000002 00 WA 0 0 1 > > ... > > > > Also, I think the following change should be added, since the OR'ing of > > SHF_GNU_RETAIN flag between sections, from the original patch, is now > > redundant. > > > > diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c > > index 54d42d9ecb..9ac53e4d0e 100644 > > --- a/gas/config/obj-elf.c > > +++ b/gas/config/obj-elf.c > > @@ -806,17 +806,9 @@ obj_elf_change_section (const char *name, > > as_bad (_("changed section attributes for %s"), name); > > } > > else > > - { > > - /* Don't overwrite a previously set SHF_GNU_RETAIN flag for the > > - section. The entire section must be marked retained. */ > > - if ((elf_tdata (stdoutput)->has_gnu_osabi & elf_gnu_osabi_retain) > > - && ((elf_section_flags (old_sec) & SHF_GNU_RETAIN))) > > - attr |= SHF_GNU_RETAIN; > > - > > - /* FIXME: Maybe we should consider removing a previously set > > - processor or application specific attribute as suspicious ? */ > > - elf_section_flags (sec) = attr; > > - } > > + /* FIXME: Maybe we should consider removing a previously set > > + processor or application specific attribute as suspicious ? */ > > + elf_section_flags (sec) = attr; > > > > if ((flags & SEC_MERGE) && old_sec->entsize != (unsigned) entsize) > > as_bad (_("changed section entity size for %s"), name); > > > > Fixed. > > Here is the updated patch. OK for master? > > Thanks. > Hi Alan, Nick, Can you take a look at this https://sourceware.org/pipermail/binutils/2020-December/114407.html Thanks. -- H.J.