diff options
author | Florian Weimer <fweimer@redhat.com> | 2020-05-18 14:56:26 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2020-05-18 15:39:34 +0200 |
commit | ce12fc711387375d0248ab3ff9084fb958c43bc6 (patch) | |
tree | 209238fe57d7638b79a7c112fe8c2192256e0324 /elf | |
parent | 7b5bfe77836442b9aeb75cc520f0d1eb7f82be67 (diff) | |
download | glibc-ce12fc711387375d0248ab3ff9084fb958c43bc6.zip glibc-ce12fc711387375d0248ab3ff9084fb958c43bc6.tar.gz glibc-ce12fc711387375d0248ab3ff9084fb958c43bc6.tar.bz2 |
Remove NO_CTORS_DTORS_SECTIONS macro
This was originally added to support binutils older than version
2.22:
<https://sourceware.org/ml/libc-alpha/2010-12/msg00051.html>
Since 2.22 is older than the minimum required binutils version
for building glibc, we no longer need this. (The changes do
not impact the statically linked startup code.)
Diffstat (limited to 'elf')
-rw-r--r-- | elf/Makefile | 2 | ||||
-rw-r--r-- | elf/sofini.c | 12 | ||||
-rw-r--r-- | elf/soinit.c | 43 |
3 files changed, 1 insertions, 56 deletions
diff --git a/elf/Makefile b/elf/Makefile index 77da61a..6fe1df9 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -98,7 +98,7 @@ ld-map = $(common-objpfx)ld.map endif ifeq (yes,$(build-shared)) -extra-objs = $(all-rtld-routines:%=%.os) soinit.os sofini.os interp.os +extra-objs = $(all-rtld-routines:%=%.os) sofini.os interp.os generated += librtld.os dl-allobjs.os ld.so ldd install-others = $(inst_rtlddir)/$(rtld-installed-name) install-bin-script = ldd diff --git a/elf/sofini.c b/elf/sofini.c index 13e74b7..1c526fd 100644 --- a/elf/sofini.c +++ b/elf/sofini.c @@ -1,15 +1,3 @@ -/* Finalizer module for ELF shared C library. This provides terminating - null pointer words in the `.ctors' and `.dtors' sections. */ - -#ifndef NO_CTORS_DTORS_SECTIONS -static void (*const __CTOR_END__[1]) (void) - __attribute__ ((used, section (".ctors"))) - = { 0 }; -static void (*const __DTOR_END__[1]) (void) - __attribute__ ((used, section (".dtors"))) - = { 0 }; -#endif - /* Terminate the frame unwind info section with a 4byte 0 as a sentinel; this would be the 'length' field in a real FDE. */ diff --git a/elf/soinit.c b/elf/soinit.c deleted file mode 100644 index 538eb68..0000000 --- a/elf/soinit.c +++ /dev/null @@ -1,43 +0,0 @@ -/* Initializer module for building the ELF shared C library. This file and - sofini.c do the work normally done by crtbeginS.o and crtendS.o, to wrap - the `.ctors' and `.dtors' sections so the lists are terminated, and - calling those lists of functions. */ - -#ifndef NO_CTORS_DTORS_SECTIONS -# include <stdlib.h> - -static void (*const __CTOR_LIST__[1]) (void) - __attribute__ ((used, section (".ctors"))) - = { (void (*) (void)) -1 }; -static void (*const __DTOR_LIST__[1]) (void) - __attribute__ ((used, section (".dtors"))) - = { (void (*) (void)) -1 }; - -static inline void -run_hooks (void (*const list[]) (void)) -{ - while (*++list) - (**list) (); -} - -/* This function will be called from _init_first in init-first.c. */ -void -__libc_global_ctors (void) -{ - /* Call constructor functions. */ - run_hooks (__CTOR_LIST__); -} - - -/* This function becomes the DT_FINI termination function - for the C library. */ -void -__libc_fini (void) -{ - /* Call destructor functions. */ - run_hooks (__DTOR_LIST__); -} - -void (*_fini_ptr) (void) __attribute__ ((section (".fini_array"))) - = &__libc_fini; -#endif |