glibc/include
Fangrui Song cd6ae7ea54 Set the retain attribute on _elf_set_element if CC supports [BZ #27492]
So that text_set_element/data_set_element/bss_set_element defined
variables will be retained by the linker.

Note: 'used' and 'retain' are orthogonal: 'used' makes sure the variable
will not be optimized out; 'retain' prevents section garbage collection
if the linker support SHF_GNU_RETAIN.

GNU ld 2.37 and LLD 13 will support -z start-stop-gc which allow C
identifier name sections to be GCed even if there are live
__start_/__stop_ references.

Without the change, there are some static linking problems, e.g.
_IO_cleanup (libio/genops.c) may be discarded by ld --gc-sections, so
stdout is not flushed on exit.

Note: GCC may warning 'retain' attribute ignored while __has_attribute(retain)
is 1 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99587).

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
2021-04-16 11:26:39 -07:00
..
arpa CVE-2016-10739: getaddrinfo: Fully parse IPv4 address strings [BZ #20018] 2019-01-21 21:26:03 +01:00
bits sysconf: Add _SC_MINSIGSTKSZ/_SC_SIGSTKSZ [BZ #20305] 2021-02-01 11:00:52 -08:00
gnu Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
net
netinet nss_files: Consolidate line parse declarations in <nss_files.h> 2020-07-21 07:33:20 +02:00
programs Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
protocols
rpc Handle out-of-memory case in svc_tcp.c/svc_unix.c:rendezvous_request. 2020-12-10 11:11:20 +01:00
rpcsvc Remove --enable-obsolete-nsl configure flag 2020-07-08 17:25:57 +02:00
sys linux: Consolidate statvfs implementations 2021-02-11 08:00:41 -03:00
aio.h y2038: Convert aio_suspend to support 64 bit time 2020-11-30 14:08:44 +01:00
aliases.h Remove --enable-obsolete-nsl configure flag 2020-07-08 17:25:57 +02:00
alloc_buffer.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
alloca.h Remove macros extend_alloca, extend_alloca_account [BZ #18023] 2018-06-27 19:20:37 +02:00
allocate_once.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
ar.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
argp-fmtstream.h Mark internal argp functions with attribute_hidden [BZ #18822] 2017-10-01 15:10:27 -07:00
argp.h ldbl-opt: Add argp_error and argp_failure (bug 23983) 2019-03-01 15:21:32 -03:00
argz.h Use libc_hidden_* for argz_next, __argz_next (bug 15105). 2018-02-15 21:00:02 +00:00
array_length.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
assert.h Introduce NO_RTLD_HIDDEN, make hurd use it instead of NO_HIDDEN 2017-10-03 01:33:38 +02:00
atomic.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
byteswap.h
complex.h float128: Add private _Float128 declarations for libm. 2017-05-15 10:23:28 -03:00
cpio.h
crypt.h Add include/crypt.h. 2016-10-28 22:40:16 -04:00
ctype.h Use libc_hidden_* for tolower, toupper (bug 15105). 2018-02-23 13:54:53 +00:00
des.h
dirent.h hurd: keep only required PLTs in ld.so 2020-11-11 02:36:22 +01:00
dlfcn.h Remove --enable-obsolete-nsl configure flag 2020-07-08 17:25:57 +02:00
dso_handle.h Mark __dso_handle as hidden [BZ #18822] 2017-09-26 16:53:44 -07:00
elf.h elf: Refuse to dlopen PIE objects [BZ #24323] 2019-06-18 16:42:10 +02:00
endian.h
envz.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
err.h ldbl-128ibm-compat: PLT redirects for using ldbl redirects internally 2020-03-25 14:34:23 -05:00
errno.h Remove tls.h inclusion from internal errno.h 2020-11-13 12:59:19 -03:00
error.h ldbl-opt: Add error and error_at_line (bug 23984) 2019-03-01 15:26:36 -03:00
execinfo.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
fcntl.h Fix Linux fcntl OFD locks for non-LFS architectures (BZ#20251) 2018-06-26 13:22:53 -03:00
features.h sysconf: Add _SC_MINSIGSTKSZ/_SC_SIGSTKSZ [BZ #20305] 2021-02-01 11:00:52 -08:00
fenv.h Move fenv.h soft-float inlines from fenv_private.h to include/fenv.h. 2018-09-04 19:52:06 +00:00
file_change_detection.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
filename.h Import filename.h from gnulib 2021-01-05 11:33:16 -03:00
float.h Make totalorder and totalordermag functions take pointer arguments. 2019-08-15 15:18:34 +00:00
fmtmsg.h
fnmatch.h
fpu_control.h Hide internal __setfpucw function [BZ #18822] 2017-10-01 17:52:15 -07:00
fstab.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
fts.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
ftw.h
gconv.h
getopt_int.h
getopt.h getopt: remove USE_NONOPTION_FLAGS 2017-04-07 07:45:53 -04:00
glob.h Hide internal __glob64 function [BZ #18822] 2017-10-01 18:02:10 -07:00
gmp.h Mark internal gmp functions with attribute_hidden [BZ #18822] 2017-10-01 15:15:30 -07:00
gnu-versions.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
grp-merge.h NSS: Implement group merging support. 2016-04-29 22:18:21 -04:00
grp.h nss_files: Consolidate line parse declarations in <nss_files.h> 2020-07-21 07:33:20 +02:00
gshadow.h nss_files: Consolidate line parse declarations in <nss_files.h> 2020-07-21 07:33:20 +02:00
iconv.h
idx.h Import idx.h from gnulib 2021-01-05 11:33:16 -03:00
ifaddrs.h hurd: Fix getifaddrs' and freeifaddrs' symbol exposition 2017-09-28 01:05:18 +02:00
ifreq.h Hide internal __ifreq function [BZ #18822] 2017-10-01 17:35:46 -07:00
ifunc-impl-list.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
inline-hashtab.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
intprops.h Sync intprops.h with gnulib 2021-01-04 08:42:04 -03:00
inttypes.h Make strtoimax, strtoumax, wcstoimax, wcstoumax into aliases 2020-12-08 18:15:27 +00:00
langinfo.h
lastlog.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
libc-diag.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
libc-internal.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
libc-pointer-arith.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
libc-symbols.h Set the retain attribute on _elf_set_element if CC supports [BZ #27492] 2021-04-16 11:26:39 -07:00
libgen.h
libintl.h Document the internal _ and N_ macros 2020-05-06 17:35:40 +02:00
limits.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
link.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
list_t.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
list.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
locale.h
loop_unroll.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
malloc.h malloc: Move MTAG_MMAP_FLAGS definition 2021-03-26 11:03:06 +00:00
math-narrow-eval.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
math.h float128: use builtin_signbitf128 always 2020-05-04 13:18:45 -05:00
mcheck.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
memory.h
mntent.h Hide internal __hasmntopt function [BZ #18822] 2017-10-01 17:37:42 -07:00
monetary.h Rename __LONG_DOUBLE_USES_FLOAT128 to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 2020-04-30 08:52:08 -05:00
mqueue.h y2038: linux: Provide __mq_timedreceive_time64 implementation 2020-04-06 23:05:11 +02:00
netdb.h y2038: Convert gai_suspend to support 64 bit time 2020-12-04 10:04:38 +01:00
netgroup.h
nl_types.h
nss_files.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
nss.h nss: Export nscd hash function as __nss_hash [BZ #22459] 2017-11-23 14:08:11 +01:00
nsswitch.h
obstack.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
plural-exp.h Hide internal __gettextparse function [BZ #18822] 2017-10-01 17:31:05 -07:00
poll.h
printf.h Rename __LONG_DOUBLE_USES_FLOAT128 to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 2020-04-30 08:52:08 -05:00
pthread.h
pty.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
pwd.h nss_files: Consolidate line parse declarations in <nss_files.h> 2020-07-21 07:33:20 +02:00
random-bits.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
re_comp.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
regex.h Hide internal regex functions [BZ #18822] 2017-10-01 15:53:15 -07:00
regexp.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
register-atfork.h posix: Consolidate register-atfork 2021-03-12 10:19:22 -03:00
resolv.h Obsolete p_secstodate. 2017-11-22 22:21:10 +00:00
rounding-mode.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
rtld-malloc.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
sched.h Add hidden prototypes for __sched_getparam, __sched_getscheduler 2020-02-20 08:57:01 +01:00
scratch_buffer.h malloc: Add scratch_buffer_dupfree 2021-01-05 11:33:16 -03:00
search.h misc: Add twalk_r function 2019-05-02 11:42:51 +02:00
set-hooks.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
setjmp.h hurd: keep only required PLTs in ld.so 2020-11-11 02:36:22 +01:00
sgtty.h
shadow.h nss_files: Consolidate line parse declarations in <nss_files.h> 2020-07-21 07:33:20 +02:00
shlib-compat.h Add OTHER_SHLIB_COMPAT 2021-03-26 13:36:16 -03:00
shm-directory.h linux: Require /dev/shm as the shared memory file system 2021-02-08 14:10:42 -03:00
signal.h hurd: keep only required PLTs in ld.so 2020-11-11 02:36:22 +01:00
spawn.h posix: Use posix_spawn for wordexp 2019-10-09 17:48:41 -03:00
stab.h
stackinfo.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
stap-probe.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
stdc-predef.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
stdint.h Move inttypes.h and stdint.h to stdlib. 2019-03-13 09:42:09 -04:00
stdio_ext.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
stdio.h libio: Remove __libc_readline_unlocked 2020-07-21 07:34:50 +02:00
stdlib.h hurd: keep only required PLTs in ld.so 2020-11-11 02:36:22 +01:00
string.h string: Enable __FORTIFY_LEVEL=3 2020-12-31 16:55:21 +05:30
strings.h
struct___timeb64.h time: Add 64-bit time_t support for ftime 2020-10-27 09:54:50 -03:00
struct___timespec64.h y2038: include: Move struct __timespec64 definition to a separate file 2020-04-06 23:05:11 +02:00
struct___timeval64.h y2038: include: Move struct __timeval64 definition to a separate file 2020-05-05 19:36:25 +02:00
stubs-prologue.h
syscall.h
sysexits.h
syslog.h
tar.h
termios.h Hide internal __tcgetattr function [BZ #18822] 2017-10-01 17:48:24 -07:00
tgmath.h
time.h linux: Normalize and return timeout on select (BZ #27651) 2021-04-12 18:38:37 -03:00
ttyent.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
uchar.h
ucontext.h
ulimit.h
unistd.h nptl: Remove pwrite from libpthread 2021-03-26 13:37:18 -03:00
utime.h
utmp.h Mark internal utmp functions with attribute_hidden [BZ #18822] 2017-10-01 15:51:56 -07:00
values.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
verify.h posix: Sync regex with gnulib 2019-11-06 09:20:52 -03:00
wait.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
wchar.h Rename __LONG_DOUBLE_USES_FLOAT128 to __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 2020-04-30 08:52:08 -05:00
wctype.h Remove __need macros from stdio.h and wchar.h. 2017-06-08 13:58:17 -04:00
wordexp.h