[{"id":3678474,"web_url":"http://patchwork.ozlabs.org/comment/3678474/","msgid":"<CAMe9rOp_ni9ByduQnrAQeFSXgSdobi0AMs2d+dcmBXwHsj5Ogg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-17T04:23:23","subject":"Re: [PATCH v10] elf: Add test for THP alignment of large load\n segments","submitter":{"id":4387,"url":"http://patchwork.ozlabs.org/api/people/4387/","name":"H.J. Lu","email":"hjl.tools@gmail.com"},"content":"On Fri, Apr 17, 2026 at 11:56 AM WANG Rui <wangrui@loongson.cn> wrote:\n>\n> Add a new test to verify that large executable PT_LOAD segments are\n> mapped at addresses aligned to the THP size when the glibc tunable\n> glibc.elf.thp=1 is enabled and the system is configured to use THP\n> in \"always\" mode.\n>\n> The test loads a shared object with a sufficiently large executable\n> segment via dlopen and inspects /proc/self/maps to check that the\n> mapping address is aligned to the THP page size reported by the kernel.\n>\n> The test is skipped if the THP size cannot be determined or if THP is\n> not enabled in \"always\" mode.\n>\n> Signed-off-by: WANG Rui <wangrui@loongson.cn>\n\nI'd like to combine your test change with my patch to enable\nTHP segment load with madvise enabled THP:\n\nhttps://patchwork.sourceware.org/project/glibc/list/?series=59892\n\nCan you provide feedback on my patch?\n\nThanks.\n\n> ---\n> Changes since [v9]:\n>   * Use FAIL_UNSUPPORTED instead of printf.\n>   * Skip tests when THP size exceeds MAX_THP_PAGESIZE.\n>   * Add dependency of tst-thp-align on tst-thp-size-mod.\n>   * Rebase onto current master.\n>\n> [v9]: https://sourceware.org/pipermail/libc-alpha/2026-April/176598.html\n> ---\n>  sysdeps/unix/sysv/linux/Makefile           |   5 +\n>  sysdeps/unix/sysv/linux/tst-thp-align.c    | 155 +++++++++++++++++++++\n>  sysdeps/unix/sysv/linux/tst-thp-size-mod.S |  22 +++\n>  3 files changed, 182 insertions(+)\n>  create mode 100644 sysdeps/unix/sysv/linux/tst-thp-align.c\n>  create mode 100644 sysdeps/unix/sysv/linux/tst-thp-size-mod.S\n>\n> diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile\n> index b06afbdeaab..0d47e9af57e 100644\n> --- a/sysdeps/unix/sysv/linux/Makefile\n> +++ b/sysdeps/unix/sysv/linux/Makefile\n> @@ -698,6 +698,7 @@ $(objpfx)pldd: $(objpfx)xmalloc.o\n>  tests += \\\n>    tst-rseq-tls-range \\\n>    tst-rseq-tls-range-4096 \\\n> +  tst-thp-align \\\n>  # tests\n>  tests-static += \\\n>    tst-rseq-tls-range-4096-static \\\n> @@ -705,17 +706,21 @@ tests-static += \\\n>  # tests-static\n>  modules-names += \\\n>    tst-rseq-tls-range-mod \\\n> +  tst-thp-size-mod \\\n>  # modules-names\n>  CFLAGS-tst-rseq-tls-range.c += -DMAIN_TLS_ALIGN=4\n>  CFLAGS-tst-rseq-tls-range-4096.c += -DMAIN_TLS_ALIGN=4096\n>  CFLAGS-tst-rseq-tls-range-static.c += -DMAIN_TLS_ALIGN=4\n>  CFLAGS-tst-rseq-tls-range-4096-static.c += -DMAIN_TLS_ALIGN=4096\n> +LDFLAGS-tst-thp-size-mod.so += -Wl,-z,noseparate-code\n>  $(objpfx)tst-rseq-tls-range.out: $(objpfx)tst-rseq-tls-range-mod.so\n>  $(objpfx)tst-rseq-tls-range-4096.out: $(objpfx)tst-rseq-tls-range-mod.so\n>  $(objpfx)tst-rseq-tls-range-static.out: $(objpfx)tst-rseq-tls-range-mod.so\n>  $(objpfx)tst-rseq-tls-range-4096-static.out: $(objpfx)tst-rseq-tls-range-mod.so\n> +$(objpfx)tst-thp-align.out: $(objpfx)tst-thp-size-mod.so\n>  tst-rseq-tls-range-static-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx)\n>  tst-rseq-tls-range-4096-static-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx)\n> +tst-thp-align-ENV = GLIBC_TUNABLES=glibc.elf.thp=1\n>\n>  test-internal-extras += tst-nolink-libc\n>  ifeq ($(run-built-tests),yes)\n> diff --git a/sysdeps/unix/sysv/linux/tst-thp-align.c b/sysdeps/unix/sysv/linux/tst-thp-align.c\n> new file mode 100644\n> index 00000000000..0b3f18e000f\n> --- /dev/null\n> +++ b/sysdeps/unix/sysv/linux/tst-thp-align.c\n> @@ -0,0 +1,155 @@\n> +/* Test the THP compatible alignment of PT_LOAD segments.\n> +\n> +   Copyright (C) 2026 Free Software Foundation, Inc.\n> +\n> +   The GNU C Library is free software; you can redistribute it and/or\n> +   modify it under the terms of the GNU Lesser General Public\n> +   License as published by the Free Software Foundation; either\n> +   version 2.1 of the License, or (at your option) any later version.\n> +\n> +   The GNU C Library is distributed in the hope that it will be useful,\n> +   but WITHOUT ANY WARRANTY; without even the implied warranty of\n> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n> +   Lesser General Public License for more details.\n> +\n> +   You should have received a copy of the GNU Lesser General Public\n> +   License along with the GNU C Library; if not, see\n> +   <https://www.gnu.org/licenses/>.  */\n> +\n> +#include <fcntl.h>\n> +#include <stdint.h>\n> +#include <stdlib.h>\n> +#include <string.h>\n> +#include <intprops.h>\n> +#include <inttypes.h>\n> +#include <support/check.h>\n> +#include <support/xdlfcn.h>\n> +#include <support/xstdio.h>\n> +#include <support/xunistd.h>\n> +\n> +#define THP_SIZE_MOD_NAME \"tst-thp-size-mod.so\"\n> +#define MAX_THP_PAGESIZE (32 * 1024 * 1024)\n> +\n> +enum thp_mode_t\n> +{\n> +  thp_mode_always,\n> +  thp_mode_madvise,\n> +  thp_mode_never,\n> +  thp_mode_not_supported\n> +};\n> +\n> +static unsigned long int\n> +get_thp_size (void)\n> +{\n> +  int fd = open (\"/sys/kernel/mm/transparent_hugepage/hpage_pmd_size\",\n> +                 O_RDONLY, 0);\n> +  if (fd == -1)\n> +    return 0;\n> +\n> +  char str[INT_BUFSIZE_BOUND (unsigned long int)];\n> +  ssize_t s = read (fd, str, sizeof (str));\n> +  close (fd);\n> +  if (s < 0)\n> +    return 0;\n> +\n> +  unsigned long int r = 0;\n> +  for (ssize_t i = 0; i < s; i++)\n> +    {\n> +      if (str[i] == '\\n')\n> +    break;\n> +      r *= 10;\n> +      r += str[i] - '0';\n> +    }\n> +  return r;\n> +}\n> +\n> +static enum thp_mode_t\n> +get_thp_mode (void)\n> +{\n> +  int fd = open (\"/sys/kernel/mm/transparent_hugepage/enabled\", O_RDONLY, 0);\n> +  if (fd == -1)\n> +    return thp_mode_not_supported;\n> +\n> +  static const char mode_always[]  = \"[always] madvise never\\n\";\n> +  static const char mode_madvise[] = \"always [madvise] never\\n\";\n> +  static const char mode_never[]   = \"always madvise [never]\\n\";\n> +\n> +  char str[sizeof(mode_always)];\n> +  ssize_t s = read (fd, str, sizeof (str));\n> +  if (s >= sizeof str || s < 0)\n> +    return thp_mode_not_supported;\n> +  str[s] = '\\0';\n> +  close (fd);\n> +\n> +  if (s == sizeof (mode_always) - 1)\n> +    {\n> +      if (strcmp (str, mode_always) == 0)\n> +    return thp_mode_always;\n> +      else if (strcmp (str, mode_madvise) == 0)\n> +    return thp_mode_madvise;\n> +      else if (strcmp (str, mode_never) == 0)\n> +    return thp_mode_never;\n> +    }\n> +  return thp_mode_not_supported;\n> +}\n> +\n> +static void\n> +check_align (void)\n> +{\n> +  unsigned long int thp_size = get_thp_size ();\n> +  enum thp_mode_t thp_mode = get_thp_mode ();\n> +\n> +  if (thp_size == 0)\n> +    {\n> +      FAIL_UNSUPPORTED (\"unable to get THP size.\\n\");\n> +      return;\n> +    }\n> +\n> +  if (thp_size > MAX_THP_PAGESIZE)\n> +    {\n> +      FAIL_UNSUPPORTED (\"THP size exceeds MAX_THP_PAGESIZE.\\n\");\n> +      return;\n> +    }\n> +\n> +  if (thp_mode != thp_mode_always)\n> +    {\n> +      FAIL_UNSUPPORTED (\"THP mode is not always.\\n\");\n> +      return;\n> +    }\n> +\n> +  FILE *f = xfopen (\"/proc/self/maps\", \"r\");\n> +  char *line = NULL;\n> +  size_t len;\n> +\n> +  while (xgetline (&line, &len, f))\n> +    {\n> +      uintptr_t from, to;\n> +      char *prot = NULL, *path = NULL;\n> +      int r = sscanf (line, \"%\" SCNxPTR \"-%\" SCNxPTR \"%ms%*s%*s%*s%ms\",\n> +                      &from, &to, &prot, &path);\n> +\n> +      TEST_VERIFY (r == 3 || r == 4);\n> +\n> +      if (strstr (prot, \"x\") && strstr (path, THP_SIZE_MOD_NAME))\n> +        TEST_COMPARE (from % thp_size, 0);\n> +\n> +      free (path);\n> +    }\n> +\n> +  free (line);\n> +  xfclose (f);\n> +}\n> +\n> +static int\n> +do_test (void)\n> +{\n> +  void *dl;\n> +\n> +  dl = xdlopen (THP_SIZE_MOD_NAME, RTLD_NOW);\n> +  check_align ();\n> +  xdlclose (dl);\n> +\n> +  return 0;\n> +}\n> +\n> +#include <support/test-driver.c>\n> diff --git a/sysdeps/unix/sysv/linux/tst-thp-size-mod.S b/sysdeps/unix/sysv/linux/tst-thp-size-mod.S\n> new file mode 100644\n> index 00000000000..3084c2d0e2c\n> --- /dev/null\n> +++ b/sysdeps/unix/sysv/linux/tst-thp-size-mod.S\n> @@ -0,0 +1,22 @@\n> +/* A module that provides THP code size for testing.\n> +\n> +   Copyright (C) 2026 Free Software Foundation, Inc.\n> +   This file is part of the GNU C Library.\n> +\n> +   The GNU C Library is free software; you can redistribute it and/or\n> +   modify it under the terms of the GNU Lesser General Public\n> +   License as published by the Free Software Foundation; either\n> +   version 2.1 of the License, or (at your option) any later version.\n> +\n> +   The GNU C Library is distributed in the hope that it will be useful,\n> +   but WITHOUT ANY WARRANTY; without even the implied warranty of\n> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n> +   Lesser General Public License for more details.\n> +\n> +   You should have received a copy of the GNU Lesser General Public\n> +   License along with the GNU C Library; if not, see\n> +   <https://www.gnu.org/licenses/>.  */\n> +\n> +    .globl thp_size\n> +thp_size:\n> +    .space 32 * 1024 * 1024\n> --\n> 2.53.0\n>","headers":{"Return-Path":"<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":["incoming@patchwork.ozlabs.org","libc-alpha@sourceware.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","libc-alpha@sourceware.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=QQGH5TSy;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=QQGH5TSy","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","sourceware.org; spf=pass smtp.mailfrom=gmail.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=2607:f8b0:4864:20::102d"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxhbt5yHSz1yGt\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 14:24:26 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 6A23A4BA23FB\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 04:24:23 +0000 (GMT)","from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com\n [IPv6:2607:f8b0:4864:20::102d])\n by sourceware.org (Postfix) with ESMTPS id 0A9744BA23FB\n for <libc-alpha@sourceware.org>; Fri, 17 Apr 2026 04:24:01 +0000 (GMT)","by mail-pj1-x102d.google.com with SMTP id\n 98e67ed59e1d1-35fb7f51171so286912a91.1\n for <libc-alpha@sourceware.org>; Thu, 16 Apr 2026 21:24:00 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 6A23A4BA23FB","OpenDKIM Filter v2.11.0 sourceware.org 0A9744BA23FB"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 0A9744BA23FB","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 0A9744BA23FB","ARC-Seal":["i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1776399841; cv=pass;\n b=olJsrS08a5DM9N/t8YljiVEYVuuPer9wuajjfadsfdcCU7kuMgtNnJMqiAOMcYiEH/VOQQa53WD60RRXzNuJnuDjFp1NEppMnNz4XSD0UPiggTy/t1AyF4gmdu6UiIzdp1tXh9kQWcMez0J8ap1flIDd/SRyMwCya4W0z4/H0hE=","i=1; a=rsa-sha256; t=1776399840; cv=none;\n d=google.com; s=arc-20240605;\n b=eq6zQwQxPB3IgYoqk74XLJyizrkmi3YvXm7w1f6RfjDD81zCbedeRzw7glQvfUwYkg\n Nt1bU3GLwJ7JU+9Jm16Jg+zdiNsT4rCkoAJrGKDzI++GyxkcbJzoDQxgLrQaiDbBjhrH\n LQ9WWr33hAzkg6lX3A/fd2LpkPDX/2aUo2yXUSJDLV0QNFPT97xda97x0D/JchE6v2fn\n cAolfwm8YiYJYEdrTC7tx7eI8Y/l40TVWsX51/P1039bni/devfY33yO9ZBdGrNbfAYP\n jygziBoZvcCxb7g560PszCv1U+mIhAooY/BmfdXNEeLP0+/UPUgAF3XnJEkxPIJ8S0nZ\n 9wkA=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776399841; c=relaxed/simple;\n bh=IkroUX9bzCSk063NEXkWfaxmfEz1GHOcXDbkMgILHw0=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=R9HHg70j+rdyEkQ90pGbebV9knqQlT6PqTZH43+v8vleOsei1VteVtP/AX52tUPYU2YuZrZ7hcEXmcYLZUptF3vHmHwr9TVU0YkWdfnjTX+1aXYt06H7kX6n8kVGMs+uyk17MbBQz4SyjxYeehkBeL+pEuUE/2bNvXHLmeqINEc=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=vnESdHMJMs0Hqws5Qr8kIwpl0K2M7Yb4DJEh2RtlvEg=;\n fh=gYlpH3AzoGPM3wlaN1BXlxx6htyahongdwVEZUO8w/Q=;\n b=Veu1rWTdFJpJSAogAnuVhPsBMbBkHb6dk86Ib/xK7vWfpJAFeliXjD1LrQ0Ppm/GAy\n dizUsTMgVtSdtwEwGvUprUSHMaqtW/mZDbgSAeVX+2/wnoe3OV9+5W5Cu2zskblhl+lH\n zGWZq8sTMYfgQ9kOrZxfpTVBLpA1TUtSuYLLauTCmilFsCF2FO7o+9JQp+3AROcfUDtl\n qEfh2cCd6V0ucUZx5FgQwNwSozx20I3NQHjAGvnC/64IAeQ0fBALD8iVByRdmP7Niur0\n CnJsTAg2XOdtPpIlyLjkqNJYfXeb4iGids2KcKQ/DXUgr0soOoJQpkG5XpUe0i8nxQ6c\n xayg==; darn=sourceware.org"],"ARC-Authentication-Results":["i=2; server2.sourceware.org","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776399840; x=1777004640; darn=sourceware.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=vnESdHMJMs0Hqws5Qr8kIwpl0K2M7Yb4DJEh2RtlvEg=;\n b=QQGH5TSyguHDyu2+f7jgS4oou5cjDYZL4MgGyRWUnv4cE/74/54Xgh2+v84FOEXUuz\n Jn8Br3JQId2ChYyQq/eB1nFqgh7/7zfWrfCal2dwTAvJfjd1+i9v882nMwOG2yM6FlDb\n NNYslnLFDeOeRL+BSLogGSKsLK1SUU9N6yxyc55X+qffh2uRGd4FK0YX0Pzl+blQJvRK\n wdaRvCG7g0r7+60cyhzejlWEWYmmq+EMVC476XlpcZ0a4BFNwv65l+uA1QGnQkTxgfQ4\n Wo0xMe/Z985rh51591vX0TPWasH5vbcdku+6zIFFZonBWDvEXYxmEnxIbhA3n+Lq9F0e\n jPXw==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776399840; x=1777004640;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=vnESdHMJMs0Hqws5Qr8kIwpl0K2M7Yb4DJEh2RtlvEg=;\n b=HiTJn9XwLJFuxTGEJEW6HkCFmucoAD98cg5gkt70SwPSkS2AOsq84PwLna6xHvHIHX\n LRsF7opbOkRp7veKXoQwCL08ia+0RwKP8Y7vAUeoyxtKiNoViZc+5ONVstFvFZMuoKc+\n sp7cundU3y6dgz6iHhMsG2dem+ypM1rp4NODOMpYFju6UlOPcB7/+Um6Jyd5Kp8T2dcz\n 5Z8spWpDEu6kITP10+zzX56xyPFj7wH9AwA7lLDvan9Hh6AMnAaR7PF/JTpRsTU9RKEE\n H5yjsNhjSPT7v0bQ2eQENeIuhvYhZLaCBMxRQDx9WCy8Vcb32Noqel1Lxgd/CIF5xBhk\n w7+w==","X-Gm-Message-State":"AOJu0Yy+iOVIZuMWXHhW7Era1sL1yq+1nrwsbgF6KEMKxdF7YRI1El65\n peBWAITbm1te5MUap+niq2ct90jCfkFkkW0rSqx51uhPMP/P5T1AjruYCFBa8doo4mn0aHuzg4t\n rBvXFRlPCbluujUcWsh/NAPHa5cNV4b0=","X-Gm-Gg":"AeBDies3vJ13OiY4U2+zxk2WBzzbG8Rrwt2sybJF5E2gwG0N5e/WvRvOaYZYcCmI5dN\n olIPNeeaMfC22l+y421el6/K4d8GoqzaA8Rc9TFM/yoKSIqSda2tESmZrXk5i2mxL2xWPGDLRND\n p4i2dlrby52iZOvzI89e8+tVUPDN+m11bTv/Zhialx5U+TyEGkfItluyCgAQYbGzS53vwd9ZxVf\n YNUq6tfDv3oIdTWDGHAG1XmLht+6+HbhX2RGMYFKbh0BhjV/xFymrLNtPQpVSciY86dkqmsQbbz\n 5/+wzwiGpcIGUgNBdwcMcJ5g+X4=","X-Received":"by 2002:a17:903:1ae5:b0:2b2:ec46:dfd4 with SMTP id\n d9443c01a7336-2b5f9f1eb04mr13449265ad.22.1776399839980; Thu, 16 Apr 2026\n 21:23:59 -0700 (PDT)","MIME-Version":"1.0","References":"<20260417035556.1778246-1-wangrui@loongson.cn>","In-Reply-To":"<20260417035556.1778246-1-wangrui@loongson.cn>","From":"\"H.J. Lu\" <hjl.tools@gmail.com>","Date":"Fri, 17 Apr 2026 12:23:23 +0800","X-Gm-Features":"AQROBzAsFgdnvCu2DHwTCEgnqR90dT-l-h2R543zetkSWSQHoZe72J-cr3qE9fc","Message-ID":"\n <CAMe9rOp_ni9ByduQnrAQeFSXgSdobi0AMs2d+dcmBXwHsj5Ogg@mail.gmail.com>","Subject":"Re: [PATCH v10] elf: Add test for THP alignment of large load\n segments","To":"WANG Rui <wangrui@loongson.cn>","Cc":"libc-alpha@sourceware.org,\n Adhemerval Zanella <adhemerval.zanella@linaro.org>,\n Dev Jain <dev.jain@arm.com>,\n Florian Weimer <fweimer@redhat.com>, Wilco Dijkstra <Wilco.Dijkstra@arm.com>,\n Xi Ruoyao <xry111@xry111.site>, WANG Xuerui <git@xen0n.name>,\n caiyinyu <caiyinyu@loongson.cn>,\n mengqinggang <mengqinggang@loongson.cn>, Huacai Chen <chenhuacai@kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"libc-alpha@sourceware.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Libc-alpha mailing list <libc-alpha.sourceware.org>","List-Unsubscribe":"<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>","List-Archive":"<https://sourceware.org/pipermail/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-request@sourceware.org?subject=help>","List-Subscribe":"<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>","Errors-To":"libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org"}},{"id":3678536,"web_url":"http://patchwork.ozlabs.org/comment/3678536/","msgid":"<CAMe9rOo=MYwgxuwe=rbjmfUTtJuKA5e+DeE4ojbqmZK=GVwX9g@mail.gmail.com>","list_archive_url":null,"date":"2026-04-17T07:44:57","subject":"Re: [PATCH v10] elf: Add test for THP alignment of large load\n segments","submitter":{"id":4387,"url":"http://patchwork.ozlabs.org/api/people/4387/","name":"H.J. Lu","email":"hjl.tools@gmail.com"},"content":"On Fri, Apr 17, 2026 at 12:23 PM H.J. Lu <hjl.tools@gmail.com> wrote:\n>\n> On Fri, Apr 17, 2026 at 11:56 AM WANG Rui <wangrui@loongson.cn> wrote:\n> >\n> > Add a new test to verify that large executable PT_LOAD segments are\n> > mapped at addresses aligned to the THP size when the glibc tunable\n> > glibc.elf.thp=1 is enabled and the system is configured to use THP\n> > in \"always\" mode.\n> >\n> > The test loads a shared object with a sufficiently large executable\n> > segment via dlopen and inspects /proc/self/maps to check that the\n> > mapping address is aligned to the THP page size reported by the kernel.\n> >\n> > The test is skipped if the THP size cannot be determined or if THP is\n> > not enabled in \"always\" mode.\n> >\n> > Signed-off-by: WANG Rui <wangrui@loongson.cn>\n>\n> I'd like to combine your test change with my patch to enable\n> THP segment load with madvise enabled THP:\n>\n> https://patchwork.sourceware.org/project/glibc/list/?series=59892\n>\n> Can you provide feedback on my patch?\n\nThe updated patch is at\n\nhttps://patchwork.sourceware.org/project/glibc/patch/CAMe9rOryN0j-SZT_C4EYzEHt+B7kQTvC5t4GaQ3H8dPXG+aejg@mail.gmail.com/\n\n> Thanks.\n>\n> > ---\n> > Changes since [v9]:\n> >   * Use FAIL_UNSUPPORTED instead of printf.\n> >   * Skip tests when THP size exceeds MAX_THP_PAGESIZE.\n> >   * Add dependency of tst-thp-align on tst-thp-size-mod.\n> >   * Rebase onto current master.\n> >\n> > [v9]: https://sourceware.org/pipermail/libc-alpha/2026-April/176598.html\n> > ---\n> >  sysdeps/unix/sysv/linux/Makefile           |   5 +\n> >  sysdeps/unix/sysv/linux/tst-thp-align.c    | 155 +++++++++++++++++++++\n> >  sysdeps/unix/sysv/linux/tst-thp-size-mod.S |  22 +++\n> >  3 files changed, 182 insertions(+)\n> >  create mode 100644 sysdeps/unix/sysv/linux/tst-thp-align.c\n> >  create mode 100644 sysdeps/unix/sysv/linux/tst-thp-size-mod.S\n> >\n> > diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile\n> > index b06afbdeaab..0d47e9af57e 100644\n> > --- a/sysdeps/unix/sysv/linux/Makefile\n> > +++ b/sysdeps/unix/sysv/linux/Makefile\n> > @@ -698,6 +698,7 @@ $(objpfx)pldd: $(objpfx)xmalloc.o\n> >  tests += \\\n> >    tst-rseq-tls-range \\\n> >    tst-rseq-tls-range-4096 \\\n> > +  tst-thp-align \\\n> >  # tests\n> >  tests-static += \\\n> >    tst-rseq-tls-range-4096-static \\\n> > @@ -705,17 +706,21 @@ tests-static += \\\n> >  # tests-static\n> >  modules-names += \\\n> >    tst-rseq-tls-range-mod \\\n> > +  tst-thp-size-mod \\\n> >  # modules-names\n> >  CFLAGS-tst-rseq-tls-range.c += -DMAIN_TLS_ALIGN=4\n> >  CFLAGS-tst-rseq-tls-range-4096.c += -DMAIN_TLS_ALIGN=4096\n> >  CFLAGS-tst-rseq-tls-range-static.c += -DMAIN_TLS_ALIGN=4\n> >  CFLAGS-tst-rseq-tls-range-4096-static.c += -DMAIN_TLS_ALIGN=4096\n> > +LDFLAGS-tst-thp-size-mod.so += -Wl,-z,noseparate-code\n> >  $(objpfx)tst-rseq-tls-range.out: $(objpfx)tst-rseq-tls-range-mod.so\n> >  $(objpfx)tst-rseq-tls-range-4096.out: $(objpfx)tst-rseq-tls-range-mod.so\n> >  $(objpfx)tst-rseq-tls-range-static.out: $(objpfx)tst-rseq-tls-range-mod.so\n> >  $(objpfx)tst-rseq-tls-range-4096-static.out: $(objpfx)tst-rseq-tls-range-mod.so\n> > +$(objpfx)tst-thp-align.out: $(objpfx)tst-thp-size-mod.so\n> >  tst-rseq-tls-range-static-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx)\n> >  tst-rseq-tls-range-4096-static-ENV = LD_LIBRARY_PATH=$(objpfx):$(common-objpfx)\n> > +tst-thp-align-ENV = GLIBC_TUNABLES=glibc.elf.thp=1\n> >\n> >  test-internal-extras += tst-nolink-libc\n> >  ifeq ($(run-built-tests),yes)\n> > diff --git a/sysdeps/unix/sysv/linux/tst-thp-align.c b/sysdeps/unix/sysv/linux/tst-thp-align.c\n> > new file mode 100644\n> > index 00000000000..0b3f18e000f\n> > --- /dev/null\n> > +++ b/sysdeps/unix/sysv/linux/tst-thp-align.c\n> > @@ -0,0 +1,155 @@\n> > +/* Test the THP compatible alignment of PT_LOAD segments.\n> > +\n> > +   Copyright (C) 2026 Free Software Foundation, Inc.\n> > +\n> > +   The GNU C Library is free software; you can redistribute it and/or\n> > +   modify it under the terms of the GNU Lesser General Public\n> > +   License as published by the Free Software Foundation; either\n> > +   version 2.1 of the License, or (at your option) any later version.\n> > +\n> > +   The GNU C Library is distributed in the hope that it will be useful,\n> > +   but WITHOUT ANY WARRANTY; without even the implied warranty of\n> > +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n> > +   Lesser General Public License for more details.\n> > +\n> > +   You should have received a copy of the GNU Lesser General Public\n> > +   License along with the GNU C Library; if not, see\n> > +   <https://www.gnu.org/licenses/>.  */\n> > +\n> > +#include <fcntl.h>\n> > +#include <stdint.h>\n> > +#include <stdlib.h>\n> > +#include <string.h>\n> > +#include <intprops.h>\n> > +#include <inttypes.h>\n> > +#include <support/check.h>\n> > +#include <support/xdlfcn.h>\n> > +#include <support/xstdio.h>\n> > +#include <support/xunistd.h>\n> > +\n> > +#define THP_SIZE_MOD_NAME \"tst-thp-size-mod.so\"\n> > +#define MAX_THP_PAGESIZE (32 * 1024 * 1024)\n> > +\n> > +enum thp_mode_t\n> > +{\n> > +  thp_mode_always,\n> > +  thp_mode_madvise,\n> > +  thp_mode_never,\n> > +  thp_mode_not_supported\n> > +};\n> > +\n> > +static unsigned long int\n> > +get_thp_size (void)\n> > +{\n> > +  int fd = open (\"/sys/kernel/mm/transparent_hugepage/hpage_pmd_size\",\n> > +                 O_RDONLY, 0);\n> > +  if (fd == -1)\n> > +    return 0;\n> > +\n> > +  char str[INT_BUFSIZE_BOUND (unsigned long int)];\n> > +  ssize_t s = read (fd, str, sizeof (str));\n> > +  close (fd);\n> > +  if (s < 0)\n> > +    return 0;\n> > +\n> > +  unsigned long int r = 0;\n> > +  for (ssize_t i = 0; i < s; i++)\n> > +    {\n> > +      if (str[i] == '\\n')\n> > +    break;\n> > +      r *= 10;\n> > +      r += str[i] - '0';\n> > +    }\n> > +  return r;\n> > +}\n> > +\n> > +static enum thp_mode_t\n> > +get_thp_mode (void)\n> > +{\n> > +  int fd = open (\"/sys/kernel/mm/transparent_hugepage/enabled\", O_RDONLY, 0);\n> > +  if (fd == -1)\n> > +    return thp_mode_not_supported;\n> > +\n> > +  static const char mode_always[]  = \"[always] madvise never\\n\";\n> > +  static const char mode_madvise[] = \"always [madvise] never\\n\";\n> > +  static const char mode_never[]   = \"always madvise [never]\\n\";\n> > +\n> > +  char str[sizeof(mode_always)];\n> > +  ssize_t s = read (fd, str, sizeof (str));\n> > +  if (s >= sizeof str || s < 0)\n> > +    return thp_mode_not_supported;\n> > +  str[s] = '\\0';\n> > +  close (fd);\n> > +\n> > +  if (s == sizeof (mode_always) - 1)\n> > +    {\n> > +      if (strcmp (str, mode_always) == 0)\n> > +    return thp_mode_always;\n> > +      else if (strcmp (str, mode_madvise) == 0)\n> > +    return thp_mode_madvise;\n> > +      else if (strcmp (str, mode_never) == 0)\n> > +    return thp_mode_never;\n> > +    }\n> > +  return thp_mode_not_supported;\n> > +}\n> > +\n> > +static void\n> > +check_align (void)\n> > +{\n> > +  unsigned long int thp_size = get_thp_size ();\n> > +  enum thp_mode_t thp_mode = get_thp_mode ();\n> > +\n> > +  if (thp_size == 0)\n> > +    {\n> > +      FAIL_UNSUPPORTED (\"unable to get THP size.\\n\");\n> > +      return;\n> > +    }\n> > +\n> > +  if (thp_size > MAX_THP_PAGESIZE)\n> > +    {\n> > +      FAIL_UNSUPPORTED (\"THP size exceeds MAX_THP_PAGESIZE.\\n\");\n> > +      return;\n> > +    }\n> > +\n> > +  if (thp_mode != thp_mode_always)\n> > +    {\n> > +      FAIL_UNSUPPORTED (\"THP mode is not always.\\n\");\n> > +      return;\n> > +    }\n> > +\n> > +  FILE *f = xfopen (\"/proc/self/maps\", \"r\");\n> > +  char *line = NULL;\n> > +  size_t len;\n> > +\n> > +  while (xgetline (&line, &len, f))\n> > +    {\n> > +      uintptr_t from, to;\n> > +      char *prot = NULL, *path = NULL;\n> > +      int r = sscanf (line, \"%\" SCNxPTR \"-%\" SCNxPTR \"%ms%*s%*s%*s%ms\",\n> > +                      &from, &to, &prot, &path);\n> > +\n> > +      TEST_VERIFY (r == 3 || r == 4);\n> > +\n> > +      if (strstr (prot, \"x\") && strstr (path, THP_SIZE_MOD_NAME))\n> > +        TEST_COMPARE (from % thp_size, 0);\n> > +\n> > +      free (path);\n> > +    }\n> > +\n> > +  free (line);\n> > +  xfclose (f);\n> > +}\n> > +\n> > +static int\n> > +do_test (void)\n> > +{\n> > +  void *dl;\n> > +\n> > +  dl = xdlopen (THP_SIZE_MOD_NAME, RTLD_NOW);\n> > +  check_align ();\n> > +  xdlclose (dl);\n> > +\n> > +  return 0;\n> > +}\n> > +\n> > +#include <support/test-driver.c>\n> > diff --git a/sysdeps/unix/sysv/linux/tst-thp-size-mod.S b/sysdeps/unix/sysv/linux/tst-thp-size-mod.S\n> > new file mode 100644\n> > index 00000000000..3084c2d0e2c\n> > --- /dev/null\n> > +++ b/sysdeps/unix/sysv/linux/tst-thp-size-mod.S\n> > @@ -0,0 +1,22 @@\n> > +/* A module that provides THP code size for testing.\n> > +\n> > +   Copyright (C) 2026 Free Software Foundation, Inc.\n> > +   This file is part of the GNU C Library.\n> > +\n> > +   The GNU C Library is free software; you can redistribute it and/or\n> > +   modify it under the terms of the GNU Lesser General Public\n> > +   License as published by the Free Software Foundation; either\n> > +   version 2.1 of the License, or (at your option) any later version.\n> > +\n> > +   The GNU C Library is distributed in the hope that it will be useful,\n> > +   but WITHOUT ANY WARRANTY; without even the implied warranty of\n> > +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n> > +   Lesser General Public License for more details.\n> > +\n> > +   You should have received a copy of the GNU Lesser General Public\n> > +   License along with the GNU C Library; if not, see\n> > +   <https://www.gnu.org/licenses/>.  */\n> > +\n> > +    .globl thp_size\n> > +thp_size:\n> > +    .space 32 * 1024 * 1024\n> > --\n> > 2.53.0\n> >\n>\n>\n> --\n> H.J.","headers":{"Return-Path":"<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":["incoming@patchwork.ozlabs.org","libc-alpha@sourceware.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","libc-alpha@sourceware.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=QNfLpnVm;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=QNfLpnVm","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","sourceware.org; spf=pass smtp.mailfrom=gmail.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=2607:f8b0:4864:20::629"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fxn4S64hWz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 17:46:00 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 927204BAD147\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 07:45:58 +0000 (GMT)","from mail-pl1-x629.google.com (mail-pl1-x629.google.com\n [IPv6:2607:f8b0:4864:20::629])\n by sourceware.org (Postfix) with ESMTPS id A70CF4BA23C3\n for <libc-alpha@sourceware.org>; Fri, 17 Apr 2026 07:45:35 +0000 (GMT)","by mail-pl1-x629.google.com with SMTP id\n d9443c01a7336-2ad617d5b80so2092455ad.1\n for <libc-alpha@sourceware.org>; Fri, 17 Apr 2026 00:45:35 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 927204BAD147","OpenDKIM Filter v2.11.0 sourceware.org A70CF4BA23C3"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org A70CF4BA23C3","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org A70CF4BA23C3","ARC-Seal":["i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1776411935; cv=pass;\n b=QsaEC8bok0rSfy7g8DqGfRKSm6cRh+dMHZJT0qnQ4Vng+jKhWJAYkM47g+84MK/k3y4P0MITNrFx94sM9LggKF58VcbuAttUQfv9GprWxrCzaXtfa6ziUeJNE5rGmgrlQlqOuUVuxYKzKvQ+QdieEg/TrXSJRjiWtilf16eRQDg=","i=1; a=rsa-sha256; t=1776411935; cv=none;\n d=google.com; s=arc-20240605;\n b=NFDTRSYeB+Stk+8BfKyxu499FZJKo6LwNFHyboDzCbKXpINGVs9AW9w0K8o9SJ9Y2O\n jLfDsvMW02+Ft0j7nPRMRzowO5fivLGa6MB64zsdV0p/nXaLl6zw64yAKtwkfNnohwGl\n 83tvvcI3EDgwHW9z5EcGD5yrBOG3m3FkW9Wm6PJXzXtz7d2ZWBw2xchKvOmKab2xjM7P\n 0MRt6P42An1poBpip0P7eAlIhNFGB0trO0Yi6VaGH9w6Gt4fHcOZZBICiwcY85eMJWEZ\n YgpMGcaxpouHzOOCJ+FsDmtnh8f74+EnKAG6HlbEpGBMI9etnMItteBGN2aY0A7CWxCb\n 2Auw=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776411935; c=relaxed/simple;\n bh=c9kBSKZo16LkMsXEne2PKS0qRBYVMhMdyK6zLY3Ov74=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=PUmDgCaNoVV8CCVWl26QUt9PfmZ3NMCtYJ3NaYtZW3dHyV3yetQBDFHUQ57tDxr1SNjlrCSxZC7ILK4zTIcLlN1a18LeQzmZ70YOwTVwBVABLgTNGfxicXJ7olWV1YAt3P3vWOPEIp8ieSNEisf9RI5JNKPoHChP1h35p/ZV3BE=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=cksL0JE4ppDmkteAk2FsVbwB8uXaUpVIeOG1xuGphrI=;\n fh=gYlpH3AzoGPM3wlaN1BXlxx6htyahongdwVEZUO8w/Q=;\n b=Ksy/KX7Q19+R7XNWfLb8H+OBOaBsWK+GQw8zh57MS86gu1YunRRrGhjzT26DmlwpxO\n T7IUk0+mQF1i3qjsGeEtAWyHg05qF7/mLbQTGyaXieIRiICP9ruOA+33uJJsIJUhksKJ\n M+xnpABykGYm6pHhhJyXQ0uoVFSOv1c8DqxOzrkuuAYlXcpC+QsDMEe5z5yNDrSorUtR\n EJcbyK9PY+pT/Ce0aOJARVA5uQg70nwmTmE2MjUPbXQz+6DKyvsDoufj9DD5e2fUcq7t\n 3XpfOO1h/bFWus76AxKM7VjE2dbwnYnwGnUQogCpUaoKnVrkzd2Le+0/wspYUkbOyqQS\n +Yiw==; darn=sourceware.org"],"ARC-Authentication-Results":["i=2; server2.sourceware.org","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776411935; x=1777016735; darn=sourceware.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=cksL0JE4ppDmkteAk2FsVbwB8uXaUpVIeOG1xuGphrI=;\n b=QNfLpnVmcswIrHIeJxD5y2w0ainq7OS1/bdBJHdYdqM9739oIcx9oommoSllHmMrK+\n 8eq9IR2RacKfsOJl18fQp/bk0vP5haGYk26YA6Ts27wyh44IFK8MBZnp9KBlEKZkR3/0\n EYV1J5IR0TMMCVeGvU9VvF82VgsnwCNDi4F+7BnJmroxeZglPd3H8gm3f9lat4huFdTb\n lw3EI9p8/whzb8rJt41vliSYhvFsTq/kNk7eNKo11QNUe/f38NoNerEM7j0vE35wkpHn\n psIGgXDlHKqSP/OjrmbqxFfMU25eU1iC9kznrTX4oCoMl1rVrviIx22yMctj+u1jWqnB\n xekQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776411935; x=1777016735;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=cksL0JE4ppDmkteAk2FsVbwB8uXaUpVIeOG1xuGphrI=;\n b=Ya47Nc+ll+NlSfa2yt2W+uWeSxOAlyaZxU0RDa76uoriaXgBT4o9yUarhUKOAM4nZN\n gggr/CuF3tTD6rIFvqJ9dlKJsjkYXJOxjpbtkDb2bnmOGZ6xpAiUZaX5LktNloarZw2r\n 4VXSGL/Y4henhRHC+EGkQbnHaj/m6QyhVRFTCr3tY4ex1b0oVApJ2oF2H3KCE0eke+4d\n 3dDy8jNMzjZKhypafqO3PxMYGVTrLR6tEpPKzyQfto/Pt/RiFr/Ke9xFz8x1h0Bq6jSq\n Y60zu5adZ3WYwWFxAXDlIz3bx6EOhQRANu2htEiWzujxGmSvDLrPzB6uhs8GkuyojARY\n R9Xg==","X-Gm-Message-State":"AOJu0Yxhj1Vbq1SUrVhZaC3D+JaJ/yEVNco3hmKq3n/ddsH6EP7iHO6k\n wvWLgpzMITWbj2CN2wXjQfv0EDEffe4mR0aV6DvJYLCuFUwO+pv/ToOchvOKk3IsnTRec0XEFs8\n XxQW5J1rOFEYvVFWusApBRu4eoZCmODw=","X-Gm-Gg":"AeBDietzdrj2RtHJ2vpGiadZFxPRQWH9iZT+Nnhuc3CFSzQy7mzuGkU03ud/QyShEBc\n 3/yhftZIySw84o5ycJE43EiSGWMb/i+5418mhGSMl5bielKgDexRVDRNdEs8xK+AkP5kX4UvU5J\n uaK5YprzwoJnrVlbx1RHc26Fzi2wY4oXQbaH1Fw9XHqR3ogW7zIuSFOnnrdhJoFzolukqWcyVs+\n SODjIlXJb1bhIXY4CPcSEmxKB6V+M1EyeRI7HXYfoTmiW2SVtOUEmJQv3z8apeVhpxL5UpPuw7b\n Z6eFjcHbW99FcO0y7yw=","X-Received":"by 2002:a17:903:4510:b0:2b2:a6a2:c8ca with SMTP id\n d9443c01a7336-2b5f9ed123cmr13521175ad.13.1776411934600; Fri, 17 Apr 2026\n 00:45:34 -0700 (PDT)","MIME-Version":"1.0","References":"<20260417035556.1778246-1-wangrui@loongson.cn>\n <CAMe9rOp_ni9ByduQnrAQeFSXgSdobi0AMs2d+dcmBXwHsj5Ogg@mail.gmail.com>","In-Reply-To":"\n <CAMe9rOp_ni9ByduQnrAQeFSXgSdobi0AMs2d+dcmBXwHsj5Ogg@mail.gmail.com>","From":"\"H.J. Lu\" <hjl.tools@gmail.com>","Date":"Fri, 17 Apr 2026 15:44:57 +0800","X-Gm-Features":"AQROBzA5BEYG8M8hR5-tmaW4JMVeJSYrVrn0CIgGCQGzfYmlTkwkaOeLMJnPo7M","Message-ID":"\n <CAMe9rOo=MYwgxuwe=rbjmfUTtJuKA5e+DeE4ojbqmZK=GVwX9g@mail.gmail.com>","Subject":"Re: [PATCH v10] elf: Add test for THP alignment of large load\n segments","To":"WANG Rui <wangrui@loongson.cn>","Cc":"libc-alpha@sourceware.org,\n Adhemerval Zanella <adhemerval.zanella@linaro.org>,\n Dev Jain <dev.jain@arm.com>,\n Florian Weimer <fweimer@redhat.com>, Wilco Dijkstra <Wilco.Dijkstra@arm.com>,\n Xi Ruoyao <xry111@xry111.site>, WANG Xuerui <git@xen0n.name>,\n caiyinyu <caiyinyu@loongson.cn>,\n mengqinggang <mengqinggang@loongson.cn>, Huacai Chen <chenhuacai@kernel.org>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"libc-alpha@sourceware.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Libc-alpha mailing list <libc-alpha.sourceware.org>","List-Unsubscribe":"<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>","List-Archive":"<https://sourceware.org/pipermail/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-request@sourceware.org?subject=help>","List-Subscribe":"<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>","Errors-To":"libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org"}},{"id":3679365,"web_url":"http://patchwork.ozlabs.org/comment/3679365/","msgid":"<PAWPR08MB8982457B2EA5506F61A4A333832F2@PAWPR08MB8982.eurprd08.prod.outlook.com>","list_archive_url":null,"date":"2026-04-20T11:23:40","subject":"Re: [PATCH v10] elf: Add test for THP alignment of large load\n segments","submitter":{"id":67598,"url":"http://patchwork.ozlabs.org/api/people/67598/","name":"Wilco Dijkstra","email":"Wilco.Dijkstra@arm.com"},"content":"Hi Rui,\n \n> Add a new test to verify that large executable PT_LOAD segments are\n> mapped at addresses aligned to the THP size when the glibc tunable\n> glibc.elf.thp=1 is enabled and the system is configured to use THP\n> in \"always\" mode.\n>\n> The test loads a shared object with a sufficiently large executable\n> segment via dlopen and inspects /proc/self/maps to check that the\n> mapping address is aligned to the THP page size reported by the kernel.\n>\n> The test is skipped if the THP size cannot be determined or if THP is\n> not enabled in \"always\" mode.\n> \n> Signed-off-by: WANG Rui <wangrui@loongson.cn>\n\nLGTM - it now says UNSUPPORTED if THP is not [always]. Committed.\n\nReviewed-by: Wilco Dijkstra  <Wilco.Dijkstra@arm.com>\n\nCheers,\nWilco","headers":{"Return-Path":"<libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org>","X-Original-To":["incoming@patchwork.ozlabs.org","libc-alpha@sourceware.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","libc-alpha@sourceware.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=NIPAj2IL;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=NIPAj2IL;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=NIPAj2IL;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=NIPAj2IL","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=2a01:111:f403:c200::3"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fzjpF1RMdz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 20 Apr 2026 21:25:24 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 385774C91748\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 20 Apr 2026 11:25:21 +0000 (GMT)","from DU2PR03CU002.outbound.protection.outlook.com\n (mail-northeuropeazlp170110003.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c200::3])\n by sourceware.org (Postfix) with ESMTPS id 90A334BA23FD\n for <libc-alpha@sourceware.org>; Mon, 20 Apr 2026 11:24:55 +0000 (GMT)","from CWLP265CA0538.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:18d::11)\n by DB3PR08MB8937.eurprd08.prod.outlook.com (2603:10a6:10:43c::22)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr\n 2026 11:24:46 +0000","from DU6PEPF0000A7E0.eurprd02.prod.outlook.com\n (2603:10a6:400:18d:cafe::13) by CWLP265CA0538.outlook.office365.com\n (2603:10a6:400:18d::11) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via Frontend Transport; Mon,\n 20 Apr 2026 11:24:46 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n DU6PEPF0000A7E0.mail.protection.outlook.com (10.167.8.39) with Microsoft SMTP\n Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9791.48 via\n Frontend Transport; Mon, 20 Apr 2026 11:24:45 +0000","from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20)\n by AS8PR08MB10149.eurprd08.prod.outlook.com (2603:10a6:20b:63f::9)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9818.32; Mon, 20 Apr\n 2026 11:23:40 +0000","from PAWPR08MB8982.eurprd08.prod.outlook.com\n ([fe80::5821:707a:c30b:dd9a]) by PAWPR08MB8982.eurprd08.prod.outlook.com\n ([fe80::5821:707a:c30b:dd9a%5]) with mapi id 15.20.9818.032; Mon, 20 Apr 2026\n 11:23:40 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 385774C91748","OpenDKIM Filter v2.11.0 sourceware.org 90A334BA23FD"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 90A334BA23FD","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 90A334BA23FD","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1776684295; cv=pass;\n b=mRcSLWFNcUUNSKepCvAX6EHypckeEyfX7IP1OXHm1x0oSQ4f2NiqM7tqvTpSn6G3MFJ5K2mYv9rES0QrZ9nIZWvllQmMUboR0c03t9XinTrUD7x6AtIf99+rNR2Dr8Ml2NtpikEvm/chQnTx3P/BC7PuCs3iLlnz219S/t8tFdk=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=JhEbwQmODjk+phBPbEVZ+7DsiSVKMgX0MMzxfwY4MAMtXBcFqXFvXLsF0UM6K+Czi5xwH5r0rgChH1diuBnLcHtSTJYax4d82o4laRyJ4YAxE0mdjG1z1J1aLTII8b5xOmKDd2c4ysC4Yr5gcr2ixjIgIIYHnUtxcc8uSoijnFO3tUCHGRhgt1wuc+mrqckwU7gz93Rbjg9kfwwoItJDgSI4DtbcP2CqSz0Q3ECZ+c7pRDXDbx99MDbWUJZQEleIqndFa+anDUEINxPXpTbPIp2k1lJ3Pam8kh63a3icXt7mTT83GJdnWnQSWoxFPBNapZ/R+lr2GtVHjaXqil9bMg==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=YUPymCoe5uSwjbOPiP9kVSyrpXHZv+dDG+c2vIXw/tTw2QzwX9kveye0AnvrvpFuoP/2uzzK4d/rqiscmVrXVe/wo210rR2WCkB9rTNkw1BzPpt4M93cOoZIvLGGIPHqF9rb6tBVhbS+255RoV38s2Tk/gWpfZkOlwX6C5mOIp5gw50eDobAmMLx/qHbgIJqdNACihPwWqsXLvvE+ZhSF4mROMV3X3GyG9lfdITqdJvYbB4IXV7I3svWxcy4WYbKZbTh94HEKprfGMeJoUcdZLP+6m5Dn9ZnhFqokn5QGxFspYMkvmFJSlkChE80IjUN6HyT8z/H7rvkweZGH+iLUQ=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776684295; c=relaxed/simple;\n bh=AZQS7ZusIVFFWR4RVJSwQQwNlbjded+v18eoJXXsGV0=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=BZTLatmWzY5KWbuzBqKvA7qfBWJkUhjc8OeeaR+lVEKP8ROO1hoE9gLQrkX73x7HOc0Lp5XmUDZx6NgDCvhFo9QkkgCcH3n49ldNam1HYKxg2t9K1KQb8eMEQ92fkOSaEnfEi6bJIfFwlD5nMJiP3Kx2nFnFupBOK56ki3u++Ps=","i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=AZQS7ZusIVFFWR4RVJSwQQwNlbjded+v18eoJXXsGV0=;\n b=vE80/PtyYzbPmNp9qbnT7AdywzHtFEKzx8Wx+8VsG1FcEJzzHZ1dL7fDroAe6tCB5R7J8dpDqFhg0o8+xC619JbWznti5u6gLHbztgYt0b9+uMFVU4WPvDO3I4AQagh+qHazwgRBlLXsHrpuR164Gpebyiar/HmyiWtRg/WzWUkg7rQpNVpR9pFhrjYb12O+tIvI+6QhN6X22QeyAOYCT3eqjDadp4ea4I+ssWIzCiiskA0I57jPQwj0hHVGShTi7Idz9oqF95o5Fmke7fZ01p4tGwZDYUEZSPcOkxjuH4g5JigSAjYThcCMu1f3FdB+pJBrrLmESeiaDWg6krMEFA==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=AZQS7ZusIVFFWR4RVJSwQQwNlbjded+v18eoJXXsGV0=;\n b=ciBYTN/UnA4N1HRC4Q03TRwR3AWRkR29nHsMqYTY8LEhGWw0+rVyVDB+7Hst6ycDKSFgeLDFIJk3a75VvyP5qapm9CEGscXzj5lL2EJQHWlZxm9yVchn0PxVocMcgzz+T5auNOs2ZpKBxjodMK30dq3rRfvwbn/O/oPWTjt56LdJdW/nHCcyLzra3VsDXtNRflddOEAKv8ulH2n4DBh8jQO5OitG6ZduHqAMhQytVO7j9ZkhGT9BJVXKrnTyZZTbV4CgEF/KfIYQggkcSd35C0QBK9TtYalBuSP87xKYHi0H7OR9Ik8NcjNthwAlvuT5dl9m6AD/qu3fGj/LjIRC/w=="],"ARC-Authentication-Results":["i=3; server2.sourceware.org","i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=loongson.cn smtp.mailfrom=arm.com; dmarc=pass\n (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass\n (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com]\n dmarc=[1,1,header.from=arm.com])","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass\n header.d=arm.com; arc=none"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=AZQS7ZusIVFFWR4RVJSwQQwNlbjded+v18eoJXXsGV0=;\n b=NIPAj2ILC10OwBCwS/zIJbY7jWHJMxcfPoL0dWi91J8EnEdwgIBAM6Z2Qvx9zs6iKxihh3bILN50cZyRGMa/iVzxOk540c+cSvEuLNFY0ByTQ6XDbInzzo0EPKgRIYOO1m4fuoSwIO6TK1pj6KhcWYy84XJ6c+mL/VHeIVVXgMg=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=AZQS7ZusIVFFWR4RVJSwQQwNlbjded+v18eoJXXsGV0=;\n b=NIPAj2ILC10OwBCwS/zIJbY7jWHJMxcfPoL0dWi91J8EnEdwgIBAM6Z2Qvx9zs6iKxihh3bILN50cZyRGMa/iVzxOk540c+cSvEuLNFY0ByTQ6XDbInzzo0EPKgRIYOO1m4fuoSwIO6TK1pj6KhcWYy84XJ6c+mL/VHeIVVXgMg="],"X-MS-Exchange-Authentication-Results":"spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;","Received-SPF":"Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C","From":"Wilco Dijkstra <Wilco.Dijkstra@arm.com>","To":"WANG Rui <wangrui@loongson.cn>, \"libc-alpha@sourceware.org\"\n <libc-alpha@sourceware.org>","CC":"Adhemerval Zanella <adhemerval.zanella@linaro.org>, Dev Jain\n <Dev.Jain@arm.com>, Florian Weimer <fweimer@redhat.com>, Xi Ruoyao\n <xry111@xry111.site>, WANG Xuerui <git@xen0n.name>, caiyinyu\n <caiyinyu@loongson.cn>, mengqinggang <mengqinggang@loongson.cn>, Huacai Chen\n <chenhuacai@kernel.org>, \"hjl.tools@gmail.com\" <hjl.tools@gmail.com>","Subject":"Re: [PATCH v10] elf: Add test for THP alignment of large load\n segments","Thread-Topic":"[PATCH v10] elf: Add test for THP alignment of large load\n segments","Thread-Index":"AQHczh4zQCmQjOgpzUCI8e+/bp2ObrXn0yGE","Date":"Mon, 20 Apr 2026 11:23:40 +0000","Message-ID":"\n <PAWPR08MB8982457B2EA5506F61A4A333832F2@PAWPR08MB8982.eurprd08.prod.outlook.com>","References":"<20260417035556.1778246-1-wangrui@loongson.cn>","In-Reply-To":"<20260417035556.1778246-1-wangrui@loongson.cn>","Accept-Language":"en-GB, en-US","Content-Language":"en-GB","X-MS-Has-Attach":"","X-MS-TNEF-Correlator":"","msip_labels":"","Authentication-Results-Original":"dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;","x-ms-traffictypediagnostic":"\n PAWPR08MB8982:EE_|AS8PR08MB10149:EE_|DU6PEPF0000A7E0:EE_|DB3PR08MB8937:EE_","X-MS-Office365-Filtering-Correlation-Id":"a9d6ad3e-ffbd-433d-6798-08de9ecf6cec","x-checkrecipientrouted":"true","nodisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;\n ARA:13230040|366016|376014|7416014|1800799024|38070700021|56012099003|22082099003|18002099003;","X-Microsoft-Antispam-Message-Info-Original":"\n 8UQN2QQ1avVXlBjw2/6qq2VPMJ3XqgRrf3Od6vBkPmNvoG3YDcOdjrwbRV42OdfdopOql2umjyalp2yFD6si2DgsxtbtFcFuGL9x7Rp+MxzbSHVC/nNS0sig71UHfk1/v4rpClYZsjCyBnTlqCHqD/oripKyydYZhShEC2PjjUMrKRUgwbkLzM5mSYcVXwpv6gd3Rj6jjGXU2j1A+PsJ3CPSgjb+HFkW+yBgikJp4PFirVGEciDorsnsYK33sADWQblfFaC981zlXF5ZiUqH5/ONKhuwFkfNmLUhBBLeYjAV/Qy8NS3cm4ozvHSDtVtgIFJZL0TXytGBdTxqtzWS3KBiUE1MCZK5rKtqhpoXhuniF4BnyFGwbEz9+joRrQzPwPoeKEH7Bx1S8q9Oxxmlzc8K0GwE8lErnlkl4Ei0f3wFV0mCN9+varA/kWwNjfoiC+tVixDFthfaRFGtEb89dzNG0+5a5fFC7OaULRtPoam+exVcdYsdOCJBtPO/AF49763fhJIYSlF2Pg2KMthWfV7n7AaEnupaVzoo2oC2mS948h/eNckladafPPvE+HbH6KWHl/xVcWIucVi3NvW7GHCUcleolSwdqZVteVV2/1oJGMvs96DlzMUmo8grXe6M8Us8Lx4v7pgyg++m2yfdPxmCUM6qt4K9g/IKvYZANpb9ExwBMbM1yzarvmcSw1ahGbWVBUNUlc9pn22xIG2/QQcXDd/OQa2SfI4swpHJn6+xXXzuUmS0/hQn7vr5QVhceywqV6msW/U1+D6B0ZXbiP2ZxN5rEf8Bil2Hc+HbD7I=","X-Forefront-Antispam-Report-Untrusted":"CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230040)(366016)(376014)(7416014)(1800799024)(38070700021)(56012099003)(22082099003)(18002099003);\n DIR:OUT; SFP:1101;","Content-Type":"text/plain; charset=\"iso-8859-1\"","Content-Transfer-Encoding":"quoted-printable","MIME-Version":"1.0","X-Exchange-RoutingPolicyChecked":"\n DXO3GapVnkYKlFqyYGe9MoNbVhlLthlSoyzwZxv20vM1MPaDdpyl4TO/UOKA2B1TvO7eId0r6J1AKlcSvNVPwEYidGzqc3xpd3fvENgG+CYm68k7U8l3lDAvq9qpTy9qSYdopk5raVzM8mqXejxZg9JU3Nv20vI7MVlBAw4lpGHPFX84HbBwKInFG3gKAg8RY5xjmGrGESjxcqLRyVGgtz1SPqwaZXpqQt2odP4rsWWpiJV4C9eWZf3Wx9NeD052IrENidK4tZTHrCT4oOMhk2jFRb+dcatlLsu3X86bgdl6XyuONUJCpOkYxqbA+xFi8omX9VxkHxeYFTaJ5mIwcw==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["AS8PR08MB10149","DB3PR08MB8937"],"X-EOPAttributedMessage":"0","X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n DU6PEPF0000A7E0.eurprd02.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n c7d408ae-2912-4480-2137-08de9ecf4640","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|82310400026|14060799003|35042699022|36860700016|7416014|376014|1800799024|56012099003|22082099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n +uadboB8hYtoH2zZ8cKcsFoB00axZWhHiDF5/HfkxoY0vjqrf2KswoYWFdzDOqao19AXL7fUs9su3NU4YnBSssuay3omOIXrp6gl7Okc+iB2iIXxrLnTx3x5HfJmG8fHE0x/st70pdGYF6xuOhdH/K9TOL/+Ica3BAB4iZx0vbDTiWSuqMv5mcyNxvGpdvjNfs9aowgogNFXhexGARIWz68noLcBJb7Dw/lLyro5yS8Nr5+8x/HVVcJ4nt/WTl5FGh3qW++9ne6cjUM0uG9J1mZhHGj+bJ8W+iA6adSL0HMw4oOdJaT3JaBt506F/mFMOL2IOtLi/XZXDJ0ypQDUsASYKlg4jUytxUDUN4C//xk8sQiFj5p4+/PUjefhL4TVclCIWAU3TV9iaKFD5lLpIF+s5lUpYDUQgglixNFN5R1IfsylxbvRdUCNTJQvuL5Jac822MZd3pu8RCTR8sgTOWrqClnfXEYWkXfxzG0bNUUSdc/4wYUYMl/xKORi9i6KNhnEt2Ad8TNJhmchGartGp1KE8wApbfWElJ91mIzH2mSQLeYdgouhyS1xuG7bhik/u8ZeIiP9WZ/7xK/uMz1Sb9JGyeLBOOImX2SzJMh53skIuhy7yFxw4pbP5g1SPSy49N38nSNf1Rn3b+6BPBYi6wRKtHGMbshbY5xgYuXiBC7I9s3S15qBBmXy1TPM25+OLD09KHWGeo1j0QCqGt4slFceiV9edQbTSulgRjhFfcZICBROV9W2KiMUswbUaHyugmQlDeYxnJZsAgGMaG+Xg==","X-Forefront-Antispam-Report":"CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(82310400026)(14060799003)(35042699022)(36860700016)(7416014)(376014)(1800799024)(56012099003)(22082099003)(18002099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n tz76Zfmw7CIfoy4G9v8/RBght+qO/grDLPuanOi+eCX2MnnNCjLzrBNH3sqjAR+GytXI9589wCVCV2T4f0UlmvjGepO7zAkSyodawF48nr0OX4mGZy794H+J4vWJNUMHF7O5Rv2P0hhDNq/n0amMR5lil7YB5qz07wVhQLLcm4Z1U1pVYZ2oYocF/7+rApMXgRI9PiOHGHKr2eB2WcZqmOXDjdDK8ujJ+ZWA7fb/1WdFSMW9sXNIw7gw/nJYEG5zekouMItm1LX34t3z/ugwRGgjxd00YMBWvtYSxaORJYShvefSQGPXha8dpDisfiEDp1JfnvNDzQSUpL99FYjaYVaCFYWKap67YSE8I6uBDsmE8mylk38CY0rRoTKDGadf1ftbtqd0DmQhLpkSBOMrzyqAgwi5U+vV1K+AytKpBnXrW+Ir9fUOTr4DcfW3zEPh","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"20 Apr 2026 11:24:45.5015 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n a9d6ad3e-ffbd-433d-6798-08de9ecf6cec","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n DU6PEPF0000A7E0.eurprd02.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","X-BeenThere":"libc-alpha@sourceware.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Libc-alpha mailing list <libc-alpha.sourceware.org>","List-Unsubscribe":"<https://sourceware.org/mailman/options/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=unsubscribe>","List-Archive":"<https://sourceware.org/pipermail/libc-alpha/>","List-Post":"<mailto:libc-alpha@sourceware.org>","List-Help":"<mailto:libc-alpha-request@sourceware.org?subject=help>","List-Subscribe":"<https://sourceware.org/mailman/listinfo/libc-alpha>,\n <mailto:libc-alpha-request@sourceware.org?subject=subscribe>","Errors-To":"libc-alpha-bounces~incoming=patchwork.ozlabs.org@sourceware.org"}}]