Bläddra i källkod

Made cprt0 startup files to compile. Static executables using them likely do not work though.
Removed obsolete startup files (?prt21*).

git-svn-id: branches/targetandroid@22045 -

tom_at_work 13 år sedan
förälder
incheckning
787ca1c0bc
5 ändrade filer med 10 tillägg och 280 borttagningar
  1. 0 2
      .gitattributes
  2. 7 4
      rtl/android/arm/cprt0.as
  3. 3 9
      rtl/linux/i386/cprt0.as
  4. 0 126
      rtl/linux/i386/cprt21.as
  5. 0 139
      rtl/linux/i386/gprt21.as

+ 0 - 2
.gitattributes

@@ -7706,10 +7706,8 @@ rtl/linux/fpmake.inc svneol=native#text/plain
 rtl/linux/gpm.pp svneol=native#text/plain
 rtl/linux/i386/bsyscall.inc svneol=native#text/plain
 rtl/linux/i386/cprt0.as svneol=native#text/plain
-rtl/linux/i386/cprt21.as svneol=native#text/plain
 rtl/linux/i386/dllprt0.as svneol=native#text/plain
 rtl/linux/i386/gprt0.as svneol=native#text/plain
-rtl/linux/i386/gprt21.as svneol=native#text/plain
 rtl/linux/i386/prt0.as svneol=native#text/plain
 rtl/linux/i386/si_c.inc svneol=native#text/plain
 rtl/linux/i386/si_c21.inc svneol=native#text/plain

+ 7 - 4
rtl/android/arm/cprt0.as

@@ -67,7 +67,8 @@ _start:
         str sp,[ip]
 
         /* Fetch address of fini */
-        ldr ip, =_fini
+        /*fixme: ldr ip, =_fini */
+        mov ip, #0
 
         /* argc already loaded to a2*/
 
@@ -82,15 +83,17 @@ _start:
 
         /* Set up the other arguments in registers */
         ldr a1, =PASCALMAIN
-        ldr a4, =_init
+        /* fixme: init ldr a4, =_init */
+        mov a4, #0
 
         /* Push fini */
         str ip, [sp, #-4]!
 
-        /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, stack_end) */
+        /* check that this is the correct function! */
+        /* __libc_init (main, argc, argv, init, fini, rtld_fini, stack_end) */
 
         /* Let the libc call main and exit with its return code.  */
-        bl __libc_start_main
+        bl __libc_init
 
         /* should never get here....*/
         bl abort

+ 3 - 9
rtl/linux/i386/cprt0.as

@@ -47,21 +47,15 @@ _start:
         movl    %ecx,operatingsystem_parameter_argc    /* Move the argument counter    */
         movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */
 
-        movl    %eax,__environ          /* libc environ */
+        /* no libc __environ */
 
         pushl   %eax
         pushl   %ebx
         pushl   %ecx
 
         call    __libc_init             /* init libc */
-        movzwl  __fpu_control,%eax
-        pushl   %eax
-        call    __setfpucw
-        popl    %eax
-        pushl   $_fini
-        call    atexit
-        popl    %eax
-        call    _init
+        pushl   $0                      /* the onexit() function is always nil with bionic */
+        call    __cxa_finalize
 
         popl    %eax
         popl    %eax

+ 0 - 126
rtl/linux/i386/cprt21.as

@@ -1,126 +0,0 @@
-#
-#   This file is part of the Free Pascal run time library.
-#   Copyright (c) 1999-2000 by Michael Van Canneyt and Peter Vreman
-#   members of the Free Pascal development team.
-#
-#   See the file COPYING.FPC, included in this distribution,
-#   for details about the copyright.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY;without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-#**********************************************************************}
-#
-# Linux ELF startup code for Free Pascal
-#
-# Stack layout at program start:
-#
-#         nil
-#         envn
-#         ....
-#         ....           ENVIRONMENT VARIABLES
-#         env1
-#         env0
-#         nil
-#         argn
-#         ....
-#         ....           COMMAND LINE OPTIONS
-#         arg1
-#         arg0
-#         argc <--- esp
-#
-
-        .file   "prt1.as"
-        .text
-        .globl  _start
-        .type   _start,@function
-_start:
-        /* First locate the start of the environment variables */
-
-        popl    %esi
-        movl    %eax,%edi
-
-        movl    %esp,%ebx               /* Points to the arguments */
-        movl    %esi,%eax
-        incl    %eax
-        shll    $2,%eax
-        addl    %esp,%eax
-        andl    $0xfffffff8,%esp        /* Align stack */
-
-        movl    %eax,operatingsystem_parameter_envp    /* Move the environment pointer */
-        movl    %esi,operatingsystem_parameter_argc    /* Move the argument counter    */
-        movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */
-
-        xorl    %ebp,%ebp
-        pushl   %edi
-        pushl   %esp
-        pushl   %edx
-        pushl   $_fini_dummy
-        pushl   $_init_dummy
-        pushl   %ebx
-        pushl   %esi
-        pushl   $main
-        call    __libc_start_main
-        hlt
-
-/* fake main routine which will be run from libc */
-main:
-        /* save return address */
-        popl    %eax
-        movl    %eax,___fpc_ret
-        movl    %ebx,___fpc_ret_ebx
-        movl    %ebp,___fpc_ret_ebp
-        pushl   %eax
-
-        /* Save initial stackpointer */
-        movl    %esp,__stkptr
-
-        /* start the program */
-        xorl    %ebp,%ebp
-        call    PASCALMAIN
-        hlt
-
-        .globl _haltproc
-        .type _haltproc,@function
-_haltproc:
-        movzwl    operatingsystem_result,%eax
-
-        movl    ___fpc_ret,%edx         /* return to libc */
-        movl    ___fpc_ret_ebp,%ebp
-        movl    ___fpc_ret_ebx,%ebx
-        push    %edx
-_init_dummy:
-_fini_dummy:
-        ret
-
-.data
-        .align  4
-
-___fpc_ret:                             /* return address to libc */
-        .long   0
-___fpc_ret_ebx:
-        .long   0
-___fpc_ret_ebp:
-        .long   0
-
-.bss
-        .type   __stkptr,@object
-        .size   __stkptr,4
-        .global __stkptr
-__stkptr:
-        .skip   4
-
-        .type operatingsystem_parameters,@object
-        .size operatingsystem_parameters,12
-operatingsystem_parameters:
-        .skip 3*4
-
-        .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+4
-        .set operatingsystem_parameter_argv,operatingsystem_parameters+8
-
-.section .note.GNU-stack,"",%progbits

+ 0 - 139
rtl/linux/i386/gprt21.as

@@ -1,139 +0,0 @@
-#
-#   This file is part of the Free Pascal run time library.
-#   Copyright (c) 1999-2000 by Michael Van Canneyt and Peter Vreman
-#   members of the Free Pascal development team.
-#
-#   See the file COPYING.FPC, included in this distribution,
-#   for details about the copyright.
-#
-#   This program is distributed in the hope that it will be useful,
-#   but WITHOUT ANY WARRANTY;without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-#
-#**********************************************************************}
-#
-# Linux ELF startup code for Free Pascal
-#
-
-        .file   "prt1.as"
-        .text
-        .globl  _start
-        .type   _start,@function
-_start:
-        /* First locate the start of the environment variables */
-        popl    %esi
-        movl    %eax,%edi
-
-        movl    %esp,%ebx               /* Points to the arguments */
-        movl    %esi,%eax
-        incl    %eax
-        shll    $2,%eax
-        addl    %esp,%eax
-        andl    $0xfffffff8,%esp        /* Align stack */
-
-        movl    %eax,operatingsystem_parameter_envp    /* Move the environment pointer */
-        movl    %esi,operatingsystem_parameter_argc    /* Move the argument counter    */
-        movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */
-
-        movl    %edi,%eax
-        xorl    %ebp,%ebp
-        pushl   %eax
-        pushl   %esp
-        pushl   %edx
-        pushl   $_fini_dummy
-        pushl   $_init_dummy
-        pushl   %ebx
-        pushl   %esi
-        pushl   $cmain
-        call    __libc_start_main
-        hlt
-
-/* fake main routine which will be run from libc */
-cmain:
-        /* save return address */
-        popl    %eax
-        movl    %eax,___fpc_ret
-        movl    %ebx,___fpc_ret_ebx
-        movl    %esi,___fpc_ret_esi
-        movl    %edi,___fpc_ret_edi
-        pushl   %eax
-
-        call    __gmon_start__
-
-        /* Save initial stackpointer */
-        movl    %esp,__stkptr
-
-        /* start the program */
-        call    PASCALMAIN
-        hlt
-
-        .globl _haltproc
-        .type _haltproc,@function
-_haltproc:
-        movzwl    operatingsystem_result,%eax
-
-        movl    ___fpc_ret,%edx         /* return to libc */
-        movl    ___fpc_ret_ebx,%ebx
-        movl    ___fpc_ret_esi,%esi
-        movl    ___fpc_ret_edi,%edi
-        push    %edx
-_init_dummy:
-_fini_dummy:
-        ret
-
-        .globl  __gmon_start__
-        .type   __gmon_start__,@function
-__gmon_start__:
-        pushl   %ebp
-        movl    __monstarted,%eax
-        leal    0x1(%eax),%edx
-        movl    %esp,%ebp
-        movl    %edx,__monstarted
-        testl   %eax,%eax
-        jnz     .Lnomonstart
-        pushl   $etext                  /* Initialize gmon */
-        pushl   $_start
-        call    monstartup
-        addl    $8,%esp
-        pushl   $_mcleanup
-        call    atexit
-        addl    $4,%esp
-.Lnomonstart:
-        movl   %ebp,%esp
-        popl   %ebp
-        ret
-
-.data
-        .align  4
-
-___fpc_ret:                             /* return address to libc */
-        .long   0
-___fpc_ret_ebx:
-        .long   0
-___fpc_ret_esi:
-        .long   0
-___fpc_ret_edi:
-        .long   0
-
-.bss
-        .lcomm __monstarted,4
-
-        .type   __stkptr,@object
-        .size   __stkptr,4
-        .global __stkptr
-__stkptr:
-        .skip   4
-
-        .type operatingsystem_parameters,@object
-        .size operatingsystem_parameters,12
-operatingsystem_parameters:
-        .skip 3*4
-
-        .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+4
-        .set operatingsystem_parameter_argv,operatingsystem_parameters+8
-
-.section .note.GNU-stack,"",%progbits