From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) by sourceware.org (Postfix) with ESMTPS id 6AAAA3858407 for ; Thu, 4 Aug 2022 16:26:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6AAAA3858407 Received: by mail-pj1-x102f.google.com with SMTP id t22so239015pjy.1 for ; Thu, 04 Aug 2022 09:26:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=XFRKdEtE54FraMHSDcpcGFUmeawTbmGF/P8BLTNFERw=; b=06qQgHwSwelufQHHjqiOw4Gq9Uhl55thvlvSGfClkOF7plY7o9TpNx8dde1eohjoX0 ZT/6UkR5024aAPcMHOFAsFqHOujHSFzDmxmeMqO8H26sP3cGMSxqripWTIXkNfMu0U94 vaAHQ/UCafZehhqCfJ3jP31DtlvyKPFOv5SREEZx9yC6PuGT2IejxLiZtctGotH99bUP YKsPy/ea79juJTbIfiSjWM4JFt9gdPI8SitoTYF7ho25FQc8O0c8Vus0sW5uNmtgjE/w xz+GFzlkH/HjClJ9T3ol94jQpToAuDVk6oMRSv13SBEnASqPa9QyRnYCFaxhQLbnt6Kf MVhQ== X-Gm-Message-State: ACgBeo33HgfyvBFrZuOWhHNkeJOIYvf/2MIV4BqHq39mg8E1p0zTr0CD p9m2ibjDyllpJkDoppzXGzXFn2RMCLl1rHSQyjW4djRR X-Google-Smtp-Source: AA6agR5zudiW3/jxjbnewFiSdbHqjCcajGSHQSY8ehHNg1GpKrA4XtOZy0mHYGIsZvgP+4IQbhiwh4Kd/KSbqJYMw7A= X-Received: by 2002:a17:902:b215:b0:168:da4b:c925 with SMTP id t21-20020a170902b21500b00168da4bc925mr2469538plr.155.1659630373023; Thu, 04 Aug 2022 09:26:13 -0700 (PDT) MIME-Version: 1.0 References: <20220803170511.68247-1-hjl.tools@gmail.com> In-Reply-To: <20220803170511.68247-1-hjl.tools@gmail.com> From: "H.J. Lu" Date: Thu, 4 Aug 2022 09:25:37 -0700 Message-ID: Subject: Re: [PATCH v2] elf: Reset alignment for each PT_LOAD segment To: Binutils , Nick Clifton Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-3024.5 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.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: Thu, 04 Aug 2022 16:26:16 -0000 On Wed, Aug 3, 2022 at 10:05 AM H.J. Lu wrote: > > Reset alignment for each PT_LOAD segment to avoid using alignment from > the previous PT_LOAD segment. > > bfd/ > > PR ld/29435 > * elf.c (assign_file_positions_for_load_sections): Reset > alignment for each PT_LOAD segment. > > ld/ > > PR ld/29435 > * testsuite/ld-elf/pr29435.d: New file. > * testsuite/ld-elf/pr29435.s: Likewise. > --- > bfd/elf.c | 7 ++++--- > ld/testsuite/ld-elf/pr29435.d | 11 +++++++++++ > ld/testsuite/ld-elf/pr29435.s | 6 ++++++ > 3 files changed, 21 insertions(+), 3 deletions(-) > create mode 100644 ld/testsuite/ld-elf/pr29435.d > create mode 100644 ld/testsuite/ld-elf/pr29435.s > > diff --git a/bfd/elf.c b/bfd/elf.c > index 25f4bca34f0..3e64cdf6699 100644 > --- a/bfd/elf.c > +++ b/bfd/elf.c > @@ -5440,8 +5440,6 @@ assign_file_positions_for_load_sections (bfd *abfd, > Elf_Internal_Phdr *p; > file_ptr off; /* Octets. */ > bfd_size_type maxpagesize; > - bfd_size_type p_align; > - bool p_align_p = false; > unsigned int alloc, actual; > unsigned int i, j; > struct elf_segment_map **sorted_seg_map; > @@ -5526,7 +5524,6 @@ assign_file_positions_for_load_sections (bfd *abfd, > qsort (sorted_seg_map, alloc, sizeof (*sorted_seg_map), > elf_sort_segments); > > - p_align = bed->p_align; > maxpagesize = 1; > if ((abfd->flags & D_PAGED) != 0) > { > @@ -5561,6 +5558,8 @@ assign_file_positions_for_load_sections (bfd *abfd, > asection **secpp; > bfd_vma off_adjust; /* Octets. */ > bool no_contents; > + bfd_size_type p_align; > + bool p_align_p; > > /* An ELF segment (described by Elf_Internal_Phdr) may contain a > number of sections with contents contributing to both p_filesz > @@ -5571,6 +5570,8 @@ assign_file_positions_for_load_sections (bfd *abfd, > p = phdrs + m->idx; > p->p_type = m->p_type; > p->p_flags = m->p_flags; > + p_align = bed->p_align; > + p_align_p = false; > > if (m->count == 0) > p->p_vaddr = m->p_vaddr_offset * opb; > diff --git a/ld/testsuite/ld-elf/pr29435.d b/ld/testsuite/ld-elf/pr29435.d > new file mode 100644 > index 00000000000..4ca4fd086a2 > --- /dev/null > +++ b/ld/testsuite/ld-elf/pr29435.d > @@ -0,0 +1,11 @@ > +#ld: -shared -z separate-code -z relro > +#xfail: ![check_shared_lib_support] > +#xfail: ![check_relro_support] > +#readelf: -Wl > + > +#failif > +#... > + +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ .* 0x8000 > +#... > + +LOAD +0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ 0x[0-9a-f]+ .* 0x8000 > +#... > diff --git a/ld/testsuite/ld-elf/pr29435.s b/ld/testsuite/ld-elf/pr29435.s > new file mode 100644 > index 00000000000..d2d8f265f5e > --- /dev/null > +++ b/ld/testsuite/ld-elf/pr29435.s > @@ -0,0 +1,6 @@ > + .text > + .balign 0x8000 > + .globl foo > + .type foo, %function > +foo: > + .byte 0 > -- > 2.37.1 > Hi Nick, Is it OK to backport to 2.38 and 2.39 branches? Thanks. -- H.J.