History log of /seL4-camkes-master/projects/musllibc/crt/arm/crti.s
Revision Date Author Comments
# 4e73d121 09-Nov-2015 Rich Felker <dalias@aerifal.cx>

explicitly assemble all arm asm sources as UAL

these files are all accepted as legacy arm syntax when producing arm
code, but legacy syntax cannot be used for producing thumb2 with
access to the full ISA. even after switching to UAL, some asm source
files contain instructions which are not valid in thumb mode, so these
will need to be addressed separately.


# badaa04a 15-Aug-2013 Rich Felker <dalias@aerifal.cx>

add function types to arm crt assembly

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.


# 976c0fdc 21-Jul-2013 Rich Felker <dalias@aerifal.cx>

remove init/fini array asm from arm crti/crtn files

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.


# d432b2c0 02-Feb-2013 Rich Felker <dalias@aerifal.cx>

fix regression that made shared libs crash on arm


# 34aa169d 07-Dec-2012 Rich Felker <dalias@aerifal.cx>

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.


# 9abab94b 25-Jun-2012 Rich Felker <dalias@aerifal.cx>

fix arm crti/crtn code

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).


# 4ce3cb5c 06-Feb-2012 Rich Felker <dalias@aerifal.cx>

add support for init/finit (constructors and destructors)

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.