PR28827 testcase
H.J. Lu
hjl.tools@gmail.com
Mon Feb 7 04:05:38 GMT 2022
On Sun, Feb 6, 2022 at 7:15 PM Alan Modra <amodra@gmail.com> wrote:
>
> On Sun, Feb 06, 2022 at 03:38:41PM -0800, H.J. Lu wrote:
> > On Sun, Feb 6, 2022 at 2:54 PM Alan Modra <amodra@gmail.com> wrote:
> > >
> > > On Sat, Feb 05, 2022 at 08:26:55PM -0800, H.J. Lu wrote:
> > > > On Sun, Feb 06, 2022 at 02:47:19PM +1030, Alan Modra via Binutils wrote:
> > > > > On Sat, Feb 05, 2022 at 10:39:50AM +0000, Nick Clifton wrote:
> > > > > > Hi Alan, Hi Fangrui,
> > > > > >
> > > > > > > This testcase triggers a stub sizing error with the patches applied
> > > > > > > for PR28743 (commit 2f83249c13d8 and c804c6f98d34).
> > > > > > >
> > > > > > > PR 28827
> > > > > > > * testsuite/ld-powerpc/pr28827-1.s,
> > > > > > > * testsuite/ld-powerpc/pr28827-1.d: New test.
> > > > > > > * testsuite/ld-powerpc/powerpc.exp: Run it.
> > > > > >
> > > > > > Given the importance of the PowerPC target, I am going to hold
> > > > > > off from creating the 2.38 release until this issue is fixed.
> > > > >
> > > > > Thanks, I appreciate it.
> > > > >
> > > > > > I do hope however that it can be resolved soon....
> > > > >
> > > > > The solution is to revert HJ's two relro patches on the branch. That
> > > > > will let you immediately make a release. Despite being raised by
> > > > > Florian, I don't believe PR28743 is an important bug to fix just
> > > > > before a release. Our relro support has sometimes created a hole for
> > > > > *years*.
> > > > >
> > > > > Of course, the patches ought to be reverted on mainline too,
> > > > > separately from whatever solution we finally adopt for PR28743.
> > > > >
> > > >
> > > > Why make removing the 1-page gap before the PT_GNU_RELRO segment opt-in?
> > > >
> > > > https://sourceware.org/pipermail/binutils/2022-February/119625.html
> > >
> > > I happen to think your changes to lang_size_relro_segment_1 are wrong.
> > > Making them optional doesn't fix that.
> >
> > So far, it has been working for x86. Do you have a testcase to show
> > otherwise?
>
> Just put an ASSERT(0) on the do_reset code path.
On Linux/x86-64, I tried this with binutils-2_37-branch:
diff --git a/ld/ldlang.c b/ld/ldlang.c
index 042b492d52b..4760d45721a 100644
--- a/ld/ldlang.c
+++ b/ld/ldlang.c
@@ -6509,13 +6509,18 @@ lang_size_sections (bool *relax, bool check_regions)
if (expld.dataseg.phase == exp_seg_end_seen)
{
+ static int reset_counter;
+
bool do_reset
= lang_size_relro_segment (relax, check_regions);
if (do_reset)
{
+ reset_counter++;
lang_reset_memory_regions ();
one_lang_size_sections_pass (relax, check_regions);
+ if (reset_counter > 2)
+ abort ();
}
if (link_info.relro && expld.dataseg.relro_end)
It triggered:
Running /export/gnu/import/git/gitlab/x86-binutils-release/ld/testsuite/ld-elf/elf.exp
...
FAIL: ld-elf/eh5
Change it to
+ if (reset_counter > 3)
+ abort ();
avoided it. The same also happens with my patches.
> > > The major reason is that I question the premise behind the patch. Is
> > > it really worth wasting up to maxpagesize-1 in memory at the end of
> >
> > My patches shouldn't create a gap of more than 1-page at the end.
> > If it isn't the case, do you have a testcase for x86? I don't see the
> > value of a 1-page gap before RELRO segment on x86. I'd like to
> > avoid it on x86 if possible.
> >
> > > the relro segment in order to remove a page gap at the beginning of
> > > the relro segment? That seems a dubious trade-off to me. If process
> > > memory is an issue then it would be better to increase disk image size
> > > for reduced memory size.
> > >
> > > There is also the fact that we now hit the do_reset code path in
> > > lang_size_relro_segment when running multiple ld tests. I think that
> > > says the current implementation is broken.
>
> I'm tired of arguing. Your brokem patches have been reverted.
>
Is there a way to enable my patches just for x86?
--
H.J.
More information about the Binutils
mailing list