CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]        2019/06/01 19:03:01

Modified files:
        lib/libc       : Makefile 
        lib/libc/dlfcn : dlfcn_stubs.c init.c 
        lib/libc/hidden: tib.h 
        lib/libc/include: namespace.h 
        lib/libc/stdlib: thread_atexit.c 
Added files:
        lib/libc/hidden: dlfcn.h link_elf.h 

Log message:
Complete the ld.so boot cleanup: move most libc initialization from
_csu_finish() to _libc_preinit(), which is an .init_array function
in shared libc (and mark it INITFIRST) or a .preinit_array function
in static libc, grabbing the _dl_cb callback there from ld.so.  Then
in _csu_finish(), invoke the dl_clean_boot() callback to free ld.so's
startup bits before main() gets control.

Other cleanups this permits:
- move various startup structures into .data.rel.ro
- the dl* stubs in libc can be strong and call the callbacks provided
via _dl_cb
- no longer need to conditionalize dlctl() calls on presence of _DYNAMIC

original concept and full diff ok kettenis@
ok deraadt@

Reply via email to