mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-26 05:11:37 +01:00 
			
		
		
		
	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 -
This commit is contained in:
		
							parent
							
								
									fe87b547ea
								
							
						
					
					
						commit
						787ca1c0bc
					
				
							
								
								
									
										2
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
								
							| @ -7706,10 +7706,8 @@ rtl/linux/fpmake.inc svneol=native#text/plain | |||||||
| rtl/linux/gpm.pp svneol=native#text/plain | rtl/linux/gpm.pp svneol=native#text/plain | ||||||
| rtl/linux/i386/bsyscall.inc 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/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/dllprt0.as svneol=native#text/plain | ||||||
| rtl/linux/i386/gprt0.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/prt0.as svneol=native#text/plain | ||||||
| rtl/linux/i386/si_c.inc svneol=native#text/plain | rtl/linux/i386/si_c.inc svneol=native#text/plain | ||||||
| rtl/linux/i386/si_c21.inc svneol=native#text/plain | rtl/linux/i386/si_c21.inc svneol=native#text/plain | ||||||
|  | |||||||
| @ -67,7 +67,8 @@ _start: | |||||||
|         str sp,[ip] |         str sp,[ip] | ||||||
| 
 | 
 | ||||||
|         /* Fetch address of fini */ |         /* Fetch address of fini */ | ||||||
|         ldr ip, =_fini |         /*fixme: ldr ip, =_fini */ | ||||||
|  |         mov ip, #0 | ||||||
| 
 | 
 | ||||||
|         /* argc already loaded to a2*/ |         /* argc already loaded to a2*/ | ||||||
| 
 | 
 | ||||||
| @ -82,15 +83,17 @@ _start: | |||||||
| 
 | 
 | ||||||
|         /* Set up the other arguments in registers */ |         /* Set up the other arguments in registers */ | ||||||
|         ldr a1, =PASCALMAIN |         ldr a1, =PASCALMAIN | ||||||
|         ldr a4, =_init |         /* fixme: init ldr a4, =_init */ | ||||||
|  |         mov a4, #0 | ||||||
| 
 | 
 | ||||||
|         /* Push fini */ |         /* Push fini */ | ||||||
|         str ip, [sp, #-4]! |         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.  */ |         /* Let the libc call main and exit with its return code.  */ | ||||||
|         bl __libc_start_main |         bl __libc_init | ||||||
| 
 | 
 | ||||||
|         /* should never get here....*/ |         /* should never get here....*/ | ||||||
|         bl abort |         bl abort | ||||||
|  | |||||||
| @ -47,21 +47,15 @@ _start: | |||||||
|         movl    %ecx,operatingsystem_parameter_argc    /* Move the argument counter    */ |         movl    %ecx,operatingsystem_parameter_argc    /* Move the argument counter    */ | ||||||
|         movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */ |         movl    %ebx,operatingsystem_parameter_argv    /* Move the argument pointer    */ | ||||||
| 
 | 
 | ||||||
|         movl    %eax,__environ          /* libc environ */ |         /* no libc __environ */ | ||||||
| 
 | 
 | ||||||
|         pushl   %eax |         pushl   %eax | ||||||
|         pushl   %ebx |         pushl   %ebx | ||||||
|         pushl   %ecx |         pushl   %ecx | ||||||
| 
 | 
 | ||||||
|         call    __libc_init             /* init libc */ |         call    __libc_init             /* init libc */ | ||||||
|         movzwl  __fpu_control,%eax |         pushl   $0                      /* the onexit() function is always nil with bionic */ | ||||||
|         pushl   %eax |         call    __cxa_finalize | ||||||
|         call    __setfpucw |  | ||||||
|         popl    %eax |  | ||||||
|         pushl   $_fini |  | ||||||
|         call    atexit |  | ||||||
|         popl    %eax |  | ||||||
|         call    _init |  | ||||||
| 
 | 
 | ||||||
|         popl    %eax |         popl    %eax | ||||||
|         popl    %eax |         popl    %eax | ||||||
|  | |||||||
| @ -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 |  | ||||||
| @ -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 |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 tom_at_work
						tom_at_work