Rev 3400 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3400 | Rev 3552 | ||
---|---|---|---|
Line 103... | Line 103... | ||
103 | sym_table = 0; |
103 | sym_table = 0; |
104 | rel_table = 0; |
104 | rel_table = 0; |
105 | rel_entries = 0; |
105 | rel_entries = 0; |
106 | jmp_rel_table = 0; |
106 | jmp_rel_table = 0; |
107 | jmp_rel_entries = 0; |
107 | jmp_rel_entries = 0; |
108 | 108 | /* |
|
109 | i = 0; |
109 | i = 0; |
110 | while (dynamic[i].d_tag != 0) { |
110 | while (dynamic[i].d_tag != 0) { |
111 | dptr = (void *)(dynamic[i].d_un.d_val + bias); |
111 | dptr = (void *)(dynamic[i].d_un.d_val + bias); |
112 | dval = dynamic[i].d_un.d_val; |
112 | dval = dynamic[i].d_un.d_val; |
113 | 113 | ||
114 | switch (dynamic[i].d_tag) { |
114 | switch (dynamic[i].d_tag) { |
115 | case DT_PLTRELSZ: jmp_rel_entries = dval/8; break; |
115 | case DT_PLTRELSZ: jmp_rel_entries = dval/8; break; |
116 | case DT_JMPREL: jmp_rel_table = dptr; break; |
116 | case DT_JMPREL: jmp_rel_table = dptr; break; |
117 | case DT_PLTGOT: |
117 | case DT_PLTGOT:*/ |
118 | /* GOT address */ |
118 | /* GOT address */ |
119 | got = dptr; break; |
119 | /*got = dptr; break; |
120 | case DT_SYMTAB: sym_table = dptr; break; |
120 | case DT_SYMTAB: sym_table = dptr; break; |
121 | case DT_REL: rel_table = dptr; break; |
121 | case DT_REL: rel_table = dptr; break; |
122 | case DT_RELSZ: rel_entries = dval / 8; break; |
122 | case DT_RELSZ: rel_entries = dval / 8; break; |
123 | default: break; |
123 | default: break; |
124 | } |
124 | } |
125 | 125 | ||
126 | ++i; |
126 | ++i; |
127 | } |
127 | } |
128 | 128 | */ |
|
129 | // kputint(1); |
129 | // kputint(1); |
130 | // kputint((unsigned)sym_table); |
130 | // kputint((unsigned)sym_table); |
131 | // kputint((unsigned)rel_table); |
131 | // kputint((unsigned)rel_table); |
132 | // kputint((unsigned)rel_entries); |
132 | // kputint((unsigned)rel_entries); |
133 | 133 | ||
134 | /* Now relocate all our dynsyms */ |
134 | /* Now relocate all our dynsyms */ |
135 | // kputint(-1); |
135 | // kputint(-1); |
136 | 136 | /* |
|
137 | for (i=0; i<rel_entries; i++) { |
137 | for (i=0; i<rel_entries; i++) { |
138 | kputint(i); |
138 | kputint(i); |
139 | r_offset = rel_table[i].r_offset; |
139 | r_offset = rel_table[i].r_offset; |
140 | r_info = rel_table[i].r_info; |
140 | r_info = rel_table[i].r_info; |
141 | 141 | ||
Line 172... | Line 172... | ||
172 | kputint(16); |
172 | kputint(16); |
173 | *(unsigned *)(r_offset+bias) += bias; |
173 | *(unsigned *)(r_offset+bias) += bias; |
174 | break; |
174 | break; |
175 | } |
175 | } |
176 | } |
176 | } |
177 | 177 | */ |
|
178 | kputint(-1); |
178 | kputint(-1); |
179 | 179 | /* |
|
180 | for (i=0; i<jmp_rel_entries; i++) { |
180 | for (i=0; i<jmp_rel_entries; i++) { |
181 | kputint(i); |
181 | kputint(i); |
182 | r_offset = jmp_rel_table[i].r_offset; |
182 | r_offset = jmp_rel_table[i].r_offset; |
183 | r_info = jmp_rel_table[i].r_info; |
183 | r_info = jmp_rel_table[i].r_info; |
184 | 184 | ||
Line 215... | Line 215... | ||
215 | kputint(16); |
215 | kputint(16); |
216 | *(unsigned *)(r_offset+bias) += bias; |
216 | *(unsigned *)(r_offset+bias) += bias; |
217 | break; |
217 | break; |
218 | } |
218 | } |
219 | } |
219 | } |
220 | 220 | */ |
|
221 | kputint(-1); |
221 | kputint(-1); |
222 | kputint(0x42); |
222 | kputint(0x42); |
223 | 223 | ||
224 | /* This will come in handy */ |
224 | /* This will come in handy */ |
225 | __pcb = pcb; |
225 | __pcb = pcb; |