From ec00f1d495e87b70d2a81f2224c1c1e1bd2ec5f4 Mon Sep 17 00:00:00 2001 From: marco Date: Wed, 17 Sep 2008 21:03:44 +0000 Subject: [PATCH] * initial version git-svn-id: trunk@11799 - --- rtl/freebsd/x86_64/cprt0.as | 154 +++++++++++++++++++++--------------- 1 file changed, 90 insertions(+), 64 deletions(-) diff --git a/rtl/freebsd/x86_64/cprt0.as b/rtl/freebsd/x86_64/cprt0.as index 4d6dfd2c7a..1b8defdcba 100644 --- a/rtl/freebsd/x86_64/cprt0.as +++ b/rtl/freebsd/x86_64/cprt0.as @@ -1,9 +1,9 @@ .file "crt1.c" #APP - .ident "$FreeBSD: src/lib/csu/common/crtbrand.c,v 1.4 2003/10/17 15:43:13 peter Exp $" + .ident "$FreeBSD: src/lib/csu/common/crtbrand.c,v 1.4.20.1 2007/12/06 13:43:43 kib Exp $" #NO_APP .section .note.ABI-tag,"a",@progbits - .p2align 2 + .align 4 .type abitag, @object .size abitag, 24 abitag: @@ -11,97 +11,120 @@ abitag: .long 4 .long 1 .string "FreeBSD" - .long 502110 + .long 700055 +.globl __progname .section .rodata .LC0: .string "" -.globl __progname .data - .p2align 3 + .align 8 .type __progname, @object .size __progname, 8 __progname: .quad .LC0 .text - .p2align 2,,3 + .p2align 4,,15 .globl _start .type _start, @function _start: -.LFB9: +.LFB5: pushq %rbp .LCFI0: movq %rsp, %rbp .LCFI1: subq $48, %rsp .LCFI2: - movq %rdi, -8(%rbp) - movq %rsi, -16(%rbp) - movq -8(%rbp), %rax - movl (%rax), %eax - movl %eax, -20(%rbp) + movq %rdi, -40(%rbp) + movq %rsi, -48(%rbp) + movq -40(%rbp), %rax + movq (%rax), %rax + movl %eax, -28(%rbp) movl %eax, operatingsystem_parameter_argc - movq -8(%rbp), %rax + movq -40(%rbp), %rax addq $8, %rax - movq %rax, -32(%rbp) - movq %rax, operatingsystem_parameter_argv - movl -20(%rbp), %eax + movq %rax, -24(%rbp) + movq %rax, operatingsystem_parameter_argv + movq -40(%rbp), %rdx + addq $16, %rdx + movl -28(%rbp), %eax cltq salq $3, %rax - addq -8(%rbp), %rax - addq $16, %rax - movq %rax, -40(%rbp) - movq %rax, operatingsystem_parameter_envp - movq -40(%rbp), %rax + leaq (%rdx,%rax), %rax + movq %rax, -16(%rbp) + movq -16(%rbp), %rax + movq %rax, operatingsystem_parameter_envp movq %rax, environ(%rip) - movq %rax,environ - cmpl $0, -20(%rbp) - jle .L5 - movq -32(%rbp), %rax - cmpq $0, (%rax) - je .L5 - movq -32(%rbp), %rax + cmpl $0, -28(%rbp) + jle .L2 + movq -24(%rbp), %rax + movq (%rax), %rax + testq %rax, %rax + je .L2 + movq -24(%rbp), %rax movq (%rax), %rax movq %rax, __progname(%rip) movq __progname(%rip), %rax - movq %rax, -48(%rbp) -.L6: - movq -48(%rbp), %rax - cmpb $0, (%rax) - jne .L9 + movq %rax, -8(%rbp) jmp .L5 -.L9: - movq -48(%rbp), %rax - cmpb $47, (%rax) - jne .L8 - movq -48(%rbp), %rax - incq %rax +.L6: + movq -8(%rbp), %rax + movzbl (%rax), %eax + cmpb $47, %al + jne .L7 + movq -8(%rbp), %rax + addq $1, %rax movq %rax, __progname(%rip) -.L8: - leaq -48(%rbp), %rax - incq (%rax) - jmp .L6 +.L7: + addq $1, -8(%rbp) .L5: -# movl $_DYNAMIC, %eax -# testq %rax, %rax -# je .L11 -# movq -16(%rbp), %rdi -# call atexit + movq -8(%rbp), %rax + movzbl (%rax), %eax + testb %al, %al + jne .L6 +.L2: + movl $_DYNAMIC, %eax + testq %rax, %rax + je .L9 + movq -48(%rbp), %rdi + call atexit + jmp .L11 +.L9: + call _init_tls .L11: -# movl $_fini, %edi -# call atexit -# call _init -# movq -40(%rbp), %rdx #env -# movq -32(%rbp), %rsi #argv -# movl -20(%rbp), %edi # argc - xorq %rbp,%rbp + movl $_fini, %edi + call atexit + call _init +# movq -16(%rbp), %rdx +# movq -24(%rbp), %rsi +# movl -28(%rbp), %edi + xorq %rbp,%rbp call main movl %eax, %edi call exit -.LFE9: +.LFE5: .size _start, .-_start #APP - .ident "$FreeBSD: src/lib/csu/amd64/crt1.c,v 1.13 2003/04/30 19:27:07 peter Exp $" + .ident "$FreeBSD: src/lib/csu/amd64/crt1.c,v 1.15 2005/10/07 22:13:17 bde Exp $" #NO_APP +.bss + .type __stkptr,@object + .size __stkptr,8 + .global __stkptr +__stkptr: + .skip 8 + + .type operatingsystem_parameters,@object + .size operatingsystem_parameters,24 +operatingsystem_parameters: + .skip 3*8 + + .global operatingsystem_parameter_envp + .global operatingsystem_parameter_argc + .global operatingsystem_parameter_argv + .set operatingsystem_parameter_envp,operatingsystem_parameters+0 + .set operatingsystem_parameter_argc,operatingsystem_parameters+8 + .set operatingsystem_parameter_argv,operatingsystem_parameters+16 + .comm environ,8,8 .weak _DYNAMIC .section .eh_frame,"a",@progbits @@ -110,25 +133,28 @@ _start: .LSCIE1: .long 0x0 .byte 0x1 - .string "" + .string "zR" .uleb128 0x1 .sleb128 -8 .byte 0x10 + .uleb128 0x1 + .byte 0x3 .byte 0xc .uleb128 0x7 .uleb128 0x8 .byte 0x90 .uleb128 0x1 - .p2align 3 + .align 8 .LECIE1: .LSFDE1: .long .LEFDE1-.LASFDE1 .LASFDE1: .long .LASFDE1-.Lframe1 - .quad .LFB9 - .quad .LFE9-.LFB9 + .long .LFB5 + .long .LFE5-.LFB5 + .uleb128 0x0 .byte 0x4 - .long .LCFI0-.LFB9 + .long .LCFI0-.LFB5 .byte 0xe .uleb128 0x10 .byte 0x86 @@ -137,6 +163,6 @@ _start: .long .LCFI1-.LCFI0 .byte 0xd .uleb128 0x6 - .p2align 3 + .align 8 .LEFDE1: - .ident "GCC: (GNU) 3.3.3 [FreeBSD] 20031106" + .ident "GCC: (GNU) 4.2.1 20070719 [FreeBSD]"