From patchwork Wed Jan 29 17:22:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 860667 Delivered-To: patch@linaro.org Received: by 2002:a5d:53cb:0:b0:385:e875:8a9e with SMTP id a11csp294153wrw; Wed, 29 Jan 2025 09:27:04 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUtPyNnqgeUlCljwf9r/hzoYfBDQ1Es7POoJ4+5Wq6qHnq636SRFTIlwlUG9M4eW0U8KbBLMA==@linaro.org X-Google-Smtp-Source: AGHT+IFsDWGxNfWmCBi+pEAMqyBRCLNaNKD2o5/TAqe4yVIuNFDwlTrHNaXhaVMNCgsWC7Z1scta X-Received: by 2002:a05:6102:3707:b0:4b2:c391:7d16 with SMTP id ada2fe7eead31-4b9a4f2c207mr3900830137.7.1738171623948; Wed, 29 Jan 2025 09:27:03 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1738171623; cv=pass; d=google.com; s=arc-20240605; b=U0g32ZKGOD/Vyi3AyrLzLHpbNqb/3WyVkF9MYgO2edAGMlcu2fRLLDPyoTsKHDjy5s 6TIObySdHxBKOie571pLMdprP5vyeiDWUK0hdF87SCJQPOQ7n8BRGiyYN6YuuHBPME6V MbPLYVd/s38AcDms91lxB1AV+3Su495ChczP/4r1VKKBoJPFEg0xqIkImboD+Hg4pPZJ 0JmH+fikxGqv3/bKxaC2dcUiqYEfSJB1tb+wjhRZAq4z/vzmo8WdyOGuByLtovj/V/38 EgVnaROowjhKMjxVhb1Yvy3VimsvVAtejSOpX7rtks8tdXBoHgP2ZYc/ai7Xda1+5g1R UcxA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:dkim-signature :dkim-filter:arc-filter:dmarc-filter:delivered-to:dkim-filter; bh=7/eZLaE0QAC8Kv/G8rPZXUVMWpplssTkOMnlxqhLTNM=; fh=NxP0gPoitL2xwHLpRPwMy6HQGuc/oe1BSm1HN6gGwGQ=; b=As3gEJnlFk2B6p+/HT0yWJddsPz2b/hmbvBxY32GvObN5lAGB/GBJ3gBWCfw6HhW99 YCDBanatnKy4Y4mbc2M9FNByL8h8fD+Otj96LmIPy35RTn+M8e9bvACpRCYZt1H6ntsC m5ZJemVYe7bVhf3k7BnkgzRprRYgrwLhL1Br9tO7D4AeVI6aYp679T1VjWeOmLJ84/48 gV8ctzsNAKkXmNyElRHKjMZMWxt6QVVCHZfjIIDbKuyVb/GLX+TSogBkKpQVRA9viQhX 5JogeTeh+tjx1SNxlnXArksXE1IR8idcaTtOv+ICWuxVDIwKt9CsD+SjoKJCXam9J/q1 LI6Q==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=lRZap76U; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="libc-alpha-bounces~patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id ada2fe7eead31-4b709981a94si5251513137.278.2025.01.29.09.27.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2025 09:27:03 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=lRZap76U; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="libc-alpha-bounces~patch=linaro.org@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 714E03857C63 for ; Wed, 29 Jan 2025 17:27:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 714E03857C63 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=lRZap76U X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by sourceware.org (Postfix) with ESMTPS id D919A3857B9E for ; Wed, 29 Jan 2025 17:25:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D919A3857B9E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linaro.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D919A3857B9E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::629 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1738171556; cv=none; b=vC+VEbqppOl3v7C002XwTWdgmQJBXGh8z5s2sRsqwIdnnVFtCpvceI90RLctuFr/G6SOxkaavQ/WDqy59O4S5wpOQuszZnq3UUY0pYyQl1KTJ95thIuVBbLlRQBaF9xXaj+3eHJteUXT6r2WQE2F0fVemU9xH/M/EmTZ7d0jDAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1738171556; c=relaxed/simple; bh=hF+Wxzk2w9Iy2X7Py7tfo5yAr9kQAuPZccKcLb+HpoM=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=pvjW5srw2/40wXoSYAI4N5BkX//QzRx6gn9959kx4Ep+WthbVX5AUorcsGj7+PUQrSd1TGRuRb5lUeWALiwCKAu6ryTmHApR2C/OjalGwy9BSw1N5zDTrJ36b7WtsC67rMVaJsy+T19tGSVQtEGSQPyqucnUqzl+3qkxCW+df9U= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D919A3857B9E Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-21654fdd5daso121531525ad.1 for ; Wed, 29 Jan 2025 09:25:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1738171554; x=1738776354; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=7/eZLaE0QAC8Kv/G8rPZXUVMWpplssTkOMnlxqhLTNM=; b=lRZap76Ub7kpf0ZZf6/rYylnU/fsipsE/3vq1LtS3zumCcQWNpARjg7HL1EAG3tzB5 b1pMuzXt9DBjb8BIU68+AaGnYiA2nX+Vo4L9dBoUh3axLt39O2K/0wkNxu/1x1XRrJx0 IJLXpwMCUX8omrxEPekYp0rHr5DiDcbYS5Apyxir0J5S+caz1h+oiHlEEaZ4NsV4HDoS 3MK6C5FnkBuM5bLi/zMT9nUSNCYj+oj9a9L4+lgg2Um6sNeq+NC01pDFVhdgP65kVpQY acLB+Pagl6U9ATOGUJLuZS9jABoxiomDwpYD/bT8GH2OyPIn2mg4WR2Er4BhC5AcN4M+ 485A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738171554; x=1738776354; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7/eZLaE0QAC8Kv/G8rPZXUVMWpplssTkOMnlxqhLTNM=; b=NkfqFOIAqQ9VjV0GJcDIk2H2fGk45D5e55eVJSggeCP3uGqzu7uAZt8D/I1bNbgIFz m6vGyCT/r5YaiFCk4cpeTg34CNCdmNVZv5nAKPwEbiKVMEAUelBG7fvPHUOVH/DhWfgu wqGUVkDng29G1GMZmbESOrT4YMkAMBKwcHyA3ed49WCBbyd5V7f/K2G6fxErNUXVbZei i6jVs+ipb0V86Q3+dd+hXXKhMsenoN6zcaiCmSV6eBOrgDU6DtpeDo9sWY+djLUPZ4nM Ooi80wBrtOCMG9cnSZqD+J0/NqV+QXXX3KfL9W6V5H1UCK4rdN/gbEdvZrsVgzAkSh1Z NoVA== X-Gm-Message-State: AOJu0YzsphtMIw8ogMHMwqB1NOX9W4kyF7NjrNCe1LHnGiUj7xRBAWE8 GpYnEP8hin22fqppSqZMHrWvKxJy3ygpVZ/orJt1bNp1QEydqhdL7EIJUQ60lXFX/xZD8V4o0gE d X-Gm-Gg: ASbGncuNYbGvL3VJVX/TaSbii3x2xCfzakhmngvhACHikuEoAgqlXmU2vV0xwlb4GDf 2BoFNiHTPG1RRQY+OSDSQ3H0Y862jDzom+vQGUb0B6L6C9XEQ5gmcT9+d0OVFVgsKRX30g/L6mo FN6qGgTvCsJHfv67fcTbsrsFNDTSzq+PnedaEY1vzeJ+Vr60Sf0BzQUWFGBFQnkINJ5KeiCs9h8 Y2u5/sLIYszQpWltqFm5CTjyA/yP6lX91yb0m5sA6qG8GAZlvPHk4/p8dvkNNSUBp51RYPVkLUq UgxzoCOuDTIw5KO1QpQPTdi67Y3v X-Received: by 2002:a17:903:2f8c:b0:215:b9a6:5cb9 with SMTP id d9443c01a7336-21dd7c3555bmr65590205ad.5.1738171554475; Wed, 29 Jan 2025 09:25:54 -0800 (PST) Received: from mandiga.. ([2804:1b3:a7c2:2a23:584e:68a2:9131:7209]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21da3ea1c2asm102082535ad.54.2025.01.29.09.25.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jan 2025 09:25:54 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: Jeff Xu , Florian Weimer , "H . J . Lu" Subject: [PATCH v8 0/8] Add support for memory sealing Date: Wed, 29 Jan 2025 14:22:34 -0300 Message-ID: <20250129172550.1119706-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patch=linaro.org@sourceware.org The Linux 6.10 (8be7258aad44) added the mseal syscall that allows blocking some memory operations on the VMA range: * Unmapping, moving to another location, extending or shrinking the size, munmap, and mremap. * Moving or expanding a different VMA into the current range, via mremap. * Modifying the memory range with mmap along with flag MAP_FIXED. * Expanding the size with mremap. * Change the protection flags with mprotect or pkey_mprotect. * Destructive behaviors on anonymous memory, such as madvice with MADV_DONTNEED. Memory sealing is a hardening mechanism [1] to avoid either remapping the memory segments or changing the memory protection segments layout by the dynamic loader (for instance, the RELRO hardening). The OpenBSD supports a similar hardening with the mimmutable syscall [2]. Memory sealing is an opt-in security feature that requires the new GNU property GNU_PROPERTY_MEMORY_SEAL, defined in Linux ABI [3] and supported on binutils 2.44 [4]. A GNU property is preferable over a new dynamic section tag (like the one proposed for DT_GNU_FLAGS_1) so it can be applied to ET_EXEC (for instance on static binaries). The GNU_PROPERTY_MEMORY_SEAL enforcement depends on whether the kernel supports the mseal syscall and how glibc is configured. On the default configuration that aims to support older kernel releases, the memory sealing attribute is taken as a hint. If glibc is configured with a minimum kernel of 6.10, where mseal is implied to be supported, sealing is enforced. The first patch adds the mseal support for Linux. Although most programs will not use it directly, some specific ones, like Chrome, intend to use it. The second and third patches are requirements to enable memory sealing to work on executables, where they add gnu property parsing on the loader and static binaries. The fourth patch moves 'call_init_paths' after gnu attribute parsing, so the loader can seal the rtld_malloc pages (since they are meant to be immutable over process execution). The fifth patch propagates the RTLD_NODELETE flag in case of dlopen. It will be used to extend memory sealing for the object dependencies. The sixth patch adds the memory sealing supports in multiple places where the page is supposed to be immutable over program execution: * All shared library dependencies from the binary, including the read-only segments after PT_GNU_RELRO setup. * The binary itself, including dynamic and static links. In both cases, it is up either to binary or the loader to set up the sealing. * Any preload libraries. * Any library loaded with dlopen with RTLD_NODELETE flag (including libgcc.so loaded to enable process unwind and thread cancellation). * Audit modules. * The loader bump allocator. The seventh patch makes glibc enable memory sealing as default if the linker supports the option (-Wl,memory-seal). A new configure option, --disable-default-memory-seal, disable it. The last patch adds memory sealing tests, they are enabled if the linker supports it. This patchset does not delay RELRO activation until after their ELF constructors have been executed, as suggested on the previous RFC for mseal support. It is not strictly required, and it requires extensive changes on_dl_start_user to either make _dl_init call RELRO/sealing setup after ctor/initarray is done, or call it after _dl_init. There is also the question of whether to apply RELRO/sealing per module after dtor/initarray or in bulk after _dt_init. I tested on both x86_64-linux-gnu and aarch64-linux-gnu with Linux 6.13, along with some testing on a powerpc64le-linux-gnu and s390x-inux-gnu VMs. [1] https://blog.trailofbits.com/2024/10/25/a-deep-dive-into-linuxs-new-mseal-syscall/ [2] https://man.openbsd.org/mimmutable.2 [3] https://gitlab.com/x86-psABIs/Linux-ABI/-/commit/25a851b99665e7b22db5fabe818efaaa52466893 [4] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=4d890484df4b2cf004f6f1f6d8c39a69fa39c875 Changes v4->v5: * Removed the tunable. * Rebased against GCS change to enable GNU attribute parsing on all architectures. Changes v3->v4: * Rebase against master (remove nios2 ABI update and handle f2326c2ec0a0a8db changes). * Handle vvar_vclock mapping on tests. Changes v2->v3: * Make the option opt-in instead of opt-out. Adhemerval Zanella (8): linux: Add mseal syscall support elf: Parse gnu properties for static linked binaries elf: Parse gnu properties for the loader rtld: Move call_init_paths after _dl_process_pt_gnu_property elf: Use RTLD_NODELETE for dependencies elf: Add support to memory sealing Enable memory sealing automatically linux: Add memory sealing tests INSTALL | 5 + Makeconfig | 19 +- Makerules | 2 + NEWS | 14 +- configure | 58 ++++ configure.ac | 20 ++ csu/libc-start.c | 4 + elf/Makefile | 19 +- elf/dl-load.c | 4 + elf/dl-map-segments.h | 16 +- elf/dl-minimal-malloc.c | 5 + elf/dl-open.c | 7 +- elf/dl-reloc.c | 49 ++++ elf/dl-support.c | 16 + elf/elf.h | 2 + elf/rtld.c | 26 +- elf/setup-vdso.h | 2 + include/link.h | 8 + manual/install.texi | 5 + manual/memory.texi | 66 +++++ sysdeps/aarch64/dl-prop.h | 5 + sysdeps/generic/dl-mseal.h | 22 ++ sysdeps/generic/dl-prop-mseal.h | 34 +++ sysdeps/generic/dl-prop.h | 5 + sysdeps/generic/ldsodefs.h | 9 + sysdeps/generic/libc-prop.h | 44 +++ sysdeps/unix/sysv/linux/Makefile | 102 +++++++ sysdeps/unix/sysv/linux/Versions | 3 + sysdeps/unix/sysv/linux/aarch64/libc-start.h | 11 - sysdeps/unix/sysv/linux/aarch64/libc.abilist | 1 + sysdeps/unix/sysv/linux/alpha/libc.abilist | 1 + sysdeps/unix/sysv/linux/arc/libc.abilist | 1 + sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 + sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 + sysdeps/unix/sysv/linux/bits/mman-shared.h | 8 + sysdeps/unix/sysv/linux/csky/libc.abilist | 1 + sysdeps/unix/sysv/linux/dl-mseal.c | 51 ++++ sysdeps/unix/sysv/linux/dl-mseal.h | 31 ++ sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 + sysdeps/unix/sysv/linux/i386/libc.abilist | 1 + sysdeps/unix/sysv/linux/kernel-features.h | 8 + .../sysv/linux/loongarch/lp64/libc.abilist | 1 + .../sysv/linux/m68k/coldfire/libc.abilist | 1 + .../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 + .../sysv/linux/microblaze/be/libc.abilist | 1 + .../sysv/linux/microblaze/le/libc.abilist | 1 + .../sysv/linux/mips/mips32/fpu/libc.abilist | 1 + .../sysv/linux/mips/mips64/n32/libc.abilist | 1 + .../sysv/linux/mips/mips64/n64/libc.abilist | 1 + sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 + .../linux/powerpc/powerpc32/fpu/libc.abilist | 1 + .../powerpc/powerpc32/nofpu/libc.abilist | 1 + .../linux/powerpc/powerpc64/be/libc.abilist | 1 + .../linux/powerpc/powerpc64/le/libc.abilist | 1 + .../unix/sysv/linux/riscv/rv32/libc.abilist | 1 + .../unix/sysv/linux/riscv/rv64/libc.abilist | 1 + .../unix/sysv/linux/s390/s390-32/libc.abilist | 1 + .../unix/sysv/linux/s390/s390-64/libc.abilist | 1 + sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 + sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 + .../sysv/linux/sparc/sparc32/libc.abilist | 1 + .../sysv/linux/sparc/sparc64/libc.abilist | 1 + sysdeps/unix/sysv/linux/syscalls.list | 1 + .../sysv/linux/tst-dl_mseal-auditmod-noseal.c | 1 + .../unix/sysv/linux/tst-dl_mseal-auditmod.c | 23 ++ .../unix/sysv/linux/tst-dl_mseal-dlopen-1-1.c | 19 ++ .../unix/sysv/linux/tst-dl_mseal-dlopen-1.c | 19 ++ .../linux/tst-dl_mseal-dlopen-2-1-noseal.c | 19 ++ .../unix/sysv/linux/tst-dl_mseal-dlopen-2-1.c | 19 ++ .../sysv/linux/tst-dl_mseal-dlopen-2-noseal.c | 19 ++ .../unix/sysv/linux/tst-dl_mseal-dlopen-2.c | 19 ++ .../sysv/linux/tst-dl_mseal-mod-1-noseal.c | 19 ++ sysdeps/unix/sysv/linux/tst-dl_mseal-mod-1.c | 19 ++ .../sysv/linux/tst-dl_mseal-mod-2-noseal.c | 19 ++ sysdeps/unix/sysv/linux/tst-dl_mseal-mod-2.c | 19 ++ sysdeps/unix/sysv/linux/tst-dl_mseal-noseal.c | 80 +++++ .../sysv/linux/tst-dl_mseal-preload-noseal.c | 1 + .../unix/sysv/linux/tst-dl_mseal-preload.c | 19 ++ .../unix/sysv/linux/tst-dl_mseal-skeleton.c | 276 ++++++++++++++++++ .../sysv/linux/tst-dl_mseal-static-noseal.c | 45 +++ sysdeps/unix/sysv/linux/tst-dl_mseal-static.c | 42 +++ sysdeps/unix/sysv/linux/tst-dl_mseal.c | 78 +++++ sysdeps/unix/sysv/linux/tst-mseal.c | 67 +++++ .../unix/sysv/linux/x86_64/64/libc.abilist | 1 + .../unix/sysv/linux/x86_64/x32/libc.abilist | 1 + sysdeps/x86/dl-prop.h | 8 +- 86 files changed, 1514 insertions(+), 28 deletions(-) create mode 100644 sysdeps/generic/dl-mseal.h create mode 100644 sysdeps/generic/dl-prop-mseal.h create mode 100644 sysdeps/generic/libc-prop.h create mode 100644 sysdeps/unix/sysv/linux/dl-mseal.c create mode 100644 sysdeps/unix/sysv/linux/dl-mseal.h create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-auditmod-noseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-auditmod.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-dlopen-1-1.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-dlopen-1.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-dlopen-2-1-noseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-dlopen-2-1.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-dlopen-2-noseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-dlopen-2.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-mod-1-noseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-mod-1.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-mod-2-noseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-mod-2.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-noseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-preload-noseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-preload.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-skeleton.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-static-noseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal-static.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-mseal.c