mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 08:09:28 +02:00
- RTL, Linux/FreeBSD shared library startup: removed FPC_SHARED_LIB_EXIT label, it is a leftover from times when library startup code was erroneously halting owning process on exit.
git-svn-id: trunk@25737 -
This commit is contained in:
parent
f2a4d1bbbc
commit
a3364a4b80
@ -75,9 +75,6 @@ FPC_SHARED_LIB_START:
|
|||||||
.type _haltproc,@function
|
.type _haltproc,@function
|
||||||
|
|
||||||
_haltproc:
|
_haltproc:
|
||||||
.globl FPC_SHARED_LIB_EXIT
|
|
||||||
.type FPC_SHARED_LIB_EXIT,@function
|
|
||||||
FPC_SHARED_LIB_EXIT:
|
|
||||||
call FPC_LIB_EXIT@PLT
|
call FPC_LIB_EXIT@PLT
|
||||||
mov $1,%eax
|
mov $1,%eax
|
||||||
movzwl operatingsystem_result,%ebx
|
movzwl operatingsystem_result,%ebx
|
||||||
|
@ -62,9 +62,6 @@ FPC_SHARED_LIB_START:
|
|||||||
/* this routine is only called when the halt() routine of the RTL embedded in
|
/* this routine is only called when the halt() routine of the RTL embedded in
|
||||||
the shared library is called */
|
the shared library is called */
|
||||||
_haltproc:
|
_haltproc:
|
||||||
.globl FPC_SHARED_LIB_EXIT
|
|
||||||
.type FPC_SHARED_LIB_EXIT,@function
|
|
||||||
FPC_SHARED_LIB_EXIT:
|
|
||||||
call FPC_LIB_EXIT@PLT
|
call FPC_LIB_EXIT@PLT
|
||||||
movl $1,%eax /* exit syscall */
|
movl $1,%eax /* exit syscall */
|
||||||
movq operatingsystem_result(%rip),%rbx
|
movq operatingsystem_result(%rip),%rbx
|
||||||
|
@ -48,9 +48,6 @@ FPC_SHARED_LIB_START:
|
|||||||
.type _haltproc,@function
|
.type _haltproc,@function
|
||||||
_haltproc:
|
_haltproc:
|
||||||
_haltproc2: # GAS <= 2.15 bug: generates larger jump if a label is exported
|
_haltproc2: # GAS <= 2.15 bug: generates larger jump if a label is exported
|
||||||
.globl FPC_SHARED_LIB_EXIT
|
|
||||||
.type FPC_SHARED_LIB_EXIT,@function
|
|
||||||
FPC_SHARED_LIB_EXIT:
|
|
||||||
subl $12, %esp /* align back to 16 bytes if it was before the call */
|
subl $12, %esp /* align back to 16 bytes if it was before the call */
|
||||||
call lib_exit
|
call lib_exit
|
||||||
xorl %eax,%eax
|
xorl %eax,%eax
|
||||||
|
@ -36,9 +36,6 @@ FPC_SHARED_LIB_START:
|
|||||||
.globl _haltproc
|
.globl _haltproc
|
||||||
.type _haltproc,@function
|
.type _haltproc,@function
|
||||||
haltproc:
|
haltproc:
|
||||||
.globl FPC_SHARED_LIB_EXIT
|
|
||||||
.type FPC_SHARED_LIB_EXIT,@function
|
|
||||||
FPC_SHARED_LIB_EXIT:
|
|
||||||
moveq.l #1,%d0
|
moveq.l #1,%d0
|
||||||
move.w U_SYSLINUX_EXITCODE,%d1
|
move.w U_SYSLINUX_EXITCODE,%d1
|
||||||
trap #0
|
trap #0
|
||||||
|
@ -133,11 +133,8 @@ _start:
|
|||||||
.size _start, .-_start
|
.size _start, .-_start
|
||||||
|
|
||||||
.globl _haltproc
|
.globl _haltproc
|
||||||
.globl FPC_SHARED_LIB_EXIT
|
|
||||||
.ent _haltproc
|
.ent _haltproc
|
||||||
.type _haltproc,@function
|
.type _haltproc,@function
|
||||||
.type FPC_SHARED_LIB_EXIT,@function
|
|
||||||
FPC_SHARED_LIB_EXIT:
|
|
||||||
_haltproc:
|
_haltproc:
|
||||||
/* TODO: need to check whether __dl_fini is non-zero and call the function pointer in case */
|
/* TODO: need to check whether __dl_fini is non-zero and call the function pointer in case */
|
||||||
|
|
||||||
@ -156,3 +153,4 @@ _haltproc:
|
|||||||
.comm operatingsystem_parameter_argc,4
|
.comm operatingsystem_parameter_argc,4
|
||||||
.comm operatingsystem_parameter_argv,4
|
.comm operatingsystem_parameter_argv,4
|
||||||
|
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
@ -48,10 +48,7 @@ FPC_SHARED_LIB_START:
|
|||||||
blr
|
blr
|
||||||
|
|
||||||
.globl _haltproc
|
.globl _haltproc
|
||||||
.globl FPC_SHARED_LIB_EXIT
|
|
||||||
.type FPC_SHARED_LIB_EXIT,@function
|
|
||||||
.type _haltproc,@function
|
.type _haltproc,@function
|
||||||
FPC_SHARED_LIB_EXIT:
|
|
||||||
_haltproc:
|
_haltproc:
|
||||||
lis 11,operatingsystem_result@ha
|
lis 11,operatingsystem_result@ha
|
||||||
lwz 3,operatingsystem_result@l(3)
|
lwz 3,operatingsystem_result@l(3)
|
||||||
|
@ -359,7 +359,6 @@ FUNCTION_PROLOG FPC_SHARED_LIB_START
|
|||||||
/* this routine is only called when the halt() routine of the RTL embedded in
|
/* this routine is only called when the halt() routine of the RTL embedded in
|
||||||
the shared library is called */
|
the shared library is called */
|
||||||
FUNCTION_PROLOG _haltproc
|
FUNCTION_PROLOG _haltproc
|
||||||
FUNCTION_PROLOG FPC_SHARED_LIB_EXIT
|
|
||||||
/* exit_group call */
|
/* exit_group call */
|
||||||
LOAD_64BIT_VAL 3, operatingsystem_result
|
LOAD_64BIT_VAL 3, operatingsystem_result
|
||||||
lwz 3, 0(3)
|
lwz 3, 0(3)
|
||||||
|
@ -68,9 +68,6 @@ _startlib:
|
|||||||
.globl _haltproc
|
.globl _haltproc
|
||||||
.type _haltproc,@function
|
.type _haltproc,@function
|
||||||
_haltproc:
|
_haltproc:
|
||||||
.globl FPC_SHARED_LIB_EXIT
|
|
||||||
.type FPC_SHARED_LIB_EXIT,@function
|
|
||||||
FPC_SHARED_LIB_EXIT:
|
|
||||||
movl $231,%eax /* exit_group call */
|
movl $231,%eax /* exit_group call */
|
||||||
movq operatingsystem_result@GOTPCREL(%rip),%rbx
|
movq operatingsystem_result@GOTPCREL(%rip),%rbx
|
||||||
movzwl (%rbx),%edi
|
movzwl (%rbx),%edi
|
||||||
|
Loading…
Reference in New Issue
Block a user