From patchwork Tue Apr 20 02:18:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 43058 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0AA7D397300E; Tue, 20 Apr 2021 02:18:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0AA7D397300E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1618885109; bh=fL8yHrycMzHXTR3RuMuktkJ1obrfj7maRLGsd091mbI=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=Rg7i9oa7YRgOvfdlhd5s0lik0uXwjiOr+l4ccCVCCQ8zu1s2XliI2SyhnpbdnC0L6 5A/4f9OW6706l46bgyOYp1SsQ+N/06r0cIopmPKDhBjvaHxJhtA38r83zCkCm6rJep jXi5jL5nhvi5YqvsjadCmzgs6geXFvkStcfcX8Wk= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id 4B8BE3973003 for ; Tue, 20 Apr 2021 02:18:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 4B8BE3973003 Received: by mail-pf1-x42d.google.com with SMTP id m11so24495397pfc.11 for ; Mon, 19 Apr 2021 19:18:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fL8yHrycMzHXTR3RuMuktkJ1obrfj7maRLGsd091mbI=; b=hd+dB2yRQmlkeCnvc9FKZVrw4B7eMhm4/oGYbxU2K4rayQg7PjGB5xMWNwHDeMFSCP QVTbil/0bOLHFjDSnwxV2M227O6/u3hBCWqdq8HlNb6u8ZHjg5AEZxvB1wFro5QZIdIZ XeEsiXM5KwxpMyA+5rqbMaodQ67Gvkgx/mtfPaze5MfSNfIHdZLxGUnzaP+H72W9jdt2 zPAeFFtGfiEBPKwrRY8MPLhVnj1ylZnoiDAjRG3fxoacPkCpawbDYHG96r5EieBMA2Ki d6jwwddgV5B5Bgv7LeSD6MF2ozwaa7Wb6NCuYSN+/eJ6XtHqHRARBoD0rh88I3IsZkuf YIqg== X-Gm-Message-State: AOAM531Q6EHDuq27WQu7NlQZzmqXLckp77vgS0AQA+a1ZRO/SlSJTGOk UqDG6US1YnSQx/X7a+y7Seo= X-Google-Smtp-Source: ABdhPJyxqZHgSBzxnSmpE0kWnokGpPytUWeznGI+CH2tnEJQNONAApYjUKjHLFMxn7oAm5yE3W1hXg== X-Received: by 2002:a62:6d05:0:b029:250:d196:1fc8 with SMTP id i5-20020a626d050000b0290250d1961fc8mr22905359pfc.21.1618885101899; Mon, 19 Apr 2021 19:18:21 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([172.58.35.177]) by smtp.gmail.com with ESMTPSA id l35sm14037189pgm.10.2021.04.19.19.18.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Apr 2021 19:18:20 -0700 (PDT) Received: from gnu-cfl-2.lan (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id 28EF21A0909; Mon, 19 Apr 2021 19:18:19 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v4 1/2] : An API for tagged address Date: Mon, 19 Apr 2021 19:18:18 -0700 Message-Id: <20210420021819.765779-2-hjl.tools@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210420021819.765779-1-hjl.tools@gmail.com> References: <20210420021819.765779-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3036.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Libc-alpha" From: "H.J. Lu" Reply-To: "H.J. Lu" Cc: Florian Weimer , Szabolcs Nagy , "Kirill A . Shutemov" , Joseph Myers , Vedvyas Shanbhogue Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" By default, the number of the address bits used in address translation is the number of address bits. But it can be changed by ARM Top-byte Ignore (TBI) or Intel Linear Address Masking (LAM). provides an API for tagged address manipulation: /* Get the current address bits used in address translation. */ extern unsigned int get_tagged_address_bits (void); /* Get the current mask for address bits used in address translation. */ extern uintptr_t get_tagged_address_mask (void); /* Set the mask for address bits used in address translation. Return 0 on success. Return -1 on error. */ extern int set_tagged_address_mask (uintptr_t __mask); /* Return the tagged address of __ADDR with the tag value __TAG. */ extern void *tag_address (void *__addr, unsigned int __tag); /* Return the untagged address of __ADDR. */ extern void *untag_address (void *__addr); /* TRUE if constant address BITS is a valid tagged address bits. */ #define TAGGED_ADDRESS_VALID_BITS(BITS) /* A mask for constant address BITS used in address translation. */ #define TAGGED_ADDRESS_MASK(BITS) 1. set_tagged_address_mask should be called as early as possible. 2. set_tagged_address_mask shouldn't be allowed after main is called. 3. After set_tagged_address_mask is called, don't allow it to be called again to change the tagged address mask. Otherwise, the previously tagged addresses may not work anymore. --- NEWS | 2 + bits/tagged-address-mask.h | 47 +++++++++++++++ bits/tagged-address.h | 28 +++++++++ csu/libc-start.c | 3 + elf/dl-support.c | 5 ++ include/sys/tagged-address.h | 9 +++ manual/Makefile | 3 +- manual/ctype.texi | 2 +- manual/memory.texi | 2 +- manual/tagged-address.texi | 59 +++++++++++++++++++ misc/Makefile | 34 +++++++++-- misc/Versions | 7 +++ misc/set-tagged-address-mask.c | 41 +++++++++++++ misc/sys/tagged-address.h | 45 ++++++++++++++ misc/tagged-address.c | 55 +++++++++++++++++ misc/tst-tagged-address-1-static.c | 1 + misc/tst-tagged-address-1.c | 53 +++++++++++++++++ misc/tst-tagged-address-2-static.c | 1 + misc/tst-tagged-address-2.c | 44 ++++++++++++++ misc/tst-tagged-address-3-static.c | 1 + misc/tst-tagged-address-3.c | 48 +++++++++++++++ misc/tst-tagged-address-4-static.c | 1 + misc/tst-tagged-address-4.c | 35 +++++++++++ misc/tst-tagged-address-5.c | 25 ++++++++ misc/tst-tagged-address-6.c | 34 +++++++++++ misc/tst-tagged-address-7.c | 40 +++++++++++++ misc/tst-tagged-address-mod-5.c | 45 ++++++++++++++ misc/tst-tagged-address-mod-6.c | 34 +++++++++++ misc/tst-tagged-address-mod-7.c | 34 +++++++++++ sysdeps/generic/inline-tagged-address.h | 43 ++++++++++++++ sysdeps/generic/ldsodefs.h | 4 ++ sysdeps/unix/sysv/linux/i386/libc.abilist | 5 ++ .../unix/sysv/linux/x86_64/64/libc.abilist | 5 ++ .../unix/sysv/linux/x86_64/x32/libc.abilist | 5 ++ 34 files changed, 792 insertions(+), 8 deletions(-) create mode 100644 bits/tagged-address-mask.h create mode 100644 bits/tagged-address.h create mode 100644 include/sys/tagged-address.h create mode 100644 manual/tagged-address.texi create mode 100644 misc/set-tagged-address-mask.c create mode 100644 misc/sys/tagged-address.h create mode 100644 misc/tagged-address.c create mode 100644 misc/tst-tagged-address-1-static.c create mode 100644 misc/tst-tagged-address-1.c create mode 100644 misc/tst-tagged-address-2-static.c create mode 100644 misc/tst-tagged-address-2.c create mode 100644 misc/tst-tagged-address-3-static.c create mode 100644 misc/tst-tagged-address-3.c create mode 100644 misc/tst-tagged-address-4-static.c create mode 100644 misc/tst-tagged-address-4.c create mode 100644 misc/tst-tagged-address-5.c create mode 100644 misc/tst-tagged-address-6.c create mode 100644 misc/tst-tagged-address-7.c create mode 100644 misc/tst-tagged-address-mod-5.c create mode 100644 misc/tst-tagged-address-mod-6.c create mode 100644 misc/tst-tagged-address-mod-7.c create mode 100644 sysdeps/generic/inline-tagged-address.h diff --git a/NEWS b/NEWS index aa0f10a891..4b7f252b33 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,8 @@ Version 2.34 Major new features: +* Add to provide an API for tagged address. + * Add _SC_MINSIGSTKSZ and _SC_SIGSTKSZ. When _SC_SIGSTKSZ_SOURCE or _GNU_SOURCE are defined, MINSIGSTKSZ and SIGSTKSZ are no longer constant on Linux. MINSIGSTKSZ is redefined to sysconf(_SC_MINSIGSTKSZ) diff --git a/bits/tagged-address-mask.h b/bits/tagged-address-mask.h new file mode 100644 index 0000000000..33571af11c --- /dev/null +++ b/bits/tagged-address-mask.h @@ -0,0 +1,47 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_TAGGED_ADDRESS_MASK_H +#define _BITS_TAGGED_ADDRESS_MASK_H 1 + +#ifndef _SYS_TAGGED_ADDRESS_H +# error "Never include this file directly. Use instead" +#endif + +#include + +#ifdef __GNUC__ +# if defined __USE_ISOC11 || defined __USE_ISOCXX11 +# ifdef __USE_ISOCXX11 +# define TAGGED_ADDRESS_ASSERT static_assert +# else +# define TAGGED_ADDRESS_ASSERT _Static_assert +# endif +# else +# define TAGGED_ADDRESS_ASSERT(expr, msg) +# endif +/* A mask for constant address BITS used in address translation. */ +# define TAGGED_ADDRESS_MASK(BITS) \ + (__extension__ \ + ({ \ + TAGGED_ADDRESS_ASSERT (TAGGED_ADDRESS_VALID_BITS (BITS), \ + "Tagged address bits must be valid"); \ + (((uintptr_t) 1) << (BITS)) - 1; \ + })) +#endif + +#endif /* */ diff --git a/bits/tagged-address.h b/bits/tagged-address.h new file mode 100644 index 0000000000..ecd8a2942d --- /dev/null +++ b/bits/tagged-address.h @@ -0,0 +1,28 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _BITS_TAGGED_ADDRESS_H +#define _BITS_TAGGED_ADDRESS_H 1 + +#ifndef _SYS_TAGGED_ADDRESS_H +# error "Never include this file directly. Use instead" +#endif + +/* Non-zero if constant address BITS is a valid tagged address bits. */ +#define TAGGED_ADDRESS_VALID_BITS(BITS) 0 + +#endif /* */ diff --git a/csu/libc-start.c b/csu/libc-start.c index 05ff7afddf..03161c939e 100644 --- a/csu/libc-start.c +++ b/csu/libc-start.c @@ -410,6 +410,9 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), GLRO(dl_debug_printf) ("\ntransferring control: %s\n\n", argv[0]); #endif + /* set_tagged_address_mask can only be called before main. */ + GL(dl_tagged_address_mask_locked) = 1; + #ifndef SHARED _dl_debug_initialize (0, LM_ID_BASE); #endif diff --git a/elf/dl-support.c b/elf/dl-support.c index 7fc2ee78e2..ed72720330 100644 --- a/elf/dl-support.c +++ b/elf/dl-support.c @@ -213,6 +213,11 @@ struct link_map *_dl_sysinfo_map; # include "get-dynamic-info.h" #endif + +/* If nonzero, the mask for address bits used in address translation + is locked. */ +int _dl_tagged_address_mask_locked; + #include "setup-vdso.h" /* Define the vDSO function pointers. */ #include diff --git a/include/sys/tagged-address.h b/include/sys/tagged-address.h new file mode 100644 index 0000000000..2e902f72b2 --- /dev/null +++ b/include/sys/tagged-address.h @@ -0,0 +1,9 @@ +#include + +#ifndef _ISOMAC +# include +# define get_tagged_address_bits() __get_tagged_address_bits () +# define get_tagged_address_mask() __get_tagged_address_mask () +# define tag_address(addr, tag) __tag_address ((addr), (tag)) +# define untag_address(addr) __untag_address ((addr)) +#endif diff --git a/manual/Makefile b/manual/Makefile index e83444341e..08df2daa6b 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -34,7 +34,8 @@ info: $(objpfx)libc.info endif chapters = $(addsuffix .texi, \ - intro errno memory ctype string charset locale \ + intro errno memory tagged-address ctype string \ + charset locale \ message search pattern io stdio llio filesys \ pipe socket terminal syslog math arith time \ resource setjmp signal startup process ipc job \ diff --git a/manual/ctype.texi b/manual/ctype.texi index d0618c5c38..28af73ff0e 100644 --- a/manual/ctype.texi +++ b/manual/ctype.texi @@ -1,4 +1,4 @@ -@node Character Handling, String and Array Utilities, Memory, Top +@node Character Handling, String and Array Utilities, Tagged Address, Top @c %MENU% Character testing and conversion functions @chapter Character Handling diff --git a/manual/memory.texi b/manual/memory.texi index 28ec2e4e63..829dcbbaa0 100644 --- a/manual/memory.texi +++ b/manual/memory.texi @@ -1,4 +1,4 @@ -@node Memory, Character Handling, Error Reporting, Top +@node Memory, Tagged Address, Error Reporting, Top @chapter Virtual Memory Allocation And Paging @c %MENU% Allocating virtual memory and controlling paging @cindex memory allocation diff --git a/manual/tagged-address.texi b/manual/tagged-address.texi new file mode 100644 index 0000000000..ce10f7e752 --- /dev/null +++ b/manual/tagged-address.texi @@ -0,0 +1,59 @@ +@node Tagged Address, Character Handling, Memory, Top +@c %MENU% Tagged address functions and macros +@chapter Tagged Address + +By default, the number of the address bits used in address translation +is the number of address bits. But it can be changed by ARM Top-byte +Ignore (TBI) or Intel Linear Address Masking (LAM). + +@Theglibc{} provides several functions and macros in the header file +@file{sys/tagged-address.h} to manipulate tagged address bits, which is +the number of the address bits used in address translation. +@pindex sys/tagged-address.h + +@deftypefun {unsigned int} get_tagged_address_bits (void) +@standards{GNU, sys/tagged-address.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Get the current address bits used in address translation. The return +value is @code{0} if tag bits are not the highest bits in address. +@end deftypefun + +@deftypefun uintptr_t get_tagged_address_mask (void) +@standards{GNU, sys/tagged-address.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Get the current mask for address bits used in address translation. +@end deftypefun + +@deftypefun int set_tagged_address_mask (uintptr_t @var{mask}) +@standards{GNU, sys/tagged-address.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Set the mask for address bits used in address translation to @var{mask}. +The return value is @code{0} on success and @code{-1} on failure. This +function can be called only once before @code{main}. The possible +@code{errno} error conditions are @code{ENODEV}, @code{EPERM}, +@code{EINVAL}, and @code{ENOSYS}. +@end deftypefun + +@deftypefun {void *} tag_address (void *@var{addr}, unsigned int @var{tag}) +@standards{GNU, sys/tagged-address.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Return the address of @var{addr} with the tag value @var{tag} stored +in the untranslated bits. Overflow of @var{tag} in the untranslated +bits are ignored. +@end deftypefun + +@deftypefun {void *} untag_address (void *@var{addr}) +@standards{GNU, sys/tagged-address.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Return the address of @var{addr} with all zero untranslated bits. +@end deftypefun + +@deftypefn Macro int TAGGED_ADDRESS_VALID_BITS (@var{bits}) +This macro returns a nonzero value (true) if @var{bits} a valid tagged +address bits. +@end deftypefn + +@deftypefn Macro {const uintptr_t} TAGGED_ADDRESS_MASK (@var{bits}) +This macro returns a nonzero value if it can be used as mask for constant +address @var{bits} used in address translation. +@end deftypefn diff --git a/misc/Makefile b/misc/Makefile index 38dad737f2..ec8b266c2e 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -38,7 +38,9 @@ headers := sys/uio.h bits/uio-ext.h bits/uio_lim.h \ bits/select2.h bits/hwcap.h sys/auxv.h \ sys/sysmacros.h bits/sysmacros.h bits/types/struct_iovec.h \ bits/err-ldbl.h bits/error-ldbl.h \ - sys/single_threaded.h + sys/single_threaded.h \ + sys/tagged-address.h bits/tagged-address.h \ + bits/tagged-address-mask.h routines := brk sbrk sstk ioctl \ readv writev preadv preadv64 pwritev pwritev64 \ @@ -73,7 +75,8 @@ routines := brk sbrk sstk ioctl \ fgetxattr flistxattr fremovexattr fsetxattr getxattr \ listxattr lgetxattr llistxattr lremovexattr lsetxattr \ removexattr setxattr getauxval ifunc-impl-list makedev \ - allocate_once fd_to_filename single_threaded unwind-link + allocate_once fd_to_filename single_threaded unwind-link \ + tagged-address set-tagged-address-mask generated += tst-error1.mtrace tst-error1-mem.out \ tst-allocate_once.mtrace tst-allocate_once-mem.out @@ -88,15 +91,30 @@ tests := tst-dirname tst-tsearch tst-fdset tst-mntent tst-hsearch \ tst-preadvwritev tst-preadvwritev64 tst-makedev tst-empty \ tst-preadvwritev2 tst-preadvwritev64v2 tst-warn-wide \ tst-ldbl-warn tst-ldbl-error tst-dbl-efgcvt tst-ldbl-efgcvt \ - tst-mntent-autofs tst-syscalls tst-mntent-escape tst-select + tst-mntent-autofs tst-syscalls tst-mntent-escape tst-select \ + tst-tagged-address-1 tst-tagged-address-1-static \ + tst-tagged-address-2 tst-tagged-address-2-static \ + tst-tagged-address-3 tst-tagged-address-3-static \ + tst-tagged-address-4 tst-tagged-address-4-static # Tests which need libdl. ifeq (yes,$(build-shared)) -tests += tst-gethostid +tests += tst-gethostid \ + tst-tagged-address-5 \ + tst-tagged-address-6 \ + tst-tagged-address-7 +modules-names += \ + tst-tagged-address-mod-5 \ + tst-tagged-address-mod-6 \ + tst-tagged-address-mod-7 endif tests-internal := tst-atomic tst-atomic-long tst-allocate_once -tests-static := tst-empty +tests-static := tst-empty \ + tst-tagged-address-1-static \ + tst-tagged-address-2-static \ + tst-tagged-address-3-static \ + tst-tagged-address-4-static # Test for the internal, non-exported __fd_to_filename function. tests-internal += tst-fd_to_filename @@ -160,3 +178,9 @@ $(objpfx)tst-allocate_once-mem.out: $(objpfx)tst-allocate_once.out $(evaluate-test) $(objpfx)tst-gethostid: $(libdl) + +$(objpfx)tst-tagged-address-2: $(shared-thread-library) +$(objpfx)tst-tagged-address-2-static: $(static-thread-library) +$(objpfx)tst-tagged-address-7: $(libdl) +$(objpfx)tst-tagged-address-7.out: $(objpfx)tst-tagged-address-mod-7.so +$(objpfx)tst-tagged-address-mod-7.so: $(libsupport) diff --git a/misc/Versions b/misc/Versions index d5b348e83a..ceb8b0084a 100644 --- a/misc/Versions +++ b/misc/Versions @@ -164,6 +164,13 @@ libc { GLIBC_2.32 { __libc_single_threaded; } + GLIBC_2.34 { + get_tagged_address_bits; + get_tagged_address_mask; + set_tagged_address_mask; + tag_address; + untag_address; + } GLIBC_PRIVATE { __madvise; __mktemp; diff --git a/misc/set-tagged-address-mask.c b/misc/set-tagged-address-mask.c new file mode 100644 index 0000000000..2e1e2f2343 --- /dev/null +++ b/misc/set-tagged-address-mask.c @@ -0,0 +1,41 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include + +/* Set the mask for address bits used in address translation. Return 0 + on success. Return -1 on error. */ + +int +set_tagged_address_mask (uintptr_t mask) +{ + if (GL(dl_tagged_address_mask_locked) != 0) + __set_errno (EPERM); + else + { + /* set_tagged_address_mask can only be called once. */ + GL(dl_tagged_address_mask_locked) = 1; + + /* Only NOP is allowed. */ + if (mask == __get_tagged_address_mask ()) + return 0; + + __set_errno (ENOSYS); + } + return -1; +} diff --git a/misc/sys/tagged-address.h b/misc/sys/tagged-address.h new file mode 100644 index 0000000000..025a333cac --- /dev/null +++ b/misc/sys/tagged-address.h @@ -0,0 +1,45 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef _SYS_TAGGED_ADDRESS_H +#define _SYS_TAGGED_ADDRESS_H 1 + +#include +#include +#include + +__BEGIN_DECLS + +/* Get the current address bits used in address translation. */ +extern unsigned int get_tagged_address_bits (void); + +/* Get the current mask for address bits used in address translation. */ +extern uintptr_t get_tagged_address_mask (void); + +/* Set the mask for address bits used in address translation. Return 0 + on success. Return -1 on error. */ +extern int set_tagged_address_mask (uintptr_t __mask); + +/* Return the tagged address of __ADDR with the tag value __TAG. */ +extern void *tag_address (void *__addr, unsigned int __tag); + +/* Return the untagged address of __ADDR. */ +extern void *untag_address (void *__addr); + +__END_DECLS + +#endif /* */ diff --git a/misc/tagged-address.c b/misc/tagged-address.c new file mode 100644 index 0000000000..df474f3d0b --- /dev/null +++ b/misc/tagged-address.c @@ -0,0 +1,55 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +#undef get_tagged_address_bits +#undef get_tagged_address_mask +#undef tag_address +#undef untag_address + +/* Get the current address bits used in address translation. */ + +unsigned int +get_tagged_address_bits (void) +{ + return __get_tagged_address_bits (); +} + +/* Get the current mask for address bits used in address translation. */ + +uintptr_t +get_tagged_address_mask (void) +{ + return __get_tagged_address_mask (); +} + +/* Return the tagged address of ADDR with the tag value TAG. */ + +void * +tag_address (void *addr, unsigned int tag) +{ + return __tag_address (addr, tag); +} + +/* Return the untagged address of ADDR. */ + +void * +untag_address (void *addr) +{ + return __untag_address (addr); +} diff --git a/misc/tst-tagged-address-1-static.c b/misc/tst-tagged-address-1-static.c new file mode 100644 index 0000000000..3ed71a66c2 --- /dev/null +++ b/misc/tst-tagged-address-1-static.c @@ -0,0 +1 @@ +#include diff --git a/misc/tst-tagged-address-1.c b/misc/tst-tagged-address-1.c new file mode 100644 index 0000000000..0bbc214a2f --- /dev/null +++ b/misc/tst-tagged-address-1.c @@ -0,0 +1,53 @@ +/* Tests for set_tagged_address_mask. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +static void +init_0 (void) +{ + if (set_tagged_address_mask (get_tagged_address_mask ()) != 0) + FAIL_EXIT1 ("set_tagged_address_mask failed: %m"); +} + +static void +init_1 (void) +{ + if (set_tagged_address_mask (get_tagged_address_mask ()) == 0) + FAIL_EXIT1 ("set_tagged_address_mask should fail"); + + if (errno != EPERM) + FAIL_EXIT1 ("set_tagged_address_mask: errno (%m) != EPERM"); +} + +static void (*init_array []) (void) + __attribute__ ((used, section (".init_array"), aligned (sizeof (void *)))) = +{ + &init_0, + &init_1 +}; + +static int +do_test (void) +{ + return 0; +} + +#include diff --git a/misc/tst-tagged-address-2-static.c b/misc/tst-tagged-address-2-static.c new file mode 100644 index 0000000000..ac0d95e6c0 --- /dev/null +++ b/misc/tst-tagged-address-2-static.c @@ -0,0 +1 @@ +#include diff --git a/misc/tst-tagged-address-2.c b/misc/tst-tagged-address-2.c new file mode 100644 index 0000000000..76caae4053 --- /dev/null +++ b/misc/tst-tagged-address-2.c @@ -0,0 +1,44 @@ +/* Test for set_tagged_address_mask with pthread. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include +#include + +static void * +tf (void *arg) +{ + if (set_tagged_address_mask (get_tagged_address_mask ()) == 0) + FAIL_EXIT1 ("set_tagged_address_mask should fail"); + + if (errno != EPERM) + FAIL_EXIT1 ("set_tagged_address_mask: errno (%m) != EPERM"); + + return NULL; +} + +static int +do_test (void) +{ + pthread_t thr = xpthread_create (NULL, tf, NULL); + xpthread_join (thr); + return 0; +} + +#include diff --git a/misc/tst-tagged-address-3-static.c b/misc/tst-tagged-address-3-static.c new file mode 100644 index 0000000000..1e3591e0d6 --- /dev/null +++ b/misc/tst-tagged-address-3-static.c @@ -0,0 +1 @@ +#include diff --git a/misc/tst-tagged-address-3.c b/misc/tst-tagged-address-3.c new file mode 100644 index 0000000000..e241950959 --- /dev/null +++ b/misc/tst-tagged-address-3.c @@ -0,0 +1,48 @@ +/* Tests for set_tagged_address_mask to turn off tagged address. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include + +static void +init (void) +{ + uintptr_t mask = (uintptr_t) -1; + if (set_tagged_address_mask (mask) != 0) + FAIL_EXIT1 ("set_tagged_address_mask failed: %m"); +} + +static void (*init_array []) (void) + __attribute__ ((used, section (".init_array"), aligned (sizeof (void *)))) = +{ + &init +}; + +static int +do_test (void) +{ + uintptr_t mask = (uintptr_t) -1; + uintptr_t curent_mask = get_tagged_address_mask (); + if (curent_mask != mask) + FAIL_EXIT1 ("get_tagged_address_mask failed: %p != %p", + (void *) curent_mask, (void *) mask); + + return 0; +} + +#include diff --git a/misc/tst-tagged-address-4-static.c b/misc/tst-tagged-address-4-static.c new file mode 100644 index 0000000000..b0681f6f9b --- /dev/null +++ b/misc/tst-tagged-address-4-static.c @@ -0,0 +1 @@ +#include diff --git a/misc/tst-tagged-address-4.c b/misc/tst-tagged-address-4.c new file mode 100644 index 0000000000..9843f780af --- /dev/null +++ b/misc/tst-tagged-address-4.c @@ -0,0 +1,35 @@ +/* Tests for set_tagged_address_mask. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +static int +do_test (void) +{ + if (set_tagged_address_mask (get_tagged_address_mask ()) == 0) + FAIL_EXIT1 ("set_tagged_address_mask should fail"); + + if (errno != EPERM) + FAIL_EXIT1 ("set_tagged_address_mask: errno (%m) != EPERM"); + + return 0; +} + +#include diff --git a/misc/tst-tagged-address-5.c b/misc/tst-tagged-address-5.c new file mode 100644 index 0000000000..e00679a2cb --- /dev/null +++ b/misc/tst-tagged-address-5.c @@ -0,0 +1,25 @@ +/* Tests for set_tagged_address_mask. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +static int +do_test (void) +{ + return 0; +} + +#include diff --git a/misc/tst-tagged-address-6.c b/misc/tst-tagged-address-6.c new file mode 100644 index 0000000000..5fdceb1fb4 --- /dev/null +++ b/misc/tst-tagged-address-6.c @@ -0,0 +1,34 @@ +/* Tests for set_tagged_address_mask to turn off tagged address. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include + +static int +do_test (void) +{ + uintptr_t mask = (uintptr_t) -1; + uintptr_t curent_mask = get_tagged_address_mask (); + if (curent_mask != mask) + FAIL_EXIT1 ("get_tagged_address_mask failed: %p != %p", + (void *) curent_mask, (void *) mask); + + return 0; +} + +#include diff --git a/misc/tst-tagged-address-7.c b/misc/tst-tagged-address-7.c new file mode 100644 index 0000000000..f0a078188d --- /dev/null +++ b/misc/tst-tagged-address-7.c @@ -0,0 +1,40 @@ +/* Tests for set_tagged_address_mask. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +static int +do_test (void) +{ + const char *modname = "$ORIGIN/tst-tagged-address-mod-7.so"; + void *h = dlopen (modname, RTLD_LAZY); + + if (h == NULL) + { + const char *err = dlerror (); + FAIL_EXIT1 ("cannot open '%s': %s\n", modname, err); + } + + dlclose (h); + + return 0; +} + +#include diff --git a/misc/tst-tagged-address-mod-5.c b/misc/tst-tagged-address-mod-5.c new file mode 100644 index 0000000000..275ecc406d --- /dev/null +++ b/misc/tst-tagged-address-mod-5.c @@ -0,0 +1,45 @@ +/* Tests for set_tagged_address_mask. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include +#include + +static void +init_0 (void) +{ + if (set_tagged_address_mask (get_tagged_address_mask ()) != 0) + FAIL_EXIT1 ("set_tagged_address_mask failed: %m"); +} + +static void +init_1 (void) +{ + if (set_tagged_address_mask (get_tagged_address_mask ()) == 0) + FAIL_EXIT1 ("set_tagged_address_mask should fail"); + + if (errno != EPERM) + FAIL_EXIT1 ("set_tagged_address_mask: errno (%m) != EPERM"); +} + +static void (*init_array []) (void) + __attribute__ ((used, section (".init_array"), aligned (sizeof (void *)))) = +{ + &init_0, + &init_1 +}; diff --git a/misc/tst-tagged-address-mod-6.c b/misc/tst-tagged-address-mod-6.c new file mode 100644 index 0000000000..75dfe8e8d2 --- /dev/null +++ b/misc/tst-tagged-address-mod-6.c @@ -0,0 +1,34 @@ +/* Tests for set_tagged_address_mask to turn off tagged address. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include + +static void +init (void) +{ + uintptr_t mask = (uintptr_t) -1; + if (set_tagged_address_mask (mask) != 0) + FAIL_EXIT1 ("set_tagged_address_mask failed: %m"); +} + +static void (*init_array []) (void) + __attribute__ ((used, section (".init_array"), aligned (sizeof (void *)))) = +{ + &init +}; diff --git a/misc/tst-tagged-address-mod-7.c b/misc/tst-tagged-address-mod-7.c new file mode 100644 index 0000000000..c902a4e55e --- /dev/null +++ b/misc/tst-tagged-address-mod-7.c @@ -0,0 +1,34 @@ +/* Tests for set_tagged_address_mask to turn off tagged address. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include +#include + +static void +init (void) +{ + uintptr_t mask = (uintptr_t) -1; + if (set_tagged_address_mask (mask) == 0) + FAIL_EXIT1 ("set_tagged_address_mask should have failed"); +} + +static void (*init_array []) (void) + __attribute__ ((used, section (".init_array"), aligned (sizeof (void *)))) = +{ + &init +}; diff --git a/sysdeps/generic/inline-tagged-address.h b/sysdeps/generic/inline-tagged-address.h new file mode 100644 index 0000000000..a016b16f21 --- /dev/null +++ b/sysdeps/generic/inline-tagged-address.h @@ -0,0 +1,43 @@ +/* Inline tagged address functions. Generic version. + Copyright (C) 2021 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#include + +static inline unsigned int +__get_tagged_address_bits (void) +{ + return sizeof (uintptr_t) * 8; +} + +static inline uintptr_t +__get_tagged_address_mask (void) +{ + return (uintptr_t) -1; +} + +static inline void * +__tag_address (void *addr, unsigned int tag) +{ + return addr; +} + +static inline void * +__untag_address (void *addr) +{ + return addr; +} diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index ea3f7a69d0..ed1d01d88d 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -484,6 +484,10 @@ struct rtld_global #else EXTERN int _dl_thread_gscope_count; #endif + + /* If nonzero, the mask for address bits used in address translation + is locked. */ + EXTERN int _dl_tagged_address_mask_locked; #ifdef SHARED }; # define __rtld_global_attribute__ diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist index cfd4e55e57..445f131cd4 100644 --- a/sysdeps/unix/sysv/linux/i386/libc.abilist +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist @@ -2253,7 +2253,12 @@ GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __isnanf128 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index da0974f11a..52676b5a6a 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -2092,7 +2092,12 @@ GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __isnanf128 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist index d3d155e7c0..509f67f780 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist @@ -2189,4 +2189,9 @@ GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __isnanf128 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F From patchwork Tue Apr 20 02:18:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 43059 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 1072139730E4; Tue, 20 Apr 2021 02:18:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1072139730E4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1618885110; bh=5XrytEhIO0+JqnlpeoQ2rLFv+nUoyE1v6EVRTEw/gd0=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=YQnWrHW+tqDhuF+onTRbLotz3rmC2u8gnHcd8nHkD1Q76Y+b0hdBEk0hb0I2IxSnm snIXqL1lIRpaf5AhhyhhFQpKv311xmV1ACNNKQlDUvGWtF2yfboErRwJnT5KzZOupi 0B/qXNXjW7e+VjMD2krv2Spnbqi4v8fz6zIEK6bo= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-pg1-x535.google.com (mail-pg1-x535.google.com [IPv6:2607:f8b0:4864:20::535]) by sourceware.org (Postfix) with ESMTPS id 63C6E397300B for ; Tue, 20 Apr 2021 02:18:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 63C6E397300B Received: by mail-pg1-x535.google.com with SMTP id d10so25563632pgf.12 for ; Mon, 19 Apr 2021 19:18:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5XrytEhIO0+JqnlpeoQ2rLFv+nUoyE1v6EVRTEw/gd0=; b=FU3+MKyncWPdBt7aFzMC7xycpPb4lcDnujlC/LA9G7jOrlfwY//AzxgaFU+wl5j/Ui K4PMACwvWZ9EELftzzrhaYOL7lmzMQ8Z9MhntsxbtKHahyJak3+wSjETh9pImnU4znHb YZWlGOrCj6O4pv3ICqBxbmPBL1UL3AYTu4NFbeZisfY4+t+XjZZdig7Dt5tFvUtJtxr6 GvBD+K2XrIRXAAZmwXnkKwrO4t/X0aSOy6EIgQjB3GT6QOWD0Wv9jizF34o7TdT9ugHQ 9bXM9/zFnVjBqVUDAR/wGufqTe8pcGUc+I/PNgWAbuTnBD0kQLTFRkFlY+QOcRGLok2r IcEw== X-Gm-Message-State: AOAM533CQ7X72x+6FsROeZ2MadJf7Q5OYP1ujVCQ7/23xai0qFlMQn2L UU4d+rA5kBnZMFJCmMpxKSY= X-Google-Smtp-Source: ABdhPJzPxCyJeYl0/SbTE/Ltn2m5D6YL4p0d27tVXkayIknjrz0xqfdnNFSrLMRbald0SH2rdWEn3g== X-Received: by 2002:a65:4887:: with SMTP id n7mr14527427pgs.14.1618885102414; Mon, 19 Apr 2021 19:18:22 -0700 (PDT) Received: from gnu-cfl-2.localdomain ([2607:fb90:a62d:2d5e:38da:e56e:0:c66]) by smtp.gmail.com with ESMTPSA id g185sm2816936pfb.120.2021.04.19.19.18.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 19 Apr 2021 19:18:20 -0700 (PDT) Received: from gnu-cfl-2.lan (localhost [IPv6:::1]) by gnu-cfl-2.localdomain (Postfix) with ESMTP id 38D401A0A45; Mon, 19 Apr 2021 19:18:19 -0700 (PDT) To: libc-alpha@sourceware.org Subject: [PATCH v4 2/2] : Update libc.abilist files Date: Mon, 19 Apr 2021 19:18:19 -0700 Message-Id: <20210420021819.765779-3-hjl.tools@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210420021819.765779-1-hjl.tools@gmail.com> References: <20210420021819.765779-1-hjl.tools@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3035.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Libc-alpha" From: "H.J. Lu" Reply-To: "H.J. Lu" Cc: Florian Weimer , Szabolcs Nagy , "Kirill A . Shutemov" , Joseph Myers , Vedvyas Shanbhogue Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" --- sysdeps/mach/hurd/i386/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/aarch64/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/alpha/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/arc/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/arm/be/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/arm/le/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/csky/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/hppa/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/ia64/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/microblaze/be/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/microblaze/le/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/nios2/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/sh/be/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/sh/le/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist | 5 +++++ sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist | 5 +++++ 30 files changed, 150 insertions(+) diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index fcba25ee5e..c95ff99b0c 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -2207,6 +2207,11 @@ GLIBC_2.33 stat64 F GLIBC_2.34 __isnanf128 F GLIBC_2.34 __libc_start_main F GLIBC_2.34 _hurd_libc_proc_init F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index 851f15a566..fbf405d9af 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2174,4 +2174,9 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 33b426ef20..2fc9f9ae57 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -2263,7 +2263,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _IO_fprintf F GLIBC_2.4 _IO_printf F GLIBC_2.4 _IO_sprintf F diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist index c09947ad58..6d2282faba 100644 --- a/sysdeps/unix/sysv/linux/arc/libc.abilist +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist @@ -1933,4 +1933,9 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist index 57be971f81..6f79f58f31 100644 --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist @@ -156,7 +156,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _Exit F GLIBC_2.4 _IO_2_1_stderr_ D 0xa0 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0 diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist index 2db02fae07..f83b3cca8d 100644 --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist @@ -153,7 +153,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _Exit F GLIBC_2.4 _IO_2_1_stderr_ D 0xa0 GLIBC_2.4 _IO_2_1_stdin_ D 0xa0 diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist index 0dd3527892..2df222d80e 100644 --- a/sysdeps/unix/sysv/linux/csky/libc.abilist +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist @@ -2117,4 +2117,9 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist index 04c32f9b65..9e1673410f 100644 --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist @@ -2076,7 +2076,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index 426e15f4f6..7b6b89716d 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -2110,7 +2110,12 @@ GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __isnanf128 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist index bdecf60fae..06090eb6fd 100644 --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist @@ -157,7 +157,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _Exit F GLIBC_2.4 _IO_2_1_stderr_ D 0x98 GLIBC_2.4 _IO_2_1_stdin_ D 0x98 diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist index eaa5a97a61..3237b96935 100644 --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist @@ -2196,7 +2196,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist index 571315511b..c127cebfc9 100644 --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist @@ -2168,4 +2168,9 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist index 9d4c1f53f7..1e2696eb95 100644 --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist @@ -2165,4 +2165,9 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist index 6de58a4680..48627f58ab 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist @@ -2159,7 +2159,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist index e1c971c361..8341c1c7fc 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist @@ -2157,7 +2157,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist index 28d6d3284d..f554fe1c1b 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist @@ -2165,7 +2165,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 3060a503ab..a242ff44da 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -2159,7 +2159,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist index 24e0a6f16a..fdd419f052 100644 --- a/sysdeps/unix/sysv/linux/nios2/libc.abilist +++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist @@ -2207,4 +2207,9 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist index b9cccc3fe5..229ed30d75 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist @@ -2223,7 +2223,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _IO_fprintf F GLIBC_2.4 _IO_printf F GLIBC_2.4 _IO_sprintf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist index 5c81a23740..1bdd0345cb 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist @@ -2256,7 +2256,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _IO_fprintf F GLIBC_2.4 _IO_printf F GLIBC_2.4 _IO_sprintf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist index a61d2502d5..8fe8fdb852 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist @@ -2078,7 +2078,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _IO_fprintf F GLIBC_2.4 _IO_printf F GLIBC_2.4 _IO_sprintf F diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist index ec9ae25539..d4a0aa110a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist @@ -2370,4 +2370,9 @@ GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __isnanf128 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist index b08ece30b8..b3aa4d2685 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist @@ -1935,4 +1935,9 @@ GLIBC_2.33 write F GLIBC_2.33 writev F GLIBC_2.33 wscanf F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist index 12ced01cf7..c1fb89a1ef 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist @@ -2135,4 +2135,9 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist index 7ed5e4c515..1e3fbcb1bd 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist @@ -2221,7 +2221,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _IO_fprintf F GLIBC_2.4 _IO_printf F GLIBC_2.4 _IO_sprintf F diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index 73a46b01b2..e280abafc0 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -2114,7 +2114,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _IO_fprintf F GLIBC_2.4 _IO_printf F GLIBC_2.4 _IO_sprintf F diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist index 2aa68f1def..49b193f4df 100644 --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist @@ -2083,7 +2083,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist index 07f3c23873..811a54b361 100644 --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist @@ -2080,7 +2080,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist index cc1d278c72..3c7c679a75 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist @@ -2212,7 +2212,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 _IO_fprintf F GLIBC_2.4 _IO_printf F GLIBC_2.4 _IO_sprintf F diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index 79ca3d5d9c..5b765b859b 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -2131,7 +2131,12 @@ GLIBC_2.33 mknodat F GLIBC_2.33 stat F GLIBC_2.33 stat64 F GLIBC_2.34 __libc_start_main F +GLIBC_2.34 get_tagged_address_bits F +GLIBC_2.34 get_tagged_address_mask F GLIBC_2.34 pthread_kill F +GLIBC_2.34 set_tagged_address_mask F +GLIBC_2.34 tag_address F +GLIBC_2.34 untag_address F GLIBC_2.4 __confstr_chk F GLIBC_2.4 __fgets_chk F GLIBC_2.4 __fgets_unlocked_chk F