1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- .file "dllcprt0.as"
- .data
- .align 4
- default_environ:
- .long 0
- .text
- .globl initialize_after
- .type initialize_after,@function
- initialize_after:
- .globl FPC_SHARED_LIB_START
- .type FPC_SHARED_LIB_START,@function
- FPC_SHARED_LIB_START:
- /* We are in a library if we link something against this code */
- movb $1,operatingsystem_islibrary
- /* Initialize freepascal variables in the shared object so they
- can be used as expected.
-
- As we link with libroot (our libc), just copy values from the
- corresponding external variables in the Freepascal ones.
- They are already initialized by libroot initialization.
-
- Inspired by /haiku/src/system/glue/start_dyn.c
- and /haiku/src/system/libroot/libroot_init.c
- */
- movl __libc_argc,%eax
- movl %eax,operatingsystem_parameter_argc
- movl __libc_argv,%eax
- movl %eax,operatingsystem_parameter_argv
- movl environ,%eax
- movl %eax,operatingsystem_parameter_envp
- xorl %ebp,%ebp
- call PASCALMAIN
- .globl _haltproc
- .type _haltproc,@function
- _haltproc:
- call _thread_do_exit_notification
- xorl %ebx,%ebx
- movw operatingsystem_result,%bx
- pushl %ebx
- call exit
- .bss
- .comm operatingsystem_parameter_envp,4
- .comm operatingsystem_parameter_argc,4
- .comm operatingsystem_parameter_argv,4
|