⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resolve.s

📁 linux下用PCMCIA无线网卡虚拟无线AP的程序源码
💻 S
字号:
/* * Stolen from glibc-2.2.2 by David Schleef <ds@schleef.org> */.text.align 4.globl _dl_linux_resolver.globl _dl_linux_resolve.type	_dl_linux_resolve,@function_dl_linux_resolve:// We need to save the registers used to pass parameters, and register 0,// which is used by _mcount; the registers are saved in a stack frame.	stwu 1,-64(1)	stw 0,12(1)	stw 3,16(1)	stw 4,20(1)// The code that calls this has put parameters for 'fixup' in r12 and r11.	mr 3,12	stw 5,24(1)	mr 4,11	stw 6,28(1)	mflr 0// We also need to save some of the condition register fields.	stw 7,32(1)	stw 0,48(1)	stw 8,36(1)	mfcr 0	stw 9,40(1)	stw 10,44(1)	stw 0,8(1)	bl _dl_linux_resolver@local// 'fixup' returns the address we want to branch to.	mtctr 3// Put the registers back...	lwz 0,48(1)	lwz 10,44(1)	lwz 9,40(1)	mtlr 0	lwz 8,36(1)	lwz 0,8(1)	lwz 7,32(1)	lwz 6,28(1)	mtcrf 0xFF,0	lwz 5,24(1)	lwz 4,20(1)	lwz 3,16(1)	lwz 0,12(1)// ...unwind the stack frame, and jump to the PLT entry we updated.	addi 1,1,64	bctr.LFE2:	.size _dl_linux_resolve,.LFE2-_dl_linux_resolve#if 0	pusha				/* preserve all regs */	lea	0x20(%esp),%eax		/* eax = tpnt and reloc_entry params */	pushl	4(%eax)			/* push copy of reloc_entry param */	pushl	(%eax)			/* push copy of tpnt param */					 #ifdef __PIC__	call	.L24.L24:	popl	%ebx	addl	$_GLOBAL_OFFSET_TABLE_+[.-.L24],%ebx	movl _dl_linux_resolver@GOT(%ebx),%ebx	/* eax = resolved func */	call *%ebx#else	call _dl_linux_resolver#endif	movl	%eax,0x28(%esp)		/* store func addr over original					 * tpnt param */	addl	$0x8,%esp		/* remove copy parameters */	popa				/* restore regs */	ret	$4			/* jump to func removing original					 * reloc_entry param from stack */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -