History log of /seL4-refos-master/libs/libmuslc/crt/arm/crtn.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.


# 9f290a49 09-Nov-2015 Rich Felker <dalias@aerifal.cx>

remove non-working pre-armv4t support from arm asm

the idea of the three-instruction sequence being removed was to be
able to return to thumb code when used on armv4t+ from a thumb caller,
but also to be able to run on armv4 without the bx instruction
available (in which case the low bit of lr would always be 0).
however, without compiler support for generating such a sequence from
C code, which does not exist and which there is unlikely to be
interest in implementing, there is little point in having it in the
asm, and it would likely be easier to add pre-armv4t support via
enhanced linker handling of R_ARM_V4BX than at the compiler level.

removing this code simplifies adding support for building libc in
thumb2-only form (for cortex-m).


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