aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2020-05-18 14:56:26 +0200
committerFlorian Weimer <fweimer@redhat.com>2020-05-18 15:39:34 +0200
commitce12fc711387375d0248ab3ff9084fb958c43bc6 (patch)
tree209238fe57d7638b79a7c112fe8c2192256e0324 /elf
parent7b5bfe77836442b9aeb75cc520f0d1eb7f82be67 (diff)
downloadglibc-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/Makefile2
-rw-r--r--elf/sofini.c12
-rw-r--r--elf/soinit.c43
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