mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-28 12:13:37 +08:00
Update.
2001-06-19 Andreas Jaeger <aj@suse.de> * sysdeps/powerpc/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Handle profiling.
This commit is contained in:
parent
2995f70ed7
commit
33e25d26e7
@ -1,3 +1,8 @@
|
||||
2001-06-19 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/powerpc/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
|
||||
Handle profiling.
|
||||
|
||||
2001-06-29 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* sysdeps/ieee754/ldbl-128/s_asinhl.c: New file.
|
||||
|
@ -102,6 +102,7 @@ elf_machine_load_address (void)
|
||||
/* This code is used in dl-runtime.c to call the `fixup' function
|
||||
and then redirect to the address it returns. It is called
|
||||
from code built in the PLT by elf_machine_runtime_setup. */
|
||||
#if !defined PROF
|
||||
#define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\n\
|
||||
.section \".text\" \n\
|
||||
.align 2 \n\
|
||||
@ -198,6 +199,59 @@ _dl_prof_resolve: \n\
|
||||
# Undo '.section text'.\n\
|
||||
.previous \n\
|
||||
");
|
||||
#else
|
||||
# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\n\
|
||||
.section \".text\" \n\
|
||||
.align 2 \n\
|
||||
.globl _dl_runtime_resolve \n\
|
||||
.globl _dl_prof_resolve \n\
|
||||
.type _dl_runtime_resolve,@function \n\
|
||||
.type _dl_prof_resolve,@function \n\
|
||||
_dl_runtime_resolve: \n\
|
||||
_dl_prof_resolve: \n\
|
||||
# We need to save the registers used to pass parameters, and register 0,\n\
|
||||
# which is used by _mcount; the registers are saved in a stack frame.\n\
|
||||
stwu 1,-64(1) \n\
|
||||
stw 0,12(1) \n\
|
||||
stw 3,16(1) \n\
|
||||
stw 4,20(1) \n\
|
||||
# The code that calls this has put parameters for `fixup' in r12 and r11.\n\
|
||||
mr 3,12 \n\
|
||||
stw 5,24(1) \n\
|
||||
mr 4,11 \n\
|
||||
stw 6,28(1) \n\
|
||||
mflr 0 \n\
|
||||
# We also need to save some of the condition register fields.\n\
|
||||
stw 7,32(1) \n\
|
||||
stw 0,48(1) \n\
|
||||
stw 8,36(1) \n\
|
||||
mfcr 0 \n\
|
||||
stw 9,40(1) \n\
|
||||
stw 10,44(1) \n\
|
||||
stw 0,8(1) \n\
|
||||
bl fixup@local \n\
|
||||
# 'fixup' returns the address we want to branch to.\n\
|
||||
mtctr 3 \n\
|
||||
# Put the registers back...\n\
|
||||
lwz 0,48(1) \n\
|
||||
lwz 10,44(1) \n\
|
||||
lwz 9,40(1) \n\
|
||||
mtlr 0 \n\
|
||||
lwz 8,36(1) \n\
|
||||
lwz 0,8(1) \n\
|
||||
lwz 7,32(1) \n\
|
||||
lwz 6,28(1) \n\
|
||||
mtcrf 0xFF,0 \n\
|
||||
lwz 5,24(1) \n\
|
||||
lwz 4,20(1) \n\
|
||||
lwz 3,16(1) \n\
|
||||
lwz 0,12(1) \n\
|
||||
# ...unwind the stack frame, and jump to the PLT entry we updated.\n\
|
||||
addi 1,1,64 \n\
|
||||
bctr \n\
|
||||
.size _dl_runtime_resolve,.-_dl_runtime_resolve \n\
|
||||
");
|
||||
#endif
|
||||
|
||||
/* The actual _start code is in dl-start.S. Use a really
|
||||
ugly bit of assembler to let dl-start.o see _dl_start. */
|
||||
|
Loading…
Reference in New Issue
Block a user