From patchwork Fri Dec 6 17:37:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 847837 Delivered-To: patch@linaro.org Received: by 2002:a5d:50c2:0:b0:385:e875:8a9e with SMTP id f2csp910134wrt; Fri, 6 Dec 2024 09:39:16 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVrEAoy4vE/9+8ZDJP3PU3Nd8NGkVdHdRIqvJNLuWYJOTeXLeYPiyRTVPlZOYZCrgg1y+gEoA==@linaro.org X-Google-Smtp-Source: AGHT+IFxnUMgaK9qM/JTff7h1sks/EHMUXjCwVgA0kHG6DGqVPFMYelSsH/wrRTdI6ECnVMP1wgA X-Received: by 2002:a05:620a:318b:b0:7b6:64ad:827b with SMTP id af79cd13be357-7b6bcb7718cmr403421885a.60.1733506756700; Fri, 06 Dec 2024 09:39:16 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1733506756; cv=pass; d=google.com; s=arc-20240605; b=HbPQRvz7jUXLsnuSLgxMKVLi1YbrgQTswe0yfCwGAd9My4aTdQnRtBL/h9NG7688li SP0MYA1C9KFqg3GOfgVLZn69iFI55QSJjQ3xzepjZca9phHl5B8mwm4Zd5LFjR2tkciT +E725ddNQhthXc8DUolxhIHlHqhnSXi7DTa5vkmVx/ukYXIGGU1QFpY7rbJ9dI0z6eBy r5/lrGWHb3PwZ0gbRYzsOpu+VxofpmoZKh4nIPA+6HNQrZ1kov5C/AI8OkUk8s6khNwG 1vr+Vg42BQparEfgakjT7d0KjyvrvsNP76JmGdoLlFm1i+r+IZ5UTUEyqYuXi+2Fkztf EDGg== 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=bxCudccB/ONFPYAdYcWcxFmloxo+och/Tux7DIEm3SM=; fh=39H2oohB6ZYGhyKHcKf9chiYMCdt+XzUdxuRAxp69qM=; b=EqUi1nC2jFEAQbAUZGBGyRS3IpQ/ibIgV0i52jNspVdJMXWG84n4UD3DBj2z5ezz06 mrEcrLbPDLK4uUsGJ0/GBNxQHUigPPEftXCBhvWbncF+hNnu+RTWFVxdzvoCviplLep5 2sHH+gYvSL3AtfOtJ2dVNhFDObno6b/5z8FXzHC6dC/7W0UVSa3UCa3mMtdMoOSYG/CQ uzvcc7lmpwMRQ7RVfDu1xh1QKtUNFtFwbERU7Ln3KCXmz38/r97WYu5bPH5Gcdbrq9iz oKLxmomaXrPyuQBWF5Ir5QCmne5NYaWwHD6Ip22OkkdWtcT4FfUGhRoMd7CJkdoNgbvr gjQw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ng41QGMc; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 8.43.85.97 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. [8.43.85.97]) by mx.google.com with ESMTPS id af79cd13be357-7b6b5a85670si453724485a.277.2024.12.06.09.39.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 09:39:16 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=ng41QGMc; arc=pass (i=1); spf=pass (google.com: domain of libc-alpha-bounces~patch=linaro.org@sourceware.org designates 8.43.85.97 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 10792385843B for ; Fri, 6 Dec 2024 17:39:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 10792385843B 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=ng41QGMc X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pl1-x632.google.com (mail-pl1-x632.google.com [IPv6:2607:f8b0:4864:20::632]) by sourceware.org (Postfix) with ESMTPS id B976D3858CDB for ; Fri, 6 Dec 2024 17:38:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B976D3858CDB 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 B976D3858CDB Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::632 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733506737; cv=none; b=TZwf3F2QmRpxkKiXRupzeqdT4Ul8Bt6AmiZowloprzHcRSYTIpboFDJX3kM7s1AdUk4ZN5vOPjkN1LDcjy3G2VUboStOOfseoNbQqmeSeITZLINkGSyO0+lCAOITyesGMKLWFnOnXvnIpgcM0oOYQzZtrg4phD1UVfHcPv5p7Ic= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1733506737; c=relaxed/simple; bh=6HSnqjMPx4aZC3Q0+mOELUJG8zVi555PKi0azAs2arA=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=wTHABsX1UlvKEJFbH/yCXf9eo3corsippAFY4X4D+caYyc/PFoQmvOxdnXlCZ5X8Nbo0UmSoZYVIuvtcSqyaAJOkNLtDn5nvXIaEgWTyrfvn4kYLgivN9zluayK9E1QQXG9aNT98PIfbgUTfOAOX4fV1gbSvTjo4X5DM7EOJxm4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B976D3858CDB Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-215b9a754fbso22939095ad.1 for ; Fri, 06 Dec 2024 09:38:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1733506735; x=1734111535; 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=bxCudccB/ONFPYAdYcWcxFmloxo+och/Tux7DIEm3SM=; b=ng41QGMc5QRJVxaTJotPIzQurTA8t5Dlg1v6QkS4Segv45wNH9ppT1Xy7FSQU6xCih IbYi3XvbMS0qL8qtpdCCJdEqYmlqZFJWtMehmqnmXqLYsOosGvt9e52IH5Y8sY7cotLW bAFEfFCBc6Et1G/8oapkqwBWjyEAF6L333eauyFL8qs1modGCAwPABaoUcuunLgBzNcT 3DiuD7crtoAN9sA0Kfec8XDg6paprzPWhdE5MEvRu15sgUI7hekJfobPAuM1BGmUa7gT bBDNZI+OOU6v3EmogOtc0SWZ3xDRro3g7znPm0kj+8V9qd9lXzLqqAQSspjGt9neOA9M yOvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733506735; x=1734111535; 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=bxCudccB/ONFPYAdYcWcxFmloxo+och/Tux7DIEm3SM=; b=EMtu8rHX5LQrcjgAmJ6bJBFkFE4HTSUmm6kNvLVHZzL/Q20tNIoI+nVrUugEqGMmP5 uglUpuj4G12sWK5zcPXz8s+ISpaZ6D3R2FMCXXkZR+9FAK/9RgIqQBPxWRfY4UZ5NVsB mQpeIVXiJIOM1c1T7K4hzQeb95vZiNW2P/4j+547RmpmBuVbNuoxIvamcqpnJhR1MxKS 5eOenp5075xGwV7YhP5IA3VyHhHqi2fqVac6x7iHdPsCwVGy6QfVeWiV4NCbsWr8RhwN 8rslt3q1lz7L9fzTAsAgRnVccUt0e47hATrtsAaXxb223JEENYVfZzP6x9hoYLZna46P jZ+A== X-Gm-Message-State: AOJu0YyAkgMHUyziEkUP53/xkdyGGjY37ckTwV4Z7xUlPYXc+fQb+Jpx QsXx+pTpbqGrhsIpJ42cG5p5SF6MB0UyQVeb+k9uJnRFMyRKG2E4kfL/hGZI8zSERCNVJhOjlV5 9 X-Gm-Gg: ASbGnctkaj182Nkz0AhLb5/iFeNUQp02UJtE7ZzxL9D13Y6oxQswdU0E+TvcVN1bb0i A91p8OCAb/YpREXBCyhld3+hIudEnVW1BTGmTkIr6ejhHzD8diNjDGbHLr9WskpljG1+Nt4DtvR FUrPhSybxs6KnlJkimpA4tDur2dnvopa3v4pECZ1rMSaRJrQ7goeUohSdM/KT42kR8S2rjrww1m OMZlg6GRfRfHaxypEl9qmwx+Nk6zOtaSzc5jhbeXGCe5XBkeVMr2KfXQb1BeA== X-Received: by 2002:a17:902:e5cb:b0:20c:c704:629e with SMTP id d9443c01a7336-21614dcde44mr46285905ad.56.1733506735240; Fri, 06 Dec 2024 09:38:55 -0800 (PST) Received: from mandiga.. ([2804:1b3:a7c2:2d1:1460:dd43:b597:c3fc]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-215f8f29635sm31409495ad.241.2024.12.06.09.38.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Dec 2024 09:38:54 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Cc: Jeff Xu , Florian Weimer , Mike Hommey , "H . J . Lu" Subject: [PATCH v4 0/9] Add support for memory sealing Date: Fri, 6 Dec 2024 14:37:48 -0300 Message-ID: <20241206173850.3766841-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 (8be7258aad44b5e25977a98db136f677fa6f4370) 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 location, 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 useful as 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). A similar hardening is done by OpenBSD with the mimmutable syscall [2]. The sealing is an opt-in security feature that requires a new GNU property GNU_PROPERTY_MEMORY_SEAL to indicate that the ELF module supports and should use memory sealing if the loader supports it [3]. Previous versions had the sealing as an opt-out feature, however, it has some drawbacks where the backport is not straightforward, there is no clear semantic if memory sealing is a hint or requirement, some programs bypass the loader to apply relocation themselves and are incompatible with an opt-out feature [4], and it deviates from how other security hardening was added on Linux ecosystem (such as RELRO and non-executable stacks). A GNU property is used instead of a new dynamic section tag (like the one proposed for DT_GNU_FLAGS_1) because the memory sealing should be selectable for ET_EXEC and not only for ET_DYN. It also fits new opt-in security features like x86 CET or AArch64 BTI. 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 eighth patch adds memory sealing tests, they are enabled if the linker supports it. The last patch adds a new tunable, glibc.rtld.seal, which can be used to enforce memory sealing even if the programs or dependencies do not have the GNU_PROPERTY_MEMORY_SEAL. The tunable accepts two different values: * '0': where loaders follow the GNU_PROPERTY_MEMORY_SEAL attribute if * present. This is the default and no sealing would be applied if the * object does not have the memory sealing attribute. * '1': where sealing is enforced even if the object does not have the * GNU_PROPERTY_MEMORY_SEAL. Also, any syscall failure on memory sealing * aborts the programs. 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.12, along with some testing on a powerpc64le-linux-gnu VM. [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://sourceware.org/pipermail/binutils/2024-November/137867.html [4] https://glandium.org/blog/?p=4297 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-int instead of opt-out. Adhemerval Zanella (9): 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 elf: Add glibc.rtld.seal tunable INSTALL | 5 + Makeconfig | 17 ++ Makerules | 2 + NEWS | 20 ++ configure | 57 ++++ configure.ac | 19 ++ elf/Makefile | 1 + elf/dl-load.c | 7 + elf/dl-map-segments.h | 16 +- elf/dl-minimal-malloc.c | 3 + elf/dl-mseal-mode.h | 28 ++ elf/dl-open.c | 7 +- elf/dl-reloc.c | 63 ++++ elf/dl-support.c | 18 ++ elf/dl-tunables.list | 6 + elf/elf.h | 2 + elf/rtld.c | 31 +- elf/setup-vdso.h | 2 + elf/tst-rtld-list-tunables.exp | 1 + include/link.h | 8 + manual/install.texi | 5 + manual/memory.texi | 66 +++++ manual/tunables.texi | 35 +++ sysdeps/aarch64/dl-prop.h | 5 + sysdeps/generic/dl-mseal.h | 23 ++ sysdeps/generic/dl-prop-mseal.h | 36 +++ sysdeps/generic/dl-prop.h | 5 + sysdeps/generic/ldsodefs.h | 15 + sysdeps/unix/sysv/linux/Makefile | 107 +++++++ sysdeps/unix/sysv/linux/Versions | 1 + 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 | 48 +++ sysdeps/unix/sysv/linux/dl-mseal.h | 27 ++ 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 | 74 +++++ .../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 | 279 ++++++++++++++++++ .../sysv/linux/tst-dl_mseal-static-noseal.c | 45 +++ sysdeps/unix/sysv/linux/tst-dl_mseal-static.c | 42 +++ .../unix/sysv/linux/tst-dl_mseal-tunable.c | 76 +++++ sysdeps/unix/sysv/linux/tst-dl_mseal.c | 72 +++++ 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 | 4 + 88 files changed, 1616 insertions(+), 11 deletions(-) create mode 100644 elf/dl-mseal-mode.h create mode 100644 sysdeps/generic/dl-mseal.h create mode 100644 sysdeps/generic/dl-prop-mseal.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-tunable.c create mode 100644 sysdeps/unix/sysv/linux/tst-dl_mseal.c create mode 100644 sysdeps/unix/sysv/linux/tst-mseal.c