#
354b60af |
| 27-Jan-2019 |
Augustin Cavalier <waddlesplash@gmail.com> |
runtime_loader: Rework static initialization handling.
Previously, static initializers were just in ".ctors", which was handled by GCC's crtbeginS, and that was injected in-between crti and crtn. No
runtime_loader: Rework static initialization handling.
Previously, static initializers were just in ".ctors", which was handled by GCC's crtbeginS, and that was injected in-between crti and crtn. Now, however, binutils puts static initializers into init_array/fini_array by default, which runtime_loader handles, but of course as initialize_after and terminate_after are supposed to be called *after* all static initializers are called; and since runtime_loader called init_array after _init, they were not.
Now, we get rid of the __haiku_init_before/etc. functions, and move their functionality inside runtime_loader. This is a "soft" ABI breakage, which is mitigated by adding another ABI breakage (runtime_loader now returns NULL for the initialize_before/etc. symbols, as otherwise old applications would have their initialize_before/etc. called twice; once by runtime_loader, and then once by __haiku_init_before/etc.)
I don't see or know of any reason why an application would want to get those symbols at runtime, though, so this shouldn't have any adverse effects.
Change-Id: I42344c63f69c6f8ef260f6c3ca30202b6dfb153e Reviewed-on: https://review.haiku-os.org/c/907 Reviewed-by: Jérôme Duval <jerome.duval@gmail.com> Reviewed-by: waddlesplash <waddlesplash@gmail.com>
show more ...
|
#
25dc253d |
| 22-Nov-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Merged weak-symbols branch. * Fixed trivial merge conflict in src/system/libroot/posix/locale/nl_langinfo.cpp * Fixed gcc 2 compilation of src/system/glue/init_term_dyn.c.
git-svn-id: file:///srv
* Merged weak-symbols branch. * Fixed trivial merge conflict in src/system/libroot/posix/locale/nl_langinfo.cpp * Fixed gcc 2 compilation of src/system/glue/init_term_dyn.c.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39571 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|
#
34a95562 |
| 06-Jan-2006 |
Stephan Aßmus <superstippi@gmx.de> |
Made our glue code compatible to BeOS again. IOW executables compiled for Haiku will now run under BeOS as well (as long as they don't use any functions that are not available under R5). The solution
Made our glue code compatible to BeOS again. IOW executables compiled for Haiku will now run under BeOS as well (as long as they don't use any functions that are not available under R5). The solution is a bit messy, but we have to live with it :-) The runtime loader now patches the __gRuntimeLoader symbol in libroot.so to point to its exported structure instead of passing it to the init functions as an argument. (Hax0red by axeld and bonefish on stippi's assimilated machine -- resistence is futile)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15848 a95241bf-73f2-0310-859d-f6bbb57e9c96
show more ...
|