1*56bb7041Schristos
2*56bb7041SchristosDynamic section .*
3*56bb7041Schristos#...
4*56bb7041Schristos 0x00000003 \(PLTGOT\)                     0x10202000
5*56bb7041Schristos#...
6*56bb7041Schristos 0x70000013 \(MIPS_GOTSYM\)                0x1f
7*56bb7041Schristos 0x00000014 \(PLTREL\)                     REL
8*56bb7041Schristos 0x00000017 \(JMPREL\)                     0x10005000
9*56bb7041Schristos 0x00000002 \(PLTRELSZ\)                   224 \(bytes\)
10*56bb7041Schristos 0x70000032 \(MIPS_PLTGOT\)                0x10200000
11*56bb7041Schristos#...
12*56bb7041SchristosRelocation section '\.rel\.dyn' .*
13*56bb7041Schristos# All symbols are referenced by a .word in the .data section, so pointer
14*56bb7041Schristos# equality matters.  If a PLT is needed to satisfy a direct call or %lo
15*56bb7041Schristos# relocation, the symbol should have a nonzero value and there should be
16*56bb7041Schristos# no dynamic relocations against it.  The only relocations here are for
17*56bb7041Schristos# undefined 0-value symbols.  Note that unlike x86, we do not create a PLT
18*56bb7041Schristos# for the uncalled symbol 'f' in order to maintain backward compatibility
19*56bb7041Schristos# with pre-PLT ld.sos.
20*56bb7041Schristos Offset     Info    Type            Sym\.Value  Sym\. Name
21*56bb7041Schristos00000000  00000000 R_MIPS_NONE
22*56bb7041Schristos10201028  00001f03 R_MIPS_REL32      00000000   f_iu_ic
23*56bb7041Schristos10201008  00002003 R_MIPS_REL32      00000000   f_ic
24*56bb7041Schristos10201020  00002103 R_MIPS_REL32      00000000   f_iu
25*56bb7041Schristos10201000  00002203 R_MIPS_REL32      00000000   f
26*56bb7041Schristos
27*56bb7041SchristosRelocation section '\.rel\.plt' .*
28*56bb7041Schristos Offset     Info    Type            Sym\.Value  Sym\. Name
29*56bb7041Schristos10200008  [^ ]+ R_MIPS_JUMP_SLOT  10100020   f_lo_iu
30*56bb7041Schristos1020000c  [^ ]+ R_MIPS_JUMP_SLOT  10100030   f_lo_iu_du_dc
31*56bb7041Schristos10200010  [^ ]+ R_MIPS_JUMP_SLOT  10100040   f_lo_du_ic_dc
32*56bb7041Schristos10200014  [^ ]+ R_MIPS_JUMP_SLOT  10100050   f_du_dc
33*56bb7041Schristos10200018  [^ ]+ R_MIPS_JUMP_SLOT  10100191   f_lo_iu_dc
34*56bb7041Schristos1020001c  [^ ]+ R_MIPS_JUMP_SLOT  10100060   f_iu_du_ic
35*56bb7041Schristos10200020  [^ ]+ R_MIPS_JUMP_SLOT  10100070   f_lo_du_ic
36*56bb7041Schristos10200024  [^ ]+ R_MIPS_JUMP_SLOT  101001a1   f_iu_dc
37*56bb7041Schristos10200028  [^ ]+ R_MIPS_JUMP_SLOT  10100080   f_lo_iu_ic
38*56bb7041Schristos1020002c  [^ ]+ R_MIPS_JUMP_SLOT  10100090   f_lo_ic
39*56bb7041Schristos10200030  [^ ]+ R_MIPS_JUMP_SLOT  101000a0   f_lo_du_dc
40*56bb7041Schristos10200034  [^ ]+ R_MIPS_JUMP_SLOT  101000b0   f_du
41*56bb7041Schristos10200038  [^ ]+ R_MIPS_JUMP_SLOT  101000c0   f_du_ic_dc
42*56bb7041Schristos1020003c  [^ ]+ R_MIPS_JUMP_SLOT  101000d0   f_du_ic
43*56bb7041Schristos10200040  [^ ]+ R_MIPS_JUMP_SLOT  101000e0   f_iu_du_dc
44*56bb7041Schristos10200044  [^ ]+ R_MIPS_JUMP_SLOT  101001e1   f_lo_dc
45*56bb7041Schristos10200048  [^ ]+ R_MIPS_JUMP_SLOT  101000f0   f_iu_du
46*56bb7041Schristos1020004c  [^ ]+ R_MIPS_JUMP_SLOT  10100100   f_lo_iu_du
47*56bb7041Schristos10200050  [^ ]+ R_MIPS_JUMP_SLOT  101001f1   f_dc
48*56bb7041Schristos10200054  [^ ]+ R_MIPS_JUMP_SLOT  10100201   f_ic_dc
49*56bb7041Schristos10200058  [^ ]+ R_MIPS_JUMP_SLOT  10100110   f_lo_du
50*56bb7041Schristos1020005c  [^ ]+ R_MIPS_JUMP_SLOT  10100211   f_iu_ic_dc
51*56bb7041Schristos10200060  [^ ]+ R_MIPS_JUMP_SLOT  10100120   f_iu_du_ic_dc
52*56bb7041Schristos10200064  [^ ]+ R_MIPS_JUMP_SLOT  10100231   f_lo_iu_ic_dc
53*56bb7041Schristos10200068  [^ ]+ R_MIPS_JUMP_SLOT  10100130   f_lo_iu_du_ic
54*56bb7041Schristos1020006c  [^ ]+ R_MIPS_JUMP_SLOT  10100140   f_lo_iu_du_ic_dc
55*56bb7041Schristos10200070  [^ ]+ R_MIPS_JUMP_SLOT  10100251   f_lo_ic_dc
56*56bb7041Schristos10200074  [^ ]+ R_MIPS_JUMP_SLOT  10100150   f_lo
57*56bb7041Schristos
58*56bb7041SchristosSymbol table '\.dynsym' .*
59*56bb7041Schristos   Num:    Value  Size Type    Bind   Vis      Ndx Name
60*56bb7041Schristos     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
61*56bb7041Schristos# All symbols have their address taken, so PLT symbols need to have a nonzero
62*56bb7041Schristos# value.  They must also have STO_MIPS_PLT in order to distinguish them from
63*56bb7041Schristos# old-style lazy-binding stubs).
64*56bb7041Schristos#
65*56bb7041Schristos# A MIPS16 PLT should only be used as the symbol value if the function has
66*56bb7041Schristos# a direct MIPS16 caller (dc) and no direct MIPS caller (du).
67*56bb7041Schristos    .*: 10100020     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_iu
68*56bb7041Schristos    .*: 10100030     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_iu_du_dc
69*56bb7041Schristos#...
70*56bb7041Schristos    .*: 10100040     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_du_ic_dc
71*56bb7041Schristos    .*: 10100050     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_du_dc
72*56bb7041Schristos    .*: 10100191     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_iu_dc
73*56bb7041Schristos    .*: 10100060     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_iu_du_ic
74*56bb7041Schristos    .*: 10100070     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_du_ic
75*56bb7041Schristos    .*: 101001a1     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_iu_dc
76*56bb7041Schristos    .*: 10100080     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_iu_ic
77*56bb7041Schristos    .*: 10100090     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_ic
78*56bb7041Schristos    .*: 101000a0     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_du_dc
79*56bb7041Schristos    .*: 101000b0     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_du
80*56bb7041Schristos    .*: 101000c0     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_du_ic_dc
81*56bb7041Schristos    .*: 101000d0     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_du_ic
82*56bb7041Schristos    .*: 101000e0     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_iu_du_dc
83*56bb7041Schristos    .*: 101001e1     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_dc
84*56bb7041Schristos    .*: 101000f0     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_iu_du
85*56bb7041Schristos    .*: 10100100     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_iu_du
86*56bb7041Schristos    .*: 101001f1     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_dc
87*56bb7041Schristos    .*: 10100201     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_ic_dc
88*56bb7041Schristos    .*: 10100110     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_du
89*56bb7041Schristos    .*: 10100211     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_iu_ic_dc
90*56bb7041Schristos    .*: 10100120     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_iu_du_ic_dc
91*56bb7041Schristos#...
92*56bb7041Schristos    .*: 10100231     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_iu_ic_dc
93*56bb7041Schristos    .*: 10100130     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_iu_du_ic
94*56bb7041Schristos    .*: 10100140     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_iu_du_ic_dc
95*56bb7041Schristos    .*: 10100251     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo_ic_dc
96*56bb7041Schristos    .*: 10100150     0 FUNC    GLOBAL DEFAULT \[MIPS PLT\]   UND f_lo
97*56bb7041Schristos# The start of the GOT-mapped area.  This should only contain functions that
98*56bb7041Schristos# are accessed purely via the traditional psABI scheme.  Since the functions
99*56bb7041Schristos# have their addresses taken, they cannot use a lazy-binding stub.
100*56bb7041Schristos# The symbol values are therefore all zero.
101*56bb7041Schristos    31: 00000000     0 FUNC    GLOBAL DEFAULT  UND f_iu_ic
102*56bb7041Schristos    32: 00000000     0 FUNC    GLOBAL DEFAULT  UND f_ic
103*56bb7041Schristos    33: 00000000     0 FUNC    GLOBAL DEFAULT  UND f_iu
104*56bb7041Schristos    34: 00000000     0 FUNC    GLOBAL DEFAULT  UND f
105*56bb7041Schristos
106*56bb7041SchristosSymbol table '\.symtab' .*
107*56bb7041Schristos#...
108*56bb7041SchristosHex dump of section '\.data':
109*56bb7041Schristos  0x10201000 (00000000|00000000) (101001f1|f1011010) (00000000|00000000) (10100201|01021010) .*
110*56bb7041Schristos  0x10201010 (101000b0|b0001010) (10100050|50001010) (101000d0|d0001010) (101000c0|c0001010) .*
111*56bb7041Schristos  0x10201020 (00000000|00000000) (101001a1|a1011010) (00000000|00000000) (10100211|11021010) .*
112*56bb7041Schristos  0x10201030 (101000f0|f0001010) (101000e0|e0001010) (10100060|60001010) (10100120|20011010) .*
113*56bb7041Schristos  0x10201040 (10100150|50011010) (101001e1|e1011010) (10100090|90001010) (10100251|51021010) .*
114*56bb7041Schristos  0x10201050 (10100110|10011010) (101000a0|a0001010) (10100070|70001010) (10100040|40001010) .*
115*56bb7041Schristos  0x10201060 (10100020|20001010) (10100191|91011010) (10100080|80001010) (10100231|31021010) .*
116*56bb7041Schristos  0x10201070 (10100100|00011010) (10100030|30001010) (10100130|30011010) (10100140|40011010) .*
117*56bb7041Schristos
118*56bb7041Schristos
119*56bb7041SchristosPrimary GOT:
120*56bb7041Schristos Canonical gp value: 10209ff0
121*56bb7041Schristos
122*56bb7041Schristos Reserved entries:
123*56bb7041Schristos   Address     Access  Initial Purpose
124*56bb7041Schristos  10202000 -32752\(gp\) 00000000 Lazy resolver
125*56bb7041Schristos  10202004 -32748\(gp\) 80000000 Module pointer \(GNU extension\)
126*56bb7041Schristos
127*56bb7041Schristos# See the disassembly output for the meaning of each entry.
128*56bb7041Schristos Local entries:
129*56bb7041Schristos   Address     Access  Initial
130*56bb7041Schristos  10202008 -32744\(gp\) 10100201
131*56bb7041Schristos  1020200c -32740\(gp\) 101000d0
132*56bb7041Schristos  10202010 -32736\(gp\) 101000c0
133*56bb7041Schristos  10202014 -32732\(gp\) 10100211
134*56bb7041Schristos  10202018 -32728\(gp\) 10100060
135*56bb7041Schristos  1020201c -32724\(gp\) 10100120
136*56bb7041Schristos  10202020 -32720\(gp\) 10100090
137*56bb7041Schristos  10202024 -32716\(gp\) 10100251
138*56bb7041Schristos  10202028 -32712\(gp\) 10100070
139*56bb7041Schristos  1020202c -32708\(gp\) 10100040
140*56bb7041Schristos  10202030 -32704\(gp\) 10100080
141*56bb7041Schristos  10202034 -32700\(gp\) 10100231
142*56bb7041Schristos  10202038 -32696\(gp\) 10100130
143*56bb7041Schristos  1020203c -32692\(gp\) 10100140
144*56bb7041Schristos  10202040 -32688\(gp\) 101001a1
145*56bb7041Schristos  10202044 -32684\(gp\) 101000f0
146*56bb7041Schristos  10202048 -32680\(gp\) 101000e0
147*56bb7041Schristos  1020204c -32676\(gp\) 10100020
148*56bb7041Schristos  10202050 -32672\(gp\) 10100191
149*56bb7041Schristos  10202054 -32668\(gp\) 10100100
150*56bb7041Schristos  10202058 -32664\(gp\) 10100030
151*56bb7041Schristos
152*56bb7041Schristos Global entries:
153*56bb7041Schristos   Address     Access  Initial Sym\.Val\. Type    Ndx Name
154*56bb7041Schristos  1020205c -32660\(gp\) 00000000 00000000 FUNC    UND f_iu_ic
155*56bb7041Schristos  10202060 -32656\(gp\) 00000000 00000000 FUNC    UND f_ic
156*56bb7041Schristos  10202064 -32652\(gp\) 00000000 00000000 FUNC    UND f_iu
157*56bb7041Schristos  10202068 -32648\(gp\) 00000000 00000000 FUNC    UND f
158*56bb7041Schristos
159*56bb7041Schristos
160*56bb7041SchristosPLT GOT:
161*56bb7041Schristos
162*56bb7041Schristos Reserved entries:
163*56bb7041Schristos   Address  Initial Purpose
164*56bb7041Schristos  10200000 00000000 PLT lazy resolver
165*56bb7041Schristos  10200004 00000000 Module pointer
166*56bb7041Schristos
167*56bb7041Schristos Entries:
168*56bb7041Schristos   Address  Initial Sym\.Val\. Type    Ndx Name
169*56bb7041Schristos  10200008 10100000 10100020 FUNC    UND f_lo_iu
170*56bb7041Schristos  1020000c 10100000 10100030 FUNC    UND f_lo_iu_du_dc
171*56bb7041Schristos  10200010 10100000 10100040 FUNC    UND f_lo_du_ic_dc
172*56bb7041Schristos  10200014 10100000 10100050 FUNC    UND f_du_dc
173*56bb7041Schristos  10200018 10100000 10100191 FUNC    UND f_lo_iu_dc
174*56bb7041Schristos  1020001c 10100000 10100060 FUNC    UND f_iu_du_ic
175*56bb7041Schristos  10200020 10100000 10100070 FUNC    UND f_lo_du_ic
176*56bb7041Schristos  10200024 10100000 101001a1 FUNC    UND f_iu_dc
177*56bb7041Schristos  10200028 10100000 10100080 FUNC    UND f_lo_iu_ic
178*56bb7041Schristos  1020002c 10100000 10100090 FUNC    UND f_lo_ic
179*56bb7041Schristos  10200030 10100000 101000a0 FUNC    UND f_lo_du_dc
180*56bb7041Schristos  10200034 10100000 101000b0 FUNC    UND f_du
181*56bb7041Schristos  10200038 10100000 101000c0 FUNC    UND f_du_ic_dc
182*56bb7041Schristos  1020003c 10100000 101000d0 FUNC    UND f_du_ic
183*56bb7041Schristos  10200040 10100000 101000e0 FUNC    UND f_iu_du_dc
184*56bb7041Schristos  10200044 10100000 101001e1 FUNC    UND f_lo_dc
185*56bb7041Schristos  10200048 10100000 101000f0 FUNC    UND f_iu_du
186*56bb7041Schristos  1020004c 10100000 10100100 FUNC    UND f_lo_iu_du
187*56bb7041Schristos  10200050 10100000 101001f1 FUNC    UND f_dc
188*56bb7041Schristos  10200054 10100000 10100201 FUNC    UND f_ic_dc
189*56bb7041Schristos  10200058 10100000 10100110 FUNC    UND f_lo_du
190*56bb7041Schristos  1020005c 10100000 10100211 FUNC    UND f_iu_ic_dc
191*56bb7041Schristos  10200060 10100000 10100120 FUNC    UND f_iu_du_ic_dc
192*56bb7041Schristos  10200064 10100000 10100231 FUNC    UND f_lo_iu_ic_dc
193*56bb7041Schristos  10200068 10100000 10100130 FUNC    UND f_lo_iu_du_ic
194*56bb7041Schristos  1020006c 10100000 10100140 FUNC    UND f_lo_iu_du_ic_dc
195*56bb7041Schristos  10200070 10100000 10100251 FUNC    UND f_lo_ic_dc
196*56bb7041Schristos  10200074 10100000 10100150 FUNC    UND f_lo
197*56bb7041Schristos
198*56bb7041Schristos
199