[PATCH] Linux: Remove rseq support
Matheus Castanho
msc@linux.ibm.com
Thu Jul 16 17:47:13 GMT 2020
Hi Florian,
I'm seeing a failure on ppc* after this commit.
---=== ./elf/tst-tls-ie.out ===---
maintls[1000]: 0x78b4ebda4dc0 .. 0x78b4ebda51a8
var0[480]: 0x78b4ebda5230 .. 0x78b4ebda5410 global-dynamic
var1[120]: 0x78b4ebdb10a0 .. 0x78b4ebdb1118 global-dynamic
var2[24]: 0x78b4ebda5410 .. 0x78b4ebda5428 global-dynamic
var3[16]: 0x78b4ebdb1dc0 .. 0x78b4ebdb1dd0 global-dynamic
var4[1024]: 0x78b4ebda5428 .. 0x78b4ebda5828 initial-exec
error: xdlfcn.c:29: error: dlopen:
/home/tcbot/bot-worker/glibc-ppc64le-power8-default/vpath/elf/tst-tls-ie-mod5.so:
cannot allocate memory in static TLS block
error: 1 test failures
FAIL: elf/tst-tls-ie
original exit status 1
Could it be caused by...
On 7/15/20 12:11 PM, Florian Weimer via Libc-alpha wrote:
> The kernel ABI is not finalized, and there are now various proposals
> to change the size of struct rseq, which would make the glibc ABI
> dependent on the version of the kernels used for building glibc.
> This is of course not acceptable.
>
> This reverts commit 48699da1c468543ade14777819bd1b4d652709de ("elf:
> Support at least 32-byte alignment in static dlopen"), commit
> 8f4632deb3545b2949cec5454afc3cb21a0024ea ("Linux: rseq registration
> tests"), commit 6e29cb3f61ff5432c78a1c84b0d9b123a350ab36 ("Linux: Use
> rseq in sched_getcpu if available"), and commit
> 0c76fc3c2b346dc5401dc055d97d4279632b0fb3 ("Linux: Perform rseq
> registration at C startup and thread creation"), resolving the conflicts
> introduced by the ARC port and the TLS static surplus changes.
[...]
> diff --git a/csu/libc-tls.c b/csu/libc-tls.c
> index 3f1655f264..06e76bd395 100644
> --- a/csu/libc-tls.c
> +++ b/csu/libc-tls.c
> @@ -112,12 +112,6 @@ __libc_setup_tls (void)
> size_t tcb_offset;
> const ElfW(Phdr) *phdr;
>
> - /* libc.so with rseq has TLS with 32-byte alignment. Static dlopen
> - requires at least 32-byte alignment as well, otherwise loading
> - libc.so will always fail. */
> - if (max_align < 32)
> - max_align = 32;
> -
> struct link_map *main_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
>
> /* Look through the TLS segment if there is any. */
> diff --git a/elf/dl-tls.c b/elf/dl-tls.c
> index 772e70d0f6..9a17427047 100644
> --- a/elf/dl-tls.c
> +++ b/elf/dl-tls.c
> @@ -55,7 +55,7 @@
> but come on top when computing the number of namespaces. */
>
> /* Size of initial-exec TLS in libc.so. */
> -#define LIBC_IE_TLS 192
> +#define LIBC_IE_TLS 160
... this change?
--
Matheus Castanho
More information about the Libc-alpha
mailing list