mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-27 23:08:31 +00:00
Get aarch64 hello world working
$ m=aarch64-tiny $ make -j8 m=$m o/$m/tool/hello/hello.com o/third_party/qemu/qemu-aarch64 $ o/third_party/qemu/qemu-aarch64 o/$m/tool/hello/hello.com hello world $ ls -hal o/$m/tool/hello/hello.com -rwxr-xr-x 1 jart jart 4.0K May 9 05:04 o/aarch64-tiny/tool/hello/hello.com
This commit is contained in:
parent
e5e3cdf447
commit
ae0ee59614
174 changed files with 1454 additions and 851 deletions
|
@ -16,6 +16,7 @@
|
|||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/runtime/internal.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#ifndef __x86_64__
|
||||
|
||||
|
@ -34,8 +35,15 @@ static inline long sys_set_tid_address(int *t) {
|
|||
}
|
||||
#endif
|
||||
|
||||
typedef int init_f(int argc, char **argv, char **envp, unsigned long *auxv);
|
||||
|
||||
extern init_f __strace_init;
|
||||
extern init_f *__init_array_start[] __attribute__((__weak__));
|
||||
extern init_f *__init_array_end[] __attribute__((__weak__));
|
||||
|
||||
void cosmo(long *sp) {
|
||||
int argc;
|
||||
init_f **fp;
|
||||
char **argv, **envp;
|
||||
unsigned long *auxv;
|
||||
argc = *sp;
|
||||
|
@ -47,12 +55,19 @@ void cosmo(long *sp) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
#ifdef SYSDEBUG
|
||||
argc = __strace_init(argc, argv, envp, auxv);
|
||||
#endif
|
||||
__argc = argc;
|
||||
__argv = argv;
|
||||
__envp = envp;
|
||||
__auxv = auxv;
|
||||
environ = envp;
|
||||
if (argc) program_invocation_name = argv[0];
|
||||
_init();
|
||||
for (fp = __init_array_start; fp < __init_array_end; ++fp) {
|
||||
(*fp)(argc, argv, envp, auxv);
|
||||
}
|
||||
exit(main(argc, argv, envp));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue