add support for ctors/dtors on arm with modern gcc
authorRich Felker <dalias@aerifal.cx>
Sat, 8 Dec 2012 04:04:49 +0000 (23:04 -0500)
committerRich Felker <dalias@aerifal.cx>
Sat, 8 Dec 2012 04:04:49 +0000 (23:04 -0500)
commit34aa169dcfa0a2945504fb696dee29bdf989c125
tree2e6bf0dcd539583cd361bdcdd74e6f2a7d098258
parentb8ccf8e46bab6ee9d63a6e392c3b33b9aa89255c
add support for ctors/dtors on arm with modern gcc

a while back, gcc switched from using the old _init/_fini fragments
method for calling ctors and dtors on arm to the __init_array and
__fini_array method. unfortunately, on glibc this depends on ugly
hacks involving making libc.so a linker script and pulling parts of
libc into the main program binary. so I cheat a little bit, and just
write asm to iterate over the init/fini arrays from the _init/_fini
asm. the same approach could be used on any arch it's needed on, but
for now arm is the only one.
crt/arm/crti.s
crt/arm/crtn.s