glibc/misc
Adhemerval Zanella 7a7093615c cdefs.h: Add clang fortify directives
For instance, the read wrapper is currently expanded as:

  extern __inline
  __attribute__((__always_inline__))
  __attribute__((__artificial__))
  __attribute__((__warn_unused_result__))
  ssize_t read (int __fd, void *__buf, size_t __nbytes)
  {
     return __glibc_safe_or_unknown_len (__nbytes,
                                         sizeof (char),
                                         __glibc_objsize0 (__buf))
            ? __read_alias (__fd, __buf, __nbytes)
            : __glibc_unsafe_len (__nbytes,
                                  sizeof (char),
                                  __glibc_objsize0 (__buf))
              ? __read_chk_warn (__fd,
                                 __buf,
                                 __nbytes,
                                 __builtin_object_size (__buf, 0))
              : __read_chk (__fd,
                            __buf,
                            __nbytes,
                            __builtin_object_size (__buf, 0));
  }

The wrapper relies on __builtin_object_size call lowers to a constant at
compile-time and many other operations in the wrapper depends on
having a single, known value for parameters.   Because this is
impossible to have for function parameters, the wrapper depends heavily
on inlining to work and While this is an entirely viable approach on
GCC, it is not fully reliable on clang.  This is because by the time llvm
gets to inlining and optimizing, there is a minimal reliable source and
type-level information available (more information on a more deep
explanation on how to fortify wrapper works on clang [1]).

To allow the wrapper to work reliably and with the same functionality as
with GCC, clang requires a different approach:

  * __attribute__((diagnose_if(c, “str”, “warning”))) which is a function
    level attribute; if the compiler can determine that 'c' is true at
    compile-time, it will emit a warning with the text 'str1'.  If it would
    be better to emit an error, the wrapper can use "error" instead of
    "warning".

  * __attribute__((overloadable)) which is also a function-level attribute;
    and it allows C++-style overloading to occur on C functions.

  * __attribute__((pass_object_size(n))) which is a parameter-level
    attribute; and it makes the compiler evaluate
    __builtin_object_size(param, n) at each call site of the function
    that has the parameter, and passes it in as a hidden parameter.

    This attribute has two side-effects that are key to how FORTIFY works:

    1. It can overload solely on pass_object_size (e.g. there are two
       overloads of foo in

         void foo(char * __attribute__((pass_object_size(0))) c);
         void foo(char *);

      (The one with pass_object_size attribute has precende over the
      default one).

    2. A function with at least one pass_object_size parameter can never
       have its address taken (and overload resolution respects this).

Thus the read wrapper can be implemented as follows, without
hindering any fortify coverage compile and runtime:

  extern __inline
  __attribute__((__always_inline__))
  __attribute__((__artificial__))
  __attribute__((__overloadable__))
  __attribute__((__warn_unused_result__))
  ssize_t read (int __fd,
                 void *const __attribute__((pass_object_size (0))) __buf,
                 size_t __nbytes)
     __attribute__((__diagnose_if__ ((((__builtin_object_size (__buf, 0)) != -1ULL
                                        && (__nbytes) > (__builtin_object_size (__buf, 0)) / (1))),
                                     "read called with bigger length than size of the destination buffer",
                                     "warning")))
  {
    return (__builtin_object_size (__buf, 0) == (size_t) -1)
      ? __read_alias (__fd,
                      __buf,
                      __nbytes)
      : __read_chk (__fd,
                    __buf,
                    __nbytes,
                    __builtin_object_size (__buf, 0));
  }

To avoid changing the current semantic for GCC, a set of macros is
defined to enable the clang required attributes, along with some changes
on internal macros to avoid the need to issue the symbol_chk symbols
(which are done through the __diagnose_if__ attribute for clang).
The read wrapper is simplified as:

  __fortify_function __attribute_overloadable__ __wur
  ssize_t read (int __fd,
                __fortify_clang_overload_arg0 (void *, ,__buf),
                size_t __nbytes)
       __fortify_clang_warning_only_if_bos0_lt (__nbytes, __buf,
                                                "read called with bigger length than "
                                                "size of the destination buffer")

  {
    return __glibc_fortify (read, __nbytes, sizeof (char),
                            __glibc_objsize0 (__buf),
                            __fd, __buf, __nbytes);
  }

There is no expected semantic or code change when using GCC.

Also, clang does not support __va_arg_pack, so variadic functions are
expanded to call va_arg implementations.  The error function must not
have bodies (address takes are expanded to nonfortified calls), and
with the __fortify_function compiler might still create a body with the
C++ mangling name (due to the overload attribute).  In this case, the
function is defined with __fortify_function_error_function macro
instead.

[1] https://docs.google.com/document/d/1DFfZDICTbL7RqS74wJVIJ-YnjQOj1SaoqfhbgddFYSM/edit

Checked on aarch64, armhf, x86_64, and i686.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
2024-02-27 10:52:57 -03:00
..
bits Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sys cdefs.h: Add clang fortify directives 2024-02-27 10:52:57 -03:00
tst-syslog-long-progname.root syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6246) 2024-01-30 15:53:37 +01:00
acct.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
allocate_once.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ar.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
atomic_wide_counter.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
brk.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
bug18240.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
bug-hsearch1.c .. 2009-01-23 20:41:36 +00:00
chflags.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
chroot.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
daemon.c misc: Convert daemon () to GNU coding style 2023-04-22 13:47:38 +02:00
dirname.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
efgcvt_r-template.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
efgcvt_r.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
efgcvt-dbl-macros.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
efgcvt-ldbl-macros.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
efgcvt-template.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
efgcvt.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
err.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
err.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
error.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
error.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fchflags.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fd_to_filename.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fdatasync.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fgetxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
flistxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fremovexattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fsetxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fstab.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
fstab.h Remove pre-ISO C support 2012-01-07 23:57:22 -05:00
fsync.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ftruncate64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ftruncate.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
futimes.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
futimesat.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getauxval.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getclktck.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getdomain.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getdtsz.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
gethostid.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
gethostname.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getloadavg.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getpagesize.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getpass.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getsysstats.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
getttyent.c Fix -Os getc_unlocked linknamespace, localplt issues (bug 15105, bug 19463). 2018-02-21 18:01:11 +00:00
getusershell.c misc: Use 64 bit stat for getusershell (BZ# 29203) 2022-06-01 13:23:16 -03:00
getxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
gtty.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
hsearch_r.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
hsearch.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ifunc-impl-list.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
init-misc.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
insremque.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ioctl.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
lgetxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
libgen.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
listxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
llistxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
lremovexattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
lsearch.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
lsetxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
lutimes.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
madvise.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
makedev.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
Makefile syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6246) 2024-01-30 15:53:37 +01:00
mincore.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkdtemp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkostemp64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkostemp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkostemps64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkostemps.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkstemp64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkstemp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkstemps64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mkstemps.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mktemp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mlock.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mlockall.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mmap64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mmap.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mntent_r.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mntent.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mntent.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
mprotect.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
msync.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
munlock.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
munlockall.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
munmap.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
preadv2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
preadv64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
preadv64v2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
preadv.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
pselect.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ptrace.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
pwritev2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
pwritev64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
pwritev64v2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
pwritev.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
qefgcvt_r.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
qefgcvt.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
readv.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
reboot.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
regexp.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
regexp.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
remap_file_pages.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
removexattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
revoke.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sbrk.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
search.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
select.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
setdomain.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
setegid.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
seteuid.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sethostid.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sethostname.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
setregid.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
setreuid.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
setxattr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sgtty.h Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
single_threaded.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sstk.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
stab.h Update. 1997-06-21 02:59:26 +00:00
stty.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
swapoff.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
swapon.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
sync.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
syncfs.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
syscall.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
syscall.h update from main archive 960107 1997-01-07 23:29:44 +00:00
sysexits.h Update. 1999-06-09 13:08:30 +00:00
syslog.c syslog: Fix integer overflow in __vsyslog_internal (CVE-2023-6780) 2024-01-30 15:53:37 +01:00
syslog.h initial import 1995-02-18 01:27:10 +00:00
truncate64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
truncate.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tsearch.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-allocate_once.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-atomic-long.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-atomic.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-dbl-efgcvt.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-dirname.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-efgcvt-template.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-empty.c Move all tests out of the csu subdirectory 2016-12-21 11:52:19 +01:00
tst-error1.c tests: Replace various function calls with their x variant 2023-06-06 08:23:53 -04:00
tst-fd_to_filename.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-fdset.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-gethostid.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-hsearch.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-insremque.c [BZ #2766] 2006-06-17 17:01:42 +00:00
tst-ioctl-time64.c misc: Add time64 alias for ioctl 2021-07-21 11:58:09 +02:00
tst-ioctl.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ldbl-efgcvt.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ldbl-error.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ldbl-errorfptr.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-ldbl-warn.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-makedev.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-mntent2.c Fix warning in misc/tst-mntent2.c. 2014-12-16 10:27:16 +01:00
tst-mntent-autofs.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-mntent-blank-corrupt.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-mntent-blank-passno.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-mntent-escape.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-mntent.c Remove "Contributed by" lines 2021-09-03 22:06:44 +05:30
tst-preadvwritev2-common.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-preadvwritev2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-preadvwritev64.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-preadvwritev64v2.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-preadvwritev-common.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-preadvwritev.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-pselect-time64.c y2038: Add test coverage 2021-06-15 10:42:11 -03:00
tst-pselect.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-select-time64.c y2038: Add test coverage 2021-06-15 10:42:11 -03:00
tst-select.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-syscalls.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-syslog-long-progname.c syslog: Fix heap buffer overflow in __vsyslog_internal (CVE-2023-6246) 2024-01-30 15:53:37 +01:00
tst-syslog.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-tsearch.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
tst-warn-wide.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ttyent.h Remove pre-ISO C support 2012-01-07 23:57:22 -05:00
ttyslot.c As a minor cleanup remove the (r)index defines from include/string.h as 2017-02-06 18:15:18 +00:00
ualarm.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
unwind-link.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
usleep.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
ustat.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
utimes.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
Versions Implement <unwind-link.h> for dynamically loading the libgcc_s unwinder 2021-03-01 15:58:01 +01:00
vhangup.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00
writev.c Update copyright dates with scripts/update-copyrights 2024-01-01 10:53:40 -08:00