public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/3] PTR_MANGLE/PTR_DEMANGLE refactoring
@ 2022-10-13 12:20 Florian Weimer
  2022-10-13 12:20 ` [PATCH 1/3] x86-64: Move LP_SIZE definition to its own header Florian Weimer
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Florian Weimer @ 2022-10-13 12:20 UTC (permalink / raw)
  To: libc-alpha

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


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2022-10-18 15:04 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-13 12:20 [PATCH 0/3] PTR_MANGLE/PTR_DEMANGLE refactoring Florian Weimer
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

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).