Commit Graph

13 Commits

Author SHA1 Message Date
Rich Felker 9abab94b21 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).
2012-06-25 16:06:09 -04:00
Rich Felker 2be87702b7 remove some junk from x86_64 start files
looks like nik copied these "extra arguments" from the i386 code.
they're not actually arguments there, just 1-byte instructions to
make sure the stack is aligned to 16 bytes after all the other
arguments are pushed. since each push is 8 bytes on x86_64, they
happened to have no effect here, but their presence is confusing and a
minor waste of space.
2012-05-02 21:16:02 -04:00
Rich Felker 94167cafd5 PIE support for x86_64 (untested) 2012-05-02 21:14:41 -04:00
Rich Felker faab12bece consistency cleanup: removed redundant size suffixed from i386 asm 2012-05-02 21:03:25 -04:00
Rich Felker 83023d1b50 PIE support for i386 2012-05-02 21:01:55 -04:00
Rich Felker c9dea48f84 remove attempts to be pie-compatible from i386 crt1.s
it does not work; after further consideration, a separate Scrt1.s for
pie really is essential. it would be nice if the unified approach
worked, but the linker fails to generate the correct PLT entries and
instead puts textrels in the main program, which don't work because
the kernel maps the text read-only.

new Scrt1.s will be committed soon in place of this.
2012-05-02 20:56:55 -04:00
Rich Felker 4ce3cb5cdd 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.
2012-02-06 14:39:09 -05:00
Rich Felker d960d4f2cb initial commit of the arm port
this port assumes eabi calling conventions, eabi linux syscall
convention, and presence of the kernel helpers at 0xffff0f?0 needed
for threads support. otherwise it makes very few assumptions, and the
code should work even on armv4 without thumb support, as well as on
systems with thumb interworking. the bits headers declare this a
little endian system, but as far as i can tell the code should work
equally well on big endian.

some small details are probably broken; so far, testing has been
limited to qemu/aboriginal linux.
2011-09-18 16:44:54 -04:00
Rich Felker 8cd48f0965 cleanup comment cruft in startup code 2011-02-21 22:27:35 -05:00
Rich Felker e2ee1bdd8d make startup code PIE-compatible 2011-02-21 22:26:31 -05:00
Rich Felker ba68efc921 shave off 2 bytes from crt1.o _start 2011-02-20 19:07:19 -05:00
Nicholas J. Kain 1e12632591 Port musl to x86-64. One giant commit! 2011-02-15 07:32:09 -05:00
Rich Felker 0b44a0315b initial check-in, version 0.5.0 2011-02-12 00:22:29 -05:00