public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v3 00/16] Allow glibc to be built with _FORTIFY_SOURCE
@ 2023-06-28  8:42 Frédéric Bérat
  2023-06-28  8:42 ` [PATCH v3 01/16] " Frédéric Bérat
                   ` (15 more replies)
  0 siblings, 16 replies; 48+ messages in thread
From: Frédéric Bérat @ 2023-06-28  8:42 UTC (permalink / raw)
  To: libc-alpha; +Cc: siddhesh, fberat

Hello,

This patch series introduces a new "--enable-fortify-source" option to glibc
build. This option may either be set to a value between 1 and 3, or left empty
to let configure select the highest value available for the build system.

The first patch adds the new configure option, the second excludes the routines
that can't be built with the option enabled.

The next patches are fixing test and compilation errors that arose with
fortification enabled.

I couldn't test the patch series in all configuration possible on all arches
possible but I ran the following:

 - build-many-glibcs was executed on x86_64, for all arches/variants. This was
   mainly done to ensure that installed headers were not broken (as some
   patches are modifying system headers)
 - The new "enable-fortify-source" variant for BMG got executed on x86_64
 - make check and benchtests were executed on x86_64, i686, ppc64le, aarch64,
   s390x, with and without fortification enabled.

Fred.

Changes since v1:
 - The patch that introduced the new config option has been split in 2.
   There is now one patch that allows glibc to be built with fortification and
   one that adds a new configure option to enable it.
   The patch adding the configure option has been moved to the end of the
   series.
 - A new variant has been added to x86_64 bmg to test enable-fortify-source.
 - NEWS and INSTALL have been updated.
 - Patch series has been re-based
 - Error message has been fixed in newly introduced headers
 - Include directive has been fixed in newly introduced include/* headers

Changes since v2:
 - Test for bug269 modifies the stack in a way that may trigger an abort on
   longjump when fortification is enabled. Thus, disable fortification for this
   test.
 - Added 2 patches to perform the same changes on stdio.h that was done for
   unistd.h and wchar.h. Declarations that were in stdio2.h are moved into
   existing stdio-decl.h, and __REDIRECT is rplaced by __REDIRECT_FORTIFY for
   fgets_unlocked_alias.
 - Title for some patches were modified without content change.

---
Frédéric Bérat (16):
  Allow glibc to be built with _FORTIFY_SOURCE
  Exclude routines from fortification
  sysdeps: Ensure ieee128*_chk routines to be properly named
  string: Ensure *_chk routines have their hidden builtin definition
    available
  stdio: Ensure *_chk routines have their hidden builtin definition
    available
  asprintf_chk: Ensure compatibility for both s390x and ppc64le
  misc/sys/cdefs.h: Create FORTIFY redirects for internal calls
  wchar: Avoid PLT entries with _FORTIFY_SOURCE
  posix/bits/unistd.h: Clearly separate declaration from definitions
  unistd: Avoid PLT entries with _FORTIFY_SOURCE
  misc/bits/select2.h: Clearly separate declaration from definitions
  misc/bits/syslog.h: Clearly separate declaration from definition
  libio/bits/stdio2.h: Clearly separate declaration from definitions
  libio/bits/stdio2-decl.h: Avoid PLT entries with _FORTIFY_SOURCE
  sysdeps/ieee754/ldbl-128ibm-compat: Fix warn unused result
  Add --enable-fortify-source option

 INSTALL                                       |   6 +
 Makeconfig                                    |  35 +++-
 NEWS                                          |   4 +
 config.make.in                                |   3 +-
 configure                                     |  83 ++++++--
 configure.ac                                  |  60 ++++--
 debug/Makefile                                |  12 +-
 debug/asprintf_chk.c                          |  16 +-
 debug/fdelt_chk.c                             |   2 +
 debug/fgets_u_chk.c                           |   1 +
 debug/fprintf_chk.c                           |   1 +
 debug/getdomainname_chk.c                     |   1 +
 debug/memcpy_chk.c                            |   1 +
 debug/memmove_chk.c                           |   1 +
 debug/mempcpy_chk.c                           |   1 +
 debug/memset_chk.c                            |   1 +
 debug/read_chk.c                              |   1 +
 debug/sprintf_chk.c                           |   1 +
 debug/stpcpy_chk.c                            |   1 +
 debug/wcrtomb_chk.c                           |   1 +
 debug/wmemset_chk.c                           |   1 +
 elf/rtld-Rules                                |   2 +-
 include/bits/select-decl.h                    |   1 +
 include/bits/syslog-decl.h                    |   1 +
 include/bits/unistd-decl.h                    |   1 +
 include/stdio.h                               |  13 +-
 include/string.h                              |   7 +
 include/sys/cdefs.h                           |  14 ++
 include/sys/select.h                          |   4 +
 include/sys/syslog.h                          |   4 +
 include/unistd.h                              |   5 +
 include/wchar.h                               |  15 ++
 io/Makefile                                   |  16 ++
 libio/Makefile                                |  21 +-
 libio/bits/stdio2-decl.h                      |  49 +++++
 libio/bits/stdio2.h                           |  48 -----
 login/Makefile                                |   6 +
 login/getlogin_r_chk.c                        |   1 +
 manual/install.texi                           |   6 +
 misc/Makefile                                 |   9 +
 misc/bits/select-decl.h                       |  31 +++
 misc/bits/select2.h                           |   6 +-
 misc/bits/syslog-decl.h                       |  35 ++++
 misc/bits/syslog.h                            |  10 +-
 misc/sys/cdefs.h                              |   8 +
 misc/syslog.c                                 |   4 +-
 posix/Makefile                                |  12 ++
 posix/bits/unistd-decl.h                      | 198 ++++++++++++++++++
 posix/bits/unistd.h                           | 154 +-------------
 rt/Makefile                                   |   5 +
 scripts/build-many-glibcs.py                  |   4 +-
 setjmp/Makefile                               |   9 +
 socket/Makefile                               |   6 +
 stdio-common/Makefile                         |  15 +-
 stdlib/Makefile                               |   7 +
 string/Makefile                               |  17 ++
 sysdeps/i386/i586/memcpy.S                    |   1 +
 sysdeps/i386/i586/memset.S                    |   1 +
 sysdeps/i386/i686/memcpy.S                    |   1 +
 sysdeps/i386/i686/memmove.S                   |   1 +
 sysdeps/i386/i686/mempcpy.S                   |   1 +
 sysdeps/i386/i686/memset.S                    |   1 +
 sysdeps/i386/i686/multiarch/memcpy_chk.c      |   4 +
 sysdeps/i386/i686/multiarch/memmove_chk.c     |   4 +
 sysdeps/i386/i686/multiarch/mempcpy_chk.c     |   4 +
 sysdeps/i386/i686/multiarch/memset_chk.c      |   5 +-
 sysdeps/i386/memcpy_chk.S                     |   1 +
 sysdeps/i386/memmove_chk.S                    |   1 +
 sysdeps/i386/mempcpy_chk.S                    |   1 +
 sysdeps/i386/memset_chk.S                     |   1 +
 sysdeps/ieee754/ldbl-128ibm-compat/Makefile   |  81 +++++--
 .../ldbl-128ibm-compat/ieee128-asprintf_chk.c |   5 +-
 .../ldbl-128ibm-compat/ieee128-dprintf_chk.c  |   4 +-
 .../ldbl-128ibm-compat/ieee128-fprintf_chk.c  |   5 +-
 .../ldbl-128ibm-compat/ieee128-fwprintf_chk.c |   5 +-
 .../ldbl-128ibm-compat/ieee128-printf_chk.c   |   4 +-
 .../ldbl-128ibm-compat/ieee128-snprintf_chk.c |   4 +-
 .../ldbl-128ibm-compat/ieee128-sprintf_chk.c  |   5 +-
 .../ldbl-128ibm-compat/ieee128-swprintf_chk.c |   4 +-
 .../ldbl-128ibm-compat/ieee128-syslog.c       |   9 +-
 .../ieee128-vasprintf_chk.c                   |   4 +-
 .../ldbl-128ibm-compat/ieee128-vdprintf_chk.c |   4 +-
 .../ldbl-128ibm-compat/ieee128-vfprintf_chk.c |   4 +-
 .../ieee128-vfwprintf_chk.c                   |   4 +-
 .../ldbl-128ibm-compat/ieee128-vprintf_chk.c  |   4 +-
 .../ieee128-vsnprintf_chk.c                   |   4 +-
 .../ldbl-128ibm-compat/ieee128-vsprintf_chk.c |   5 +-
 .../ieee128-vswprintf_chk.c                   |   4 +-
 .../ldbl-128ibm-compat/ieee128-vwprintf_chk.c |   4 +-
 .../ldbl-128ibm-compat/ieee128-wprintf_chk.c  |   4 +-
 .../test-printf-ldbl-compat.c                 |  10 +-
 .../test-scanf-ldbl-compat-template.c         |  21 +-
 sysdeps/ieee754/ldbl-opt/Makefile             |  29 +++
 sysdeps/pthread/Makefile                      |   4 +
 sysdeps/unix/sysv/linux/Makefile              |   3 +
 sysdeps/x86_64/memcpy_chk.S                   |   1 +
 sysdeps/x86_64/memmove_chk.S                  |   1 +
 sysdeps/x86_64/mempcpy_chk.S                  |   1 +
 sysdeps/x86_64/memset_chk.S                   |   1 +
 sysdeps/x86_64/multiarch/memcpy_chk.c         |   4 +
 sysdeps/x86_64/multiarch/memmove_chk.c        |   4 +
 sysdeps/x86_64/multiarch/mempcpy_chk.c        |   4 +
 sysdeps/x86_64/multiarch/memset_chk.c         |   4 +
 sysdeps/x86_64/multiarch/wmemset_chk.c        |   4 +
 wcsmbs/Makefile                               |  23 +-
 wcsmbs/bits/wchar2-decl.h                     |   4 +-
 106 files changed, 948 insertions(+), 341 deletions(-)
 create mode 100644 include/bits/select-decl.h
 create mode 100644 include/bits/syslog-decl.h
 create mode 100644 include/bits/unistd-decl.h
 create mode 100644 misc/bits/select-decl.h
 create mode 100644 misc/bits/syslog-decl.h
 create mode 100644 posix/bits/unistd-decl.h

-- 
2.41.0


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

end of thread, other threads:[~2023-07-04 16:04 UTC | newest]

Thread overview: 48+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-28  8:42 [PATCH v3 00/16] Allow glibc to be built with _FORTIFY_SOURCE Frédéric Bérat
2023-06-28  8:42 ` [PATCH v3 01/16] " Frédéric Bérat
2023-06-28 14:48   ` Joseph Myers
2023-06-28  8:42 ` [PATCH v3 02/16] Exclude routines from fortification Frédéric Bérat
2023-06-30 14:55   ` Siddhesh Poyarekar
2023-07-03 15:16     ` Frederic Berat
2023-07-04 16:04       ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 03/16] sysdeps: Ensure ieee128*_chk routines to be properly named Frédéric Bérat
2023-06-30 14:58   ` Siddhesh Poyarekar
2023-06-30 15:55     ` Paul E Murphy
2023-06-30 15:57       ` Frederic Berat
2023-06-28  8:42 ` [PATCH v3 04/16] string: Ensure *_chk routines have their hidden builtin definition available Frédéric Bérat
2023-06-30 15:06   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 05/16] stdio: " Frédéric Bérat
2023-06-30 15:09   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 06/16] asprintf_chk: Ensure compatibility for both s390x and ppc64le Frédéric Bérat
2023-06-30 15:11   ` Siddhesh Poyarekar
2023-06-30 16:08     ` Rajalakshmi Srinivasaraghavan
2023-06-30 17:51   ` Paul E Murphy
2023-07-03  5:35     ` Frederic Berat
2023-06-28  8:42 ` [PATCH v3 07/16] misc/sys/cdefs.h: Create FORTIFY redirects for internal calls Frédéric Bérat
2023-06-30 15:13   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 08/16] wchar: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-06-30 15:17   ` Siddhesh Poyarekar
2023-06-30 15:26     ` Frederic Berat
2023-06-28  8:42 ` [PATCH v3 09/16] posix/bits/unistd.h: Clearly separate declaration from definitions Frédéric Bérat
2023-06-30 15:19   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 10/16] unistd: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-06-30 15:25   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 11/16] misc/bits/select2.h: Clearly separate declaration from definitions Frédéric Bérat
2023-06-30 15:26   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 12/16] misc/bits/syslog.h: Clearly separate declaration from definition Frédéric Bérat
2023-06-30 15:28   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 13/16] libio/bits/stdio2.h: Clearly separate declaration from definitions Frédéric Bérat
2023-06-30 15:29   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 14/16] libio/bits/stdio2-decl.h: Avoid PLT entries with _FORTIFY_SOURCE Frédéric Bérat
2023-06-30 15:30   ` Siddhesh Poyarekar
2023-06-30 15:38     ` Frederic Berat
2023-06-30 15:48       ` Siddhesh Poyarekar
2023-06-30 17:08         ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 15/16] sysdeps/ieee754/ldbl-128ibm-compat: Fix warn unused result Frédéric Bérat
2023-06-30 15:33   ` Siddhesh Poyarekar
2023-06-28  8:42 ` [PATCH v3 16/16] Add --enable-fortify-source option Frédéric Bérat
2023-06-30 13:51   ` Siddhesh Poyarekar
2023-07-03  8:50     ` Andreas Schwab
2023-07-03 12:51       ` Adhemerval Zanella Netto
2023-07-04 12:40         ` Frederic Berat
2023-07-04 15:59           ` Siddhesh Poyarekar

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