From: Florian Weimer <fweimer@redhat.com>
To: libc-alpha@sourceware.org
Subject: [PATCH 0/3] PTR_MANGLE/PTR_DEMANGLE refactoring
Date: Thu, 13 Oct 2022 14:20:27 +0200 [thread overview]
Message-ID: <cover.1665663395.git.fweimer@redhat.com> (raw)
These patches define PTR_MANGLE and PTR_DEMANGLE unconditionally for C
sources.
I looked into providing generic pointer guard support (particularly for
ld.so), but that needs a bit more work because we need to special-case
the setjmp/longjmp mangling first: the C and assembler side need to be
consistent, and if we add generic pointer mangling on the C side, things
break.
Tested on aarch64-linux-gnu, i686-linux-gnu, powerpc64-linux-gnu,
powerpc64le-linux-gnu, s390x-linux-gnu, x86_64-linux-gnu. Built with
build-many-glibcs.py.
Thanks,
Florian
Florian Weimer (3):
x86-64: Move LP_SIZE definition to its own header
Introduce <pointer_guard.h>, extracted from <sysdep.h>
Use PTR_MANGLE and PTR_DEMANGLE unconditionally in C sources
hurd/sigunwind.c | 4 +-
iconv/gconv.c | 4 +-
iconv/gconv_cache.c | 6 +-
iconv/gconv_db.c | 17 +---
iconv/gconv_dl.c | 4 +-
iconv/gconv_trans.c | 3 +-
iconv/skeleton.c | 4 +-
inet/idna.c | 7 +-
libio/iofopncook.c | 13 +--
libio/iofwide.c | 8 +-
libio/libioP.h | 3 +-
libio/vtables.c | 3 +-
misc/unwind-link.c | 11 ++-
nss/nss_module.c | 14 +---
stdlib/cxa_atexit.c | 4 +-
stdlib/cxa_finalize.c | 5 +-
stdlib/cxa_thread_atexit_impl.c | 5 +-
stdlib/exit.c | 11 +--
stdlib/on_exit.c | 4 +-
sysdeps/aarch64/__longjmp.S | 1 +
sysdeps/aarch64/jmpbuf-offsets.h | 3 +-
sysdeps/aarch64/setjmp.S | 1 +
sysdeps/alpha/__longjmp.S | 1 +
sysdeps/alpha/jmpbuf-unwind.h | 3 +-
sysdeps/alpha/setjmp.S | 1 +
sysdeps/arc/jmpbuf-unwind.h | 3 +-
sysdeps/arm/__longjmp.S | 1 +
sysdeps/arm/jmpbuf-unwind.h | 3 +-
sysdeps/arm/pointer_guard.h | 67 +++++++++++++++
sysdeps/arm/setjmp.S | 1 +
sysdeps/arm/sysdep.h | 44 ----------
sysdeps/csky/abiv2/__longjmp.S | 1 +
sysdeps/csky/abiv2/setjmp.S | 1 +
sysdeps/csky/jmpbuf-unwind.h | 3 +-
sysdeps/generic/pointer_guard.h | 29 +++++++
sysdeps/generic/unwind-link.h | 8 +-
sysdeps/i386/__longjmp.S | 1 +
sysdeps/i386/bsd-_setjmp.S | 1 +
sysdeps/i386/bsd-setjmp.S | 1 +
sysdeps/i386/jmpbuf-unwind.h | 3 +-
sysdeps/i386/setjmp.S | 1 +
sysdeps/i386/unwind-arch.h | 6 +-
sysdeps/loongarch/__longjmp.S | 1 +
sysdeps/loongarch/jmpbuf-unwind.h | 3 +-
sysdeps/loongarch/setjmp.S | 1 +
sysdeps/m68k/jmpbuf-unwind.h | 3 +-
sysdeps/mach/hurd/i386/____longjmp_chk.S | 1 +
sysdeps/mach/hurd/i386/__longjmp.S | 1 +
sysdeps/mach/hurd/jmp-unwind.c | 4 +-
sysdeps/microblaze/jmpbuf-unwind.h | 3 +-
sysdeps/mips/jmpbuf-unwind.h | 3 +-
sysdeps/nios2/__longjmp.S | 1 +
sysdeps/nios2/jmpbuf-offsets.h | 3 +-
sysdeps/nios2/setjmp.S | 1 +
sysdeps/powerpc/jmpbuf-unwind.h | 3 +-
sysdeps/powerpc/powerpc32/__longjmp-common.S | 1 +
.../powerpc/powerpc32/fpu/__longjmp-common.S | 1 +
sysdeps/powerpc/powerpc32/fpu/setjmp-common.S | 1 +
sysdeps/powerpc/powerpc32/setjmp-common.S | 1 +
sysdeps/powerpc/powerpc64/__longjmp-common.S | 1 +
sysdeps/powerpc/powerpc64/setjmp-common.S | 1 +
sysdeps/riscv/jmpbuf-unwind.h | 3 +-
sysdeps/s390/jmpbuf-unwind.h | 3 +-
sysdeps/s390/s390-32/__longjmp.c | 6 ++
sysdeps/s390/s390-32/setjmp.S | 1 +
sysdeps/s390/s390-64/__longjmp.c | 6 ++
sysdeps/s390/s390-64/setjmp.S | 1 +
sysdeps/sh/jmpbuf-unwind.h | 3 +-
sysdeps/sh/sh3/__longjmp.S | 1 +
sysdeps/sh/sh3/setjmp.S | 1 +
sysdeps/sh/sh4/__longjmp.S | 1 +
sysdeps/sh/sh4/setjmp.S | 1 +
sysdeps/sparc/sparc32/__longjmp.S | 1 +
sysdeps/sparc/sparc32/jmpbuf-unwind.h | 3 +-
sysdeps/sparc/sparc32/setjmp.S | 1 +
.../unix/sysv/linux/aarch64/pointer_guard.h | 68 +++++++++++++++
sysdeps/unix/sysv/linux/aarch64/sysdep.h | 45 ----------
.../unix/sysv/linux/alpha/____longjmp_chk.S | 1 +
sysdeps/unix/sysv/linux/alpha/pointer_guard.h | 62 ++++++++++++++
sysdeps/unix/sysv/linux/alpha/sysdep.h | 40 ---------
sysdeps/unix/sysv/linux/arc/sysdep.h | 4 -
sysdeps/unix/sysv/linux/csky/pointer_guard.h | 68 +++++++++++++++
sysdeps/unix/sysv/linux/csky/sysdep.h | 46 -----------
sysdeps/unix/sysv/linux/hppa/sysdep.h | 4 -
.../unix/sysv/linux/i386/____longjmp_chk.S | 1 +
sysdeps/unix/sysv/linux/i386/pointer_guard.h | 49 +++++++++++
sysdeps/unix/sysv/linux/i386/sysdep.h | 28 -------
sysdeps/unix/sysv/linux/ia64/__ia64_longjmp.S | 1 +
sysdeps/unix/sysv/linux/ia64/__longjmp.S | 1 +
sysdeps/unix/sysv/linux/ia64/pointer_guard.h | 44 ++++++++++
sysdeps/unix/sysv/linux/ia64/setjmp.S | 1 +
sysdeps/unix/sysv/linux/ia64/sysdep.h | 20 -----
.../unix/sysv/linux/loongarch/pointer_guard.h | 82 +++++++++++++++++++
sysdeps/unix/sysv/linux/loongarch/sysdep.h | 60 --------------
sysdeps/unix/sysv/linux/m68k/sysdep.h | 4 -
sysdeps/unix/sysv/linux/microblaze/sysdep.h | 4 -
sysdeps/unix/sysv/linux/mips/mips32/sysdep.h | 4 -
sysdeps/unix/sysv/linux/mips/mips64/sysdep.h | 4 -
sysdeps/unix/sysv/linux/nios2/pointer_guard.h | 40 +++++++++
sysdeps/unix/sysv/linux/nios2/sysdep.h | 17 ----
sysdeps/unix/sysv/linux/or1k/sysdep.h | 4 -
.../unix/sysv/linux/powerpc/pointer_guard.h | 55 +++++++++++++
sysdeps/unix/sysv/linux/powerpc/sysdep.h | 32 --------
sysdeps/unix/sysv/linux/riscv/sysdep.h | 4 -
.../sysv/linux/s390/s390-32/pointer_guard.h | 45 ++++++++++
sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h | 21 -----
.../sysv/linux/s390/s390-64/pointer_guard.h | 47 +++++++++++
sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h | 23 ------
sysdeps/unix/sysv/linux/sh/____longjmp_chk.S | 1 +
sysdeps/unix/sysv/linux/sh/pointer_guard.h | 43 ++++++++++
sysdeps/unix/sysv/linux/sh/sysdep.h | 19 -----
.../linux/sparc/sparc32/____longjmp_chk.S | 1 +
.../sysv/linux/sparc/sparc32/pointer_guard.h | 44 ++++++++++
.../unix/sysv/linux/sparc/sparc32/sysdep.h | 20 -----
.../sysv/linux/sparc/sparc64/pointer_guard.h | 44 ++++++++++
.../unix/sysv/linux/sparc/sparc64/sysdep.h | 20 -----
.../unix/sysv/linux/x86_64/____longjmp_chk.S | 1 +
.../unix/sysv/linux/x86_64/pointer_guard.h | 61 ++++++++++++++
sysdeps/unix/sysv/linux/x86_64/sysdep.h | 40 ---------
sysdeps/x86_64/__longjmp.S | 1 +
sysdeps/x86_64/jmpbuf-unwind.h | 3 +-
sysdeps/x86_64/setjmp.S | 1 +
sysdeps/x86_64/sysdep.h | 7 +-
sysdeps/x86_64/x32/sysdep.h | 6 +-
sysdeps/x86_64/x32/x86-lp_size.h | 23 ++++++
sysdeps/x86_64/x86-lp_size.h | 23 ++++++
wcsmbs/btowc.c | 6 +-
wcsmbs/mbrtoc16.c | 4 +-
wcsmbs/mbrtoc8.c | 2 -
wcsmbs/mbrtowc.c | 4 +-
wcsmbs/mbsnrtowcs.c | 4 +-
wcsmbs/mbsrtowcs_l.c | 4 +-
wcsmbs/wcrtomb.c | 4 +-
wcsmbs/wcsnrtombs.c | 4 +-
wcsmbs/wcsrtombs.c | 4 +-
wcsmbs/wctob.c | 4 +-
136 files changed, 1007 insertions(+), 700 deletions(-)
create mode 100644 sysdeps/arm/pointer_guard.h
create mode 100644 sysdeps/generic/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/aarch64/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/alpha/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/csky/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/i386/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/ia64/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/loongarch/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/nios2/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/powerpc/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/s390/s390-32/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/sh/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc32/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/pointer_guard.h
create mode 100644 sysdeps/unix/sysv/linux/x86_64/pointer_guard.h
create mode 100644 sysdeps/x86_64/x32/x86-lp_size.h
create mode 100644 sysdeps/x86_64/x86-lp_size.h
base-commit: 15a94e6668a6d7c5697e805d8d67f1d102d0d52e
--
2.37.3
next reply other threads:[~2022-10-13 12:20 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-13 12:20 Florian Weimer [this message]
2022-10-13 12:20 ` [PATCH 1/3] x86-64: Move LP_SIZE definition to its own header Florian Weimer
2022-10-17 16:03 ` Adhemerval Zanella Netto
2022-10-13 12:20 ` [PATCH 2/3] Introduce <pointer_guard.h>, extracted from <sysdep.h> Florian Weimer
2022-10-14 3:30 ` DJ Delorie
2022-10-14 8:14 ` Florian Weimer
2022-10-17 16:13 ` Adhemerval Zanella Netto
2022-10-18 15:03 ` Florian Weimer
2022-10-13 12:20 ` [PATCH 3/3] Use PTR_MANGLE and PTR_DEMANGLE unconditionally in C sources Florian Weimer
2022-10-17 16:15 ` Adhemerval Zanella Netto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1665663395.git.fweimer@redhat.com \
--to=fweimer@redhat.com \
--cc=libc-alpha@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).