123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /* This code is used in dl-runtime.c to call the `fixup' function
- and then redirect to the address it returns. */
- /* We assume that R3 contain relocation offset and R4 contains
- link_map (_DYNAMIC). This must be consistent with the JUMP_SLOT
- layout generated by binutils. */
- /* Based on glibc 2.3.6, dl-machine.h */
- /*
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
- The GNU C Library 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. See the GNU
- Lesser General Public License for more details.
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
- .text
- .align 4
- .globl _dl_linux_resolver
- .globl _dl_linux_resolve
- .type _dl_linux_resolve,@function
- _dl_linux_resolve:
- addik r1,r1,-40
- swi r5,r1,12
- swi r6,r1,16
- swi r7,r1,20
- swi r8,r1,24
- swi r9,r1,28
- swi r10,r1,32
- swi r15,r1,0
- addk r5,r0,r4
- brlid r15, _dl_linux_resolver
- addk r6,r0,r3; /* delay slot */
- lwi r10,r1,32
- lwi r9,r1,28
- lwi r8,r1,24
- lwi r7,r1,20
- lwi r6,r1,16
- lwi r5,r1,12
- lwi r15,r1,0
- brad r3
- addik r1,r1,40; /* delay slot */
- .size _dl_linux_resolve, . - _dl_linux_resolve
|