From f4349837d93b4dfe9ba09791e280ee2d6c99919f Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Tue, 18 Feb 2020 14:42:41 +0100 Subject: Introduce and ELF_INITFINI for all architectures This supersedes the init_array sysdeps directory. It allows us to check for ELF_INITFINI in both C and assembler code, and skip DT_INIT and DT_FINI processing completely on newer architectures. A new header file is needed because is incompatible with assembler code. is compatible with assembler code, but it cannot be included in all assembler files because on some architectures, it redefines register names, and some assembler files conflict with that. is replicated for legacy architectures which need DT_INIT/DT_FINI support. New architectures follow the generic default and disable it. --- sysdeps/init_array/crti.S | 27 --------------------------- 1 file changed, 27 deletions(-) delete mode 100644 sysdeps/init_array/crti.S (limited to 'sysdeps/init_array/crti.S') diff --git a/sysdeps/init_array/crti.S b/sysdeps/init_array/crti.S deleted file mode 100644 index 145c918f93..0000000000 --- a/sysdeps/init_array/crti.S +++ /dev/null @@ -1,27 +0,0 @@ -/* Dummy crti file. - - In this configuration, crti.o and crtn.o are both empty because the - .init_array/.fini_array sections are used exclusively. - - Older ports cannot use this because even if the linker used to - build libc itself has .init_array support, we don't want to produce - a crt[in].o that presume a linker that new will be used to link - other things later. - - But new configurations without compatibility concerns for - toolchains without .init_array support can use this to avoid the - superfluous .init and .fini boilerplate code. */ - -#ifdef PREINIT_FUNCTION - -#if PREINIT_FUNCTION_WEAK -# error PREINIT_FUNCTION_WEAK is unsupported -#endif - -/* This arranges for PREINIT_FUNCTION to be called upon loading a library that - contains crti.o. */ - - .section .init_array,"a",%init_array - .dc.a PREINIT_FUNCTION - -#endif -- cgit 1.4.1