
.* file format .*


Disassembly of section \.plt:

# Only _dc (direct call from compressed code) functions should have a
# MIPS16 PLT.  Note that indirect calls do not influence the choice,
# so f_ic and f_lo_ic have MIPS rather than MIPS16 PLTs.
10100000 <_PROCEDURE_LINKAGE_TABLE_>:
.*:	3c1c1020 	lui	\$28,0x1020
.*:	8f990000 	lw	\$25,0\(\$28\)
.*:	279c0000 	addiu	\$28,\$28,0
.*:	031cc023 	subu	\$24,\$24,\$28
.*:	03e07825 	move	\$15,\$31
.*:	0018c082 	srl	\$24,\$24,0x2
.*:	0320f809 	jalr	\$25
.*:	2718fffe 	addiu	\$24,\$24,-2

10100020 <f_lo_ic@plt>:
.*:	3c0f1020 	lui	\$15,0x1020
.*:	8df90008 	lw	\$25,8\(\$15\)
.*:	03200008 	jr	\$25
.*:	25f80008 	addiu	\$24,\$15,8

10100030 <f_lo@plt>:
.*:	3c0f1020 	lui	\$15,0x1020
.*:	8df9001c 	lw	\$25,28\(\$15\)
.*:	03200008 	jr	\$25
.*:	25f8001c 	addiu	\$24,\$15,28

10100040 <f_lo_dc@mips16plt>:
.*:	b203      	lw	\$2,1010004c <f_lo_dc@mips16plt\+0xc>
.*:	9a60      	lw	\$3,0\(\$2\)
.*:	651a      	move	\$24,\$2
.*:	eb00      	jr	\$3
.*:	653b      	move	\$25,\$3
.*:	6500      	nop
.*:	.... .... 	\.word	0x1020000c

10100050 <f_dc@mips16plt>:
.*:	b203      	lw	\$2,1010005c <f_dc@mips16plt\+0xc>
.*:	9a60      	lw	\$3,0\(\$2\)
.*:	651a      	move	\$24,\$2
.*:	eb00      	jr	\$3
.*:	653b      	move	\$25,\$3
.*:	6500      	nop
.*:	.... .... 	\.word	0x10200010

10100060 <f_ic_dc@mips16plt>:
.*:	b203      	lw	\$2,1010006c <f_ic_dc@mips16plt\+0xc>
.*:	9a60      	lw	\$3,0\(\$2\)
.*:	651a      	move	\$24,\$2
.*:	eb00      	jr	\$3
.*:	653b      	move	\$25,\$3
.*:	6500      	nop
.*:	.... .... 	\.word	0x10200014

10100070 <f_lo_ic_dc@mips16plt>:
.*:	b203      	lw	\$2,1010007c <f_lo_ic_dc@mips16plt\+0xc>
.*:	9a60      	lw	\$3,0\(\$2\)
.*:	651a      	move	\$24,\$2
.*:	eb00      	jr	\$3
.*:	653b      	move	\$25,\$3
.*:	6500      	nop
.*:	.... .... 	\.word	0x10200018

Disassembly of section \.MIPS\.stubs:

10101000 <_MIPS_STUBS_>:
# Lazy-binding stub for f_ic.
.*:	8f998010 	lw	\$25,-32752\(\$28\)
.*:	03e07825 	move	\$15,\$31
.*:	0320f809 	jalr	\$25
.*:	24180009 	li	\$24,9
	\.\.\.

Disassembly of section \.text\.a:

10102000 <testc>:
.*:	.... .... 	jal	[0-9a-f]+ <f_dc@mips16plt>
.*:	6500      	nop
.*:	f030 9b44 	lw	\$2,-32732\(\$3\)
#				    ^ global GOT entry for f_ic
.*:	.... .... 	jal	[0-9a-f]+ <f_ic_dc@mips16plt>
.*:	6500      	nop
.*:	f010 9b58 	lw	\$2,-32744\(\$3\)
#				    ^ local GOT entry for f_ic_dc@mips16plt
.*:	.... .... 	jal	[0-9a-f]+ <f_lo_dc@mips16plt>
.*:	6500      	nop
.*:	f010 9b5c 	lw	\$2,-32740\(\$3\)
#				    ^ local GOT entry for f_lo_ic@plt
.*:	.... .... 	jal	[0-9a-f]+ <f_lo_ic_dc@mips16plt>
.*:	6500      	nop
.*:	f030 9b40 	lw	\$2,-32736\(\$3\)
#				    ^ local GOT entry for f_lo_ic_dc@mips16plt
.*:	e820      	jr	\$31

Disassembly of section \.text\.c:

10103000 <testlo>:
.*:	24020030 	li	\$2,48
#				    ^ low 16 bits of f_lo@plt
.*:	24020041 	li	\$2,65
#				    ^ low 16 bits of f_lo_dc@mips16plt
.*:	24020020 	li	\$2,32
#				    ^ low 16 bits of f_lo_ic@plt
.*:	24020071 	li	\$2,113
#				    ^ low 16 bits of f_lo_ic_dc@mips16plt

