summaryrefslogtreecommitdiff
path: root/crt/arm/crti.s
AgeCommit message (Collapse)AuthorFilesLines
2013-08-15add function types to arm crt assemblyRich Felker1-0/+2
without these, calls may be resolved incorrectly if the calling code has been compiled to thumb instead of arm. it's not clear to me at this point whether crt_arch.h is even working if crt1.c is built as thumb; this needs testing. but the _init and _fini issues were known to cause crashes in static-linked apps when libc was built as thumb, and this commit should fix that issue.
2013-07-21remove init/fini array asm from arm crti/crtn filesRich Felker1-22/+2
this code has been replaced by portable C code that works on all archs. the old asm needs to be removed or ctors/dtors will run twice.
2013-02-03fix regression that made shared libs crash on armRich Felker1-0/+2
2012-12-07add support for ctors/dtors on arm with modern gccRich Felker1-2/+20
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.
2012-06-25fix arm crti/crtn codeRich Felker1-0/+2
lr must be saved because init/fini-section code from the compiler clobbers it. this was not a problem when i tested without gcc's crtbegin/crtend files present, but with them, musl on arm fails to work (infinite loop in _init).
2012-02-06add support for init/finit (constructors and destructors)Rich Felker1-0/+7
this is mainly in hopes of supporting c++ (not yet possible for other reasons) but will also help applications/libraries which use (and more often, abuse) the gcc __attribute__((__constructor__)) feature in "C" code. x86_64 and arm versions of the new startup asm are untested and may have minor problems.