Re: glibc regression on alpha with 2.34+

Frank Scheiner <[email protected]> Wed, 14 Dec 2022 21:44:09 +0100
Newsgroups gmane.linux.debian.ports.alpha
Message-ID <[email protected]>
On 14.12.22 21:32, John Paul Adrian Glaubitz wrote:
> Hi!
>
> On 12/14/22 21:16, Frank Scheiner wrote:
>> I'll do that tomorrow. The thing is that this diff doesn't apply cleanly:
>
> Which version of the workaround diff did you use? There are two.
>
> There is one that applies cleanly on top of
> 6c57d320484988e87e446e2e60ce42816bf51d53
> and a second one that applies cleanly on top of glibc-2.34, I posted
> both. There were
> some changes between 6c57d320484988e87e446e2e60ce42816bf51d53 and
> glibc-2.34 in the
> minstksize/stksize code which is why you need the second diff that was
> also part of
> my mail.

I used the one from the bottom of your mail, just below "Interestingly,
when I checkout the tag glibc-2.34 and disabled the _dl_minsigstacksize
symbol in "struct rtld_global_ro {}" again with the following hack, I'm
no longer getting a segfault but a floating point exception: "

> I'm attaching the second diff as a patch.

I think there's some whitespace difference. I manually applied the
rejected stuff, made a `git diff` and comparing that to your attached
patch gives:

```
root@nfs:/srv/nfs/ds15/root/srv# diff -Nur glibc-fix-2.patch
bz20305-workaround2.patch
--- glibc-fix-2.patch	2022-12-14 21:24:01.259696291 +0100
+++ bz20305-workaround2.patch	2022-12-14 21:37:25.439904377 +0100
@@ -1,5 +1,5 @@
  diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c
-index d47bef1340..d3dc6e5c57 100644
+index d47bef1340..8462e5859a 100644
  --- a/elf/dl-sysdep.c
  +++ b/elf/dl-sysdep.c
  @@ -116,10 +116,10 @@ _dl_sysdep_start (void **start_argptr,
@@ -12,7 +12,7 @@
  -  GLRO(dl_minsigstacksize) = CONSTANT_MINSIGSTKSZ;
  +  /* /\* NB: Default to a constant CONSTANT_MINSIGSTKSZ.  *\/ */
  +  /* _Static_assert (__builtin_constant_p (CONSTANT_MINSIGSTKSZ), */
-+  /*                   "CONSTANT_MINSIGSTKSZ is constant"); */
++  /* 		  "CONSTANT_MINSIGSTKSZ is constant"); */
  +  /* GLRO(dl_minsigstacksize) = CONSTANT_MINSIGSTKSZ; */

     for (av = GLRO(dl_auxv); av->a_type != AT_NULL; set_seen (av++))
@@ -25,8 +25,8 @@
  -	GLRO(dl_minsigstacksize) = av->a_un.a_val;
  -	break;
  +      /* case AT_MINSIGSTKSZ: */
-+      /*     GLRO(dl_minsigstacksize) = av->a_un.a_val; */
-+      /*     break; */
++      /* 	GLRO(dl_minsigstacksize) = av->a_un.a_val; */
++      /* 	break; */
         DL_PLATFORM_AUXV
         }

```

...so I think we're covered, unless the difference in the index line is
important.

I'll compile that tomorrow and see what happens.

Cheers,
Frank