Rev 2980 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2980 | Rev 2982 | ||
---|---|---|---|
Line 85... | Line 85... | ||
85 | sym->st_size); |
85 | sym->st_size); |
86 | 86 | ||
87 | rel_type = ELF32_R_TYPE(r_info); |
87 | rel_type = ELF32_R_TYPE(r_info); |
88 | r_ptr = (uint32_t *)(r_offset + m->bias); |
88 | r_ptr = (uint32_t *)(r_offset + m->bias); |
89 | 89 | ||
- | 90 | if (sym->st_name != 0) { |
|
90 | printf("rel_type: %x, rel_offset: 0x%x\n", rel_type, r_offset); |
91 | printf("rel_type: %x, rel_offset: 0x%x\n", rel_type, r_offset); |
91 | sym_def = symbol_def_find(str_tab + sym->st_name, &dest); |
92 | sym_def = symbol_def_find(str_tab + sym->st_name, &dest); |
92 | printf("dest name: '%s'\n", dest->dyn.soname); |
93 | printf("dest name: '%s'\n", dest->dyn.soname); |
93 | printf("dest bias: 0x%x\n", dest->bias); |
94 | printf("dest bias: 0x%x\n", dest->bias); |
94 | if (sym_def) { |
95 | if (sym_def) { |
95 | sym_addr = sym_def->st_value + dest->bias; |
96 | sym_addr = sym_def->st_value + dest->bias; |
96 | printf("symbol definition found, addr=0x%x\n", sym_addr); |
97 | printf("symbol definition found, addr=0x%x\n", sym_addr); |
97 | } else { |
98 | } else { |
98 | printf("symbol definition not found\n"); |
99 | printf("symbol definition not found\n"); |
99 | continue; |
100 | continue; |
- | 101 | } |
|
100 | } |
102 | } |
101 | 103 | ||
102 | switch (rel_type) { |
104 | switch (rel_type) { |
103 | case R_386_GLOB_DAT: |
105 | case R_386_GLOB_DAT: |
104 | case R_386_JUMP_SLOT: |
106 | case R_386_JUMP_SLOT: |