glibc/misc
Siddhesh Poyarekar c43c579612 Introduce _FORTIFY_SOURCE=3
Introduce a new _FORTIFY_SOURCE level of 3 to enable additional
fortifications that may have a noticeable performance impact, allowing
more fortification coverage at the cost of some performance.

With llvm 9.0 or later, this will replace the use of
__builtin_object_size with __builtin_dynamic_object_size.

__builtin_dynamic_object_size
-----------------------------

__builtin_dynamic_object_size is an LLVM builtin that is similar to
__builtin_object_size.  In addition to what __builtin_object_size
does, i.e. replace the builtin call with a constant object size,
__builtin_dynamic_object_size will replace the call site with an
expression that evaluates to the object size, thus expanding its
applicability.  In practice, __builtin_dynamic_object_size evaluates
these expressions through malloc/calloc calls that it can associate
with the object being evaluated.

A simple motivating example is below; -D_FORTIFY_SOURCE=2 would miss
this and emit memcpy, but -D_FORTIFY_SOURCE=3 with the help of
__builtin_dynamic_object_size is able to emit __memcpy_chk with the
allocation size expression passed into the function:

void *copy_obj (const void *src, size_t alloc, size_t copysize)
{
  void *obj = malloc (alloc);
  memcpy (obj, src, copysize);
  return obj;
}

Limitations
-----------

If the object was allocated elsewhere that the compiler cannot see, or
if it was allocated in the function with a function that the compiler
does not recognize as an allocator then __builtin_dynamic_object_size
also returns -1.

Further, the expression used to compute object size may be non-trivial
and may potentially incur a noticeable performance impact.  These
fortifications are hence enabled at a new _FORTIFY_SOURCE level to
allow developers to make a choice on the tradeoff according to their
environment.
2020-12-31 16:55:21 +05:30
..
bits Prepare redirections for IEEE long double on powerpc64le 2020-02-17 15:28:29 -06:00
sys Introduce _FORTIFY_SOURCE=3 2020-12-31 16:55:21 +05:30
acct.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
allocate_once.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ar.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
brk.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
bug18240.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
bug-hsearch1.c
chflags.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
chroot.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
daemon.c Remove internal usage of extensible stat functions 2020-09-11 14:35:32 -03:00
dirname.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
efgcvt_r-template.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
efgcvt_r.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
efgcvt-dbl-macros.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
efgcvt-ldbl-macros.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
efgcvt-template.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
efgcvt.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
err.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
err.h Rename __LONG_DOUBLE_USES_FLOAT128 to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 2020-04-30 08:52:08 -05:00
error.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
error.h Rename __LONG_DOUBLE_USES_FLOAT128 to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 2020-04-30 08:52:08 -05:00
fchflags.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
fd_to_filename.c <fd_to_filename.h>: Add type safety and port to Hurd 2020-02-18 13:42:29 +01:00
fdatasync.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
fgetxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
flistxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
fremovexattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
fsetxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
fstab.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
fstab.h
fsync.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ftruncate64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ftruncate.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
futimes.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
futimesat.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getauxval.c misc: Add internal __getauxval2 function 2020-10-27 16:34:37 +01:00
getclktck.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getdomain.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getdtsz.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
gethostid.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
gethostname.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getloadavg.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getpagesize.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getpass.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getsysstats.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
getttyent.c Fix -Os getc_unlocked linknamespace, localplt issues (bug 15105, bug 19463). 2018-02-21 18:01:11 +00:00
getusershell.c Remove internal usage of extensible stat functions 2020-09-11 14:35:32 -03:00
getxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
gtty.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
hsearch_r.c treewide: fix incorrect spelling of indices in comments 2020-12-11 02:00:00 +00:00
hsearch.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ifunc-impl-list.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
init-misc.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
insremque.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ioctl.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
lgetxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
libgen.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
listxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
llistxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
lremovexattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
lsearch.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
lsetxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
lutimes.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
madvise.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
makedev.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Makefile addmntent: Remove unbounded alloca usage from getmntent [BZ#27083] 2020-12-22 21:32:55 +05:30
mincore.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkdtemp.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkostemp64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkostemp.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkostemps64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkostemps.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkstemp64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkstemp.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkstemps64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mkstemps.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mktemp.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mlock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mlockall.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mmap64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mmap.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mntent_r.c misc: Use __ferror_unlocked instead of ferror 2020-12-23 07:03:42 +05:30
mntent.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mntent.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
mprotect.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
msync.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
munlock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
munlockall.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
munmap.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
preadv2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
preadv64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
preadv64v2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
preadv.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pselect.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ptrace.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pwritev2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pwritev64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pwritev64v2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pwritev.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
qefgcvt_r.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
qefgcvt.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
readv.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
reboot.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
regexp.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
regexp.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
remap_file_pages.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
removexattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
revoke.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sbrk.c Replace __libc_multiple_libcs with __libc_initial flag 2020-12-16 15:13:40 +01:00
search.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
select.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
setdomain.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
setegid.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
seteuid.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sethostid.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sethostname.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
setregid.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
setreuid.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
setxattr.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sgtty.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
single_threaded.c Add the __libc_single_threaded variable 2020-07-06 11:15:58 +02:00
sstk.c misc: Remove sstk from the autogenerated system call list 2020-04-28 17:13:25 +02:00
stab.h
stty.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
swapoff.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
swapon.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sync.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
syncfs.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
syscall.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
syscall.h
sysexits.h
syslog.c Correct locking and cancellation cleanup in syslog functions (bug 26100) 2020-08-18 11:27:03 +02:00
syslog.h
truncate64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
truncate.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tsearch.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-allocate_once.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-atomic-long.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-atomic.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-dbl-efgcvt.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-dirname.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-efgcvt-template.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-empty.c
tst-error1.c
tst-fd_to_filename.c <fd_to_filename.h>: Add type safety and port to Hurd 2020-02-18 13:42:29 +01:00
tst-fdset.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-gethostid.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-hsearch.c
tst-insremque.c
tst-ldbl-efgcvt.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-ldbl-error.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-ldbl-warn.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-makedev.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-mntent2.c
tst-mntent-autofs.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-mntent-blank-corrupt.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-mntent-blank-passno.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-mntent-escape.c addmntent: Remove unbounded alloca usage from getmntent [BZ#27083] 2020-12-22 21:32:55 +05:30
tst-mntent.c
tst-preadvwritev2-common.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-preadvwritev2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-preadvwritev64.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-preadvwritev64v2.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-preadvwritev-common.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-preadvwritev.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-pselect.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-syscalls.c Add a syscall test for [BZ #25810] 2020-04-22 09:48:10 -07:00
tst-tsearch.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
tst-warn-wide.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ttyent.h
ttyslot.c
ualarm.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
usleep.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ustat.c Remove tls.h inclusion from internal errno.h 2020-11-13 12:59:19 -03:00
utimes.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Versions Add the __libc_single_threaded variable 2020-07-06 11:15:58 +02:00
vhangup.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
writev.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00